From 5445732e3381f51bc6a0de0d6c5f5ea1f57e3c59 Mon Sep 17 00:00:00 2001 From: FusionPBX Date: Sun, 2 Oct 2016 12:54:30 -0600 Subject: [PATCH] Update gateway_edit.php --- app/gateways/gateway_edit.php | 414 ++++++++++++++-------------------- 1 file changed, 171 insertions(+), 243 deletions(-) diff --git a/app/gateways/gateway_edit.php b/app/gateways/gateway_edit.php index 917eb07f1e..66263ab776 100644 --- a/app/gateways/gateway_edit.php +++ b/app/gateways/gateway_edit.php @@ -17,22 +17,26 @@ The Initial Developer of the Original Code is Mark J Crane - Portions created by the Initial Developer are Copyright (C) 2008-2013 + Portions created by the Initial Developer are Copyright (C) 2008-2016 the Initial Developer. All Rights Reserved. Contributor(s): Mark J Crane */ -require_once "root.php"; -require_once "resources/require.php"; -require_once "resources/check_auth.php"; -if (permission_exists('gateway_add') || permission_exists('gateway_edit')) { - //access granted -} -else { - echo "access denied"; - exit; -} + +//includes + require_once "root.php"; + require_once "resources/require.php"; + require_once "resources/check_auth.php"; + +//check permissions + if (permission_exists('gateway_add') || permission_exists('gateway_edit')) { + //access granted + } + else { + echo "access denied"; + exit; + } //add multi-lingual support $language = new text; @@ -41,16 +45,22 @@ else { //action add or update if (isset($_REQUEST["id"])) { $action = "update"; - $gateway_uuid = check_str($_REQUEST["id"]); + if (isset($_POST["id"])) { + $gateway_uuid = check_str($_REQUEST["id"]); + } + if (isset($_POST["gateway_uuid"])) { + $gateway_uuid = check_str($_POST["gateway_uuid"]); + } } else { $action = "add"; + $gateway_uuid = uuid(); } //get total gateway count from the database, check limit, if defined if ($action == 'add') { if ($_SESSION['limit']['gateways']['numeric'] != '') { - $sql = "select count(*) as num_rows from v_gateways "; + $sql = "select count(gateway_uuid) as num_rows from v_gateways "; $sql .= "where ( domain_uuid = '".$_SESSION['domain_uuid']."' "; if (permission_exists('gateway_domain')) { $sql .= "or domain_uuid is null "; @@ -110,198 +120,106 @@ else { $domain_uuid = $_SESSION['domain_uuid']; } -if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) { +//process the HTTP POST + if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) { - //get the id - if ($action == "update") { - $gateway_uuid = check_str($_POST["gateway_uuid"]); - } + //check for all required data + $msg = ''; + //if (strlen($domain_uuid) == 0) { $msg .= $text['message-required']." ".$text['label-domain_uuid']."
\n"; } + if (strlen($gateway) == 0) { $msg .= $text['message-required']." ".$text['label-gateway']."
\n"; } + if ($register == "true") { + if (strlen($username) == 0) { $msg .= $text['message-required']." ".$text['label-username']."
\n"; } + if (strlen($password) == 0) { $msg .= $text['message-required']." ".$text['label-password']."
\n"; } + } + //if (strlen($distinct_to) == 0) { $msg .= $text['message-required']." ".$text['label-distinct_to']."
\n"; } + //if (strlen($auth_username) == 0) { $msg .= $text['message-required']." ".$text['label-auth_username']."
\n"; } + //if (strlen($realm) == 0) { $msg .= $text['message-required']." ".$text['label-realm']."
\n"; } + //if (strlen($from_user) == 0) { $msg .= $text['message-required']." ".$text['label-from_user']."
\n"; } + //if (strlen($from_domain) == 0) { $msg .= $text['message-required']." ".$text['label-from_domain']."
\n"; } + //if (strlen($proxy) == 0) { $msg .= $text['message-required']." ".$text['label-proxy']."
\n"; } + //if (strlen($register_proxy) == 0) { $msg .= $text['message-required']." ".$text['label-register_proxy']."
\n"; } + //if (strlen($outbound_proxy) == 0) { $msg .= $text['message-required']." ".$text['label-outbound_proxy']."
\n"; } + if (strlen($expire_seconds) == 0) { $msg .= $text['message-required']." ".$text['label-expire_seconds']."
\n"; } + if (strlen($register) == 0) { $msg .= $text['message-required']." ".$text['label-register']."
\n"; } + //if (strlen($register_transport) == 0) { $msg .= $text['message-required']." ".$text['label-register_transport']."
\n"; } + if (strlen($retry_seconds) == 0) { $msg .= $text['message-required']." ".$text['label-retry_seconds']."
\n"; } + //if (strlen($extension) == 0) { $msg .= $text['message-required']." ".$text['label-extension']."
\n"; } + //if (strlen($ping) == 0) { $msg .= $text['message-required']." ".$text['label-ping']."
\n"; } + if (strlen($channels) == 0) { + //$msg .= $text['message-required']." ".$text['label-channels']."
\n"; + $channels = 0; + } + //if (strlen($caller_id_in_from) == 0) { $msg .= $text['message-required']." ".$text['label-caller_id_in_from']."
\n"; } + //if (strlen($supress_cng) == 0) { $msg .= $text['message-required']." ".$text['label-supress_cng']."
\n"; } + //if (strlen($sip_cid_type) == 0) { $msg .= $text['message-required']." ".$text['label-sip_cid_type']."
\n"; } + //if (strlen($codec_prefs) == 0) { $msg .= $text['message-required']." ".$text['label-codec_prefs']."
\n"; } + //if (strlen($extension_in_contact) == 0) { $msg .= $text['message-required']." ".$text['label-extension_in_contact']."
\n"; } + if (strlen($context) == 0) { $msg .= $text['message-required']." ".$text['label-context']."
\n"; } + if (strlen($profile) == 0) { $msg .= $text['message-required']." ".$text['label-profile']."
\n"; } + if (strlen($enabled) == 0) { $msg .= $text['message-required']." ".$text['label-enabled']."
\n"; } + //if (strlen($description) == 0) { $msg .= $text['message-required']." ".$text['label-description']."
\n"; } + if (strlen($msg) > 0 && strlen($_POST["persistformvar"]) == 0) { + require_once "resources/header.php"; + require_once "resources/persist_form_var.php"; + echo "
\n"; + echo "
\n"; + echo $msg."
"; + echo "
\n"; + persistformvar($_POST); + echo "
\n"; + require_once "resources/footer.php"; + return; + } + + //remove the invalid characters from the gateway name + $gateway = str_replace(" ", "_", $gateway); + $gateway = str_replace("/", "", $gateway); + + //add or update the database + if ($_POST["persistformvar"] != "true") { - //check for all required data - $msg = ''; - //if (strlen($domain_uuid) == 0) { $msg .= $text['message-required']." ".$text['label-domain_uuid']."
\n"; } - if (strlen($gateway) == 0) { $msg .= $text['message-required']." ".$text['label-gateway']."
\n"; } - if ($register == "true") { - if (strlen($username) == 0) { $msg .= $text['message-required']." ".$text['label-username']."
\n"; } - if (strlen($password) == 0) { $msg .= $text['message-required']." ".$text['label-password']."
\n"; } - } - //if (strlen($distinct_to) == 0) { $msg .= $text['message-required']." ".$text['label-distinct_to']."
\n"; } - //if (strlen($auth_username) == 0) { $msg .= $text['message-required']." ".$text['label-auth_username']."
\n"; } - //if (strlen($realm) == 0) { $msg .= $text['message-required']." ".$text['label-realm']."
\n"; } - //if (strlen($from_user) == 0) { $msg .= $text['message-required']." ".$text['label-from_user']."
\n"; } - //if (strlen($from_domain) == 0) { $msg .= $text['message-required']." ".$text['label-from_domain']."
\n"; } - //if (strlen($proxy) == 0) { $msg .= $text['message-required']." ".$text['label-proxy']."
\n"; } - //if (strlen($register_proxy) == 0) { $msg .= $text['message-required']." ".$text['label-register_proxy']."
\n"; } - //if (strlen($outbound_proxy) == 0) { $msg .= $text['message-required']." ".$text['label-outbound_proxy']."
\n"; } - if (strlen($expire_seconds) == 0) { $msg .= $text['message-required']." ".$text['label-expire_seconds']."
\n"; } - if (strlen($register) == 0) { $msg .= $text['message-required']." ".$text['label-register']."
\n"; } - //if (strlen($register_transport) == 0) { $msg .= $text['message-required']." ".$text['label-register_transport']."
\n"; } - if (strlen($retry_seconds) == 0) { $msg .= $text['message-required']." ".$text['label-retry_seconds']."
\n"; } - //if (strlen($extension) == 0) { $msg .= $text['message-required']." ".$text['label-extension']."
\n"; } - //if (strlen($ping) == 0) { $msg .= $text['message-required']." ".$text['label-ping']."
\n"; } - if (strlen($channels) == 0) { - //$msg .= $text['message-required']." ".$text['label-channels']."
\n"; - $channels = 0; - } - //if (strlen($caller_id_in_from) == 0) { $msg .= $text['message-required']." ".$text['label-caller_id_in_from']."
\n"; } - //if (strlen($supress_cng) == 0) { $msg .= $text['message-required']." ".$text['label-supress_cng']."
\n"; } - //if (strlen($sip_cid_type) == 0) { $msg .= $text['message-required']." ".$text['label-sip_cid_type']."
\n"; } - //if (strlen($codec_prefs) == 0) { $msg .= $text['message-required']." ".$text['label-codec_prefs']."
\n"; } - //if (strlen($extension_in_contact) == 0) { $msg .= $text['message-required']." ".$text['label-extension_in_contact']."
\n"; } - if (strlen($context) == 0) { $msg .= $text['message-required']." ".$text['label-context']."
\n"; } - if (strlen($profile) == 0) { $msg .= $text['message-required']." ".$text['label-profile']."
\n"; } - if (strlen($enabled) == 0) { $msg .= $text['message-required']." ".$text['label-enabled']."
\n"; } - //if (strlen($description) == 0) { $msg .= $text['message-required']." ".$text['label-description']."
\n"; } - if (strlen($msg) > 0 && strlen($_POST["persistformvar"]) == 0) { - require_once "resources/header.php"; - require_once "resources/persist_form_var.php"; - echo "
\n"; - echo "
\n"; - echo $msg."
"; - echo "
\n"; - persistformvar($_POST); - echo "
\n"; - require_once "resources/footer.php"; - return; - } - - //remove the invalid characters from the gateway name - $gateway = str_replace(" ", "_", $gateway); - $gateway = str_replace("/", "", $gateway); - - //add or update the database - if ($_POST["persistformvar"] != "true") { - if ($action == "add" && permission_exists('gateway_add')) { - $gateway_uuid = uuid(); - $sql = "insert into v_gateways "; - $sql .= "("; - if (strlen($domain_uuid) > 0) { - $sql .= "domain_uuid, "; - } - $sql .= "gateway_uuid, "; - $sql .= "gateway, "; - $sql .= "username, "; - $sql .= "password, "; - $sql .= "distinct_to, "; - $sql .= "auth_username, "; - $sql .= "realm, "; - $sql .= "from_user, "; - $sql .= "from_domain, "; - $sql .= "proxy, "; - $sql .= "register_proxy, "; - $sql .= "outbound_proxy, "; - $sql .= "expire_seconds, "; - $sql .= "register, "; - $sql .= "register_transport, "; - $sql .= "retry_seconds, "; - $sql .= "extension, "; - $sql .= "ping, "; - $sql .= "channels, "; - $sql .= "caller_id_in_from, "; - $sql .= "supress_cng, "; - $sql .= "sip_cid_type, "; - $sql .= "codec_prefs, "; - $sql .= "extension_in_contact, "; - $sql .= "context, "; - $sql .= "profile, "; - $sql .= "hostname, "; - $sql .= "enabled, "; - $sql .= "description "; - $sql .= ")"; - $sql .= "values "; - $sql .= "("; - if (strlen($domain_uuid) > 0) { - $sql .= "'$domain_uuid', "; - } - $sql .= "'$gateway_uuid', "; - $sql .= "'$gateway', "; - $sql .= "'$username', "; - $sql .= "'$password', "; - $sql .= "'$distinct_to', "; - $sql .= "'$auth_username', "; - $sql .= "'$realm', "; - $sql .= "'$from_user', "; - $sql .= "'$from_domain', "; - $sql .= "'$proxy', "; - $sql .= "'$register_proxy', "; - $sql .= "'$outbound_proxy', "; - $sql .= "'$expire_seconds', "; - $sql .= "'$register', "; - $sql .= "'$register_transport', "; - $sql .= "'$retry_seconds', "; - $sql .= "'$extension', "; - $sql .= "'$ping', "; - $sql .= "'$channels', "; - $sql .= "'$caller_id_in_from', "; - $sql .= "'$supress_cng', "; - $sql .= "'$sip_cid_type', "; - $sql .= "'$codec_prefs', "; - $sql .= "'$extension_in_contact', "; - $sql .= "'$context', "; - $sql .= "'$profile', "; - if (strlen($hostname) == 0) { - $sql .= "null, "; - } - else { - $sql .= "'$hostname', "; - } - $sql .= "'$enabled', "; - $sql .= "'$description' "; - $sql .= ")"; - $db->exec(check_sql($sql)); - unset($sql); - - //add new gateway to session variable - if ($enabled == 'true') { - $_SESSION['gateways'][$gateway_uuid] = $gateway; + //build the gateway array + $x = 0; + if (strlen($domain_uuid) == 0) { + $array['gateways'][$x]["domain_uuid"] = null; } - - } //if ($action == "add") - - if ($action == "update" && permission_exists('gateway_edit')) { - $sql = "update v_gateways set "; - $sql .= "gateway = '$gateway', "; - $sql .= "username = '$username', "; - $sql .= "password = '$password', "; - $sql .= "distinct_to = '$distinct_to', "; - $sql .= "auth_username = '$auth_username', "; - $sql .= "realm = '$realm', "; - $sql .= "from_user = '$from_user', "; - $sql .= "from_domain = '$from_domain', "; - $sql .= "proxy = '$proxy', "; - $sql .= "register_proxy = '$register_proxy', "; - $sql .= "outbound_proxy = '$outbound_proxy', "; - $sql .= "expire_seconds = '$expire_seconds', "; - $sql .= "register = '$register', "; - $sql .= "register_transport = '$register_transport', "; - $sql .= "retry_seconds = '$retry_seconds', "; - $sql .= "extension = '$extension', "; - $sql .= "ping = '$ping', "; - $sql .= "channels = '$channels', "; - $sql .= "caller_id_in_from = '$caller_id_in_from', "; - $sql .= "supress_cng = '$supress_cng', "; - $sql .= "sip_cid_type = '$sip_cid_type', "; - $sql .= "codec_prefs = '$codec_prefs', "; - $sql .= "extension_in_contact = '$extension_in_contact', "; - $sql .= "context = '$context', "; - $sql .= "profile = '$profile', "; - if (strlen($domain_uuid) == 0) { - $sql .= "domain_uuid = null, "; - } - else { - $sql .= "domain_uuid = '$domain_uuid', "; - } - if (strlen($hostname) == 0) { - $sql .= "hostname = null, "; - } - else { - $sql .= "hostname = '$hostname', "; - } - $sql .= "enabled = '$enabled', "; - $sql .= "description = '$description' "; - $sql .= "where gateway_uuid = '$gateway_uuid'"; - $db->exec(check_sql($sql)); - unset($sql); + else { + $array['gateways'][$x]["domain_uuid"] = $domain_uuid; + } + $array['gateways'][$x]["gateway_uuid"] = $gateway_uuid; + $array['gateways'][$x]["gateway"] = $gateway; + $array['gateways'][$x]["username"] = $username; + $array['gateways'][$x]["password"] = $password; + $array['gateways'][$x]["distinct_to"] = $distinct_to; + $array['gateways'][$x]["auth_username"] = $auth_username; + $array['gateways'][$x]["realm"] = $realm; + $array['gateways'][$x]["from_user"] = $from_user; + $array['gateways'][$x]["from_domain"] = $from_domain; + $array['gateways'][$x]["proxy"] = $proxy; + $array['gateways'][$x]["register_proxy"] = $register_proxy; + $array['gateways'][$x]["outbound_proxy"] = $outbound_proxy; + $array['gateways'][$x]["expire_seconds"] = $expire_seconds; + $array['gateways'][$x]["register"] = $register; + $array['gateways'][$x]["register_transport"] = $register_transport; + $array['gateways'][$x]["retry_seconds"] = $retry_seconds; + $array['gateways'][$x]["extension"] = $extension; + $array['gateways'][$x]["ping"] = $ping; + $array['gateways'][$x]["channels"] = $channels; + $array['gateways'][$x]["caller_id_in_from"] = $caller_id_in_from; + $array['gateways'][$x]["supress_cng"] = $supress_cng; + $array['gateways'][$x]["sip_cid_type"] = $sip_cid_type; + $array['gateways'][$x]["codec_prefs"] = $codec_prefs; + $array['gateways'][$x]["extension_in_contact"] = $extension_in_contact; + $array['gateways'][$x]["context"] = $context; + $array['gateways'][$x]["profile"] = $profile; + if (strlen($hostname) == 0) { + $array['gateways'][$x]["hostname"] = null; + } + else { + $array['gateways'][$x]["hostname"] = $hostname; + } + $array['gateways'][$x]["enabled"] = $enabled; + $array['gateways'][$x]["description"] = $description; //update gateway session variable if ($enabled == 'true') { @@ -311,52 +229,62 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) { unset($_SESSION['gateways'][$gateway_uuid]); } - } //if ($action == "update") - - //remove xml file (if any) if not enabled - if ($enabled != 'true' && $_SESSION['switch']['sip_profiles']['dir'] != '') { - $gateway_xml_file = $_SESSION['switch']['sip_profiles']['dir']."/".$profile."/v_".$gateway_uuid.".xml"; - if (file_exists($gateway_xml_file)) { - unlink($gateway_xml_file); + //save to the data + $orm = new orm; + //$orm->name('gateways'); + $orm->app_name = 'gateways'; + $orm->app_uuid = '297ab33e-2c2f-8196-552c-f3567d2caaf8'; + if (strlen($gateway_uuid) > 0) { + $orm->uuid($gateway_uuid); } - } + $orm->save($array); + $message = $orm->message; - //syncrhonize configuration - save_gateway_xml(); - - //delete the sip profiles from memcache - $fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']); - if ($fp) { - $hostname = trim(event_socket_request($fp, 'api switchname')); - $switch_cmd = "memcache delete configuration:sofia.conf:".$hostname; - $switch_result = event_socket_request($fp, 'api '.$switch_cmd); - } - - //rescan the external profile to look for new or stopped gateways - //create the event socket connection + //remove xml file (if any) if not enabled + if ($enabled != 'true' && $_SESSION['switch']['sip_profiles']['dir'] != '') { + $gateway_xml_file = $_SESSION['switch']['sip_profiles']['dir']."/".$profile."/v_".$gateway_uuid.".xml"; + if (file_exists($gateway_xml_file)) { + unlink($gateway_xml_file); + } + } + + //syncrhonize configuration + save_gateway_xml(); + + //delete the sip profiles from memcache $fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']); - $tmp_cmd = 'api sofia profile external rescan'; - $response = event_socket_request($fp, $tmp_cmd); - unset($tmp_cmd); - usleep(1000); - //close the connection - fclose($fp); - //clear the apply settings reminder - $_SESSION["reload_xml"] = false; - } //if ($_POST["persistformvar"] != "true") + if ($fp) { + $hostname = trim(event_socket_request($fp, 'api switchname')); + $switch_cmd = "memcache delete configuration:sofia.conf:".$hostname; + $switch_result = event_socket_request($fp, 'api '.$switch_cmd); + } + + //rescan the external profile to look for new or stopped gateways + //create the event socket connection + $fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']); + $tmp_cmd = 'api sofia profile external rescan'; + $response = event_socket_request($fp, $tmp_cmd); + unset($tmp_cmd); + usleep(1000); + //close the connection + fclose($fp); + //clear the apply settings reminder + $_SESSION["reload_xml"] = false; - //redirect the user - if (isset($action)) { - if ($action == "add") { - $_SESSION["message"] = $text['message-add']; + } //if ($_POST["persistformvar"] != "true") + + //redirect the user + if (isset($action)) { + if ($action == "add") { + $_SESSION["message"] = $text['message-add']; + } + if ($action == "update") { + $_SESSION["message"] = $text['message-update']; + } + header("Location: gateways.php"); + return; } - if ($action == "update") { - $_SESSION["message"] = $text['message-update']; - } - header("Location: gateways.php"); - return; - } -} //(count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) + } //(count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) //pre-populate the form if (count($_GET) > 0 && $_POST["persistformvar"] != "true") {