From 06d93210d6ee44cbff608edc742862b2e960d2b4 Mon Sep 17 00:00:00 2001 From: mattf Date: Tue, 28 Feb 2017 21:31:57 +0000 Subject: [PATCH] Changed emergency logout to hangup all agent session calls, and more logging, issue #819 git-svn-id: svn://192.168.202.10@2691 3d104415-ff17-0410-8863-d5cf3c621b8a --- UPGRADE | 3 ++ www/agc/vdc_db_query.php | 33 +++++++++++---- www/vicidial/admin.php | 32 +++++++++++---- www/vicidial/user_stats.php | 8 ++-- www/vicidial/user_status.php | 78 ++++++++++++++++++++++++++++++++---- 5 files changed, 128 insertions(+), 26 deletions(-) diff --git a/UPGRADE b/UPGRADE index 09457dba..3c14ada0 100644 --- a/UPGRADE +++ b/UPGRADE @@ -100,6 +100,9 @@ OTHER CHANGES: 15. Added new DNC options to Manual Dial Filter campaign feature that are not tied to the campaign DNC settings. +16. Changed Emergency Logout processes to hangup all agent session calls, and + added better logging + diff --git a/www/agc/vdc_db_query.php b/www/agc/vdc_db_query.php index a11f626d..317aad7b 100644 --- a/www/agc/vdc_db_query.php +++ b/www/agc/vdc_db_query.php @@ -422,10 +422,11 @@ # 170207-1315 - Added user option api_only_user # 170221-0143 - Fix for rare missed agent log insert trigger # 170221-1314 - Added more DNC options for campaign setting, manual dial filter +# 170228-1625 - Fix to prevent double-logging when emergency logout happens # -$version = '2.14-316'; -$build = '170221-1314'; +$version = '2.14-317'; +$build = '170228-1625'; $php_script = 'vdc_db_query.php'; $mel=1; # Mysql Error Log enabled = 1 $mysql_log_count=658; @@ -12306,13 +12307,31 @@ if ($ACTION == 'userLOGout') $user_group = trim("$row[0]"); } ##### Insert a LOGOUT record into the user log + $insert_user_log=1; + if ($stage=='DISABLED') + { + $stmt="SELECT event FROM vicidial_user_log where user='$user' order by user_log_id desc LIMIT 1;"; + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00XXX',$user,$server_ip,$session_name,$one_mysql_log);} + if ($DB) {echo "$stmt\n";} + $ul_record_ct = mysqli_num_rows($rslt); + if ($ul_record_ct > 0) + { + $row=mysqli_fetch_row($rslt); + $last_event = trim("$row[0]"); + if ($last_event == 'LOGOUT') {$insert_user_log=0;} + } + } $user_log_event = "LOGOUT"; if ($stage=='TIMEOUT') {$user_log_event = "TIMEOUTLOGOUT";} - $stmt="INSERT INTO vicidial_user_log (user,event,campaign_id,event_date,event_epoch,user_group) values('$user','$user_log_event','$campaign','$NOW_TIME','$StarTtime','$user_group');"; - if ($DB) {echo "$stmt\n";} - $rslt=mysql_to_mysqli($stmt, $link); - if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00128',$user,$server_ip,$session_name,$one_mysql_log);} - $vul_insert = mysqli_affected_rows($link); + if ($insert_user_log > 0) + { + $stmt="INSERT INTO vicidial_user_log (user,event,campaign_id,event_date,event_epoch,user_group) values('$user','$user_log_event','$campaign','$NOW_TIME','$StarTtime','$user_group');"; + if ($DB) {echo "$stmt\n";} + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00128',$user,$server_ip,$session_name,$one_mysql_log);} + $vul_insert = mysqli_affected_rows($link); + } if ($no_delete_sessions < 1) { diff --git a/www/vicidial/admin.php b/www/vicidial/admin.php index a0822b68..b989fd41 100644 --- a/www/vicidial/admin.php +++ b/www/vicidial/admin.php @@ -3946,12 +3946,13 @@ else # 170223-0657 - Added warning for On Hold Message if too long, adjusted chooser placements # 170226-0850 - Added recording override options to chat and email groups to disable recordings for those, issue #992 # 170227-2231 - Change to allow horizontal_bar_chart header to be translated, issue #991 +# 170228-1621 - Changed emergency logout to hangup all agent session calls, and more logging # # make sure you have added a user to the vicidial_users MySQL table with at least user_level 9 to access this page the first time -$admin_version = '2.14-595a'; -$build = '170227-2231'; +$admin_version = '2.14-596a'; +$build = '170228-1621'; $STARTtime = date("U"); $SQLdate = date("Y-m-d H:i:s"); @@ -17414,6 +17415,7 @@ if ($ADD==62) else { $stmtLOG=''; + $usersLOG=''; $stmt="SELECT count(*) from vicidial_campaigns where campaign_id='$campaign_id' $LOGallowed_campaignsSQL;"; $rslt=mysql_to_mysqli($stmt, $link); $row=mysqli_fetch_row($rslt); @@ -17423,7 +17425,7 @@ if ($ADD==62) { $now_date_epoch = date('U'); $inactive_epoch = ($now_date_epoch - 60); - $stmt = "SELECT user,campaign_id,UNIX_TIMESTAMP(last_update_time),extension from vicidial_live_agents where campaign_id='$campaign_id' $LOGallowed_campaignsSQL;"; + $stmt = "SELECT user,campaign_id,UNIX_TIMESTAMP(last_update_time),extension,status,conf_exten,server_ip from vicidial_live_agents where campaign_id='$campaign_id' $LOGallowed_campaignsSQL;"; $rslt=mysql_to_mysqli($stmt, $link); if ($DB) {echo "
$stmt\n";} $vla_ct = mysqli_num_rows($rslt); @@ -17435,6 +17437,9 @@ if ($ADD==62) $VLA_campaign_id[$k] = $row[1]; $VLA_update_time[$k] = $row[2]; $VLA_extension[$k] = $row[3]; + $VLA_status[$k] = $row[4]; + $VLA_conf_exten[$k] = $row[5]; + $VLA_server_ip[$k] = $row[6]; $k++; } @@ -17541,10 +17546,21 @@ if ($ADD==62) } } - $stmt = "INSERT INTO vicidial_user_log (user,event,campaign_id,event_date,event_epoch,user_group) values('$VLA_user[$k]','LOGOUT','$VLA_campaign_id[$k]','$SQLdate','$now_date_epoch','$VAL_user_group');"; + $local_DEF = 'Local/5555'; + $local_AMP = '@'; + $ext_context = 'default'; + $kick_local_channel = "$local_DEF$VLA_conf_exten[$k]$local_AMP$ext_context"; + $queryCID = "ULGH3457$StarTtimE"; + + $stmtC="INSERT INTO vicidial_manager values('','','$NOW_TIME','NEW','N','$VLA_server_ip[$k]','','Originate','$queryCID','Channel: $kick_local_channel','Context: $ext_context','Exten: 8300','Priority: 1','Callerid: $queryCID','','','','$channel','$exten');"; + if ($DB) {echo "
$stmtC\n";} + $rslt=mysql_to_mysqli($stmtC, $link); + + $stmt = "INSERT INTO vicidial_user_log (user,event,campaign_id,event_date,event_epoch,user_group,extension) values('$VLA_user[$k]','LOGOUT','$VLA_campaign_id[$k]','$SQLdate','$now_date_epoch','$VAL_user_group','MGR LOGOUT: $PHP_AUTH_USER');"; if ($DB) {echo "
$stmt\n";} $rslt=mysql_to_mysqli($stmt, $link); $stmtLOG .= "$stmt|"; + $usersLOG .= "$VLA_user[$k]|"; ############################################# @@ -17692,7 +17708,7 @@ if ($ADD==62) $SQL_log = "$stmtLOG"; $SQL_log = preg_replace('/;/', '', $SQL_log); $SQL_log = addslashes($SQL_log); - $stmt="INSERT INTO vicidial_admin_log set event_date='$SQLdate', user='$PHP_AUTH_USER', ip_address='$ip', event_section='CAMPAIGNS', event_type='LOGOUT', record_id='$campaign_id', event_code='ADMIN LOGOUT CAMPAIGN AGENTS', event_sql=\"$SQL_log\", event_notes='';"; + $stmt="INSERT INTO vicidial_admin_log set event_date='$SQLdate', user='$PHP_AUTH_USER', ip_address='$ip', event_section='CAMPAIGNS', event_type='LOGOUT', record_id='$campaign_id', event_code='ADMIN LOGOUT CAMPAIGN AGENTS', event_sql=\"$SQL_log\", event_notes='Users logged out: $usersLOG';"; if ($DB) {echo "|$stmt|\n";} $rslt=mysql_to_mysqli($stmt, $link); @@ -36447,7 +36463,7 @@ if ($ADD==700000000000000) $logs_to_print = mysqli_num_rows($rslt); echo "
"._QXZ("ADMIN CHANGE LOG").": ("._QXZ("Last 5000 records").")\n"; - echo "
\n"; + echo "
\n"; echo ""; echo ""; echo ""; @@ -36533,7 +36549,7 @@ if ($ADD==710000000000000) $logs_to_print = mysqli_num_rows($rslt); echo "
"._QXZ("ADMIN CHANGE LOG: Changes made by")." $stage - $user_name\n"; - echo "
"._QXZ("ID").""._QXZ("DATE TIME")."
\n"; + echo "
\n"; echo ""; echo ""; echo ""; @@ -36619,7 +36635,7 @@ if ($ADD==720000000000000) $logs_to_print = mysqli_num_rows($rslt); echo "
"._QXZ("ADMIN CHANGE LOG: Section Records")." - $category - $stage\n"; - echo "
"._QXZ("ID").""._QXZ("DATE TIME")."
\n"; + echo "
\n"; echo ""; echo ""; echo ""; diff --git a/www/vicidial/user_stats.php b/www/vicidial/user_stats.php index 484763f2..26706977 100644 --- a/www/vicidial/user_stats.php +++ b/www/vicidial/user_stats.php @@ -1,7 +1,7 @@ LICENSE: AGPLv2 +# Copyright (C) 2017 Matt Florell LICENSE: AGPLv2 # # CHANGES # @@ -53,6 +53,7 @@ # 160325-1430 - Changes for sidebar update # 160508-0807 - Added colors features # 161030-0829 - Fixed excess load Issue #963 +# 170228-1626 - Change to display emergency manager logout note # $startMS = microtime(); @@ -757,8 +758,9 @@ else $MAIN.="\n"; $MAIN.="\n"; $MAIN.="\n"; - $MAIN.="\n"; - $MAIN.="\n"; + $MAIN.="\n"; + $MAIN.="\n"; + $MAIN.="\n"; $event_start_seconds=''; $event_stop_seconds=''; $CSV_text2.="\"\",\"$row[0]\",\"$row[2]\",\"$row[3]\",\"$row[4]\",\"$event_hours_minutes\"\n"; diff --git a/www/vicidial/user_status.php b/www/vicidial/user_status.php index c3d4c2c8..5dbe2a5e 100644 --- a/www/vicidial/user_status.php +++ b/www/vicidial/user_status.php @@ -38,6 +38,7 @@ # 160325-1433 - Changes for sidebar update # 161102-1041 - Fixed QM partition problem # 170217-1213 - Fixed non-latin auth issue #995 +# 170228-1623 - Changed emergency logout to hangup all agent session calls, and more logging # $startMS = microtime(); @@ -73,7 +74,7 @@ if (isset($_GET["SUBMIT"])) {$SUBMIT=$_GET["SUBMIT"];} ############################################# ##### START SYSTEM_SETTINGS LOOKUP ##### -$stmt = "SELECT use_non_latin,webroot_writable,outbound_autodial_active,user_territories_active,level_8_disable_add,enable_languages,language_method,allow_chats FROM system_settings;"; +$stmt = "SELECT use_non_latin,webroot_writable,outbound_autodial_active,user_territories_active,level_8_disable_add,enable_languages,language_method,allow_chats,admin_screen_colors FROM system_settings;"; $rslt=mysql_to_mysqli($stmt, $link); if ($DB) {echo "$stmt\n";} $qm_conf_ct = mysqli_num_rows($rslt); @@ -88,6 +89,7 @@ if ($qm_conf_ct > 0) $SSenable_languages = $row[5]; $SSlanguage_method = $row[6]; $SSallow_chats = $row[7]; + $SSadmin_screen_colors = $row[8]; } ##### END SETTINGS LOOKUP ##### ########################################### @@ -111,6 +113,44 @@ $stage = preg_replace("/'|\"|\\\\|;/","",$stage); $begin_date = preg_replace("/'|\"|\\\\|;/","",$begin_date); $end_date = preg_replace("/'|\"|\\\\|;/","",$end_date); + +$SSmenu_background='015B91'; +$SSframe_background='D9E6FE'; +$SSstd_row1_background='9BB9FB'; +$SSstd_row2_background='B9CBFD'; +$SSstd_row3_background='8EBCFD'; +$SSstd_row4_background='B6D3FC'; +$SSstd_row5_background='A3C3D6'; +$SSalt_row1_background='BDFFBD'; +$SSalt_row2_background='99FF99'; +$SSalt_row3_background='CCFFCC'; + +if ($SSadmin_screen_colors != 'default') + { + $stmt = "SELECT menu_background,frame_background,std_row1_background,std_row2_background,std_row3_background,std_row4_background,std_row5_background,alt_row1_background,alt_row2_background,alt_row3_background FROM vicidial_screen_colors where colors_id='$SSadmin_screen_colors';"; + $rslt=mysql_to_mysqli($stmt, $link); + if ($DB) {echo "$stmt\n";} + $colors_ct = mysqli_num_rows($rslt); + if ($colors_ct > 0) + { + $row=mysqli_fetch_row($rslt); + $SSmenu_background = $row[0]; + $SSframe_background = $row[1]; + $SSstd_row1_background = $row[2]; + $SSstd_row2_background = $row[3]; + $SSstd_row3_background = $row[4]; + $SSstd_row4_background = $row[5]; + $SSstd_row5_background = $row[6]; + $SSalt_row1_background = $row[7]; + $SSalt_row2_background = $row[8]; + $SSalt_row3_background = $row[9]; + } + } +$Mhead_color = $SSstd_row5_background; +$Mmain_bgcolor = $SSmenu_background; +$Mhead_color = $SSstd_row5_background; + + $StarTtimE = date("U"); $TODAY = date("Y-m-d"); $NOW_TIME = date("Y-m-d H:i:s"); @@ -376,14 +416,14 @@ require("admin_header.php"); ?> -
"._QXZ("ID").""._QXZ("DATE TIME")." $row[2] $row[3] $row[4] $event_hours_minutes  
$event_hours_minutes    $row[7]  
BGCOLOR=#E6E6E6 cellpadding=2 cellspacing=0> +
   
