LICENSE: AGPLv2 # # This script is designed display the contents of an audio soundboard in the system # # CHANGELOG: # 140708-1030 - First build of script # 141126-0754 - Code updates and added progress timer within top STOP button # 141216-2135 - Added language settings lookups and user/pass variable standardization # 160428-1848 - Fix for user_authorization # 161103-1656 - Added Agent Debug Logging # 161111-1647 - Added HIDENUMBERS display option, Font size, button type and layout options # 191013-2122 - Fixes for PHP7 # 210616-2032 - Added optional CORS support, see options.php for details # $version = '2.14-8'; $build = '210616-2032'; $php_script = 'vdc_soundboard_display.php'; require_once("dbconnect_mysqli.php"); require_once("functions.php"); $bcrypt=1; if (isset($_GET["DB"])) {$DB=$_GET["DB"];} elseif (isset($_POST["DB"])) {$DB=$_POST["DB"];} if (isset($_GET["soundboard_id"])) {$soundboard_id=$_GET["soundboard_id"];} elseif (isset($_POST["soundboard_id"])) {$soundboard_id=$_POST["soundboard_id"];} if (isset($_GET["avatar_id"])) {$avatar_id=$_GET["avatar_id"];} elseif (isset($_POST["avatar_id"])) {$avatar_id=$_POST["avatar_id"];} if (isset($_GET["user"])) {$user=$_GET["user"];} elseif (isset($_POST["user"])) {$user=$_POST["user"];} if (isset($_GET["pass"])) {$pass=$_GET["pass"];} elseif (isset($_POST["pass"])) {$pass=$_POST["pass"];} if (isset($_GET["server_ip"])) {$server_ip=$_GET["server_ip"];} elseif (isset($_POST["server_ip"])) {$server_ip=$_POST["server_ip"];} if (isset($_GET["session_id"])) {$session_id=$_GET["session_id"];} elseif (isset($_POST["session_id"])) {$session_id=$_POST["session_id"];} if (isset($_GET["session_name"])) {$session_name=$_GET["session_name"];} elseif (isset($_POST["session_name"])) {$session_name=$_POST["session_name"];} if (isset($_GET["stage"])) {$stage=$_GET["stage"];} elseif (isset($_POST["stage"])) {$stage=$_POST["stage"];} if (isset($_GET["submit_button"])) {$submit_button=$_GET["submit_button"];} elseif (isset($_POST["submit_button"])) {$submit_button=$_POST["submit_button"];} if (isset($_GET["admin_submit"])) {$admin_submit=$_GET["admin_submit"];} elseif (isset($_POST["admin_submit"])) {$admin_submit=$_POST["admin_submit"];} if (isset($_GET["bgcolor"])) {$bgcolor=$_GET["bgcolor"];} elseif (isset($_POST["bgcolor"])) {$bgcolor=$_POST["bgcolor"];} if (isset($_GET["bcrypt"])) {$bcrypt=$_GET["bcrypt"];} elseif (isset($_POST["bcrypt"])) {$bcrypt=$_POST["bcrypt"];} $DB=preg_replace("/[^0-9a-zA-Z]/","",$DB); if ($bcrypt == 'OFF') {$bcrypt=0;} # if options file exists, use the override values for the above variables # see the options-example.php file for more information if (file_exists('options.php')) { require_once('options.php'); } header ("Content-type: text/html; charset=utf-8"); header ("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 header ("Pragma: no-cache"); // HTTP/1.0 $txt = '.txt'; $StarTtime = date("U"); $NOW_DATE = date("Y-m-d"); $NOW_TIME = date("Y-m-d H:i:s"); $CIDdate = date("mdHis"); $ENTRYdate = date("YmdHis"); $MT[0]=''; $agents='@agents'; $script_height = ($script_height - 20); if (strlen($bgcolor) < 6) {$bgcolor='FFFFFF';} $IFRAME=0; $wav='.wav'; $gsm='.gsm'; $user = preg_replace("/\'|\"|\\\\|;| /","",$user); $pass = preg_replace("/\'|\"|\\\\|;| /","",$pass); $PHP_SELF=$_SERVER['PHP_SELF']; $PHP_SELF = preg_replace('/\.php.*/i','.php',$PHP_SELF); ############################################# ##### START SYSTEM_SETTINGS AND USER LANGUAGE LOOKUP ##### $VUselected_language = ''; $stmt="SELECT selected_language from vicidial_users where user='$user';"; if ($DB) {echo "|$stmt|\n";} $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);} $sl_ct = mysqli_num_rows($rslt); if ($sl_ct > 0) { $row=mysqli_fetch_row($rslt); $VUselected_language = $row[0]; } $stmt = "SELECT use_non_latin,timeclock_end_of_day,agentonly_callback_campaign_lock,active_modules,enable_languages,language_method,agent_soundboards 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]; $timeclock_end_of_day = $row[1]; $agentonly_callback_campaign_lock = $row[2]; $active_modules = $row[3]; $SSenable_languages = $row[4]; $SSlanguage_method = $row[5]; $SSagent_soundboards = $row[6]; } ##### END SETTINGS LOOKUP ##### ########################################### if ($non_latin < 1) { $user=preg_replace("/[^-_0-9a-zA-Z]/","",$user); $pass=preg_replace("/[^-_0-9a-zA-Z]/","",$pass); $soundboard_id=preg_replace("/[^-_0-9a-zA-Z]/","",$soundboard_id); $avatar_id=preg_replace("/[^-_0-9a-zA-Z]/","",$avatar_id); $session_name=preg_replace("/[^-_0-9a-zA-Z]/","",$session_name); } else { $user=preg_replace("/\'|\"|\\\\|;| /","",$user); $pass=preg_replace("/\'|\"|\\\\|;| /","",$pass); $soundboard_id=preg_replace("/\'|\"|\\\\|;| /","",$soundboard_id); $avatar_id=preg_replace("/\'|\"|\\\\|;| /","",$avatar_id); $session_name=preg_replace("/[^-_0-9a-zA-Z]/","",$session_name); } # default optional vars if not set if (!isset($format)) {$format="text";} if ($format == 'debug') {$DB=1;} if (!isset($ACTION)) {$ACTION="refresh";} if (!isset($query_date)) {$query_date = $NOW_DATE;} if ( (strlen($soundboard_id) < 1) and (strlen($avatar_id) > 0) ) {$soundboard_id=$avatar_id;} $auth=0; $auth_message = user_authorization($user,$pass,'',0,$bcrypt,0,0,'vdc_soundboard_display'); if ($auth_message == 'GOOD') {$auth=1;} $stmt="SELECT count(*) from vicidial_users where user='$user' and active='Y';"; if ($DB) {echo "|$stmt|\n";} $rslt=mysql_to_mysqli($stmt, $link); $row=mysqli_fetch_row($rslt); $VUexists=$row[0]; $stmt="SELECT count(*) from vicidial_live_agents where user='$user';"; if ($DB) {echo "|$stmt|\n";} $rslt=mysql_to_mysqli($stmt, $link); $row=mysqli_fetch_row($rslt); $LVAactive=$row[0]; $stmt="SELECT count(*) from web_client_sessions where session_name='$session_name';"; if ($DB) {echo "|$stmt|\n";} $rslt=mysql_to_mysqli($stmt, $link); $row=mysqli_fetch_row($rslt); $WCSactive=$row[0]; if ( (!preg_match("/soundboard/i",$active_modules)) and ($SSagent_soundboards < 1) ) { echo _QXZ("Soundboards disabled on your system")."\n"; exit; } if ( (strlen($user)<2) or (strlen($pass)<2) or ($auth==0) or ( ( ($LVAactive < 1) or ($WCSactive < 1) ) and ($VUexists < 1) ) ) { echo _QXZ("Invalid Username/Password").": |$user|$pass|$auth_message|$LVAactive|$WCSactive|$VUexists|\n"; exit; } else { # do nothing for now } $stmt="SELECT avatar_id,avatar_name,avatar_notes,avatar_api_user,avatar_api_pass,active,audio_functions,user_group,audio_display,soundboard_layout,columns_limit from vicidial_avatars where avatar_id='$soundboard_id' and active='Y';"; if ($DB) {echo "$stmt\n";} $rslt=mysql_to_mysqli($stmt, $link); $soundboard_ct = mysqli_num_rows($rslt); if ($soundboard_ct > 0) { $row=mysqli_fetch_row($rslt); $soundboard_id = $row[0]; $avatar_name = $row[1]; $avatar_notes = $row[2]; $avatar_api_user = $row[3]; $avatar_api_set = $row[4]; $active = $row[5]; $audio_functions = $row[6]; $user_group = $row[7]; $audio_display = $row[8]; $soundboard_layout = $row[9]; $columns_limit = $row[10]; } else { echo _QXZ("error: soundboard not valid")."\n"; exit; } $stmt="SELECT vdc_agent_api_access,user_level from vicidial_users where user='$avatar_api_user' and active='Y' and vdc_agent_api_access='1';"; if ($DB) {echo "$stmt\n";} $rslt=mysql_to_mysqli($stmt, $link); $api_user_ct = mysqli_num_rows($rslt); if ($api_user_ct > 0) { $row=mysqli_fetch_row($rslt); $api_access = $row[0]; $api_level = $row[1]; } else { echo _QXZ("error: API user not valid")."\n"; exit; } $api_set_enc = base64_encode($avatar_api_set); ### BEGIN display soundboard content ### echo "\n"; echo "
\n"; echo "\n"; echo "