<packagegui>
	<name>siproxd</name>
	<title>siproxd: Settings</title>
	<version>0.5.9</version>
	<menu>
		<name>siproxd</name>
		<tooltiptext>Modify siproxd uses and settings.</tooltiptext>
		<section>Services</section>
		<configfile>siproxd.xml</configfile>
		<url>/pkg_edit.php?xml=siproxd.xml&amp;id=0</url>
	</menu>
	<aftersaveredirect>pkg_edit.php?xml=siproxd.xml&amp;id=0</aftersaveredirect>
	<tabs>
                <tab>
                        <text>Settings</text>
                        <url>/pkg_edit.php?xml=siproxd.xml&amp;id=0</url>
			<active/>
                </tab>
		<tab>
			<text>Users</text>
			<url>/pkg.php?xml=siproxdusers.xml</url>
		</tab>
        </tabs>
	<additional_files_needed>
		<item>http://www.pfsense.com/packages/config/siproxdusers.xml</item>
	</additional_files_needed>
	<configpath>installedpackages->package->$packagename->configuration->settings</configpath>
	<fields>
		<field>
			<fielddescr>Inbound interface</fielddescr>
			<fieldname>if_inbound</fieldname>
			<description>Select the inbound interface.</description>
			<type>interfaces_selection</type>
		</field>
		<field>
			<fielddescr>Outbound interface</fielddescr>
			<fieldname>if_outbound</fieldname>
			<description>Select the outbound interface.</description>
			<type>interfaces_selection</type>
		</field>
		<field>
			<fielddescr>Listening port</fielddescr>
			<fieldname>port</fieldname>
			<description>Enter the port on which to listen for SIP traffic (default 5060). Do not change this unless you know what you're doing.</description>
			<type>input</type>
		</field>
		<field>
			<fielddescr>Enable RTP proxy</fielddescr>
			<fieldname>rtpenable</fieldname>
			<description>Enable or disable the RTP proxy. (default is enabled)</description>
			<type>select</type>
			<options>
				<option>
					<name>Enable</name>
					<value>1</value>
				</option>
				<option>
					<name>Disable</name>
					<value>0</value>
				</option>
			</options>
		</field>
		<field>
			<fielddescr>RTP port range (lower)</fielddescr>
			<fieldname>rtplower</fieldname>
			<description>Enter the bottom edge of the port range siproxd will allocate for incoming RTP traffic. This range must be one not blocked by the firewall (default 7070).</description>
			<type>input</type>
		</field>
		<field>
			<fielddescr>RTP port range (upper)</fielddescr>
			<fieldname>rtpupper</fieldname>
			<description>Enter the top edge of the port range siproxd will allocate for incoming RTP traffic. This range must be one not blocked by the firewall (default 7079).</description>
			<type>input</type>
		</field>
		<field>
			<fielddescr>RTP stream timeout</fielddescr>
			<fieldname>rtptimeout</fieldname>
			<description>After this number of seconds, an RTP stream is considered dead and proxying it will be stopped (default 300sec).</description>
			<type>input</type>
		</field>
		<field>
			<fielddescr>Default expiration timeout</fielddescr>
			<fieldname>defaulttimeout</fieldname>
			<description>If a REGISTER request dose not contain an Expires header or expires= parameter, this number of seconds will be used and reported back to the UA in the answer.</description>
			<type>input</type>
		</field>
		<field>
			<fielddescr>Enable proxy authentication</fielddescr>
			<fieldname>authentication</fieldname>
			<description>If this is checked, clients will be forced to authenticate themselves at the proxy (for registration only).</description>
			<type>checkbox</type>
		</field>
		<field>
			<fielddescr>Outbound proxy hostname</fielddescr>
			<fieldname>outboundproxyhost</fieldname>
			<type>input</type>
			<description>Enter the hostname of an outbound proxy to send all traffic to. This is only useful if you have multiple masquerading firewalls to cross.</description>
		</field>
		<field>
			<fielddescr>Outbound proxy port</fielddescr>
			<fieldname>outboundproxyport</fieldname>
			<type>input</type>
			<description>Enter the port of the outbound proxy to send all traffic to. This is only useful if you have multiple masquerading firewalls to cross.</description>
		</field>
	</fields>
	<custom_php_install_command>
	mwexec("pkg_add -rv libosip2");
	mwexec("rm /usr/local/etc/rc.d/siproxd.sh");
	$fout = fopen("/usr/local/etc/rc.d/siproxd.sh","w");
	fwrite($fout, "#!/bin/sh\n\n/usr/local/sbin/siproxd\n");
	fclose($fout);
	</custom_php_install_command>
	<custom_php_resync_config_command>
	    sync_package_sipproxd();
	</custom_php_resync_config_command>
	<custom_add_php_command>
	function sync_package_sipproxd()	{
		conf_mount_rw();
		config_lock();
		global $config;
		if ($_POST == "") $_POST = $config['installedpackages']['siproxd']['config'];
		$fout = fopen("/usr/local/etc/siproxd.conf","w");
		fwrite($fout, "# This file was automatically generated by the pfSense\n# package management system.\n\n");
		if($_POST['if_inbound'] != "") {
			fwrite($fout, "if_inbound = " . convert_friendly_interface_to_real_interface_name($_POST['if_inbound']) . "\n");
		}
		if($_POST['if_outbound'] != "") {
			fwrite($fout, "if_outbound = " . convert_friendly_interface_to_real_interface_name($_POST['if_outbound']) . "\n\n");
		}
		if($_POST['port'] != "") {
			fwrite($fout, "sip_listen_port = " . $_POST['port'] . "\n\n");
		} else {
			fwrite($fout, "sip_listen_port = 5060\n\n");
		}
		fwrite($fout, "daemonize = 1\n\nsilence_log = 0\n\nlog_calls = 1\n\nuser = nobody\nchrootjail = /usr/local/siproxd/\n\nregistration_file = siproxd_registrations\n\npid_file = siproxd.pid\n\n");
		if($_POST['rtpenable'] != "") {
			fwrite($fout, "rtp_proxy_enable = " . $_POST['rtpenable'] . "\n\n");
		} else {
			fwrite($fout, "rtp_proxy_enable = 1\n\n");
		}
		if($_POST['rtplower'] != "") {
			if($_POST['rtpupper'] != "") {
				fwrite($fout, "rtp_port_low = " . $_POST['rtplower'] . "\n");
				fwrite($fout, "rtp_port_high = " . $_POST['rtpupper'] . "\n\n");
			}
		}
		if($_POST['rtptimeout'] != "") {
			fwrite($fout, "rtp_timeout = " . $_POST['rtptimeout'] . "\n\n");
		} else {
			fwrite($fout, "rtp_timeout = 300\n\n");
		}
		if($_POST['defaulttimeout'] != "") {
			fwrite($fout, "default_expires = " . $_POST['defaulttimeout'] . "\n\n");
		} else {
			fwrite($fout, "default_expires = 600\n\n");
		}
		if($_POST['authentication']) {
			fwrite($fout, "proxy_auth_realm = Authentication_Realm\nproxy_auth_pwfile = /usr/local/etc/siproxd_passwd.cfg\n\n");
		}
		fwrite($fout, "debug_level = 0x00000000\n\n");
		if($_POST['outboundproxyhost'] != "") {
			if($_POST['outboundproxyport'] != "") {
				fwrite($fout, "outbound_proxy_host = " . $_POST['outboundproxyhost'] . "\n");
				fwrite($fout, "outbound_proxy_port = " . $_POST['outboundproxyport'] . "\n");
		}
		}
		fclose($fout);
		mwexec("killall siproxd");
		mwexec("/usr/local/etc/rc.d/siproxd.sh");
		conf_mount_ro();
		config_unlock();
		}
	sync_package_sipproxd();
	</custom_add_php_command>
</packagegui>