127.0.0.1 port {$port}\n"; } break; case 'filter': foreach ($ifaces as $iface) { $rules .= "# allow SIP signaling and RTP traffic\n"; $rules .= "pass in quick on {$iface} proto udp from any to any port = {$port}\n"; $rules .= "pass in quick on {$iface} proto udp from any to any port {$rtplower}:{$rtpupper}\n"; } break; default: break; } return $rules; } function sync_package_siproxd() { global $config; log_error("1"); conf_mount_rw(); log_error("2"); config_lock(); $conf = &$config['installedpackages']['siproxd']['config'][0]; $fout = fopen("/usr/local/etc/siproxd.conf","w"); log_error("3"); fwrite($fout, "# This file was automatically generated by the pfSense\n"); fwrite($fout, "# package management system.\n\n"); log_error("4"); /* proxy is turned off in package settings */ if($_POST['rtpenable'] == "0") { fclose($fout); return; } if($_POST['if_inbound'] != "") { fwrite($fout, "if_inbound = " . convert_friendly_interface_to_real_interface_name($_POST['if_inbound']) . "\n"); } log_error("5"); if($_POST['if_outbound'] != "") { if($config['interfaces'][$_POST['if_outbound']]['ipaddr'] == "pppoe") { fwrite($fout, "if_outbound = ng0\n"); } else { fwrite($fout, "if_outbound = " . convert_friendly_interface_to_real_interface_name($_POST['if_outbound']) . "\n"); } } log_error("6"); if($_POST['port'] != "") { fwrite($fout, "sip_listen_port = " . $_POST['port'] . "\n"); } else { fwrite($fout, "sip_listen_port = 5060\n"); } log_error("7"); fwrite($fout, "daemonize = 1\n"); fwrite($fout, "silence_log = 0\n"); fwrite($fout, "log_calls = 1\n"); fwrite($fout, "user = nobody\n"); fwrite($fout, "chrootjail = /usr/local/siproxd/\n"); fwrite($fout, "registration_file = siproxd_registrations\n"); fwrite($fout, "pid_file = siproxd.pid\n"); log_error("8"); if($_POST['rtpenable'] != "") { fwrite($fout, "rtp_proxy_enable = " . $_POST['rtpenable'] . "\n"); } else { fwrite($fout, "rtp_proxy_enable = 1\n"); } log_error("9"); if($_POST['rtplower'] != "") { if($_POST['rtpupper'] != "") { fwrite($fout, "rtp_port_low = " . $_POST['rtplower'] . "\n"); fwrite($fout, "rtp_port_high = " . $_POST['rtpupper'] . "\n"); } } log_error("10"); if($_POST['rtptimeout'] != "") { fwrite($fout, "rtp_timeout = " . $_POST['rtptimeout'] . "\n"); } else { fwrite($fout, "rtp_timeout = 300\n"); } log_error("11"); if($_POST['defaulttimeout'] != "") { fwrite($fout, "default_expires = " . $_POST['defaulttimeout'] . "\n"); } else { fwrite($fout, "default_expires = 600\n"); } log_error("12"); if($_POST['authentication']) { fwrite($fout, "proxy_auth_realm = Authentication_Realm\n"); fwrite($fout, "proxy_auth_pwfile = /usr/local/etc/siproxd_passwd.cfg\n"); } log_error("13"); fwrite($fout, "debug_level = 0x00000000\n"); if($_POST['outboundproxyhost'] != "") { if($_POST['outboundproxyport'] != "") { fwrite($fout, "outbound_proxy_host = " . $_POST['outboundproxyhost'] . "\n"); fwrite($fout, "outbound_proxy_port = " . $_POST['outboundproxyport'] . "\n"); } } log_error("14"); fclose($fout); log_error("15"); write_rcfile(array( "file" => "siproxd.sh", "start" => "/usr/local/sbin/siproxd -c /usr/local/etc/siproxd.conf &", "stop" => "/usr/bin/killall siproxd" ) ); log_error("16"); stop_service("siproxd"); start_service("siproxd"); log_error("17"); conf_mount_ro(); log_error("18"); config_unlock(); log_error("19"); } ?>