BGCOLOR=# cellpadding=2 cellspacing=0>>
   
  \n"; +echo "
  \n"; ##### EMERGENCY CAMPAIGN CHANGE FOR AN AGENT ##### if ($stage == "live_campaign_change") @@ -401,7 +441,7 @@ if ($stage == "log_agent_out") { $now_date_epoch = date('U'); $inactive_epoch = ($now_date_epoch - 60); - $stmt = "SELECT user,campaign_id,UNIX_TIMESTAMP(last_update_time),status from vicidial_live_agents where user='" . mysqli_real_escape_string($link, $user) . "';"; + $stmt = "SELECT user,campaign_id,UNIX_TIMESTAMP(last_update_time),status,conf_exten,server_ip from vicidial_live_agents where user='" . mysqli_real_escape_string($link, $user) . "';"; $rslt=mysql_to_mysqli($stmt, $link); if ($DB) {echo "
$stmt\n";} $vla_ct = mysqli_num_rows($rslt); @@ -412,6 +452,8 @@ if ($stage == "log_agent_out") $VLA_campaign_id = $row[1]; $VLA_update_time = $row[2]; $VLA_status = $row[3]; + $VLA_conf_exten = $row[4]; + $VLA_server_ip = $row[5]; if ($VLA_update_time > $inactive_epoch) { @@ -507,9 +549,29 @@ if ($stage == "log_agent_out") } } - $stmt = "INSERT INTO vicidial_user_log (user,event,campaign_id,event_date,event_epoch,user_group) values('$VLA_user','LOGOUT','$VLA_campaign_id','$NOW_TIME','$now_date_epoch','$VAL_user_group');"; - if ($DB) {echo "
$stmt\n";} + $local_DEF = 'Local/5555'; + $local_AMP = '@'; + $ext_context = 'default'; + $kick_local_channel = "$local_DEF$VLA_conf_exten$local_AMP$ext_context"; + $queryCID = "ULGH3457$StarTtimE"; + + $stmtC="INSERT INTO vicidial_manager values('','','$NOW_TIME','NEW','N','$VLA_server_ip','','Originate','$queryCID','Channel: $kick_local_channel','Context: $ext_context','Exten: 8300','Priority: 1','Callerid: $queryCID','','','','$channel','$exten');"; + if ($DB) {echo "
$stmtC\n";} + $rslt=mysql_to_mysqli($stmtC, $link); + + $stmtB = "INSERT INTO vicidial_user_log (user,event,campaign_id,event_date,event_epoch,user_group,extension) values('$VLA_user','LOGOUT','$VLA_campaign_id','$NOW_TIME','$now_date_epoch','$VAL_user_group','MGR LOGOUT: $PHP_AUTH_USER');"; + if ($DB) {echo "
$stmtB\n";} + $rslt=mysql_to_mysqli($stmtB, $link); + + ### Add a record to the vicidial_admin_log + $SQL_log = "$stmt|$stmtB|$stmtC|"; + $SQL_log = preg_replace('/;/', '', $SQL_log); + $SQL_log = addslashes($SQL_log); + $stmt="INSERT INTO vicidial_admin_log set event_date='$NOW_TIME', user='$PHP_AUTH_USER', ip_address='$ip', event_section='USERS', event_type='LOGOUT', record_id='$user', event_code='EMERGENCY LOGOUT FROM STATUS PAGE', event_sql=\"$SQL_log\", event_notes='agent_log_id: $VAL_agent_log_id';"; + if ($DB) {echo "$stmt\n";} $rslt=mysql_to_mysqli($stmt, $link); + $affected_rows = mysqli_affected_rows($link); + print "\n"; ############################################# @@ -633,7 +695,7 @@ if ($stage == "log_agent_out") } } - echo _QXZ("Agent")." $user - $full_name "._QXZ("has been emergency logged out, make sure they close their web browser")."
\n"; + echo _QXZ("Agent")." $user - $full_name "._QXZ("has been emergency logged out, all calls in their session have been hung up, make sure they close their web browser")."
\n"; } else { @@ -891,7 +953,7 @@ if ($agents_to_print > 0) echo "\n"; echo "\n"; echo "\n"; - echo "
\n"; + echo "   "._QXZ("NOTE: this will hang up all calls in the agent session")."
\n"; } }