LICENSE: AGPLv2 # # Script to initiate live monitoring from QueueMetrics link # # CHANGELOG: # 90529-2115 - First Build # 130610-1130 - Finalized changing of all ereg instances to preg # 130617-2128 - Added filtering of input to prevent SQL injection attacks # 130901-0859 - Changed to mysqli PHP functions # 180529-1005 - Added debug logging # 220226-2215 - Added allow_web_debug system setting # $version = '2.14-6'; $build = '220226-2215'; $DBlogfile=0; # set to 1 for logfile writing header ("Content-type: text/html; charset=utf-8"); require("dbconnect_mysqli.php"); require("functions.php"); $PHP_SELF=$_SERVER['PHP_SELF']; $PHP_SELF = preg_replace('/\.php.*/i','.php',$PHP_SELF); if (isset($_GET["DB"])) {$DB=$_GET["DB"];} elseif (isset($_POST["DB"])) {$DB=$_POST["DB"];} if (isset($_GET["campaign"])) {$campaign=$_GET["campaign"];} elseif (isset($_POST["campaign"])) {$campaign=$_POST["campaign"];} if (isset($_GET["user"])) {$user=$_GET["user"];} elseif (isset($_POST["user"])) {$user=$_POST["user"];} if (isset($_GET["server_ip"])) {$server_ip=$_GET["server_ip"];} elseif (isset($_POST["server_ip"])) {$server_ip=$_POST["server_ip"];} if (isset($_GET["session"])) {$session=$_GET["session"];} elseif (isset($_POST["session"])) {$session=$_POST["session"];} if (isset($_GET["phone"])) {$phone=$_GET["phone"];} elseif (isset($_POST["phone"])) {$phone=$_POST["phone"];} if (isset($_GET["type"])) {$type=$_GET["type"];} elseif (isset($_POST["type"])) {$type=$_POST["type"];} if (isset($_GET["call"])) {$call=$_GET["call"];} elseif (isset($_POST["call"])) {$call=$_POST["call"];} if (isset($_GET["QMuser"])) {$QMuser=$_GET["QMuser"];} elseif (isset($_POST["QMuser"])) {$QMuser=$_POST["QMuser"];} if (isset($_GET["extension"])) {$extension=$_GET["extension"];} elseif (isset($_POST["extension"])) {$extension=$_POST["extension"];} if (isset($_GET["stage"])) {$stage=$_GET["stage"];} elseif (isset($_POST["stage"])) {$stage=$_POST["stage"];} $DB=preg_replace("/[^0-9a-zA-Z]/","",$DB); $ERR=0; $ERRstring=''; ############################################# ##### START QUEUEMETRICS LOGGING LOOKUP ##### $stmt = "SELECT use_non_latin,enable_queuemetrics_logging,allow_web_debug FROM system_settings;"; $rslt=mysql_to_mysqli($stmt, $link); #if ($DB) {echo "$stmt\n";} $qm_conf_ct = mysqli_num_rows($rslt); if ($qm_conf_ct > 0) { $row=mysqli_fetch_row($rslt); $non_latin = $row[0]; $enable_queuemetrics_logging = $row[1]; $SSallow_web_debug = $row[2]; } if ($SSallow_web_debug < 1) {$DB=0; $DBlogfile=0;} ##### END QUEUEMETRICS LOGGING LOOKUP ##### ########################################### $call = preg_replace('/[^0-9a-zA-Z]/', '', $call); $session = preg_replace('/[^0-9a-zA-Z]/', '', $session); $extension = preg_replace("/\<|\>|\'|\"|\\\\|;/", '', $extension); $server_ip = preg_replace("/\<|\>|\'|\"|\\\\|;/", '', $server_ip); $stage = preg_replace("/\<|\>|\'|\"|\\\\|;/", '', $stage); $phone = preg_replace("/\<|\>|\'|\"|\\\\|;/", '', $phone); $type = preg_replace("/\<|\>|\'|\"|\\\\|;/", '', $type); $QMuser = preg_replace("/\<|\>|\'|\"|\\\\|;/", '', $QMuser); if ($non_latin < 1) { $user = preg_replace('/[^-_0-9a-zA-Z]/', '', $user); $campaign = preg_replace('/[^-_0-9a-zA-Z]/', '', $campaign); } else { $user = preg_replace('/[^-_0-9\p{L}]/u', '', $user); $campaign = preg_replace('/[^-_0-9\p{L}]/u', '', $campaign); } if ($DBlogfile > 0) { $logfile=fopen('qm_rpc_debug.txt', "a"); fwrite($logfile, "QM Live-Monitor: " . date("U") . ' - ' . date("Y-m-d H:i:s") . " $version $build\nParameters: |$call|$user|$extension|$server_ip|$stage|$campaign|$phone|$type|$QMuser|\n"); fclose($logfile); } if ($enable_queuemetrics_logging > 0) { $stmt = "SELECT user,server_ip,conf_exten,comments FROM vicidial_live_agents where callerid='$call';"; $rslt=mysql_to_mysqli($stmt, $link); if ($DB) {echo "$stmt\n";} $vla_conf_ct = mysqli_num_rows($rslt); if ($vla_conf_ct > 0) { $row=mysqli_fetch_row($rslt); $VLAuser = $row[0]; $VLAserver_ip = $row[1]; $VLAconf_exten = $row[2]; $stmt = "SELECT campaign_id,phone_number,call_type FROM vicidial_auto_calls where callerid='$call';"; $rslt=mysql_to_mysqli($stmt, $link); if ($DB) {echo "$stmt\n";} $vla_conf_ct = mysqli_num_rows($rslt); if ($vla_conf_ct > 0) { $row=mysqli_fetch_row($rslt); $VACcampaign = $row[0]; $VACphone = $row[1]; $VACtype = $row[2]; if ($stage == 'MONITOR') { $script_name = getenv("SCRIPT_NAME"); $server_name = getenv("SERVER_NAME"); $server_port = getenv("SERVER_PORT"); if (preg_match("/443/i",$server_port)) {$HTTPprotocol = 'https://';} else {$HTTPprotocol = 'http://';} $admDIR = "$HTTPprotocol$server_name$script_name"; $admDIR = preg_replace('/QM_live_monitor\.php/i', '',$admDIR); $monitor_script = 'non_agent_api.php'; $monitorURL = "$admDIR$monitor_script?source=queuemetrics&function=blind_monitor&user=$user&pass=$call&phone_login=$extension&session_id=$session&server_ip=$server_ip&stage=$stage&value=$stage&agent_user=$user"; $monitorCONTENTS = file("$monitorURL"); if (preg_match('/SUCCESS/i',$monitorCONTENTS[0])) { echo "\n"; if ($DBlogfile > 0) { $logfile=fopen('qm_rpc_debug.txt', "a"); fwrite($logfile, "QM Live-Monitor Closing: $monitorCONTENTS[0]\n"); fclose($logfile); } } else { echo "\n"; echo "$monitorCONTENTS[0]
\n"; } echo "\n"; echo "\n"; echo "
\n"; echo ""; echo "\n"; echo "
\n"; echo "\n"; exit; } else { echo ""; echo "
\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "Remote Monitor:
"; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo "\n"; echo "\n"; echo "\n"; echo ""; echo ""; exit; } } else { $ERR++; $ERRstring = "Call not found"; } } else { $ERR++; $ERRstring = "Agent not found"; } } else { $ERR++; $ERRstring = "QueueMetrics is not enabled on this system"; } if ($ERR > 0) { echo "ERROR: $ERRstring\n"; echo "\n"; echo "\n"; exit; } exit;
Agent: $user
Customer: $phone
Call Type: $type
Queue: $campaign
Extension:
"; # echo ""; echo "