diff --git a/app/calls_active/calls_exec.php b/app/calls_active/calls_exec.php index 5feda35ca4..cdcbc48005 100644 --- a/app/calls_active/calls_exec.php +++ b/app/calls_active/calls_exec.php @@ -2,7 +2,7 @@ /* $Id$ */ /* v_exec.php - Copyright (C) 2008 Mark J Crane + Copyright (C) 2008 - 2019 Mark J Crane All rights reserved. Redistribution and use in source and binary forms, with or without @@ -26,16 +26,20 @@ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -include "root.php"; -require_once "resources/require.php"; -require_once "resources/check_auth.php"; -if (permission_exists('call_active_view') || permission_exists('extension_active_view')) { - //access granted -} -else { - echo "access denied"; - exit; -} + +//includes + include "root.php"; + require_once "resources/require.php"; + require_once "resources/check_auth.php"; + +//check permissions + if (permission_exists('call_active_view') || permission_exists('extension_active_view')) { + //access granted + } + else { + echo "access denied"; + exit; + } //authorized referrer if(stristr($_SERVER["HTTP_REFERER"], '/calls_active_extensions.php') === false) { @@ -45,204 +49,20 @@ else { } } -//http get variables set to php variables - if (count($_GET)>0) { - $switch_cmd = trim(check_str($_GET["cmd"])); - $action = trim(check_str($_GET["action"])); - $data = trim(check_str($_GET["data"])); - $direction = trim(check_str($_GET["direction"])); - $username = $_SESSION['username']; - } - //authorized commands - if (stristr($switch_cmd, '&uuid=') == true) { - //authorized; - } elseif (stristr($switch_cmd, 'uuid_kill') == true) { - //authorized; - } elseif (stristr($switch_cmd, 'uuid_transfer') == true) { - //authorized; - } elseif (stristr($switch_cmd, 'uuid_record') == true) { - //authorized; - } elseif (stristr($action, 'user_status') == true) { - //authorized; - } elseif (stristr($action, 'callcenter_config') == true) { - //authorized; - } else { + if ($_GET["command"] == 'hangup') { + if (is_uuid($_GET["uuid"])) { + //setup the event socket connection + $fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']); + + //run the command + $switch_result = event_socket_request($fp, 'api uuid_kill '.$_GET["uuid"]); + } + } + else { //not found. this command is not authorized echo "access denied"; exit; } -if (count($_GET)>0) { - - //setup the event socket connection - $fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']); - - if (stristr($action, 'user_status') == true) { - $user_status = $data; - switch ($user_status) { - case "Available": - $user_status = "Available"; - //update the user state - $cmd = "api callcenter_config agent set state ".$username."@".$_SESSION['domain_name']." Waiting"; - $response = event_socket_request($fp, $cmd); - break; - case "Available_On_Demand": - $user_status = "Available (On Demand)"; - //update the user state - $cmd = "api callcenter_config agent set state ".$username."@".$_SESSION['domain_name']." Waiting"; - $response = event_socket_request($fp, $cmd); - break; - case "Logged_Out": - $user_status = "Logged Out"; - //update the user state - $cmd = "api callcenter_config agent set state ".$username."@".$_SESSION['domain_name']." Waiting"; - $response = event_socket_request($fp, $cmd); - break; - case "On_Break": - $user_status = "On Break"; - //update the user state - $cmd = "api callcenter_config agent set state ".$username."@".$_SESSION['domain_name']." Waiting"; - $response = event_socket_request($fp, $cmd); - break; - case "Do_Not_Disturb": - $user_status = "Do Not Disturb"; - //update the user state - $cmd = "api callcenter_config agent set state ".$username."@".$_SESSION['domain_name']." Waiting"; - $response = event_socket_request($fp, $cmd); - break; - default: - $user_status = ""; - } - - //update the v_users table with the status - $sql = "update v_users set "; - $sql .= "user_status = '$user_status' "; - $sql .= "where domain_uuid = '$domain_uuid' "; - $sql .= "and username = '".$username."' "; - $prep_statement = $db->prepare(check_sql($sql)); - $prep_statement->execute(); - - if (strlen($user_status) > 0) { - //include the dnd class - include "app/calls/resources/classes/do_not_disturb.php"; - //loop through the list of assigned extensions - foreach ($_SESSION['user']['extension'] as &$row) { - $extension = $row["user"]; - - //set the default action - if ($user_status == "Do Not Disturb") { - $dnd_action = "add"; - } - - //hunt_group information used to determine if this is an add or an update - $sql = "select * from v_hunt_groups "; - $sql .= "where domain_uuid = '$domain_uuid' "; - $sql .= "and hunt_group_extension = '$extension' "; - $prep_statement_2 = $db->prepare(check_sql($sql)); - $prep_statement_2->execute(); - $result2 = $prep_statement_2->fetchAll(PDO::FETCH_NAMED); - foreach ($result2 as &$row2) { - if ($row2["hunt_group_type"] == 'dnd') { - $dnd_action = "update"; - $dnd_uuid = $row2["hunt_group_uuid"]; - } - } - unset ($prep_statement_2, $result, $row2); - - //add or update dnd - $dnd = new do_not_disturb; - $dnd->domain_uuid = $domain_uuid; - $dnd->dnd_uuid = $dnd_uuid; - $dnd->domain_name = $_SESSION['domain_name']; - $dnd->extension = $extension; - if ($user_status == "Do Not Disturb") { - $dnd->enabled = "true"; - } - else { - //for other status disable dnd - if ($dnd_action == "update") { - $dnd->enabled = "false"; - } - } - //$dnd->debug = false; - $dnd->set(); - unset($dnd); - } - unset ($prep_statement); - } - - //synchronize the xml config - save_dialplan_xml(); - - //reloadxml - $cmd = 'api reloadxml'; - $response = event_socket_request($fp, $cmd); - - //apply settings reminder - $_SESSION["reload_xml"] = false; - } - - //fs cmd - if (strlen($switch_cmd) > 0) { - - //set the status so they are compatible with mod_callcenter - $switch_cmd = str_replace("Available_On_Demand", "'Available (On Demand)'", $switch_cmd); - $switch_cmd = str_replace("Logged_Out", "'Logged Out'", $switch_cmd); - $switch_cmd = str_replace("On_Break", "'On Break'", $switch_cmd); - $switch_cmd = str_replace("Do_Not_Disturb", "'Logged Out'", $switch_cmd); - - /* - //if ($action == "energy") { - //conference 3001-example.org energy 103 - $switch_result = event_socket_request($fp, 'api '.$switch_cmd); - $result_array = explode("=",$switch_result); - $tmp_value = $result_array[1]; - //if ($direction == "up") { $tmp_value = $tmp_value + 100; } - //if ($direction == "down") { $tmp_value = $tmp_value - 100; } - //echo "energy $tmp_value
\n"; - $switch_result = event_socket_request($fp, 'api '.$switch_cmd.' '.$tmp_value); - //} - if ($action == "volume_in") { - $switch_result = event_socket_request($fp, 'api '.$switch_cmd); - $result_array = explode("=",$switch_result); - $tmp_value = $result_array[1]; - if ($direction == "up") { $tmp_value = $tmp_value + 1; } - if ($direction == "down") { $tmp_value = $tmp_value - 1; } - //echo "volume $tmp_value
\n"; - $switch_result = event_socket_request($fp, 'api '.$switch_cmd.' '.$tmp_value); - } - if ($action == "volume_out") { - $switch_result = event_socket_request($fp, 'api '.$switch_cmd); - $result_array = explode("=",$switch_result); - $tmp_value = $result_array[1]; - if ($direction == "up") { $tmp_value = $tmp_value + 1; } - if ($direction == "down") { $tmp_value = $tmp_value - 1; } - //echo "volume $tmp_value
\n"; - $switch_result = event_socket_request($fp, 'api '.$switch_cmd.' '.$tmp_value); - } - */ - - $switch_result = event_socket_request($fp, 'api '.$switch_cmd); - if ($action == "record") { - if (trim($_GET["action2"]) == "stop") { - $x=0; - while (true) { - if ($x > 0) { - $dest_file = $_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']."/archive/".date("Y")."/".date("M")."/".date("d")."/".$_GET["uuid"]."_".$x.".wav"; - } - else { - $dest_file = $_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']."/archive/".date("Y")."/".date("M")."/".date("d")."/".$_GET["uuid"].".wav"; - } - if (!file_exists($dest_file)) { - rename($_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']."/archive/".date("Y")."/".date("M")."/".date("d")."/".$_GET["uuid"].".wav", $dest_file); - break; - } - $x++; - } - } - } - } -} - -?> \ No newline at end of file +?>