<packagegui>
	<name>siproxd</name>
	<title>siproxd: Settings</title>
	<version>0.5.9</version>
	<menu>
		<name>siproxd</name>
		<tooltiptext>Modify siproxd users 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>
	<service>
                <name>siproxd</name>
                <rcfile>siproxd.sh</rcfile>
                <executable>siproxd</executable>
        </service>
	<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_global_functions>
	function sync_package_sipproxd() {
                conf_mount_rw();
                config_lock();
                global $config;
		$conf =&amp; $config['installedpackages']['siproxd']['config'][0];
                $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'] != "") {
                    if($config['interfaces'][$_POST['if_outbound']]['ipaddr'] == "pppoe") {
                        fwrite($fout, "if_outbound = ng0\n\n");
                    } else {
                        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);
		write_rcfile(array(
					"file" => "siproxd.sh",
					"start" => "/usr/local/sbin/siproxd"
				)
		);
                restart_service("siproxd");
		conf_mount_ro();
                config_unlock();
        }
	</custom_php_global_functions>
	<custom_php_resync_config_command>
	    sync_package_sipproxd();
	</custom_php_resync_config_command>
	<custom_add_php_command>
	sync_package_sipproxd();
	</custom_add_php_command>
</packagegui>