Portions created by the Initial Developer are Copyright (C) 2008-2022 the Initial Developer. All Rights Reserved. Contributor(s): Mark J Crane James Rose Riccardo Granchi Gill Abada Andrew Colin */ //includes require_once "root.php"; require_once "resources/require.php"; require_once "resources/check_auth.php"; require_once "resources/paging.php"; //check permissions if (permission_exists('outbound_route_add')) { //access granted } else { echo "access denied"; exit; } //add multi-lingual support $language = new text; $text = $language->get(); //get the http post values and set theme as php variables if (is_array($_POST) > 0) { //set the variables $dialplan_name = $_POST["dialplan_name"]; $dialplan_order = $_POST["dialplan_order"]; $dialplan_expression = $_POST["dialplan_expression"]; $prefix_number = $_POST["prefix_number"]; $condition_field_1 = $_POST["condition_field_1"]; $condition_expression_1 = $_POST["condition_expression_1"]; $condition_field_2 = $_POST["condition_field_2"]; $condition_expression_2 = $_POST["condition_expression_2"]; $gateway = $_POST["gateway"]; $limit = $_POST["limit"]; $accountcode = $_POST["accountcode"]; $toll_allow = $_POST["toll_allow"]; $pin_numbers_enable = $_POST["pin_numbers_enabled"]; if (strlen($pin_numbers_enable) == 0) { $pin_numbers_enable = "false"; } //set the default type $gateway_type = 'gateway'; $gateway_2_type = 'gateway'; $gateway_3_type = 'gateway'; //set the gateway type to bridge if (strtolower(substr($gateway, 0, 6)) == "bridge") { $gateway_type = 'bridge'; } //set the type to enum if (strtolower(substr($gateway, 0, 4)) == "enum") { $gateway_type = 'enum'; } //set the type to freetdm if (strtolower(substr($gateway, 0, 7)) == "freetdm") { $gateway_type = 'freetdm'; } //set the type to transfer if (strtolower(substr($gateway, 0, 8)) == "transfer") { $gateway_type = 'transfer'; } //set the type to dingaling if (strtolower(substr($gateway, 0, 4)) == "xmpp") { $gateway_type = 'xmpp'; } //set the gateway_uuid and gateway_name if ($gateway_type == "gateway") { $gateway_array = explode(":",$gateway); $gateway_uuid = $gateway_array[0]; $gateway_name = $gateway_array[1]; } else { $gateway_name = ''; $gateway_uuid = ''; } //set the gateway_2 variable $gateway_2 = $_POST["gateway_2"]; //set the type to bridge if (strtolower(substr($gateway_2, 0, 6)) == "bridge") { $gateway_2_type = 'bridge'; } //set type to enum if (strtolower(substr($gateway_2, 0, 4)) == "enum") { $gateway_2_type = 'enum'; } //set the type to freetdm if (strtolower(substr($gateway_2, 0, 7)) == "freetdm") { $gateway_2_type = 'freetdm'; } //set the type to transfer if (strtolower(substr($gateway_2, 0, 8)) == "transfer") { $gateway_type = 'transfer'; } //set the type to dingaling if (strtolower(substr($gateway_2, 0, 4)) == "xmpp") { $gateway_2_type = 'xmpp'; } //set the gateway_2_id and gateway_2_name if ($gateway_2_type == "gateway" && strlen($_POST["gateway_2"]) > 0) { $gateway_2_array = explode(":",$gateway_2); $gateway_2_id = $gateway_2_array[0]; $gateway_2_name = $gateway_2_array[1]; } else { $gateway_2_id = ''; $gateway_2_name = ''; } //set the gateway_3 variable $gateway_3 = $_POST["gateway_3"]; //set the type to bridge if (strtolower(substr($gateway_3, 0, 6)) == "bridge") { $gateway_3_type = 'bridge'; } //set the type to enum if (strtolower(substr($gateway_3, 0, 4)) == "enum") { $gateway_3_type = 'enum'; } //set the type to freetdm if (strtolower(substr($gateway_3, 0, 7)) == "freetdm") { $gateway_3_type = 'freetdm'; } //set the type to dingaling if (strtolower(substr($gateway_3, 0, 4)) == "xmpp") { $gateway_3_type = 'xmpp'; } //set the type to transfer if (strtolower(substr($gateway_3, 0, 8)) == "transfer") { $gateway_type = 'transfer'; } //set the gateway_3_id and gateway_3_name if ($gateway_3_type == "gateway" && strlen($_POST["gateway_3"]) > 0) { $gateway_3_array = explode(":",$gateway_3); $gateway_3_id = $gateway_3_array[0]; $gateway_3_name = $gateway_3_array[1]; } else { $gateway_3_id = ''; $gateway_3_name = ''; } //set additional variables $dialplan_enabled = $_POST["dialplan_enabled"]; $dialplan_description = $_POST["dialplan_description"]; //set default to enabled if (strlen($dialplan_enabled) == 0) { $dialplan_enabled = "true"; } } //process the http form values if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) { //validate the token $token = new token; if (!$token->validate($_SERVER['PHP_SELF'])) { message::add($text['message-invalid_token'],'negative'); header('Location: '.PROJECT_PATH.'/app/dialplans/dialplans.php?app_uuid=8c914ec3-9fc0-8ab5-4cda-6c9288bdc9a3'); exit; } //check for all required data if (strlen($gateway) == 0) { $msg .= $text['message-provide'].": ".$text['label-gateway-name']."
\n"; } //if (strlen($gateway_2) == 0) { $msg .= "Please provide: Alternat 1
\n"; } //if (strlen($gateway_3) == 0) { $msg .= "Please provide: Alternat 2
\n"; } if (strlen($dialplan_expression) == 0) { $msg .= $text['message-provide'].": ".$text['label-dialplan-expression']."
\n"; } //if (strlen($dialplan_name) == 0) { $msg .= "Please provide: Extension Name
\n"; } //if (strlen($condition_field_1) == 0) { $msg .= "Please provide: Condition Field
\n"; } //if (strlen($condition_expression_1) == 0) { $msg .= "Please provide: Condition Expression
\n"; } //if (strlen($limit) == 0) { $msg .= "Please provide: Limit
\n"; } //if (strlen($dialplan_enabled) == 0) { $msg .= "Please provide: Enabled True or False
\n"; } //if (strlen($description) == 0) { $msg .= "Please provide: 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; } //prepare to build the array if (strlen(trim($_POST['dialplan_expression'])) > 0) { $tmp_array = explode("\n", $_POST['dialplan_expression']); $x = 0; foreach($tmp_array as $dialplan_expression) { $dialplan_expression = trim($dialplan_expression); if (strlen($dialplan_expression) > 0) { switch ($dialplan_expression) { case "^(\d{7})$": $label = $text['label-7d']; $abbrv = "7d"; break; case "^(\d{8})$": $label = $text['label-8d']; $abbrv = "8d"; break; case "^(\d{9})$": $label = $text['label-9d']; $abbrv = "9d"; break; case "^(\d{10})$": $label = $text['label-10d']; $abbrv = "10d"; break; case "^\+?(\d{11})$": $label = $text['label-11d']; $abbrv = "11d"; break; case "^(?:\+1|1)?([2-9]\d{2}[2-9]\d{2}\d{4})$": $label = $text['label-north_america']; $abbrv = "10-11-NANP"; break; case "^(011\d{9,17})$": $label = $text['label-north_america_intl']; $abbrv = "011.9-17d"; break; case "^\+?1?((?:264|268|242|246|441|284|345|767|809|829|849|473|658|876|664|787|939|869|758|784|721|868|649|340|684|671|670|808)\d{7})$": $label = $text['label-north_america_islands']; $abbrv = "011.9-17d"; break; case "^(\d{12,20})$": $label = $text['label-intl']; $abbrv = $text['label-intl']; break; case "^(311)$": $label = $text['label-311']; $abbrv = "311"; break; case "^(411)$": $label = $text['label-411']; $abbrv = "411"; break; case "^(711)$": $label = $text['label-711']; $abbrv = "711"; break; case "(^911$|^933$)": $label = $text['label-911']; $abbrv = "911"; break; case "(^988$)": $label = $text['label-988']; $abbrv = "988"; break; case "^9(\d{3})$": $label = $text['label-9d3']; $abbrv = "9.3d"; break; case "^9(\d{4})$": $label = $text['label-9d4']; $abbrv = "9.4d"; break; case "^9(\d{7})$": $label = $text['label-9d7']; $abbrv = "9.7d"; break; case "^9(\d{10})$": $label = $text['label-9d10']; $abbrv = "9.10d"; break; case "^9(\d{11})$": $label = $text['label-9d11']; $abbrv = "9.11d"; break; case "^9(\d{12,20})$": $label = $text['label-9d.12-20']; $abbrv = "9.12-20"; break; case "^1?(8(00|33|44|55|66|77|88)[2-9]\d{6})$": $label = $text['label-800']; $abbrv = "800"; break; case "^0118835100\d{8}$": $label = $text['label-inum']; $abbrv = "inum"; break; default: $label = $dialplan_expression; $abbrv = filename_safe($dialplan_expression); } // Use as outbound prefix all digits beetwen ^ and first ( $tmp_prefix = preg_replace("/^\^(\d{1,})\(.*/", "$1", $dialplan_expression); $tmp_prefix == $dialplan_expression ? $outbound_prefix = "" : $outbound_prefix = $tmp_prefix; if ($gateway_type == "gateway") { $dialplan_name = $gateway_name.".".$abbrv; if ($abbrv == "988") { $bridge_data = "sofia/gateway/".$gateway_uuid."/".$prefix_number."18002738255"; } else { $bridge_data = "sofia/gateway/".$gateway_uuid."/".$prefix_number."\$1"; } } if (strlen($gateway_2_name) > 0 && $gateway_2_type == "gateway") { $extension_2_name = $gateway_2_id.".".$abbrv; if ($abbrv == "988") { $bridge_2_data = "sofia/gateway/".$gateway_2_id."/".$prefix_number."18002738255"; } else { $bridge_2_data = "sofia/gateway/".$gateway_2_id."/".$prefix_number."\$1"; } } if (strlen($gateway_3_name) > 0 && $gateway_3_type == "gateway") { $extension_3_name = $gateway_3_id.".".$abbrv; if ($abbrv == "988") { $bridge_3_data = "sofia/gateway/".$gateway_3_id."/".$prefix_number."18002738255"; } else { $bridge_3_data = "sofia/gateway/".$gateway_3_id."/".$prefix_number."\$1"; } } if ($gateway_type == "freetdm") { $dialplan_name = "freetdm.".$abbrv; $bridge_data = $gateway."/1/a/".$prefix_number."\$1"; } if ($gateway_2_type == "freetdm") { $extension_2_name = "freetdm.".$abbrv; $bridge_2_data .= $gateway_2."/1/a/".$prefix_number."\$1"; } if ($gateway_3_type == "freetdm") { $extension_3_name = "freetdm.".$abbrv; $bridge_3_data .= $gateway_3."/1/a/".$prefix_number."\$1"; } if ($gateway_type == "xmpp") { $dialplan_name = "xmpp.".$abbrv; $bridge_data = "dingaling/gtalk/+".$prefix_number."\$1@voice.google.com"; } if ($gateway_2_type == "xmpp") { $extension_2_name = "xmpp.".$abbrv; $bridge_2_data .= "dingaling/gtalk/+".$prefix_number."\$1@voice.google.com"; } if ($gateway_3_type == "xmpp") { $extension_3_name = "xmpp.".$abbrv; $bridge_3_data .= "dingaling/gtalk/+".$prefix_number."\$1@voice.google.com"; } if ($gateway_type == "bridge") { $dialplan_name = "bridge.".$abbrv; $gateway_array = explode(":",$gateway); $bridge_data = $gateway_array[1]; } if ($gateway_2_type == "bridge") { $dialplan_name = "bridge.".$abbrv; $gateway_array = explode(":",$gateway_2); $bridge_2_data = $gateway_array[1]; } if ($gateway_3_type == "bridge") { $dialplan_name = "bridge.".$abbrv; $gateway_array = explode(":",$gateway_3); $bridge_3_data = $gateway_array[1]; } if ($gateway_type == "enum") { if (strlen($bridge_2_data) == 0) { $dialplan_name = "enum.".$abbrv; } else { $dialplan_name = $extension_2_name; } $bridge_data = "\${enum_auto_route}"; } if ($gateway_2_type == "enum") { $bridge_2_data .= "\${enum_auto_route}"; } if ($gateway_3_type == "enum") { $bridge_3_data .= "\${enum_auto_route}"; } if ($gateway_type == "transfer") { $dialplan_name = "transfer.".$abbrv; $gateway_array = explode(":",$gateway); $bridge_data = $gateway_array[1]; } if ($gateway_2_type == "transfer") { $gateway_array = explode(":",$gateway_2); $bridge_2_data = $gateway_array[1]; } if ($gateway_3_type == "transfer") { $gateway_array = explode(":",$gateway_3); $bridge_3_data = $gateway_array[1]; } if (strlen($dialplan_order) == 0) { $dialplan_order ='333'; } $dialplan_context = $_SESSION['domain_name']; $dialplan_continue = 'false'; $app_uuid = '8c914ec3-9fc0-8ab5-4cda-6c9288bdc9a3'; //set the uuid $dialplan_uuid = uuid(); //build the array - set call_direction $x = 0; $array['dialplans'][$x]['domain_uuid'] = $_SESSION['domain_uuid']; $array['dialplans'][$x]['dialplan_uuid'] = $dialplan_uuid; $array['dialplans'][$x]['app_uuid'] = $app_uuid; $array['dialplans'][$x]['dialplan_name'] = 'call_direction-outbound'; $array['dialplans'][$x]['dialplan_order'] = '22'; $array['dialplans'][$x]['dialplan_continue'] = 'true'; $array['dialplans'][$x]['dialplan_context'] = $dialplan_context; $array['dialplans'][$x]['dialplan_enabled'] = $dialplan_enabled; $array['dialplans'][$x]['dialplan_description'] = $dialplan_description; $y = 0; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_uuid'] = uuid(); $array['dialplans'][$x]['dialplan_details'][$y]['domain_uuid'] = $_SESSION['domain_uuid']; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_uuid'] = $dialplan_uuid; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_tag'] = 'condition'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_type'] = '${user_exists}'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_data'] = 'false'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_order'] = $y * 10; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_group'] = '0'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_enabled'] = 'true'; $y++; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_uuid'] = uuid(); $array['dialplans'][$x]['dialplan_details'][$y]['domain_uuid'] = $_SESSION['domain_uuid']; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_uuid'] = $dialplan_uuid; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_tag'] = 'condition'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_type'] = 'destination_number'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_data'] = $dialplan_expression; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_order'] = $y * 10; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_group'] = '0'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_enabled'] = 'true'; $y++; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_uuid'] = uuid(); $array['dialplans'][$x]['dialplan_details'][$y]['domain_uuid'] = $_SESSION['domain_uuid']; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_uuid'] = $dialplan_uuid; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_tag'] = 'action'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_type'] = 'export'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_data'] = 'call_direction=outbound'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_inline'] = 'true'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_order'] = $y * 10; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_group'] = '0'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_enabled'] = 'true'; $y++; $x++; //set the uuid $dialplan_uuid = uuid(); //build the array - outbound route $array['dialplans'][$x]['domain_uuid'] = $_SESSION['domain_uuid']; $array['dialplans'][$x]['dialplan_uuid'] = $dialplan_uuid; $array['dialplans'][$x]['app_uuid'] = $app_uuid; $array['dialplans'][$x]['dialplan_name'] = $dialplan_name; $array['dialplans'][$x]['dialplan_order'] = $dialplan_order; $array['dialplans'][$x]['dialplan_continue'] = $dialplan_continue; $array['dialplans'][$x]['dialplan_context'] = $dialplan_context; $array['dialplans'][$x]['dialplan_enabled'] = $dialplan_enabled; $array['dialplans'][$x]['dialplan_description'] = $dialplan_description; $y = 0; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_uuid'] = uuid(); $array['dialplans'][$x]['dialplan_details'][$y]['domain_uuid'] = $_SESSION['domain_uuid']; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_uuid'] = $dialplan_uuid; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_tag'] = 'condition'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_type'] = '${user_exists}'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_data'] = 'false'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_order'] = $y * 10; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_group'] = '0'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_enabled'] = 'true'; $y++; if (strlen($toll_allow) > 0) { $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_uuid'] = uuid(); $array['dialplans'][$x]['dialplan_details'][$y]['domain_uuid'] = $_SESSION['domain_uuid']; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_uuid'] = $dialplan_uuid; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_tag'] = 'condition'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_type'] = '${toll_allow}'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_data'] = $toll_allow; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_order'] = $y * 10; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_group'] = '0'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_enabled'] = 'true'; $y++; } $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_uuid'] = uuid(); $array['dialplans'][$x]['dialplan_details'][$y]['domain_uuid'] = $_SESSION['domain_uuid']; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_uuid'] = $dialplan_uuid; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_tag'] = 'condition'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_type'] = 'destination_number'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_data'] = $dialplan_expression; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_order'] = $y * 10; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_group'] = '0'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_enabled'] = 'true'; if ($gateway_type != "transfer") { if (strlen($accountcode) > 0) { $y++; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_uuid'] = uuid(); $array['dialplans'][$x]['dialplan_details'][$y]['domain_uuid'] = $_SESSION['domain_uuid']; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_uuid'] = $dialplan_uuid; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_tag'] = 'action'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_type'] = 'set'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_data'] = 'sip_h_X-accountcode='.$accountcode; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_order'] = $y * 10; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_group'] = '0'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_enabled'] = 'true'; } else { $y++; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_uuid'] = uuid(); $array['dialplans'][$x]['dialplan_details'][$y]['domain_uuid'] = $_SESSION['domain_uuid']; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_uuid'] = $dialplan_uuid; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_tag'] = 'action'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_type'] = 'set'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_data'] = 'sip_h_X-accountcode=${accountcode}'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_order'] = $y * 10; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_group'] = '0'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_enabled'] = 'true'; } } $y++; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_uuid'] = uuid(); $array['dialplans'][$x]['dialplan_details'][$y]['domain_uuid'] = $_SESSION['domain_uuid']; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_uuid'] = $dialplan_uuid; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_tag'] = 'action'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_type'] = 'export'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_data'] = 'call_direction=outbound'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_inline'] = 'true'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_order'] = $y * 10; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_group'] = '0'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_enabled'] = 'true'; $y++; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_uuid'] = uuid(); $array['dialplans'][$x]['dialplan_details'][$y]['domain_uuid'] = $_SESSION['domain_uuid']; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_uuid'] = $dialplan_uuid; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_tag'] = 'action'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_type'] = 'unset'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_data'] = 'call_timeout'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_order'] = $y * 10; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_group'] = '0'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_enabled'] = 'true'; if ($gateway_type != "transfer") { $y++; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_uuid'] = uuid(); $array['dialplans'][$x]['dialplan_details'][$y]['domain_uuid'] = $_SESSION['domain_uuid']; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_uuid'] = $dialplan_uuid; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_tag'] = 'action'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_type'] = 'set'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_data'] = 'hangup_after_bridge=true'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_order'] = $y * 10; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_group'] = '0'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_enabled'] = 'true'; $y++; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_uuid'] = uuid(); $array['dialplans'][$x]['dialplan_details'][$y]['domain_uuid'] = $_SESSION['domain_uuid']; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_uuid'] = $dialplan_uuid; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_tag'] = 'action'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_type'] = 'set'; if ($dialplan_expression == '(^911$|^933$)') { $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_data'] = 'effective_caller_id_name=${emergency_caller_id_name}'; } else { $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_data'] = 'effective_caller_id_name=${outbound_caller_id_name}'; } $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_order'] = $y * 10; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_group'] = '0'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_enabled'] = 'true'; $y++; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_uuid'] = uuid(); $array['dialplans'][$x]['dialplan_details'][$y]['domain_uuid'] = $_SESSION['domain_uuid']; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_uuid'] = $dialplan_uuid; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_tag'] = 'action'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_type'] = 'set'; if ($dialplan_expression == '(^911$|^933$)') { $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_data'] = 'effective_caller_id_number=${emergency_caller_id_number}'; } else { $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_data'] = 'effective_caller_id_number=${outbound_caller_id_number}'; } $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_order'] = $y * 10; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_group'] = '0'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_enabled'] = 'true'; if ($dialplan_expression == '(^911$|^933$)') { $y++; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_uuid'] = uuid(); $array['dialplans'][$x]['dialplan_details'][$y]['domain_uuid'] = $_SESSION['domain_uuid']; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_uuid'] = $dialplan_uuid; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_tag'] = 'action'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_type'] = 'lua'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_data'] = "email.lua \${email_to} \${email_from} '' 'Emergency Call' '\${sip_from_user}@\${domain_name} has called 911 emergency'"; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_order'] = $y * 10; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_group'] = '0'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_enabled'] = 'false'; } $y++; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_uuid'] = uuid(); $array['dialplans'][$x]['dialplan_details'][$y]['domain_uuid'] = $_SESSION['domain_uuid']; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_uuid'] = $dialplan_uuid; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_tag'] = 'action'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_type'] = 'set'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_data'] = 'inherit_codec=true'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_order'] = $y * 10; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_group'] = '0'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_enabled'] = 'true'; $y++; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_uuid'] = uuid(); $array['dialplans'][$x]['dialplan_details'][$y]['domain_uuid'] = $_SESSION['domain_uuid']; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_uuid'] = $dialplan_uuid; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_tag'] = 'action'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_type'] = 'set'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_data'] = 'ignore_display_updates=true'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_order'] = $y * 10; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_group'] = '0'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_enabled'] = 'true'; $y++; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_uuid'] = uuid(); $array['dialplans'][$x]['dialplan_details'][$y]['domain_uuid'] = $_SESSION['domain_uuid']; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_uuid'] = $dialplan_uuid; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_tag'] = 'action'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_type'] = 'set'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_data'] = 'callee_id_number=$1'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_order'] = $y * 10; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_group'] = '0'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_enabled'] = 'true'; $y++; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_uuid'] = uuid(); $array['dialplans'][$x]['dialplan_details'][$y]['domain_uuid'] = $_SESSION['domain_uuid']; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_uuid'] = $dialplan_uuid; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_tag'] = 'action'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_type'] = 'set'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_data'] = 'continue_on_fail=1,2,3,6,18,21,27,28,31,34,38,41,42,44,58,88,111,403,501,602,607'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_order'] = $y * 10; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_group'] = '0'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_enabled'] = 'true'; } if ($gateway_type == "enum" || $gateway_2_type == "enum") { $y++; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_uuid'] = uuid(); $array['dialplans'][$x]['dialplan_details'][$y]['domain_uuid'] = $_SESSION['domain_uuid']; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_uuid'] = $dialplan_uuid; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_tag'] = 'action'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_type'] = 'enum'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_data'] = $prefix_number."$1 e164.org"; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_order'] = $y * 10; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_group'] = '0'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_enabled'] = 'true'; } if (strlen($limit) > 0) { $y++; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_uuid'] = uuid(); $array['dialplans'][$x]['dialplan_details'][$y]['domain_uuid'] = $_SESSION['domain_uuid']; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_uuid'] = $dialplan_uuid; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_tag'] = 'action'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_type'] = 'limit'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_data'] = "hash \${domain_name} outbound ".$limit." !USER_BUSY"; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_order'] = $y * 10; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_group'] = '0'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_enabled'] = 'true'; } if (strlen($outbound_prefix) > 0) { $y++; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_uuid'] = uuid(); $array['dialplans'][$x]['dialplan_details'][$y]['domain_uuid'] = $_SESSION['domain_uuid']; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_uuid'] = $dialplan_uuid; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_tag'] = 'action'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_type'] = 'set'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_data'] = 'outbound_prefix='.$outbound_prefix; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_order'] = $y * 10; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_group'] = '0'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_enabled'] = 'true'; } if ($pin_numbers_enable == "true") { $y++; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_uuid'] = uuid(); $array['dialplans'][$x]['dialplan_details'][$y]['domain_uuid'] = $_SESSION['domain_uuid']; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_uuid'] = $dialplan_uuid; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_tag'] = 'action'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_type'] = 'set'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_data'] = 'pin_number=database'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_order'] = $y * 10; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_group'] = '0'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_enabled'] = 'true'; $y++; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_uuid'] = uuid(); $array['dialplans'][$x]['dialplan_details'][$y]['domain_uuid'] = $_SESSION['domain_uuid']; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_uuid'] = $dialplan_uuid; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_tag'] = 'action'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_type'] = 'lua'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_data'] = 'pin_number.lua'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_order'] = $y * 10; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_group'] = '0'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_enabled'] = 'true'; } if (strlen($prefix_number) > 2) { $y++; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_uuid'] = uuid(); $array['dialplans'][$x]['dialplan_details'][$y]['domain_uuid'] = $_SESSION['domain_uuid']; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_uuid'] = $dialplan_uuid; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_tag'] = 'action'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_type'] = 'set'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_data'] = 'provider_prefix='.$prefix_number; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_order'] = $y * 10; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_group'] = '0'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_enabled'] = 'true'; } if ($gateway_type == "transfer") { $dialplan_detail_type = 'transfer'; } else { $dialplan_detail_type = 'bridge'; } $y++; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_uuid'] = uuid(); $array['dialplans'][$x]['dialplan_details'][$y]['domain_uuid'] = $_SESSION['domain_uuid']; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_uuid'] = $dialplan_uuid; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_tag'] = 'action'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_type'] = $dialplan_detail_type; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_data'] = $bridge_data; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_order'] = $y * 10; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_group'] = '0'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_enabled'] = 'true'; if (strlen($bridge_2_data) > 0) { $y++; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_uuid'] = uuid(); $array['dialplans'][$x]['dialplan_details'][$y]['domain_uuid'] = $_SESSION['domain_uuid']; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_uuid'] = $dialplan_uuid; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_tag'] = 'action'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_type'] = 'bridge'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_data'] = $bridge_2_data; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_order'] = $y * 10; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_group'] = '0'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_enabled'] = 'true'; } if (strlen($bridge_3_data) > 0) { $y++; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_uuid'] = uuid(); $array['dialplans'][$x]['dialplan_details'][$y]['domain_uuid'] = $_SESSION['domain_uuid']; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_uuid'] = $dialplan_uuid; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_tag'] = 'action'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_type'] = 'bridge'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_data'] = $bridge_3_data; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_order'] = $y * 10; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_group'] = '0'; $array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_enabled'] = 'true'; } unset($bridge_data); unset($bridge_2_data); unset($bridge_3_data); unset($label); unset($abbrv); unset($dialplan_expression); } //if strlen $x++; } //end foreach } //add the dialplan permission $p = new permissions; $p->add("dialplan_add", "temp"); $p->add("dialplan_detail_add", "temp"); //save to the data $database = new database; $database->app_name = 'outbound_routes'; $database->app_uuid = $app_uuid; $database->save($array); $message = $database->message; unset($array); //update the dialplan xml $dialplans = new dialplan; $dialplans->source = "details"; $dialplans->destination = "database"; $dialplans->uuid = $dialplan_uuid; $dialplans->xml(); //remove the temporary permission $p->delete("dialplan_add", "temp"); $p->delete("dialplan_detail_add", "temp"); //clear the cache $cache = new cache; $cache->delete("dialplan:".$dialplan_context); //redirect the browser message::add($text['message-update']); header("Location: ".PROJECT_PATH."/app/dialplans/dialplans.php?app_uuid=8c914ec3-9fc0-8ab5-4cda-6c9288bdc9a3"); return; } //get the domains $sql = "select * from v_domains "; $sql .= "where domain_enabled = 'true' "; $database = new database; $domains = $database->select($sql, null, 'all'); unset($sql); //get the gateways $sql = "select * from v_gateways "; $sql .= "where enabled = 'true' "; if (permission_exists('outbound_route_any_gateway')) { $sql .= "order by domain_uuid = :domain_uuid DESC, gateway "; } else { $sql .= "and domain_uuid = :domain_uuid "; } $parameters['domain_uuid'] = $domain_uuid; $database = new database; $gateways = $database->select($sql, $parameters, 'all'); unset($sql, $parameters); //get the bridges if (permission_exists('bridge_view')) { $sql = "select * from v_bridges "; $sql .= "where bridge_enabled = 'true' "; $sql .= "and domain_uuid = :domain_uuid "; $parameters['domain_uuid'] = $domain_uuid; $database = new database; $bridges = $database->select($sql, $parameters, 'all'); unset($sql, $parameters); } //create token $object = new token; $token = $object->create($_SERVER['PHP_SELF']); //show the header $document['title'] = $text['title-dialplan-outbound-add']; require_once "resources/header.php"; ?> \n"; echo "
\n"; echo "
".$text['label-outbound-routes']."
\n"; echo "
\n"; echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$_SESSION['theme']['button_icon_back'],'id'=>'btn_back','link'=>PROJECT_PATH.'/app/dialplans/dialplans.php?app_uuid=8c914ec3-9fc0-8ab5-4cda-6c9288bdc9a3']); echo button::create(['type'=>'submit','label'=>$text['button-save'],'icon'=>$_SESSION['theme']['button_icon_save'],'id'=>'btn_save','style'=>'margin-left: 15px;']); echo "
\n"; echo "
\n"; echo "
\n"; echo $text['description-outbound-routes']."\n"; echo "

