diff --git a/UPGRADE b/UPGRADE
index 602c334a..41e1f6e6 100644
--- a/UPGRADE
+++ b/UPGRADE
@@ -308,6 +308,10 @@ OTHER CHANGES:
67. Changed the example iax.conf and sip.conf to default to context=trunkinbound
to prevent unauthenticated calls on insecure phone accounts
+68. Added password strength grading for users, phones and servers. Added ability
+ to force a user password change on the next admin login. Added password
+ default settings to System Settings and added a first login setup screen
+
diff --git a/extras/MySQL_AST_CREATE_tables.sql b/extras/MySQL_AST_CREATE_tables.sql
index bdada7f9..808dca12 100644
--- a/extras/MySQL_AST_CREATE_tables.sql
+++ b/extras/MySQL_AST_CREATE_tables.sql
@@ -558,7 +558,8 @@ agent_call_log_view_override ENUM('DISABLED','Y','N') default 'DISABLED',
callcard_admin ENUM('1','0') default '0',
agent_choose_blended ENUM('0','1') default '1',
realtime_block_user_info ENUM('0','1') default '0',
-custom_fields_modify ENUM('0','1') default '0'
+custom_fields_modify ENUM('0','1') default '0',
+force_change_password ENUM('Y','N') default 'N'
);
CREATE UNIQUE INDEX user ON vicidial_users (user);
@@ -1323,7 +1324,12 @@ label_email VARCHAR(40) default '',
label_comments VARCHAR(40) default '',
slave_db_server VARCHAR(50) default '',
reports_use_slave_db VARCHAR(2000) default '',
-webphone_systemkey VARCHAR(100) default ''
+webphone_systemkey VARCHAR(100) default '',
+first_login_trigger ENUM('Y','N') default 'N',
+hosted_settings VARCHAR(100) default '',
+default_phone_registration_password VARCHAR(20) default 'test',
+default_phone_login_password VARCHAR(20) default 'test',
+default_server_password VARCHAR(20) default 'test'
);
CREATE TABLE vicidial_campaigns_list_mix (
@@ -2241,7 +2247,7 @@ INSERT INTO vicidial_inbound_groups(group_id,group_name,group_color,active,queue
INSERT INTO vicidial_lists SET list_id='999',list_name='Default inbound list',campaign_id='TESTCAMP',active='N';
INSERT INTO vicidial_lists SET list_id='998',list_name='Default Manual list',campaign_id='TESTCAMP',active='N';
-INSERT INTO system_settings (version,install_date) values('2.4b0.5', CURDATE());
+INSERT INTO system_settings (version,install_date,first_login_trigger) values('2.4b0.5', CURDATE(), 'Y');
INSERT INTO vicidial_status_categories (vsc_id,vsc_name) values('UNDEFINED','Default Category');
@@ -2356,7 +2362,7 @@ ALTER TABLE vicidial_agent_log_archive MODIFY agent_log_id INT(9) UNSIGNED NOT N
CREATE TABLE vicidial_carrier_log_archive LIKE vicidial_carrier_log;
-UPDATE system_settings SET db_schema_version='1243',db_schema_update_date=NOW();
+UPDATE system_settings SET db_schema_version='1244',db_schema_update_date=NOW();
GRANT RELOAD ON *.* TO cron@'%';
GRANT RELOAD ON *.* TO cron@localhost;
diff --git a/extras/upgrade_2.4.sql b/extras/upgrade_2.4.sql
index ab9c5a40..138c7f3c 100644
--- a/extras/upgrade_2.4.sql
+++ b/extras/upgrade_2.4.sql
@@ -531,3 +531,13 @@ ALTER TABLE vicidial_user_groups ADD webphone_systemkey_override VARCHAR(100) de
ALTER TABLE vicidial_user_groups ADD webphone_dialpad_override ENUM('DISABLED','Y','N','TOGGLE') default 'DISABLED';
UPDATE system_settings SET db_schema_version='1243',db_schema_update_date=NOW();
+
+ALTER TABLE vicidial_users ADD force_change_password ENUM('Y','N') default 'N';
+
+ALTER TABLE system_settings ADD first_login_trigger ENUM('Y','N') default 'N';
+ALTER TABLE system_settings ADD hosted_settings VARCHAR(100) default '';
+ALTER TABLE system_settings ADD default_phone_registration_password VARCHAR(20) default 'test';
+ALTER TABLE system_settings ADD default_phone_login_password VARCHAR(20) default 'test';
+ALTER TABLE system_settings ADD default_server_password VARCHAR(20) default 'test';
+
+UPDATE system_settings SET db_schema_version='1244',db_schema_update_date=NOW();
diff --git a/translations/raw_translation_files/TO_BE_TRANSLATED_2.4.txt b/translations/raw_translation_files/TO_BE_TRANSLATED_2.4.txt
index 434b247e..1fd43f9b 100644
--- a/translations/raw_translation_files/TO_BE_TRANSLATED_2.4.txt
+++ b/translations/raw_translation_files/TO_BE_TRANSLATED_2.4.txt
@@ -389,6 +389,50 @@ Webphone Dialpad||
This setting allows you to activate or deactivate the dialpad for this webphone. Default is Y for enabled. TOGGLE will allow the user to view and hide the dialpad by clicking a link. This feature is not available on all webphone versions||
Webphone System Key||
If your system or provider requires it, this is where the System Key for the webphone should be entered in. Default is empty||
+ Strength||
+A strong registration password should be at least 8 characters in length and have lower case and upper case letters as well as at least one number||
+A strong conf file secret should be at least 8 characters in length and have lower case and upper case letters as well as at least one number||
+A strong user password should be at least 8 characters in length and have lower case and upper case letters as well as at least one number||
+Force Change Password||
+If this option is set to Y then the user will be prompted to change their password the next time they log in to the administration webpage. Default is N||
+First Login Trigger||
+This setting allows for the initial configuration of the server screen to be shown to the administrator when they first log into the system||
+Default Phone Registration Password||
+This is the default registration password used when new phones are added to the system. Default is test||
+Default Phone Login Password||
+This is the default phone web login password used when new phones are added to the system. Default is test||
+Default Server Password||
+This is the default server password used when new servers are added to the system. Default is test||
+CHANGE PASSWORD||
+INITIAL INSTALL WELCOME||
+COPYRIGHT TRADEMARK LICENSE||
+You are required to change your password before you can continue on to Administration. A strong password has both lower case and upper case letters as well as at least one number. Your password must be from 2 to 20 characters in length and cannot contain any characters that are not letters or numbers||
+Be sure that this password is something that you can remember, because as soon as you make this change you will be prompted to enter your new password to log back in to Administration||
+Password has not been changed, please try again||
+New Password||
+Password has been updated, you may now continue||
+Passwords have been updated, you may now continue on into Administration||
+You may want to start by reading the ViciDial Manager Manual available at||
+there is a free version available||
+Be sure that this password is something that you can remember, because as soon as you complete this initial setup screen you will be prompted to enter your new password in again to log back in to Administration||
+The next three default passwords are defined in the System Settings section, and you can change them after you define them here. It is a good idea to make these passwords strong so that no one can hack into your phone accounts and place phone calls without you knowing. The default registration password used when new phones are added to the system as the SIP or IAX VOIP phone password. The default phone web login password used when new phones are added to the system, as the phone password that an agent would use in the ViciDial Agent Interface. The default server password used when new servers are added to the system for servers to communicate with each other||
+Passwords have been updated, you may now continue on into Administration||
+You may want to start by reading the ViciDial Manager Manual available at||
+there is a free version available||
+Welcome to ViciDial||
+initial setup screen||
+copyright, trademark and license page||
+The ViciDial Call Center Suite is maintained by the||
+is a registered trademark of the||
+Here is our||
+trademark use policy||
+The ViciDial Call Center Suite is released under the||
+open source license||
+The ViciDial Call Center Suite software is available for download, and for use, free of cost. You can download the easy to install||
+ViciBox CD ISO version||
+or only the||
+source code||
+Continue on to the Initial Setup||
AST_VICIDIAL_ingrouplist.php
diff --git a/www/agc/images/Thumbs.db b/www/agc/images/Thumbs.db
deleted file mode 100644
index 0249725e..00000000
Binary files a/www/agc/images/Thumbs.db and /dev/null differ
diff --git a/www/vicidial/admin.php b/www/vicidial/admin.php
index 916fae6f..2c35be82 100644
--- a/www/vicidial/admin.php
+++ b/www/vicidial/admin.php
@@ -1443,6 +1443,16 @@ if (isset($_GET["webphone_systemkey_override"])) {$webphone_systemkey_override
elseif (isset($_POST["webphone_systemkey_override"])) {$webphone_systemkey_override=$_POST["webphone_systemkey_override"];}
if (isset($_GET["webphone_dialpad_override"])) {$webphone_dialpad_override=$_GET["webphone_dialpad_override"];}
elseif (isset($_POST["webphone_dialpad_override"])) {$webphone_dialpad_override=$_POST["webphone_dialpad_override"];}
+if (isset($_GET["force_change_password"])) {$force_change_password=$_GET["force_change_password"];}
+ elseif (isset($_POST["force_change_password"])) {$force_change_password=$_POST["force_change_password"];}
+if (isset($_GET["first_login_trigger"])) {$first_login_trigger=$_GET["first_login_trigger"];}
+ elseif (isset($_POST["first_login_trigger"])) {$first_login_trigger=$_POST["first_login_trigger"];}
+if (isset($_GET["default_phone_registration_password"])) {$default_phone_registration_password=$_GET["default_phone_registration_password"];}
+ elseif (isset($_POST["default_phone_registration_password"])) {$default_phone_registration_password=$_POST["default_phone_registration_password"];}
+if (isset($_GET["default_phone_login_password"])) {$default_phone_login_password=$_GET["default_phone_login_password"];}
+ elseif (isset($_POST["default_phone_login_password"])) {$default_phone_login_password=$_POST["default_phone_login_password"];}
+if (isset($_GET["default_server_password"])) {$default_server_password=$_GET["default_server_password"];}
+ elseif (isset($_POST["default_server_password"])) {$default_server_password=$_POST["default_server_password"];}
if (isset($script_id)) {$script_id= strtoupper($script_id);}
@@ -1456,28 +1466,34 @@ 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 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 FROM system_settings;";
$rslt=mysql_query($stmt, $link);
if ($DB) {echo "$stmt\n";}
$qm_conf_ct = mysql_num_rows($rslt);
if ($qm_conf_ct > 0)
{
$row=mysql_fetch_row($rslt);
- $non_latin = $row[0];
- $SSenable_queuemetrics_logging = $row[1];
- $SSenable_vtiger_integration = $row[2];
- $SSqc_features_active = $row[3];
- $SSoutbound_autodial_active = $row[4];
- $SSsounds_central_control_active = $row[5];
- $SSenable_second_webform = $row[6];
- $SSuser_territories_active = $row[7];
- $SScustom_fields_enabled = $row[8];
- $SSadmin_web_directory = $row[9];
- $SSwebphone_url = $row[10];
+ $non_latin = $row[0];
+ $SSenable_queuemetrics_logging = $row[1];
+ $SSenable_vtiger_integration = $row[2];
+ $SSqc_features_active = $row[3];
+ $SSoutbound_autodial_active = $row[4];
+ $SSsounds_central_control_active = $row[5];
+ $SSenable_second_webform = $row[6];
+ $SSuser_territories_active = $row[7];
+ $SScustom_fields_enabled = $row[8];
+ $SSadmin_web_directory = $row[9];
+ $SSwebphone_url = $row[10];
+ $SSfirst_login_trigger = $row[11];
+ $SShosted_settings = $row[12];
+ $SSdefault_phone_registration_password =$row[13];
+ $SSdefault_phone_login_password = $row[14];
+ $SSdefault_server_password = $row[15];
}
##### END SETTINGS LOOKUP #####
###########################################
+
######################################################################################################
######################################################################################################
####### Form variable filtering for security and data integrity
@@ -1748,6 +1764,8 @@ if ($non_latin < 1)
$hold_time_option_no_block = ereg_replace("[^NY]","",$hold_time_option_no_block);
$wait_time_option_no_block = ereg_replace("[^NY]","",$wait_time_option_no_block);
$preset_hide_number = ereg_replace("[^NY]","",$preset_hide_number);
+ $force_change_password = ereg_replace("[^NY]","",$force_change_password);
+ $first_login_trigger = ereg_replace("[^NY]","",$first_login_trigger);
$qc_enabled = ereg_replace("[^0-9NY]","",$qc_enabled);
$active = ereg_replace("[^0-9NY]","",$active);
@@ -1993,6 +2011,9 @@ if ($non_latin < 1)
$webphone_dialpad = ereg_replace("[^-_0-9a-zA-Z]","",$webphone_dialpad);
$webphone_systemkey_override = ereg_replace("[^-_0-9a-zA-Z]","",$webphone_systemkey_override);
$webphone_dialpad_override = ereg_replace("[^-_0-9a-zA-Z]","",$webphone_dialpad_override);
+ $default_phone_registration_password = ereg_replace("[^-_0-9a-zA-Z]","",$default_phone_registration_password);
+ $default_phone_login_password = ereg_replace("[^-_0-9a-zA-Z]","",$default_phone_login_password);
+ $default_server_password = ereg_replace("[^-_0-9a-zA-Z]","",$default_server_password);
### ALPHA-NUMERIC and underscore and dash and slash and dot
$menu_prompt = ereg_replace("[^-\/\|\._0-9a-zA-Z]","",$menu_prompt);
@@ -2513,11 +2534,12 @@ else
# 100817-1243 - Added checking for reserved menu_id on creation of Call Menus
# 100823-1501 - Added CallCard search as an available User Group report option
# 100827-1535 - Added webphone options for dialpad and systemkey
+# 100901-2055 - Added password strength grading, force password change, password default settings and first login screen
#
# 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.4-277';
-$build = '100827-1535';
+$admin_version = '2.4-278';
+$build = '100901-2055';
$STARTtime = date("U");
$SQLdate = date("Y-m-d H:i:s");
@@ -2620,7 +2642,7 @@ if ( ($auth > 0) or ($reports_auth > 0) )
{
$office_no=strtoupper($PHP_AUTH_USER);
$password=strtoupper($PHP_AUTH_PW);
- $stmt="SELECT user_id,user,pass,full_name,user_level,user_group,phone_login,phone_pass,delete_users,delete_user_groups,delete_lists,delete_campaigns,delete_ingroups,delete_remote_agents,load_leads,campaign_detail,ast_admin_access,ast_delete_phones,delete_scripts,modify_leads,hotkeys_active,change_agent_campaign,agent_choose_ingroups,closer_campaigns,scheduled_callbacks,agentonly_callbacks,agentcall_manual,vicidial_recording,vicidial_transfers,delete_filters,alter_agent_interface_options,closer_default_blended,delete_call_times,modify_call_times,modify_users,modify_campaigns,modify_lists,modify_scripts,modify_filters,modify_ingroups,modify_usergroups,modify_remoteagents,modify_servers,view_reports,vicidial_recording_override,alter_custdata_override,qc_enabled,qc_user_level,qc_pass,qc_finish,qc_commit,add_timeclock_log,modify_timeclock_log,delete_timeclock_log,alter_custphone_override,vdc_agent_api_access,modify_inbound_dids,delete_inbound_dids,active,alert_enabled,download_lists,agent_shift_enforcement_override,manager_shift_enforcement_override,shift_override_flag,export_reports,delete_from_dnc,email,user_code,territory,allow_alerts,callcard_admin from vicidial_users where user='$PHP_AUTH_USER' and pass='$PHP_AUTH_PW';";
+ $stmt="SELECT user_id,user,pass,full_name,user_level,user_group,phone_login,phone_pass,delete_users,delete_user_groups,delete_lists,delete_campaigns,delete_ingroups,delete_remote_agents,load_leads,campaign_detail,ast_admin_access,ast_delete_phones,delete_scripts,modify_leads,hotkeys_active,change_agent_campaign,agent_choose_ingroups,closer_campaigns,scheduled_callbacks,agentonly_callbacks,agentcall_manual,vicidial_recording,vicidial_transfers,delete_filters,alter_agent_interface_options,closer_default_blended,delete_call_times,modify_call_times,modify_users,modify_campaigns,modify_lists,modify_scripts,modify_filters,modify_ingroups,modify_usergroups,modify_remoteagents,modify_servers,view_reports,vicidial_recording_override,alter_custdata_override,qc_enabled,qc_user_level,qc_pass,qc_finish,qc_commit,add_timeclock_log,modify_timeclock_log,delete_timeclock_log,alter_custphone_override,vdc_agent_api_access,modify_inbound_dids,delete_inbound_dids,active,alert_enabled,download_lists,agent_shift_enforcement_override,manager_shift_enforcement_override,shift_override_flag,export_reports,delete_from_dnc,email,user_code,territory,allow_alerts,callcard_admin,force_change_password from vicidial_users where user='$PHP_AUTH_USER' and pass='$PHP_AUTH_PW';";
$rslt=mysql_query($stmt, $link);
$row=mysql_fetch_row($rslt);
$LOGfull_name =$row[3];
@@ -2656,7 +2678,8 @@ if ( ($auth > 0) or ($reports_auth > 0) )
$LOGmanager_shift_enforcement_override=$row[61];
$LOGexport_reports =$row[64];
$LOGdelete_from_dnc =$row[65];
- $LOGcallcard_admin =$row[66];
+ $LOGcallcard_admin =$row[70];
+ $LOGforce_change_password =$row[71];
$stmt="SELECT allowed_campaigns,allowed_reports from vicidial_user_groups where user_group='$LOGuser_group';";
$rslt=mysql_query($stmt, $link);
@@ -2680,6 +2703,29 @@ if ( ($auth > 0) or ($reports_auth > 0) )
fwrite ($fp, "VICIDIAL|GOOD|$date|$PHP_AUTH_USER|XXXX|$ip|$browser|$LOGfull_name|\n");
fclose($fp);
}
+
+ $first_login_link=0;
+
+ if ($LOGforce_change_password=='Y')
+ {
+ $ADD=999997;
+ $reports_only_user=1;
+ }
+ if ($SSfirst_login_trigger=='Y')
+ {
+
+ if ($ADD==999996)
+ {$reports_only_user=1;}
+ else
+ {
+ $ADD=999995;
+ $first_login_link=1;
+ }
+ }
+ if ($ADD==999995)
+ {
+ $reports_only_user=1;
+ }
}
else
{
@@ -2997,6 +3043,9 @@ if ($ADD==661) {$hh='users'; echo "SEARCH PHONES RESULTS";}
if ($ADD==99999) {$hh='users'; echo "HELP";}
if ($ADD==999999) {$hh='reports'; echo "REPORTS";}
if ($ADD==999998) {$hh='admin'; echo "ADMIN";}
+if ($ADD==999997) {$hh='reports'; echo "CHANGE PASSWORD";}
+if ($ADD==999996) {$hh='reports'; echo "INITIAL INSTALL WELCOME";}
+if ($ADD==999995) {$hh='reports'; echo "COPYRIGHT TRADEMARK LICENSE";}
if ( ($ADD>9) && ($ADD < 99998) )
@@ -3520,7 +3569,12 @@ if ($ADD==99999)
- Password - This field is where you put the VICIDIAL users password. Must be at least 2 characters in length.
+ Password - This field is where you put the VICIDIAL users password. Must be at least 2 characters in length. A strong user password should be at least 8 characters in length and have lower case and upper case letters as well as at least one number.
+
+
+
+
+ Force Change Password - If this option is set to Y then the user will be prompted to change their password the next time they log in to the administration webpage. Default is N.
@@ -6006,7 +6060,7 @@ if ($ADD==99999)
- Registration Password - This is the secret, or password, for the phone in the iax or sip auto-generated conf file for this phone. Limit is 20 characters alphanumeric dash and underscore accepted. Default is test. Formerly called Conf File Secret.
+ Registration Password - This is the secret, or password, for the phone in the iax or sip auto-generated conf file for this phone. Limit is 20 characters alphanumeric dash and underscore accepted. Default is test. Formerly called Conf File Secret. A strong registration password should be at least 8 characters in length and have lower case and upper case letters as well as at least one number.
@@ -6480,7 +6534,7 @@ if ($ADD==99999)
- Conf File Secret - This is the secret, or password, for the server in the iax auto-generated conf file for this server on other servers. Limit is 20 characters alphanumeric dash and underscore accepted. Default is test.
+ Conf File Secret - This is the secret, or password, for the server in the iax auto-generated conf file for this server on other servers. Limit is 20 characters alphanumeric dash and underscore accepted. Default is test. A strong conf file secret should be at least 8 characters in length and have lower case and upper case letters as well as at least one number.
@@ -6881,6 +6935,26 @@ if ($ADD==99999)
Enable Custom List Fields - This setting enables the custom list fields feature that allows for custom data fields to be defined in the administration web interface on a per-list basis and then have those fields available in a FORM tab to the agent in the agent web interface. Default is 0 for disabled.
+
+
+
+ First Login Trigger - This setting allows for the initial configuration of the server screen to be shown to the administrator when they first log into the system.
+
+
+
+
+ Default Phone Registration Password - This is the default registration password used when new phones are added to the system. Default is test.
+
+
+
+
+ Default Phone Login Password - This is the default phone web login password used when new phones are added to the system. Default is test.
+
+
+
+
+ Default Server Password - This is the default server password used when new servers are added to the system. Default is test.
+
@@ -7414,7 +7488,9 @@ if ($ADD=="1")
{
echo "