From 5834630833dc0f01c6e779f3b5d928d59a63317f Mon Sep 17 00:00:00 2001 From: mattf Date: Sat, 10 May 2014 05:51:39 +0000 Subject: [PATCH] git-svn-id: svn://192.168.202.10@2116 3d104415-ff17-0410-8863-d5cf3c621b8a --- agc_2-X/trunk/UPGRADE | 3 + agc_2-X/trunk/bin/AST_timecheck.pl | 71 +++++++++++++++++-- agc_2-X/trunk/bin/AST_update.pl | 16 +++-- .../trunk/extras/MySQL_AST_CREATE_tables.sql | 5 +- agc_2-X/trunk/extras/upgrade_2.8.sql | 4 ++ .../TO_BE_TRANSLATED_2.8.txt | 2 + agc_2-X/trunk/www/vicidial/admin.php | 59 ++++++++++++--- agc_2-X/trunk/www/vicidial/help.php | 6 ++ 8 files changed, 143 insertions(+), 23 deletions(-) diff --git a/agc_2-X/trunk/UPGRADE b/agc_2-X/trunk/UPGRADE index 280ae8e5..664af7ee 100644 --- a/agc_2-X/trunk/UPGRADE +++ b/agc_2-X/trunk/UPGRADE @@ -217,6 +217,9 @@ OTHER CHANGES: 43. Added logging of pause type(ADMIN, AGENT, SYSTEM, API,...) +44. Added frozen call clearing system setting, used in admin.php(Reports page) + and optional AST_timecheck.pl script + diff --git a/agc_2-X/trunk/bin/AST_timecheck.pl b/agc_2-X/trunk/bin/AST_timecheck.pl index c8f8b1d6..8e6623dc 100644 --- a/agc_2-X/trunk/bin/AST_timecheck.pl +++ b/agc_2-X/trunk/bin/AST_timecheck.pl @@ -1,15 +1,16 @@ #!/usr/bin/perl # -# AST_timecheck.pl version: 2.6 +# AST_timecheck.pl version: 2.8 # # This script is designed to send an email when an asterisk server is out of sync # -# /usr/share/astguiclient/AST_VDsales_export.pl --campaign=GOODB-GROUP1-GROUP3-GROUP4-SPECIALS-DNC_BEDS --output-format=fixed-as400 --sale-statuses=SALE --debug --filename=BEDSsaleMMDD.txt --date=yesterday --email-list=test@gmail.com --email-sender=test@test.com +# /usr/share/astguiclient/AST_timecheck.pl --quiet --seconds=5 --email-list=test@gmail.com --email-sender=test@test.com # -# Copyright (C) 2013 Matt Florell LICENSE: AGPLv2 +# Copyright (C) 2014 Matt Florell LICENSE: AGPLv2 # # CHANGES # 130503-1515 - First version +# 140509-2214 - Added frozen_server_call_clear system setting # $txt = '.txt'; @@ -193,26 +194,82 @@ use DBI; $dbhA = DBI->connect("DBI:mysql:$VARDB_database:$VARDB_server:$VARDB_port", "$VARDB_user", "$VARDB_pass") or die "Couldn't connect to database: " . DBI->errstr; -$stmtA = "SELECT su.server_ip,last_update,UNIX_TIMESTAMP(last_update),server_description FROM server_updater su,servers s where s.server_ip=su.server_ip;"; +$SSfrozen_server_call_clear=0; +### Grab system settings values from the database +$stmtA = "SELECT frozen_server_call_clear FROM system_settings;"; $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; $sthArows=$sthA->rows; +if ($sthArows > 0) + { + @aryA = $sthA->fetchrow_array; + $SSfrozen_server_call_clear = $aryA[0]; + } +$sthA->finish(); + +$stmtA = "SELECT su.server_ip,last_update,UNIX_TIMESTAMP(last_update),server_description,UNIX_TIMESTAMP(db_time),server_id FROM server_updater su,servers s where s.server_ip=su.server_ip;"; +$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; +$sthA->execute or die "executing: $stmtA ", $dbhA->errstr; +$sthArowsSERVERS=$sthA->rows; if ($DBX) {print " $sthArows|$stmtA|\n";} $i=0; -while ($sthArows > $i) +while ($sthArowsSERVERS > $i) { @aryA = $sthA->fetchrow_array; $server_ip = $aryA[0]; $s_time = $aryA[1]; $u_time = ($aryA[2] + $seconds); + $reset_time = ($aryA[2] + 90); $server_name = $aryA[3]; - if ($DBX) {print "Server time: $server_ip($server_name) Last time: $s_time($u_time|$aryA[2])\n";} + $Sdb_time = ($aryA[4] + 10); + $server_id = $aryA[5]; + + if ($DBX) {print "Server time: $i - $server_ip($server_id - $server_name) Last time: $s_time($u_time|$aryA[2])\n";} if ($web_u_time > $u_time) { - if ($DBX) {print "Time sync issue - SERVER: $server_ip($server_name)\n LAST TIME: $s_time($u_time)\n TIME NOW: $timestamp($web_u_time)\n\n";} + if ($DBX) {print "Time sync issue - SERVER: $server_ip($server_name)\n LAST TIME: $s_time($u_time)\n TIME NOW: $timestamp($web_u_time)\n";} $Ealert .= "SERVER: $server_ip($server_name)\n LAST TIME: $s_time($u_time)\n TIME NOW: $timestamp($web_u_time)\n\n"; $servers++; + + if ($DBX) {print " DEBUG: ($web_u_time > $reset_time)|($web_u_time > $Sdb_time)| |$SSfrozen_server_call_clear|\n";} + + if ( ($web_u_time > $reset_time) && ($web_u_time > $Sdb_time) && ($SSfrozen_server_call_clear > 0) ) + { + $dbhB = DBI->connect("DBI:mysql:$VARDB_database:$VARDB_server:$VARDB_port", "$VARDB_user", "$VARDB_pass") + or die "Couldn't connect to database: " . DBI->errstr; + + $servercalls_count=0; + ### Grab number of calls on frozen server + $stmtB = "SELECT count(*) from vicidial_auto_calls where server_ip='$server_ip';"; + $sthB = $dbhB->prepare($stmtB) or die "preparing: ",$dbhB->errstr; + $sthB->execute or die "executing: $stmtB ", $dbhB->errstr; + $sthBrows=$sthB->rows; + if ($sthBrows > 0) + { + @aryB = $sthB->fetchrow_array; + $servercalls_count = $aryB[0]; + } + $sthB->finish(); + + if ($DBX) {print " ServerCalls: $servercalls_count\n";} + + if ($servercalls_count > 0) + { + $stmt="DELETE FROM vicidial_auto_calls where server_ip='$server_ip';"; + $FCaffected_rows = $dbhB->do($stmt); + if($DB){print STDERR "\n$FCaffected_rows|$stmt|\n";} + + ### LOG INSERTION Admin Log Table ### + $SQL_log = "$stmt|"; + $SQL_log =~ s/;|\\|\'|\"//gi; + $stmt="INSERT INTO vicidial_admin_log set event_date=NOW(), user='VDAD', ip_address='$server_ip', event_section='SERVERS', event_type='CLEAR', record_id='$server_id', event_code='FROZEN SERVER CALL CLEAR', event_sql=\"$SQL_log\", event_notes='$servercalls_count|$FCaffected_rows|$s_time($u_time|$aryA[2])';"; + $BLaffected_rows = $dbhB->do($stmt); + if($DB){print STDERR "\n$BLaffected_rows|$stmt|\n";} + + $Ealert .= " FROZEN CALLS CLEARED: $servercalls_count|$FCaffected_rows\n\n"; + } + } } $i++; } diff --git a/agc_2-X/trunk/bin/AST_update.pl b/agc_2-X/trunk/bin/AST_update.pl index 1b9d0494..c341903c 100644 --- a/agc_2-X/trunk/bin/AST_update.pl +++ b/agc_2-X/trunk/bin/AST_update.pl @@ -27,7 +27,7 @@ # # It is recommended that you run this program on each local Asterisk machine # -# Copyright (C) 2013 Matt Florell LICENSE: AGPLv2 +# Copyright (C) 2014 Matt Florell LICENSE: AGPLv2 # # version changes: # 41228-1659 - modified to compensate for manager output response hiccups @@ -60,9 +60,10 @@ # 130108-1710 - Changes for Asterisk 1.8 compatibility # 130413-2125 - Fix for issue #664, formatting fixes and added --quiet flag # 131122-1317 - Small formatting fixes +# 140510-0119 - Small formatting and asterisk version changes # -$build = '131122-1317'; +$build = '140510-0119'; # constants $SYSPERF=0; # system performance logging to MySQL server_performance table every 5 seconds @@ -302,6 +303,9 @@ if ($AST_ver =~ /^1\.0/i) {$show_channels_format = 0;} if ($AST_ver =~ /^1\.4/i) {$show_channels_format = 2;} if ($AST_ver =~ /^1\.6/i) {$show_channels_format = 3;} if ($AST_ver =~ /^1\.8/i) {$show_channels_format = 4;} +if ($AST_ver =~ /^10\./i) {$show_channels_format = 4;} +if ($AST_ver =~ /^11\./i) {$show_channels_format = 4;} +if ($AST_ver =~ /^12\./i) {$show_channels_format = 4;} if ($Q < 1) {print STDERR "SHOW CHANNELS format: $show_channels_format\n";} @@ -320,8 +324,8 @@ if ($SUrec < 1) { &get_time_now; - $stmtU = "INSERT INTO $server_updater set server_ip='$server_ip', last_update='$now_date';"; - if($DB){print STDERR "\n|$stmtU|\n";} + $stmtU = "INSERT INTO $server_updater set server_ip='$server_ip', last_update='$now_date';"; + if($DB){print STDERR "\n|$stmtU|\n";} $affected_rows = $dbhA->do($stmtU); } @@ -1200,9 +1204,9 @@ sub validate_parked_channels { if (@ARparked_time_UNIX[$AR] > $PQparked_time_UNIX) { - if($DBX){print "Duplicate parked channel delete: |$PQchannel|$PQparked_time|\n";} + if ($DBX) {print "Duplicate parked channel delete: |$PQchannel|$PQparked_time|\n";} $stmtPQ = "DELETE FROM $parked_channels where server_ip='$server_ip' and channel='$PQchannel' and extension='$PQextension' and parked_time='$PQparked_time' limit 1"; - if($DB){print STDERR "\n|$stmtPQ|$$DEL_chan_park_counter|$DEL_chan_park_counter|\n\n";} + if ($DB) {print STDERR "\n|$stmtPQ|$$DEL_chan_park_counter|$DEL_chan_park_counter|\n\n";} $affected_rows = $dbhC->do($stmtPQ); $DEL_chan_park_counter = "DEL$PQchannel$PQextension"; diff --git a/agc_2-X/trunk/extras/MySQL_AST_CREATE_tables.sql b/agc_2-X/trunk/extras/MySQL_AST_CREATE_tables.sql index d1cec1ed..a2d09af8 100644 --- a/agc_2-X/trunk/extras/MySQL_AST_CREATE_tables.sql +++ b/agc_2-X/trunk/extras/MySQL_AST_CREATE_tables.sql @@ -1554,7 +1554,8 @@ disable_auto_dial ENUM('0','1') default '0', queuemetrics_record_hold ENUM('0','1') default '0', country_code_list_stats ENUM('0','1') default '0', reload_timestamp DATETIME, -queuemetrics_pause_type ENUM('0','1') default '0' +queuemetrics_pause_type ENUM('0','1') default '0', +frozen_server_call_clear ENUM('0','1') default '0' ) ENGINE=MyISAM; CREATE TABLE vicidial_campaigns_list_mix ( @@ -3266,4 +3267,4 @@ UPDATE vicidial_configuration set value='1766' where name='qc_database_version'; UPDATE system_settings set vdc_agent_api_active='1'; -UPDATE system_settings SET db_schema_version='1376',db_schema_update_date=NOW(),reload_timestamp=NOW(); +UPDATE system_settings SET db_schema_version='1377',db_schema_update_date=NOW(),reload_timestamp=NOW(); diff --git a/agc_2-X/trunk/extras/upgrade_2.8.sql b/agc_2-X/trunk/extras/upgrade_2.8.sql index 09f3da53..6ca5e5cb 100644 --- a/agc_2-X/trunk/extras/upgrade_2.8.sql +++ b/agc_2-X/trunk/extras/upgrade_2.8.sql @@ -252,3 +252,7 @@ ALTER TABLE vicidial_agent_log_archive ADD pause_type ENUM('UNDEFINED','SYSTEM', ALTER TABLE system_settings ADD queuemetrics_pause_type ENUM('0','1') default '0'; UPDATE system_settings SET db_schema_version='1376',db_schema_update_date=NOW() where db_schema_version < 1376; + +ALTER TABLE system_settings ADD frozen_server_call_clear ENUM('0','1') default '0'; + +UPDATE system_settings SET db_schema_version='1377',db_schema_update_date=NOW() where db_schema_version < 1377; diff --git a/agc_2-X/trunk/translations/raw_translation_files/TO_BE_TRANSLATED_2.8.txt b/agc_2-X/trunk/translations/raw_translation_files/TO_BE_TRANSLATED_2.8.txt index e254639d..669aed30 100644 --- a/agc_2-X/trunk/translations/raw_translation_files/TO_BE_TRANSLATED_2.8.txt +++ b/agc_2-X/trunk/translations/raw_translation_files/TO_BE_TRANSLATED_2.8.txt @@ -284,6 +284,8 @@ Modify Custom Dialplans|| This option if set to 1 allows the user to view and modify custom dialplan entries that are available in the Call Menu, System Settings and Servers modification screens|| QueueMetrics Pause Type Logging|| If enabled, this option will log the type of pause in the queue_log table data5 field. You must make sure that you have a data5 field or enabling this feature will break QM compatibility. Default is 0 for disabled|| +Clear Frozen Calls|| +This option can enable the ability for the general Reports page and the optional AST_timecheck.pl script to clear out the auto_calls entries for a frozen server so they do not affect call routing. Default is 0 for disabled|| ########################## CHANGES TO EXISTING PHRASES IN ADMIN TRANSLATION diff --git a/agc_2-X/trunk/www/vicidial/admin.php b/agc_2-X/trunk/www/vicidial/admin.php index 8969f1a5..0a0e9e2b 100644 --- a/agc_2-X/trunk/www/vicidial/admin.php +++ b/agc_2-X/trunk/www/vicidial/admin.php @@ -1840,6 +1840,8 @@ if (isset($_GET["modify_custom_dialplans"])) {$modify_custom_dialplans=$_GET[" elseif (isset($_POST["modify_custom_dialplans"])) {$modify_custom_dialplans=$_POST["modify_custom_dialplans"];} if (isset($_GET["queuemetrics_pause_type"])) {$queuemetrics_pause_type=$_GET["queuemetrics_pause_type"];} elseif (isset($_POST["queuemetrics_pause_type"])) {$queuemetrics_pause_type=$_POST["queuemetrics_pause_type"];} +if (isset($_GET["frozen_server_call_clear"])) {$frozen_server_call_clear=$_GET["frozen_server_call_clear"];} + elseif (isset($_POST["frozen_server_call_clear"])) {$frozen_server_call_clear=$_POST["frozen_server_call_clear"];} if (isset($script_id)) {$script_id= strtoupper($script_id);} @@ -1854,7 +1856,7 @@ if (strlen($dial_status) > 0) ############################################# ##### START SYSTEM_SETTINGS LOOKUP ##### -$stmt = "SELECT use_non_latin,enable_queuemetrics_logging,enable_vtiger_integration,qc_features_active,outbound_autodial_active,sounds_central_control_active,enable_second_webform,user_territories_active,custom_fields_enabled,admin_web_directory,webphone_url,first_login_trigger,hosted_settings,default_phone_registration_password,default_phone_login_password,default_server_password,test_campaign_calls,active_voicemail_server,voicemail_timezones,default_voicemail_timezone,default_local_gmt,campaign_cid_areacodes_enabled,pllb_grouping_limit,did_ra_extensions_enabled,expanded_list_stats,contacts_enabled,alt_log_server_ip,alt_log_dbname,alt_log_login,alt_log_pass,tables_use_alt_log_db,call_menu_qualify_enabled,admin_list_counts,allow_voicemail_greeting,svn_revision,allow_emails,level_8_disable_add,pass_key,pass_hash_enabled,disable_auto_dial,country_code_list_stats FROM system_settings;"; +$stmt = "SELECT use_non_latin,enable_queuemetrics_logging,enable_vtiger_integration,qc_features_active,outbound_autodial_active,sounds_central_control_active,enable_second_webform,user_territories_active,custom_fields_enabled,admin_web_directory,webphone_url,first_login_trigger,hosted_settings,default_phone_registration_password,default_phone_login_password,default_server_password,test_campaign_calls,active_voicemail_server,voicemail_timezones,default_voicemail_timezone,default_local_gmt,campaign_cid_areacodes_enabled,pllb_grouping_limit,did_ra_extensions_enabled,expanded_list_stats,contacts_enabled,alt_log_server_ip,alt_log_dbname,alt_log_login,alt_log_pass,tables_use_alt_log_db,call_menu_qualify_enabled,admin_list_counts,allow_voicemail_greeting,svn_revision,allow_emails,level_8_disable_add,pass_key,pass_hash_enabled,disable_auto_dial,country_code_list_stats,frozen_server_call_clear FROM system_settings;"; $rslt=mysql_to_mysqli($stmt, $link); if ($DB) {echo "$stmt\n";} $qm_conf_ct = mysqli_num_rows($rslt); @@ -1902,6 +1904,7 @@ if ($qm_conf_ct > 0) $SSpass_hash_enabled = $row[38]; $SSdisable_auto_dial = $row[39]; $SScountry_code_list_stats = $row[40]; + $SSfrozen_server_call_clear = $row[41]; } ##### END SETTINGS LOOKUP ##### ########################################### @@ -2171,6 +2174,7 @@ if ($non_latin < 1) $max_inbound_calls = preg_replace('/[^0-9]/','',$max_inbound_calls); $modify_custom_dialplans = preg_replace('/[^0-9]/','',$modify_custom_dialplans); $queuemetrics_pause_type = preg_replace('/[^0-9]/','',$queuemetrics_pause_type); + $frozen_server_call_clear = preg_replace('/[^0-9]/','',$frozen_server_call_clear); $drop_call_seconds = preg_replace('/[^-0-9]/','',$drop_call_seconds); @@ -3309,12 +3313,13 @@ else # 140423-1636 - Added campaign settings for manual_dial_search_checkbox and hide_call_log_info # 140425-0906 - Added user permission for editing custom dialplan entries # 140425-1257 - Added queuemetrics_pause_type system settings option, and added pause_type to agent logout +# 140509-2201 - Added frozen_server_call_clear system setting, used in admin.php and AST_timecheck.pl # # make sure you have added a user to the vicidial_users MySQL table with at least user_level 8 to access this page the first time -$admin_version = '2.8-437a'; -$build = '140425-1257'; +$admin_version = '2.8-438a'; +$build = '140509-2201'; $STARTtime = date("U"); $SQLdate = date("Y-m-d H:i:s"); @@ -14390,7 +14395,7 @@ if ($ADD==411111111111111) $custom_dialplanSQL=''; if ($LOGmodify_custom_dialplans > 0) {$custom_dialplanSQL = ",custom_dialplan_entry='$custom_dialplan_entry'";} - $stmt="UPDATE system_settings set use_non_latin='$use_non_latin',webroot_writable='$webroot_writable',enable_queuemetrics_logging='$enable_queuemetrics_logging',queuemetrics_server_ip='$queuemetrics_server_ip',queuemetrics_dbname='$queuemetrics_dbname',queuemetrics_login='$queuemetrics_login',queuemetrics_pass='$queuemetrics_pass',queuemetrics_url='$queuemetrics_url',queuemetrics_log_id='$queuemetrics_log_id',queuemetrics_eq_prepend='$queuemetrics_eq_prepend',vicidial_agent_disable='$vicidial_agent_disable',allow_sipsak_messages='$allow_sipsak_messages',admin_home_url='$admin_home_url',enable_agc_xfer_log='$enable_agc_xfer_log',timeclock_end_of_day='$timeclock_end_of_day',vdc_header_date_format='$vdc_header_date_format',vdc_customer_date_format='$vdc_customer_date_format',vdc_header_phone_format='$vdc_header_phone_format',vdc_agent_api_active='$vdc_agent_api_active',enable_vtiger_integration='$enable_vtiger_integration',vtiger_server_ip='$vtiger_server_ip',vtiger_dbname='$vtiger_dbname',vtiger_login='$vtiger_login',vtiger_pass='$vtiger_pass',vtiger_url='$vtiger_url',qc_features_active='$qc_features_active',outbound_autodial_active='$outbound_autodial_active',outbound_calls_per_second='$outbound_calls_per_second',enable_tts_integration='$enable_tts_integration',agentonly_callback_campaign_lock='$agentonly_callback_campaign_lock',sounds_central_control_active='$sounds_central_control_active',sounds_web_server='$sounds_web_server',sounds_web_directory='$sounds_web_directory',active_voicemail_server='$active_voicemail_server',auto_dial_limit='$auto_dial_limit',user_territories_active='$user_territories_active',allow_custom_dialplan='$allow_custom_dialplan',enable_second_webform='$enable_second_webform',default_webphone='$default_webphone',default_external_server_ip='$default_external_server_ip',webphone_url='" . mysqli_real_escape_string($link, $webphone_url) . "',enable_agc_dispo_log='$enable_agc_dispo_log',queuemetrics_loginout='$queuemetrics_loginout',callcard_enabled='$callcard_enabled',queuemetrics_callstatus='$queuemetrics_callstatus',default_codecs='$default_codecs',admin_web_directory='$admin_web_directory',label_title='$label_title',label_first_name='$label_first_name',label_middle_initial='$label_middle_initial',label_last_name='$label_last_name',label_address1='$label_address1',label_address2='$label_address2',label_address3='$label_address3',label_city='$label_city',label_state='$label_state',label_province='$label_province',label_postal_code='$label_postal_code',label_vendor_lead_code='$label_vendor_lead_code',label_gender='$label_gender',label_phone_number='$label_phone_number',label_phone_code='$label_phone_code',label_alt_phone='$label_alt_phone',label_security_phrase='$label_security_phrase',label_email='$label_email',label_comments='$label_comments',custom_fields_enabled='$custom_fields_enabled',slave_db_server='$slave_db_server',reports_use_slave_db='$reports_use_slave_db',webphone_systemkey='$webphone_systemkey',first_login_trigger='$first_login_trigger',default_phone_registration_password='$default_phone_registration_password',default_phone_login_password='$default_phone_login_password',default_server_password='$default_server_password',admin_modify_refresh='$admin_modify_refresh',nocache_admin='$nocache_admin',generate_cross_server_exten='$generate_cross_server_exten',queuemetrics_addmember_enabled='$queuemetrics_addmember_enabled',queuemetrics_dispo_pause='$queuemetrics_dispo_pause',label_hide_field_logs='$label_hide_field_logs',queuemetrics_pe_phone_append='$queuemetrics_pe_phone_append',test_campaign_calls='$test_campaign_calls',agents_calls_reset='$agents_calls_reset',default_voicemail_timezone='$default_voicemail_timezone',default_local_gmt='$default_local_gmt',noanswer_log='$noanswer_log',alt_log_server_ip='$alt_log_server_ip',alt_log_dbname='$alt_log_dbname',alt_log_login='$alt_log_login',alt_log_pass='$alt_log_pass',tables_use_alt_log_db='$tables_use_alt_log_db',did_agent_log='$did_agent_log',campaign_cid_areacodes_enabled='$campaign_cid_areacodes_enabled',pllb_grouping_limit='$pllb_grouping_limit',did_ra_extensions_enabled='$did_ra_extensions_enabled',expanded_list_stats='$expanded_list_stats',contacts_enabled='$contacts_enabled',call_menu_qualify_enabled='$call_menu_qualify_enabled',admin_list_counts='$admin_list_counts',allow_voicemail_greeting='$allow_voicemail_greeting',queuemetrics_socket='$queuemetrics_socket',queuemetrics_socket_url='$queuemetrics_socket_url',enhanced_disconnect_logging='$enhanced_disconnect_logging',allow_emails='$allow_emails',level_8_disable_add='$level_8_disable_add',queuemetrics_record_hold='$queuemetrics_record_hold',country_code_list_stats='$country_code_list_stats',queuemetrics_pause_type='$queuemetrics_pause_type'$custom_dialplanSQL;"; + $stmt="UPDATE system_settings set use_non_latin='$use_non_latin',webroot_writable='$webroot_writable',enable_queuemetrics_logging='$enable_queuemetrics_logging',queuemetrics_server_ip='$queuemetrics_server_ip',queuemetrics_dbname='$queuemetrics_dbname',queuemetrics_login='$queuemetrics_login',queuemetrics_pass='$queuemetrics_pass',queuemetrics_url='$queuemetrics_url',queuemetrics_log_id='$queuemetrics_log_id',queuemetrics_eq_prepend='$queuemetrics_eq_prepend',vicidial_agent_disable='$vicidial_agent_disable',allow_sipsak_messages='$allow_sipsak_messages',admin_home_url='$admin_home_url',enable_agc_xfer_log='$enable_agc_xfer_log',timeclock_end_of_day='$timeclock_end_of_day',vdc_header_date_format='$vdc_header_date_format',vdc_customer_date_format='$vdc_customer_date_format',vdc_header_phone_format='$vdc_header_phone_format',vdc_agent_api_active='$vdc_agent_api_active',enable_vtiger_integration='$enable_vtiger_integration',vtiger_server_ip='$vtiger_server_ip',vtiger_dbname='$vtiger_dbname',vtiger_login='$vtiger_login',vtiger_pass='$vtiger_pass',vtiger_url='$vtiger_url',qc_features_active='$qc_features_active',outbound_autodial_active='$outbound_autodial_active',outbound_calls_per_second='$outbound_calls_per_second',enable_tts_integration='$enable_tts_integration',agentonly_callback_campaign_lock='$agentonly_callback_campaign_lock',sounds_central_control_active='$sounds_central_control_active',sounds_web_server='$sounds_web_server',sounds_web_directory='$sounds_web_directory',active_voicemail_server='$active_voicemail_server',auto_dial_limit='$auto_dial_limit',user_territories_active='$user_territories_active',allow_custom_dialplan='$allow_custom_dialplan',enable_second_webform='$enable_second_webform',default_webphone='$default_webphone',default_external_server_ip='$default_external_server_ip',webphone_url='" . mysqli_real_escape_string($link, $webphone_url) . "',enable_agc_dispo_log='$enable_agc_dispo_log',queuemetrics_loginout='$queuemetrics_loginout',callcard_enabled='$callcard_enabled',queuemetrics_callstatus='$queuemetrics_callstatus',default_codecs='$default_codecs',admin_web_directory='$admin_web_directory',label_title='$label_title',label_first_name='$label_first_name',label_middle_initial='$label_middle_initial',label_last_name='$label_last_name',label_address1='$label_address1',label_address2='$label_address2',label_address3='$label_address3',label_city='$label_city',label_state='$label_state',label_province='$label_province',label_postal_code='$label_postal_code',label_vendor_lead_code='$label_vendor_lead_code',label_gender='$label_gender',label_phone_number='$label_phone_number',label_phone_code='$label_phone_code',label_alt_phone='$label_alt_phone',label_security_phrase='$label_security_phrase',label_email='$label_email',label_comments='$label_comments',custom_fields_enabled='$custom_fields_enabled',slave_db_server='$slave_db_server',reports_use_slave_db='$reports_use_slave_db',webphone_systemkey='$webphone_systemkey',first_login_trigger='$first_login_trigger',default_phone_registration_password='$default_phone_registration_password',default_phone_login_password='$default_phone_login_password',default_server_password='$default_server_password',admin_modify_refresh='$admin_modify_refresh',nocache_admin='$nocache_admin',generate_cross_server_exten='$generate_cross_server_exten',queuemetrics_addmember_enabled='$queuemetrics_addmember_enabled',queuemetrics_dispo_pause='$queuemetrics_dispo_pause',label_hide_field_logs='$label_hide_field_logs',queuemetrics_pe_phone_append='$queuemetrics_pe_phone_append',test_campaign_calls='$test_campaign_calls',agents_calls_reset='$agents_calls_reset',default_voicemail_timezone='$default_voicemail_timezone',default_local_gmt='$default_local_gmt',noanswer_log='$noanswer_log',alt_log_server_ip='$alt_log_server_ip',alt_log_dbname='$alt_log_dbname',alt_log_login='$alt_log_login',alt_log_pass='$alt_log_pass',tables_use_alt_log_db='$tables_use_alt_log_db',did_agent_log='$did_agent_log',campaign_cid_areacodes_enabled='$campaign_cid_areacodes_enabled',pllb_grouping_limit='$pllb_grouping_limit',did_ra_extensions_enabled='$did_ra_extensions_enabled',expanded_list_stats='$expanded_list_stats',contacts_enabled='$contacts_enabled',call_menu_qualify_enabled='$call_menu_qualify_enabled',admin_list_counts='$admin_list_counts',allow_voicemail_greeting='$allow_voicemail_greeting',queuemetrics_socket='$queuemetrics_socket',queuemetrics_socket_url='$queuemetrics_socket_url',enhanced_disconnect_logging='$enhanced_disconnect_logging',allow_emails='$allow_emails',level_8_disable_add='$level_8_disable_add',queuemetrics_record_hold='$queuemetrics_record_hold',country_code_list_stats='$country_code_list_stats',queuemetrics_pause_type='$queuemetrics_pause_type',frozen_server_call_clear='$frozen_server_call_clear'$custom_dialplanSQL;"; $rslt=mysql_to_mysqli($stmt, $link); if ($reload_dialplan_on_servers > 0) @@ -28340,7 +28345,7 @@ if ($ADD==311111111111111) $ALLagent_count = $rowx[2]; } - $stmt="SELECT version,install_date,use_non_latin,webroot_writable,enable_queuemetrics_logging,queuemetrics_server_ip,queuemetrics_dbname,queuemetrics_login,queuemetrics_pass,queuemetrics_url,queuemetrics_log_id,queuemetrics_eq_prepend,vicidial_agent_disable,allow_sipsak_messages,admin_home_url,enable_agc_xfer_log,db_schema_version,auto_user_add_value,timeclock_end_of_day,timeclock_last_reset_date,vdc_header_date_format,vdc_customer_date_format,vdc_header_phone_format,vdc_agent_api_active,qc_last_pull_time,enable_vtiger_integration,vtiger_server_ip,vtiger_dbname,vtiger_login,vtiger_pass,vtiger_url,qc_features_active,outbound_autodial_active,outbound_calls_per_second,enable_tts_integration,agentonly_callback_campaign_lock,sounds_central_control_active,sounds_web_server,sounds_web_directory,active_voicemail_server,auto_dial_limit,user_territories_active,allow_custom_dialplan,db_schema_update_date,enable_second_webform,default_webphone,default_external_server_ip,webphone_url,enable_agc_dispo_log,custom_dialplan_entry,queuemetrics_loginout,callcard_enabled,queuemetrics_callstatus,default_codecs,admin_web_directory,label_title,label_first_name,label_middle_initial,label_last_name,label_address1,label_address2,label_address3,label_city,label_state,label_province,label_postal_code,label_vendor_lead_code,label_gender,label_phone_number,label_phone_code,label_alt_phone,label_security_phrase,label_email,label_comments,custom_fields_enabled,slave_db_server,reports_use_slave_db,webphone_systemkey,first_login_trigger,default_phone_registration_password,default_phone_login_password,default_server_password,admin_modify_refresh,nocache_admin,generate_cross_server_exten,queuemetrics_addmember_enabled,queuemetrics_dispo_pause,label_hide_field_logs,queuemetrics_pe_phone_append,test_campaign_calls,agents_calls_reset,default_voicemail_timezone,default_local_gmt,noanswer_log,alt_log_server_ip,alt_log_dbname,alt_log_login,alt_log_pass,tables_use_alt_log_db,did_agent_log,campaign_cid_areacodes_enabled,pllb_grouping_limit,did_ra_extensions_enabled,expanded_list_stats,contacts_enabled,call_menu_qualify_enabled,admin_list_counts,allow_voicemail_greeting,svn_revision,queuemetrics_socket,queuemetrics_socket_url,enhanced_disconnect_logging,allow_emails,level_8_disable_add,pass_hash_enabled,pass_key,pass_cost,disable_auto_dial,queuemetrics_record_hold,country_code_list_stats,reload_timestamp,queuemetrics_pause_type from system_settings;"; + $stmt="SELECT version,install_date,use_non_latin,webroot_writable,enable_queuemetrics_logging,queuemetrics_server_ip,queuemetrics_dbname,queuemetrics_login,queuemetrics_pass,queuemetrics_url,queuemetrics_log_id,queuemetrics_eq_prepend,vicidial_agent_disable,allow_sipsak_messages,admin_home_url,enable_agc_xfer_log,db_schema_version,auto_user_add_value,timeclock_end_of_day,timeclock_last_reset_date,vdc_header_date_format,vdc_customer_date_format,vdc_header_phone_format,vdc_agent_api_active,qc_last_pull_time,enable_vtiger_integration,vtiger_server_ip,vtiger_dbname,vtiger_login,vtiger_pass,vtiger_url,qc_features_active,outbound_autodial_active,outbound_calls_per_second,enable_tts_integration,agentonly_callback_campaign_lock,sounds_central_control_active,sounds_web_server,sounds_web_directory,active_voicemail_server,auto_dial_limit,user_territories_active,allow_custom_dialplan,db_schema_update_date,enable_second_webform,default_webphone,default_external_server_ip,webphone_url,enable_agc_dispo_log,custom_dialplan_entry,queuemetrics_loginout,callcard_enabled,queuemetrics_callstatus,default_codecs,admin_web_directory,label_title,label_first_name,label_middle_initial,label_last_name,label_address1,label_address2,label_address3,label_city,label_state,label_province,label_postal_code,label_vendor_lead_code,label_gender,label_phone_number,label_phone_code,label_alt_phone,label_security_phrase,label_email,label_comments,custom_fields_enabled,slave_db_server,reports_use_slave_db,webphone_systemkey,first_login_trigger,default_phone_registration_password,default_phone_login_password,default_server_password,admin_modify_refresh,nocache_admin,generate_cross_server_exten,queuemetrics_addmember_enabled,queuemetrics_dispo_pause,label_hide_field_logs,queuemetrics_pe_phone_append,test_campaign_calls,agents_calls_reset,default_voicemail_timezone,default_local_gmt,noanswer_log,alt_log_server_ip,alt_log_dbname,alt_log_login,alt_log_pass,tables_use_alt_log_db,did_agent_log,campaign_cid_areacodes_enabled,pllb_grouping_limit,did_ra_extensions_enabled,expanded_list_stats,contacts_enabled,call_menu_qualify_enabled,admin_list_counts,allow_voicemail_greeting,svn_revision,queuemetrics_socket,queuemetrics_socket_url,enhanced_disconnect_logging,allow_emails,level_8_disable_add,pass_hash_enabled,pass_key,pass_cost,disable_auto_dial,queuemetrics_record_hold,country_code_list_stats,reload_timestamp,queuemetrics_pause_type,frozen_server_call_clear from system_settings;"; $rslt=mysql_to_mysqli($stmt, $link); $row=mysqli_fetch_row($rslt); $version = $row[0]; @@ -28465,6 +28470,7 @@ if ($ADD==311111111111111) $country_code_list_stats = $row[119]; $reload_timestamp = $row[120]; $queuemetrics_pause_type = $row[121]; + $frozen_server_call_clear = $row[122]; if ($pass_hash_enabled > 0) {$pass_hash_enabled = 'ENABLED';} else {$pass_hash_enabled = 'DISABLED';} @@ -28497,6 +28503,7 @@ if ($ADD==311111111111111) echo "\n"; echo "\n"; echo "$NWB#settings-agent_disable$NWE\n"; + echo "Clear Frozen Calls: $NWB#settings-frozen_server_call_clear$NWE\n"; echo "Allow SIPSAK Messages: $NWB#settings-allow_sipsak_messages$NWE\n"; echo "Admin Home URL: $NWB#settings-admin_home_url$NWE\n"; echo "Admin Modify Auto-Refresh: $NWB#settings-admin_modify_refresh$NWE\n"; @@ -31715,19 +31722,54 @@ if ($ADD==999999) $s_time=' '; $s_ver=' '; $u_time=$web_u_time; - $stmt="SELECT last_update,UNIX_TIMESTAMP(last_update) from server_updater where server_ip='$server_ip[$o]';"; + $reset_time=$web_u_time; + $Sdb_time=$web_u_time; + $stmt="SELECT last_update,UNIX_TIMESTAMP(last_update),UNIX_TIMESTAMP(db_time) from server_updater where server_ip='$server_ip[$o]';"; $rslt=mysql_to_mysqli($stmt, $link); if ($DB) {echo "$stmt\n";} $servertime_to_print = mysqli_num_rows($rslt); if ($servertime_to_print) { $row=mysqli_fetch_row($rslt); - $s_time = $row[0]; - $u_time = ($row[1] + 10); + $s_time = $row[0]; + $u_time = ($row[1] + 10); + $reset_time = ($row[1] + 90); + $Sdb_time = ($row[2] + 10); } $server_bgcolor=''; + $FROZEN_output=''; if ($web_u_time > $u_time) {$server_bgcolor=' bgcolor=red';} + if ( ($web_u_time > $reset_time) and ($web_u_time > $Sdb_time) and ($SSfrozen_server_call_clear > 0) ) + { + #### if server is more than 90 seconds out of sync and no longer updating, check for live calls and agents and delete them + $servercalls_count=0; + $stmt="SELECT count(*) from vicidial_auto_calls where server_ip='$server_ip[$o]';"; + $rslt=mysql_to_mysqli($stmt, $link); + if ($DB) {echo "$stmt\n";} + $servercalls_to_print = mysqli_num_rows($rslt); + if ($servercalls_to_print) + { + $row=mysqli_fetch_row($rslt); + $servercalls_count = $row[0]; + } + if ($servercalls_count > 0) + { + $stmt="DELETE FROM vicidial_auto_calls where server_ip='$server_ip[$o]';"; + $rslt=mysql_to_mysqli($stmt, $link); + $FCaffected_rows = mysqli_affected_rows($link); + + ### LOG INSERTION Admin Log Table ### + $SQL_log = "$stmt|"; + $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='$server_ip[$o]', event_section='SERVERS', event_type='CLEAR', record_id='$server_id[$o]', event_code='FROZEN SERVER CALL CLEAR ADMIN', event_sql=\"$SQL_log\", event_notes='$servercalls_count|$FCaffected_rows|$s_time($web_u_time|$Sdb_time)';"; + if ($DB) {echo "|$stmt|\n";} + $rslt=mysql_to_mysqli($stmt, $link); + + $FROZEN_output = "   FROZEN CALLS CLEARED: $servercalls_count|$FCaffected_rows\n"; + } + } echo "\n"; echo "$server_id[$o]\n"; echo "$server_description[$o]\n"; @@ -31763,6 +31805,7 @@ if ($ADD==999999) } } echo "\n"; + echo "$FROZEN_output"; $o++; } diff --git a/agc_2-X/trunk/www/vicidial/help.php b/agc_2-X/trunk/www/vicidial/help.php index 9603fc64..0415af20 100644 --- a/agc_2-X/trunk/www/vicidial/help.php +++ b/agc_2-X/trunk/www/vicidial/help.php @@ -15,6 +15,7 @@ # 140423-1637 - Added manual_dial_search_checkbox and hide_call_log_info # 140425-0912 - Added modify_custom_dialplans # 140425-1306 - Added queuemetrics_pause_type +# 140509-2211 - Added frozen_server_call_clear # @@ -4148,6 +4149,11 @@ if ($SSoutbound_autodial_active > 0)
Agent Disable Display - This field is used to select when to show an agent notices when their session has been disabled by the system, a manager action or by an external measure. The NOT_ACTIVE setting will disable the message on the agents screen. The LIVE_AGENT setting will only display the disabled message when the agents auto_calls record has been removed, such as during a force logout or emergency logout. Default is ALL. +
+ +
+Clear Frozen Calls - This option can enable the ability for the general Reports page and the optional AST_timecheck.pl script to clear out the auto_calls entries for a frozen server so they do not affect call routing. Default is 0 for disabled. +