Portions created by the Initial Developer are Copyright (C) 2008-2019 the Initial Developer. All Rights Reserved. Contributor(s): Mark J Crane */ //includes files require_once dirname(__DIR__, 2) . "/resources/require.php"; require_once "resources/check_auth.php"; //check permissions if (permission_exists('call_active_view')) { //access granted } else { echo "access denied"; exit; } //add multi-lingual support $language = new text; $text = $language->get(); //authorized referrer if (stristr($_SERVER["HTTP_REFERER"], '/calls_active.php') === false) { echo "access denied"; exit; } //authorized commands if ($_REQUEST['action'] == 'hangup' && permission_exists('call_active_hangup')) { //validate the token $token = new token; if (!$token->validate('/app/calls_active/calls_active_inc.php')) { message::add($text['message-invalid_token'],'negative'); header('Location: calls_active.php'); exit; } //verify submitted call uuids $calls = []; if (is_array($_POST['calls']) && @sizeof($_POST['calls']) != 0) { foreach ($_POST['calls'] as $call) { if ($call['checked'] == 'true' && is_uuid($call['uuid'])) { $calls[] = $call['uuid']; } } } if (!empty($_REQUEST['uuid']) && is_uuid($_REQUEST['uuid'])) { $calls[] = $_REQUEST['uuid']; } //iterate through calls if (count($calls) > 0) { //setup the event socket connection $event_socket = event_socket::create(); //execute hangup command if ($event_socket->is_connected()) foreach ($calls as $call_uuid) { event_socket::async("uuid_kill ".$call_uuid); } //set message message::add($text['message-calls_ended'].': '.count($calls),'positive'); } //redirect header('Location: calls_active.php'); exit; } else if ($_REQUEST['action'] == 'eavesdrop' && permission_exists('call_active_eavesdrop')) { $uuid_pattern = '/[^-A-Fa-f0-9]/'; $number_pattern = '/[^-A-Za-z0-9()*#]/'; $channnel_uuid = preg_replace($uuid_pattern,'',$_GET['chan_uuid']); $extension = preg_replace($number_pattern,'',$_GET['ext']); $destination = preg_replace($number_pattern,'',$_GET['destination']); $api_cmd = 'bgapi originate {origination_caller_id_name='.$text['label-eavesdrop'].',origination_caller_id_number='.$extension.'}user/'.$destination.'@'.$_SESSION['domain_name'].' &eavesdrop('.$channnel_uuid.')'; //run the command $switch_result = event_socket::api($api_cmd); } else { echo "access denied"; exit; } ?>