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
This commit is contained in:
mattf
2017-02-28 21:31:57 +00:00
parent 5b02ca0e84
commit 06d93210d6
5 changed files with 128 additions and 26 deletions
+3
View File
@@ -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
+26 -7
View File
@@ -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)
{
+24 -8
View File
@@ -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 "<BR>$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 "<BR>$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 "<BR>$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 "<br>"._QXZ("ADMIN CHANGE LOG").": ("._QXZ("Last 5000 records").")\n";
echo "<center><TABLE width=$section_width cellspacing=0 cellpadding=1>\n";
echo "<center><TABLE width=980 cellspacing=0 cellpadding=1>\n";
echo "<TR BGCOLOR=BLACK>";
echo "<TD><B><FONT FACE=\"Arial,Helvetica\" size=1 color=white>"._QXZ("ID")."</B></TD>";
echo "<TD><B><FONT FACE=\"Arial,Helvetica\" size=1 color=white>"._QXZ("DATE TIME")."</B></TD>";
@@ -36533,7 +36549,7 @@ if ($ADD==710000000000000)
$logs_to_print = mysqli_num_rows($rslt);
echo "<br>"._QXZ("ADMIN CHANGE LOG: Changes made by")." $stage - $user_name\n";
echo "<center><TABLE width=$section_width cellspacing=0 cellpadding=1>\n";
echo "<center><TABLE width=980 cellspacing=0 cellpadding=1>\n";
echo "<TR BGCOLOR=BLACK>";
echo "<TD><B><FONT FACE=\"Arial,Helvetica\" size=1 color=white>"._QXZ("ID")."</B></TD>";
echo "<TD><B><FONT FACE=\"Arial,Helvetica\" size=1 color=white>"._QXZ("DATE TIME")."</B></TD>";
@@ -36619,7 +36635,7 @@ if ($ADD==720000000000000)
$logs_to_print = mysqli_num_rows($rslt);
echo "<br>"._QXZ("ADMIN CHANGE LOG: Section Records")." - $category - $stage\n";
echo "<center><TABLE width=$section_width cellspacing=0 cellpadding=1>\n";
echo "<center><TABLE width=980 cellspacing=0 cellpadding=1>\n";
echo "<TR BGCOLOR=BLACK>";
echo "<TD><B><FONT FACE=\"Arial,Helvetica\" size=1 color=white>"._QXZ("ID")."</B></TD>";
echo "<TD><B><FONT FACE=\"Arial,Helvetica\" size=1 color=white>"._QXZ("DATE TIME")."</B></TD>";
+5 -3
View File
@@ -1,7 +1,7 @@
<?php
# user_stats.php
#
# Copyright (C) 2016 Matt Florell <vicidial@gmail.com> LICENSE: AGPLv2
# Copyright (C) 2017 Matt Florell <vicidial@gmail.com> 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.="<td align=right><font size=2> $row[2]</td>\n";
$MAIN.="<td align=right><font size=2> $row[3]</td>\n";
$MAIN.="<td align=right><font size=2> $row[4]</td>\n";
$MAIN.="<td align=right><font size=2> $event_hours_minutes</td>\n";
$MAIN.="<td align=right colspan=5><font size=2> &nbsp;</td></tr>\n";
$MAIN.="<td align=right><font size=2> $event_hours_minutes &nbsp;</td>\n";
$MAIN.="<td align=center colspan=2><font size=2>&nbsp; $row[7]</td>\n";
$MAIN.="<td align=right colspan=3><font size=2> &nbsp;</td></tr>\n";
$event_start_seconds='';
$event_stop_seconds='';
$CSV_text2.="\"\",\"$row[0]\",\"$row[2]\",\"$row[3]\",\"$row[4]\",\"$event_hours_minutes\"\n";
+70 -8
View File
@@ -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");
?>
<TABLE WIDTH=<?php echo $page_width ?> BGCOLOR=#E6E6E6 cellpadding=2 cellspacing=0><TR BGCOLOR=#E6E6E6><TD ALIGN=LEFT><FONT FACE="ARIAL,HELVETICA" SIZE=2><B> &nbsp; <?php echo _QXZ("User Status for"); ?> <?php echo $user ?></TD><TD ALIGN=RIGHT><FONT FACE="ARIAL,HELVETICA" SIZE=2><B> &nbsp; </TD></TR>
<TABLE WIDTH=<?php echo $page_width ?> BGCOLOR=#<?php echo $SSframe_background; ?> cellpadding=2 cellspacing=0><TR BGCOLOR=#<?php echo $SSframe_background; ?>><TD ALIGN=LEFT><FONT FACE="ARIAL,HELVETICA" SIZE=2><B> &nbsp; <?php echo _QXZ("User Status for"); ?> <?php echo $user ?></TD><TD ALIGN=RIGHT><FONT FACE="ARIAL,HELVETICA" SIZE=2><B> &nbsp; </TD></TR>
<?php
echo "<TR BGCOLOR=\"#F0F5FE\"><TD ALIGN=LEFT COLSPAN=2><FONT FACE=\"ARIAL,HELVETICA\" COLOR=BLACK SIZE=3><B> &nbsp; \n";
echo "<TR BGCOLOR=\"#$SSstd_row2_background\"><TD ALIGN=LEFT COLSPAN=2><FONT FACE=\"ARIAL,HELVETICA\" COLOR=BLACK SIZE=3><B> &nbsp; \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 "<BR>$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 "<BR>$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 "<BR>$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 "<BR>$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 "<!-- NEW vicidial_admin_log record inserted for $PHP_AUTH_USER: |$affected_rows| -->\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")."<BR>\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")."<BR>\n";
}
else
{
@@ -891,7 +953,7 @@ if ($agents_to_print > 0)
echo "<input type=hidden name=DB value=\"$DB\">\n";
echo "<input type=hidden name=user value=\"$user\">\n";
echo "<input type=hidden name=stage value=\"log_agent_out\">\n";
echo "<input type=submit name=submit value=\""._QXZ("EMERGENCY LOG AGENT OUT")."\"><BR></form>\n";
echo "<input type=submit name=submit value=\""._QXZ("EMERGENCY LOG AGENT OUT")."\"> &nbsp; "._QXZ("NOTE: this will hang up all calls in the agent session")."<BR></form>\n";
}
}