\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo " \n"; echo " \n"; echo ""; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; if (permission_exists('outbound_route_pin_numbers')) { echo "\n"; echo "\n"; echo "\n"; echo "\n"; } echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "
\n"; echo " ".$text['label-gateway']."\n"; echo "\n"; echo "\n"; echo "\n"; //set the onchange $onchange = ''; //if (if_group("superadmin")) { $onchange = "onchange='changeToInput(this);'"; } else { $onchange = ''; } echo "\n"; echo "
\n"; echo $text['message-add-options']."\n"; echo "
\n"; echo " ".$text['label-alt1']."\n"; echo "\n"; echo "\n"; echo "
\n"; echo $text['message-add-options1']."\n"; echo "
\n"; echo " ".$text['label-alt2']."\n"; echo "\n"; echo "\n"; echo "
\n"; echo $text['message-add-options2']."\n"; echo "
".$text['label-dialplan-expression'].""; echo "
\n"; echo " \n"; echo "
\n"; echo "
\n"; echo "
\n"; echo " \n"; echo " \n"; echo "
".$text['description-enter-custom-outbound-prefix'].".\n"; echo "
\n"; echo " \n"; echo " \n"; echo "
\n"; echo " ".$text['description-shortcut']." \n"; echo "
\n"; echo " ".$text['label-prefix']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-enter-prefix']."\n"; echo "
\n"; echo " ".$text['label-limit']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-limit']."\n"; echo "
\n"; echo " ".$text['label-accountcode']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-accountcode']."\n"; echo "
\n"; echo " ".$text['label-toll_allow']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-enable-toll_allow']."\n"; echo "
\n"; echo " ".$text['label-pin_numbers']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-enable-pin_numbers']."\n"; echo "
\n"; echo " ".$text['label-order']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo " ".$text['description-order']."\n"; echo "
\n"; echo " ".$text['label-enabled']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-enabled']."\n"; echo "
\n"; echo " ".$text['label-description']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-description']."\n"; echo "
"; echo "

"; if ($action == "update") { echo "\n"; } echo "\n"; echo ""; //show the footer require_once "resources/footer.php"; ?>