function reloadSip() { global $locate; $objResponse = new xajaxResponse(); if ($_SESSION['curuser']['usertype'] == 'reseller' || $_SESSION['curuser']['usertype'] == 'admin') { $myAsterisk = new Asterisk(); $myAsterisk->execute("sip reload"); $objResponse->addAlert($locate->Translate("sip conf reloaded")); } return $objResponse; }
public function delete($id) { $asterisk = Asterisk::find($id); $asterisk->delete(); Session::flash('message', 'Asterisk Setting was deleted.'); return Redirect::to('/settings/asterisk'); }
/** * * @return Asterisk */ public static function getInstance() { // create a new instance if there isnt one already if (!isset(self::$instance)) { self::$instance = new self(); Kohana::log('debug', 'Asterisk -> New instance of Asterisk telephony driver created.'); // reset all the accumulators in this driver self::reset(); } // return this instance return self::$instance; }
function showQueuesStatus() { global $config; $objResponse = new xajaxResponse(); $myAsterisk = new Asterisk(); $myAsterisk->config['asmanager'] = $config['asterisk']; $res = $myAsterisk->connect(); if (!$res) { $objResponse->addAssign("divAMIStatus", "innerHTML", $locate->Translate("AMI_connection_failed")); } else { $peer = $myAsterisk->command("show queues"); if (!strpos($peer['data'], ':')) { echo $peer['data']; } else { //print $peer['data']; $data = array(); $HTML .= "<table>"; foreach (explode("\n", $peer['data']) as $line) { $a = strpos('z' . $line, ':') - 1; if ($a >= 0) { $data[trim(substr($line, 0, $a))] = trim(substr($line, $a + 1)); $HTML .= "<tr><td>" . trim(substr($line, 0, $a)) . "</td></tr>"; $HTML .= "<tr><td>" . trim(substr($line, $a + 1)) . "</td></tr>"; } //print_r(trim(substr($line, $a + 1))); //exit; } //foreach ($data as $row){ //} $HTML .= "</table>"; // print_r($data); } } //print $HTML; $objResponse->addAssign("divQueue", "innerHTML", $HTML); // print_r($myAsterisk->QueueStatus()); return $objResponse; }
function systemAction($type) { global $locate; $objResponse = new xajaxResponse(); if ($_SESSION['curuser']['usertype'] != 'admin') { return $objResponse; } $myAsterisk = new Asterisk(); if ($type == 'reload') { $r = $myAsterisk->reloadAsterisk(); $objResponse->addAssign("divAsMsg", "innerHTML", "<span class='passed'>" . $locate->Translate('asterisk have been reloaded') . "</span"); } elseif ($type == "restart") { $myAsterisk->restartAsterisk(); $objResponse->addAssign("divAsMsg", "innerHTML", "<span class='passed'>" . $locate->Translate('asterisk have been restart') . "</span"); } elseif ($type == "reboot") { exec('sudo /sbin/shutdown -r now'); $objResponse->addAssign("divSysMsg", "innerHTML", "<span class='passed'>" . $locate->Translate('Server is rebooting') . "...</span"); } elseif ($type == "shutdown") { exec('sudo /sbin/shutdown -h now'); $objResponse->addAssign("divSysMsg", "innerHTML", "<span class='passed'>" . $locate->Translate('Server is shuting down') . "...</span"); } return $objResponse; }
function dial($phoneNum, $first = '', $myValue, $dtmf = '') { global $config, $locate; $objResponse = new xajaxResponse(); if (trim($myValue['curid']) > 0) { $curid = trim($myValue['curid']) - 1; } else { $curid = trim($myValue['curid']); } if ($dtmf != '') { $app = 'Dial'; $data = 'local/' . $phoneNum . '@' . $config['system']['outcontext'] . '|30' . '|D' . $dtmf; $first = 'caller'; } $myAsterisk = new Asterisk(); if ($first == '') { $first = $config['system']['firstring']; } $myAsterisk->config['asmanager'] = $config['asterisk']; $res = $myAsterisk->connect(); if (!$res) { $objResponse->addAssign("mobileStatus", "innerText", "Failed"); } if ($first == 'caller') { //caller will ring first $strChannel = "local/" . $_SESSION['curuser']['extension'] . "@" . $config['system']['incontext'] . "/n"; if ($config['system']['allow_dropcall'] == true) { $myAsterisk->dropCall($sid, array('Channel' => "{$strChannel}", 'WaitTime' => 30, 'Exten' => $phoneNum, 'Context' => $config['system']['outcontext'], 'Account' => $_SESSION['curuser']['accountcode'], 'Variable' => "{$strVariable}", 'Priority' => 1, 'MaxRetries' => 0, 'CallerID' => $phoneNum)); } else { $myAsterisk->sendCall($strChannel, $phoneNum, $config['system']['outcontext'], 1, $app, $data, 30, $phoneNum, NULL, $_SESSION['curuser']['accountcode']); } } else { $strChannel = "local/" . $phoneNum . "@" . $config['system']['outcontext'] . "/n"; if ($config['system']['allow_dropcall'] == true) { /* coz after we use new method to capture dial event there's no good method to make both leg display correct clid for now so we comment these lines */ $myAsterisk->dropCall($sid, array('Channel' => "{$strChannel}", 'WaitTime' => 30, 'Exten' => $_SESSION['curuser']['extension'], 'Context' => $config['system']['incontext'], 'Account' => $_SESSION['curuser']['accountcode'], 'Variable' => "{$strVariable}", 'Priority' => 1, 'MaxRetries' => 0, 'CallerID' => $_SESSION['curuser']['extension'])); } else { $myAsterisk->sendCall($strChannel, $_SESSION['curuser']['extension'], $config['system']['incontext'], 1, $app, $data, 30, $_SESSION['curuser']['extension'], NULL, NULL); } } //$myAsterisk->disconnect(); $objResponse->addAssign("divMsg", "style.visibility", "hidden"); return $objResponse->getXML(); }
<?php //ini_set( "display_errors" , 1 ); require_once 'app_code/config.inc.php'; require_once 'class/class.yui.php'; require_once 'class/class.contacts.php'; require_once 'app_code/zipcode.class.php'; require_once 'app_code/class.Event_Contacts.php'; require_once 'class/class.yui.php'; $page = new basic_page(); $page->auth->Checklogin(); $yui = new phpyui("/yui2/"); if (PHONE_SYSTEM == "asterisk") { require_once 'class/class.asterisk.php'; $asterisk = new Asterisk(); } $uid = $page->auth->Get_user_id(); $yui->add_datatable("asterisk", "xml", "temp.xml.php?user_id={$uid}", array(0 => array("key" => "call")), array(), array("RefreshEvery" => "1000")); // ini_set("display_errors" , 1 ); if (PHONE_SYSTEM == 'asterisk') { $web = $asterisk->get_web_ext($page->auth->Get_user_id()); // print_r( $web ); } ?> <html > <head> <script src="http://yui.yahooapis.com/3.1.0/build/yui/yui-min.js"></script> <link rel="stylesheet" type="text/css" href="sidebar.css" /> <!-- Just Playing Around With YUI, DELETE if needed --> <link rel="stylesheet" type="text/css" href="/yui2/fonts/fonts-min.css" /> <link rel="stylesheet" type="text/css" href="/yui2/tabview/assets/skins/sam/tabview.css" />
/** * hangup a channel * @param channel string channel name * @return object xajax response object */ function hangup($channel) { global $config; $myAsterisk = new Asterisk(); $objResponse = new xajaxResponse(); if (trim($channel) == '') { return $objResponse; } $myAsterisk->config['asmanager'] = $config['asterisk']; $res = $myAsterisk->connect(); if (!$res) { $objResponse->addALert("action Huangup failed"); return $objResponse; } $myAsterisk->Hangup($channel); //$objResponse->addAssign("btnHangup", "disabled", true); $objResponse->addAssign("divMsg", "style.visibility", "hidden"); return $objResponse; }
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ //ini_set("display_errors", 1 ); header("content-type: text/xml"); $user_id = $_GET["user_id"]; echo '<?xml version="1.0"?>'; require_once 'class/global.config.php'; require_once 'class/database.inc.php'; require_once 'class/config.inc.php'; require_once 'class/class.yui.php'; require_once 'class/class.asterisk.php'; $yui = new phpyui("/yui2"); if (PHONE_SYSTEM == "asterisk") { $phone = new Asterisk(); $calls = $phone->get_current_calls($user_id); $printr = print_r($calls, true); /* cid = number * name = full name * contact_id = cid * type = Type * */ $printr = "<textarea style='width: 300px;height: 300px;'> {$printr} </textarea>"; $printr = $yui->string_to_xml($printr); } else { $calls = array(); } $tmparr = array(); function display_number($t)
function hangupchnnel($channel) { global $config; $objResponse = new xajaxResponse(); if ($channel == '') { $curchannels = getCurchannels(); $objResponse->addAssign("curchanels", "innerHTML", $curchannels); return $objResponse; } $myAsterisk = new Asterisk(); $myAsterisk->config['asmanager'] = $config['asterisk']; $res = $myAsterisk->connect(); if (!$res) { return; } $myAsterisk->Hangup($channel); sleep(1); $curchannels = getCurchannels(); $objResponse->addAssign("curchanels", "innerHTML", $curchannels); return $objResponse; }
require_once 'class/class.tasks.php'; require_once 'class/class.message.php'; require_once 'class/class.news.php'; require_once 'class/class.contacts.php'; require_once 'class/class.bugs.php'; require_once 'Zend/Loader.php'; require_once 'class/class.CapacityReport.php'; require_once 'class/class.WorkOrder.php'; Zend_Loader::loadClass('Zend_Gdata'); Zend_Loader::loadClass('Zend_Gdata_ClientLogin'); Zend_Loader::loadClass('Zend_Gdata_Calendar'); Zend_Loader::loadClass('Zend_Http_Client'); require_once 'class/class.calendar.php'; if (PHONE_SYSTEM == "asterisk") { require_once "class/class.asterisk.php"; $asterisk = new Asterisk(); } if (EMAIL_SYSTEM == 'gmail') { $cal = new GCalendar(USER, PASS); } $page = new basic_page(); $user = new User(); $page->auth->Checklogin(); $notify = new Notification(); $contact = new Company_Global(); $contact->SetUserID($page->auth->Get_user_id()); $contact->SetUserName($page->auth->Get_user_name()); $news = new News(); $message = new Message(); $ajax = new PHPLiveX(); $user = new User();
$open_task = $_GET["open_task"]; require_once 'app_code/config.inc.php'; require_once 'class/class.contacts.php'; require_once 'app_code/zipcode.class.php'; require_once 'app_code/class.Event_Contacts.php'; require_once 'class/class.note.php'; require_once 'class/class.tasks.php'; require_once 'app_code/global.config.php'; require_once 'app_code/class.CertificationType.php'; require_once 'app_code/class.application.php'; require_once 'app_code/class.Event.php'; require_once 'class/class.securenote.php'; $secure = new secure(); if (PHONE_SYSTEM == "asterisk") { require_once 'class/class.asterisk.php'; $asterisk = new Asterisk(); } $page = new basic_page(); $page->auth->Checklogin(); if ($_REQUEST[contact_id] == '') { $page->gotoPage('contacts.php'); exit; } /* if( $page->auth->checkPermessionView('TBL_CONTACT',$_REQUEST[contact_id])==0 and $page->auth->isOwner(TBL_CONTACT," and contact_id='$_REQUEST[contact_id]'")==0) { $page->auth->SendToRefrerPage(); exit(); } */
function agentPause($agent, $queueno = '', $action) { global $locate, $config; $myAsterisk = new Asterisk(); $myAsterisk->config['asmanager'] = $config['asterisk']; $res = $myAsterisk->connect(); if (!$res) { return; } if ($action == 'pause') { if ($config['system']['require_reason_when_pause'] == 'yes') { savePauseReasion($agent, $queueno, $action, 'admin pause'); } if ($_SESSION['asterisk']['paramdelimiter'] == '|') { $res = $myAsterisk->queuePause($queueno, $agent, 1); } else { $cmd = "queue pause member {$agent} queue {$queueno}"; $res = $myAsterisk->Command($cmd); } } else { if ($config['system']['require_reason_when_pause'] == 'yes') { savePauseToContinue($agent, $queueno); } if ($_SESSION['asterisk']['paramdelimiter'] == '|') { $res = $myAsterisk->queuePause($queueno, $agent, 0); } else { $cmd = "queue unpause member {$agent} queue {$queueno}"; $res = $myAsterisk->Command($cmd); } } $objResponse = new xajaxResponse(); $objResponse->addAssign("updated", "value", date("Y-m-d H:i:s")); return $objResponse; }
function barge($srcchan, $dstchan) { global $config, $locate; $myAsterisk = new Asterisk(); $objResponse = new xajaxResponse(); $myAsterisk->config['asmanager'] = $config['asterisk']; $res = $myAsterisk->connect(); if (!$res) { return; } $group_info = astercrm::getRecordByID($_SESSION['curuser']['groupid'], "astercrm_accountgroup"); if ($group_info['incontext'] != '') { $incontext = $group_info['incontext']; } else { $incontext = $config['system']['incontext']; } //if ($group_info['outcontext'] != '' ) $outcontext = $group_info['outcontext']; //else $outcontext = $config['system']['outcontext']; $strChannel = "local/" . $_SESSION['curuser']['extension'] . "@" . $incontext . "/n"; $myAsterisk->Originate($strChannel, '', '', 1, 'meetme', $_SESSION['curuser']['extension'] . $_SESSION['asterisk']['paramdelimiter'] . "pqdx", 30, $_SESSION['curuser']['extension'], NULL, $_SESSION['curuser']['accountcode']); $myAsterisk->Redirect($srcchan, $dstchan, $_SESSION['curuser']['extension'], "astercc-barge", "1"); return $objResponse; }
function checkAMI($id) { global $locate; $objResponse = new xajaxResponse(); $server =& Customer::getRecordByID($id, 'servers'); $myAsterisk = new Asterisk(); $myConfig['server'] = $server["ip"]; $myConfig['port'] = $server["port"]; $myConfig['username'] = $server["username"]; $myConfig['secret'] = $server["secret"]; $myAsterisk->config['asmanager'] = $myConfig; $res = $myAsterisk->connect(); if ($res) { $objResponse->addAssign("divCheckServer", "innerHTML", "<span class='passed'>" . $locate->Translate('AMI_connect_success') . "</span"); } else { $objResponse->addAssign("divCheckServer", "innerHTML", "<span class='failed'>" . $locate->Translate('AMI_connect_failed') . "</span>"); } return $objResponse; }
<?php ob_start(); $id = $_GET["id"]; require 'app_code/config.inc.php'; require_once 'class/global.config.php'; require_once 'class/class.asterisk.php'; ob_end_clean(); $a = new Asterisk(); $message = $a->get_voicemail_message($id); header("Content-Type: audio/mp3", true); //header("Content-Disposition: attachment; filename=$id.wav"); echo $message["mp3"];
function chanSpy($spy, $exten, $pam, $pdl) { /* Action: originate Channel: Local/300 WaitTime: 30 CallerId: "Web Call" <8881> Application: ChanSpy Data: IAX2/100|q Async: yes */ /* $channel, $exten=NULL, $context=NULL, $priority=NULL, $application=NULL, $data=NULL, $timeout=NULL, $callerid=NULL, $variable=NULL, $account=NULL, $async=NULL, $actionid=NULL */ Asterisk::sendCall("local/{$spy}", null, null, null, "ChanSpy", $exten . $pdl . "q" . $pam, 30); }
<?php ob_start(); $id = $_GET["id"]; require 'app_code/config.inc.php'; require_once 'class/global.config.php'; require_once 'class/class.asterisk.php'; ob_end_clean(); $a = new Asterisk(); $message = $a->get_recording($id); header("Content-Type: audio/mp3", true); //header("Content-Disposition: attachment; filename=$id.wav"); echo $message["file"];
function requireReasionWhenPause($f) { global $locate, $config, $db; $agent = $f['require_reasion_agent']; $queueno = $f['require_reasion_queueno']; $context = $f['require_reasion_context']; $objResponse = new xajaxResponse(); //add a record to table pause_reasion $saveResult = Customer::savePauseReasion($f['require_reasion_queueno'], 'pause', $f['require_reasion']); if (!$saveResult) { $objResponse->addAlert('Save Pause Reasion Failed'); } else { $objResponse->addAssign("formRequiredReasionDiv", "style.visibility", 'hidden'); $objResponse->addAssign("formRequiredReasionDiv", "innerHTML", ''); $myAsterisk = new Asterisk(); $myAsterisk->config['asmanager'] = $config['asterisk']; $res = $myAsterisk->connect(); $action = 'pause'; if ($agent == '') { if ($context == '') { if ($_SESSION['curuser']['group']['incontext'] != '') { $context = $_SESSION['curuser']['group']['incontext']; } else { $context = $config['system']['incontext']; } } $agentstr = 'Local/' . $_SESSION['curuser']['extension'] . '@' . $context . '/n'; } else { $agentstr = $agent; } if ($action == 'pause') { if ($_SESSION['asterisk']['paramdelimiter'] == '|') { $res = $myAsterisk->queuePause($queueno, $agentstr, 1); } else { $cmd = "queue pause member {$agentstr} queue {$queueno}"; } } else { if ($action == 'pausea') { $agentstr = 'Agent/' . $_SESSION['curuser']['agent']; if ($_SESSION['asterisk']['paramdelimiter'] == '|') { $res = $myAsterisk->queuePause($queueno, $agentstr, 1); } else { $cmd = "queue pause member {$agentstr} queue {$queueno}"; } } else { if ($action == 'pausec') { if ($_SESSION['asterisk']['paramdelimiter'] == '|') { $res = $myAsterisk->queuePause($queueno, $agentstr, 1); } else { $cmd = "queue pause member {$agentstr} queue {$queueno}"; } } } } if (!empty($cmd)) { $res = $myAsterisk->Command($cmd); } if (strstr($res['data'], 'failed')) { if ($action == 'pausea') { $action == 'pause'; } elseif ($action == 'continuea') { $action == 'continue'; } $objResponse->addAlert($locate->translate($action) . ' ' . $locate->translate('failed')); } else { $sql = "SELECT * FROM campaign WHERE queuename = '" . $queueno . "' AND groupid='" . $_SESSION['curuser']['groupid'] . "' AND enable= 1"; $res =& $db->query($sql); while ($res->fetchInto($row)) { if ($action == 'pause') { $objResponse->addAssign("campaign-pause-" . $row['id'], "innerHTML", '[' . $locate->translate('continue') . ']'); $objResponse->addAssign("campaign-pause-" . $row['id'], "title", 'continue'); $objResponse->addAssign("campaign-" . $row['id'], "style.color", '#30569D'); } elseif ($action == 'pausea') { $objResponse->addAssign("campaign-pause-" . $row['id'], "innerHTML", '[' . $locate->translate('continue') . ']'); $objResponse->addAssign("campaign-pause-" . $row['id'], "title", 'continuea'); $objResponse->addAssign("campaign-" . $row['id'], "style.color", '#30569D'); } elseif ($action == 'pausec') { $objResponse->addAssign("campaign-pause-" . $row['id'], "innerHTML", '[' . $locate->translate('continue') . ']'); $objResponse->addAssign("campaign-pause-" . $row['id'], "title", 'continuec'); $objResponse->addAssign("campaign-" . $row['id'], "style.color", '#30569D'); } } } $objResponse->addAssign("clkPauseTime", "value", date("Y-m-d H:i:s")); } return $objResponse; }
function invite($src, $dest, $creditLimit) { global $config; $src = trim($src); $dest = trim($dest); $credit = trim($credit); $myAsterisk = new Asterisk(); $objResponse = new xajaxResponse(); $myAsterisk->config['asmanager'] = $config['asterisk']; $res = $myAsterisk->connect(); if (!$res) { $objResponse->addAssign("mobileStatus", "innerText", "Failed"); } $strChannel = "local/" . $src . "@" . $config['system']['outcontext'] . "/n"; $_SESSION['callbacks'][$src . $dest] = array('legA' => $dest, 'legB' => $src, 'start' => 0, 'creditLimit' => $creditLimit); if ($config['system']['allow_dropcall'] == true) { $myAsterisk->dropCall($sid, array('Channel' => "{$strChannel}", 'WaitTime' => 30, 'Exten' => $dest, 'Context' => $config['system']['outcontext'], 'Account' => $_SESSION['curuser']['accountcode'], 'Variable' => "{$strVariable}", 'Priority' => 1, 'MaxRetries' => 0, 'CallerID' => $dest)); } else { $myAsterisk->sendCall($strChannel, $dest, $config['system']['outcontext'], 1, NULL, NULL, 30, $dest, NULL, $_SESSION['curuser']['accountcode']); } // add to callback table $callback['lega'] = $dest; $callback['legb'] = $src; $callback['credit'] = $creditLimit; $callback['groupid'] = $_SESSION['curuser']['groupid']; astercc::insertNewCallback($callback); return $objResponse->getXML(); }
/** * function to verify user data * * @param $aFormValues (array) login form data $aFormValues['username'] $aFormValues['password'] $aFormValues['locate'] * @return $objResponse * @session $_SESSION['curuser']['username'] $_SESSION['curuser']['extension'] $_SESSION['curuser']['extensions'] $_SESSION['curuser']['country'] $_SESSION['curuser']['language'] $_SESSION['curuser']['channel'] $_SESSION['curuser']['accountcode'] */ function processAccountData($aFormValues) { global $db, $config; list($_SESSION['curuser']['country'], $_SESSION['curuser']['language']) = split("_", $aFormValues['locate']); //get locate parameter $locate = new Localization($_SESSION['curuser']['country'], $_SESSION['curuser']['language'], 'login'); $objResponse = new xajaxResponse(); /* check whether the pear had been installed */ $pear_exists_result = class_exists('PEAR'); if (empty($pear_exists_result)) { $objResponse->addAlert($locate->Translate("Please install php pear")); $objResponse->addAssign("loginButton", "value", $locate->Translate("submit")); $objResponse->addAssign("loginButton", "disabled", false); return $objResponse; } if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])) { if ($_SERVER["HTTP_CLIENT_IP"]) { $proxy = $_SERVER["HTTP_CLIENT_IP"]; } else { $proxy = $_SERVER["REMOTE_ADDR"]; } } else { if (isset($_SERVER["HTTP_CLIENT_IP"])) { $ip = $_SERVER["HTTP_CLIENT_IP"]; } else { $ip = $_SERVER["REMOTE_ADDR"]; } } $query = "SELECT * FROM account_log WHERE ip='" . $ip . "' AND action='login' ORDER BY id DESC LIMIT 1"; $res = $db->query($query); if ($res->fetchInto($this_ip_log)) { $failedtimes = $this_ip_log['failedtimes']; } $log = array(); $log['action'] = 'login'; $log['ip'] = $ip; $log['username'] = $aFormValues['username']; if ($failedtimes >= $config['system']['max_incorrect_login'] && $config['system']['max_incorrect_login'] > 0) { $objResponse->addAlert($locate->Translate("login failed,your ip is locked for login")); $objResponse->addAssign("loginButton", "value", $locate->Translate("submit")); $objResponse->addAssign("loginButton", "disabled", false); return $objResponse; } $bError = false; $loginError = false; if (!$bError) { $query = "SELECT account.*, accountgroup.accountcode,accountgroup.allowcallback as allowcallbackgroup,resellergroup.allowcallback as allowcallbackreseller,accountgroup.limittype FROM account LEFT JOIN accountgroup ON accountgroup.id = account.groupid LEFT JOIN resellergroup ON resellergroup.id = account.resellerid WHERE username='******'username'] . "'"; $res = $db->query($query); if ($res->fetchInto($list)) { $log['account_id'] = $list['id']; $log['usertype'] = $list['usertype']; if ($list['password'] == $aFormValues['password']) { $log['status'] = 'success'; $log['failedtimes'] = 0; if ($aFormValues['rememberme'] == "forever") { // set cookies for three years setcookie("username", $aFormValues['username'], time() + 94608000); setcookie("password", $aFormValues['password'], time() + 94608000); setcookie("language", $aFormValues['locate'], time() + 94608000); setcookie("pagestyle", $aFormValues['pagestyle'], time() + 94608000); } else { // destroy cookies setcookie("username", "", time() - 3600); setcookie("password", "", time() - 3600); setcookie("language", "", time() - 3600); setcookie("pagestyle", $aFormValues['pagestyle'], time() + 94608000); $username = ''; $password = ''; $language = 'en_US'; $checked = false; } $_SESSION = array(); $_SESSION['curuser']['username'] = trim($aFormValues['username']); $_SESSION['curuser']['usertype'] = $list['usertype']; $_SESSION['curuser']['ipaddress'] = $_SERVER["REMOTE_ADDR"]; $_SESSION['curuser']['userid'] = $list['id']; $_SESSION['curuser']['groupid'] = $list['groupid']; $_SESSION['curuser']['resellerid'] = $list['resellerid']; $_SESSION['curuser']['limittype'] = $list['limittype']; $configstatus = common::read_ini_file($config['system']['astercc_path'] . '/astercc.conf', $asterccConfig); if ($configstatus == -2) { $html = "(fail to read " . $config['system']['astercc_path'] . "/astercc.conf)"; return $html; } else { $billingfield = trim($asterccConfig['system']['billingfield']); if ($billingfield == 'accountcode') { $_SESSION['curuser']['billingfield'] = $billingfield; } } $res = astercrm::getCalleridListByID($list['groupid']); while ($res->fetchInto($row)) { $_SESSION['curuser']['extensions'][] = $row['clid']; } if (!is_array($_SESSION['curuser']['extensions'])) { $_SESSION['curuser']['extensions'] = array(); } if ($list['usertype'] == 'reseller') { $_SESSION['curuser']['allowcallback'] = $list['allowcallbackreseller']; } else { $_SESSION['curuser']['allowcallback'] = $list['allowcallbackgroup']; } $_SESSION['curuser']['accountcode'] = $list['accountcode']; // if ($list['extensions'] != ''){ // $_SESSION['curuser']['extensions'] = split(',',$list['extensions']); // } // else{ // } list($_SESSION['curuser']['country'], $_SESSION['curuser']['language']) = split("_", $aFormValues['locate']); /* if you dont want check manager status and show device status when user login please uncomment these three line */ // $objResponse->addAlert($locate->Translate("login_success")); if ($_SESSION['curuser']['usertype'] == 'groupadmin' || $_SESSION['curuser']['usertype'] == 'operator') { if ($aFormValues['pagestyle'] == 'classic') { $objResponse->addScript('window.location.href="systemstatus.php";'); } else { $objResponse->addScript('window.location.href="systemstatus_simple.php";'); } } else { $objResponse->addScript('window.location.href="account.php";'); } astercrm::insertAccountLog($log); return $objResponse; //check AMI connection $myAsterisk = new Asterisk(); $myAsterisk->config['asmanager'] = $config['asterisk']; $res = $myAsterisk->connect(); $html .= $locate->Translate("server_connection_test"); if ($res) { $html .= '<font color=green>' . $locate->Translate("pass") . '</font><br>'; $html .= '<b>' . $_SESSION['curuser']['extension'] . ' ' . $locate->Translate("device_status") . '</b><br>'; $html .= asterisk::getPeerIP($_SESSION['curuser']['extension']) . '<br>'; $html .= asterisk::getPeerStatus($_SESSION['curuser']['extension']) . '<br>'; } else { $html .= '<font color=red>' . $locate->Translate("no_pass") . '</font>'; } if ($aFormValues['pagestyle'] == 'classic') { $html .= '<input type="button" value="' . $locate->Translate("continue") . '" id="btnContinue" name="btnContinue" onclick="window.location.href=\'systemstatus.php\';">'; } else { $html .= '<input type="button" value="' . $locate->Translate("continue") . '" id="btnContinue" name="btnContinue" onclick="window.location.href=\'systemstatus_simple.php\';">'; } $objResponse->addAssign("formDiv", "innerHTML", $html); $objResponse->addClear("titleDiv", "innerHTML"); $objResponse->addScript("xajax.\$('btnContinue').focus();"); } else { //$log['account_id'] = 0; $log['failedtimes'] = $failedtimes + 1; $log['status'] = 'failed'; $log['failedcause'] = 'incorrect password'; $loginError = true; } } else { $log['failedtimes'] = $failedtimes + 1; $log['account_id'] = 0; $log['usertype'] = 'manager_login'; $log['status'] = 'failed'; $log['failedcause'] = 'notexistent user'; $loginError = true; } astercrm::insertAccountLog($log); if (!$loginError) { return $objResponse; } else { $objResponse->addAlert($locate->Translate("login failed")); $objResponse->addAssign("loginButton", "value", $locate->Translate("submit")); $objResponse->addAssign("loginButton", "disabled", false); return $objResponse; } } else { $objResponse->addAssign("loginButton", "value", $locate->Translate("submit")); $objResponse->addAssign("loginButton", "disabled", false); } return $objResponse; }
/** * function to verify user data * * @param $aFormValues (array) login form data $aFormValues['username'] $aFormValues['password'] $aFormValues['locate'] * @return $objResponse * @session $_SESSION['curuser']['username'] $_SESSION['curuser']['extension'] $_SESSION['curuser']['extensions'] $_SESSION['curuser']['country'] $_SESSION['curuser']['language'] $_SESSION['curuser']['channel'] $_SESSION['curuser']['accountcode'] */ function processAccountData($aFormValues) { global $db, $locate, $config; $objResponse = new xajaxResponse(); $bError = false; $loginError = false; list($_SESSION['curuser']['country'], $_SESSION['curuser']['language']) = split("_", $aFormValues['locate']); $locate = new Localization($_SESSION['curuser']['country'], $_SESSION['curuser']['language'], 'login'); /* check whether the pear had been installed */ $pear_exists_result = class_exists('PEAR'); if (empty($pear_exists_result)) { $objResponse->addAlert($locate->Translate("Please install php pear")); return $objResponse; } if (!$bError) { //$query = "SELECT * FROM account WHERE username='******'username'] . "'"; //$res = $db->query($query); $row = astercrm::getRecordByField("username", $aFormValues['username'], "astercrm_account"); if ($row['id'] != '') { if ($row['password'] == $aFormValues['password']) { $identity = astercrm::calculateAgentOntime('login', trim($aFormValues['username'])); if ($identity) { $update = astercrm::updateAgentOnlineTime('login', date('Y-m-d H:i:s'), $row['id']); } if ($aFormValues['rememberme'] == "forever") { // set cookies for three years setcookie("username", $aFormValues['username'], time() + 94608000); setcookie("password", $aFormValues['password'], time() + 94608000); setcookie("language", $aFormValues['locate'], time() + 94608000); } else { // destroy cookies setcookie("username", "", time() - 3600); setcookie("password", "", time() - 3600); setcookie("language", "", time() - 3600); $username = ''; $password = ''; $language = 'en_US'; $checked = false; } $_SESSION = array(); $_SESSION['curuser']['username'] = trim($aFormValues['username']); $_SESSION['curuser']['extension'] = $row['extension']; $_SESSION['curuser']['usertype'] = $row['usertype']; $_SESSION['curuser']['usertype_id'] = $row['usertype_id']; $_SESSION['curuser']['accountid'] = $row['id']; $_SESSION['curuser']['accountcode'] = $row['accountcode']; $_SESSION['curuser']['agent'] = $row['agent']; $_SESSION['curuser']['callerid'] = trim($row['callerid']); $_SESSION['curuser']['update_online_interval'] = date("Y-m-d H:i:s"); // added by solo 2007-10-90 $_SESSION['curuser']['channel'] = $row['channel']; $_SESSION['curuser']['extensions'] = array(); $_SESSION['curuser']['groupid'] = $row['groupid']; $privilege = array(); if ($row['usertype_id'] > 0) { $privileges = $db->getAll("SELECT * FROM user_privileges WHERE user_type_id='" . $row['usertype_id'] . "'"); foreach ($privileges as $p) { $privilege[$p['page']][$p['action']] = 1; } } $_SESSION['curuser']['privileges'] = $privilege; if ($row['extensions'] != '') { $_SESSION['curuser']['extensions'] = split(',', $row['extensions']); } //check extensions if exists in account table foreach ($_SESSION['curuser']['extensions'] as $key => $value) { $exten_row = astercrm::getRecordByField("username", $value, "astercrm_account"); if ($exten_row['id'] == '') { unset($_SESSION['curuser']['extensions'][$key]); } } // if it's a group admin, then add all group extension to it if ($row['usertype'] == 'groupadmin' || is_array($_SESSION['curuser']['privileges']['systemstatus']) || is_array($_SESSION['curuser']['privileges']['import'])) { $_SESSION['curuser']['memberExtens'] = array(); $_SESSION['curuser']['memberNames'] = array(); $_SESSION['curuser']['memberAgents'] = array(); $groupList = astercrm::getGroupMemberListByID($row['groupid']); while ($groupList->fetchInto($groupRow)) { $_SESSION['curuser']['memberExtens'][] = $groupRow['extension']; $_SESSION['curuser']['memberNames'][] = $groupRow['username']; if ($groupRow['agent'] != '') { $_SESSION['curuser']['memberAgents'][] = $groupRow['agent']; } } } list($_SESSION['curuser']['country'], $_SESSION['curuser']['language']) = split("_", $aFormValues['locate']); // get group information $_SESSION['curuser']['group'] = astercrm::getRecordByField("groupid", $row['groupid'], "astercrm_accountgroup"); if ($row['dialinterval'] != 0) { $_SESSION['curuser']['dialinterval'] = $row['dialinterval']; } else { $row_group = astercrm::getRecordByField("groupid", $row['groupid'], "astercrm_accountgroup"); $_SESSION['curuser']['dialinterval'] = $_SESSION['curuser']['group']['agentinterval']; } if ($_SESSION['curuser']['groupid'] > 0) { $sql = "SELECT id,campaignname,queuename,queue_context,use_ext_chan FROM campaign WHERE queuename != '' AND groupid='" . $_SESSION['curuser']['groupid'] . "' AND enable= 1 ORDER BY queuename ASC"; $result =& $db->query($sql); $dataArray = array(); while ($row = $result->fetchRow()) { $dataArray[$row['id']] = $row; } $_SESSION['curuser']['campaign_queue'] = $dataArray; } /* if you dont want check manager status and show device status when user login please uncomment these three line */ //$objResponse->addAlert($locate->Translate("Login success")); // if($_SESSION['curuser']['agent'] != ''){ // $msg = $locate->Translate("choose user mode"); // $objResponse->addScript("selectmode('".$msg."')"); // return $objResponse; // } //$_SESSION['error_report'] = $config['error_report']['error_report_level']; //$objResponse->addScript('window.location.href="portal.php";'); //return $objResponse; //check AMI connection $myAsterisk = new Asterisk(); $myAsterisk->config['asmanager'] = $config['asterisk']; $res = $myAsterisk->connect(); //$html .= $locate->Translate("server_connection_test"); if ($res) { //$html .= '<font color=green>'.$locate->Translate("pass").'</font><br>'; //$html .= '<b>'.$_SESSION['curuser']['extension'].' '.$locate->Translate("device_status").'</b><br>'; //$html .= asterisk::getPeerIP($_SESSION['curuser']['extension']).'<br>'; //$html .= asterisk::getPeerStatus($_SESSION['curuser']['extension']).'<br>'; $v = $myAsterisk->Command("core show version"); $v = explode(' ', $v['data']); $version = $v['2']; $_SESSION['asterisk']['version'] = $version; $version_arr = split('\\.', $version); if ($version_arr['1'] > 4) { $_SESSION['asterisk']['paramdelimiter'] = ','; } else { $_SESSION['asterisk']['paramdelimiter'] = '|'; } } else { $_SESSION['asterisk']['paramdelimiter'] = '|'; //$html .= '<font color=red>'.$locate->Translate("no_pass").'</font>'; } $_SESSION['error_report'] = $config['error_report']['error_report_level']; //clear socket_url session to $_SESSION['socket_url_flag'] = 'yes'; $objResponse->addScript('window.location.href="portal.php";'); return $objResponse; $html .= '<input type="button" value="' . $locate->Translate("continue") . '" id="btnContinue" name="btnContinue" onclick="window.location.href=\'portal.php\';">'; $objResponse->addAssign("formDiv", "innerHTML", $html); $objResponse->addClear("titleDiv", "innerHTML"); $objResponse->addScript("xajax.\$('btnContinue').focus();"); } else { $loginError = true; } } else { $loginError = true; } if (!$loginError) { return $objResponse; } else { $objResponse->addAlert($locate->Translate("login_failed")); $objResponse->addAssign("loginButton", "value", $locate->Translate("Submit")); $objResponse->addAssign("loginButton", "disabled", false); return $objResponse; } } else { $objResponse->addAssign("loginButton", "value", $locate->Translate("Submit")); $objResponse->addAssign("loginButton", "disabled", false); } return $objResponse; }
function placeCall($campaignid) { global $config; $myAsterisk = new Asterisk(); $row =& astercrm::getDialNumber($campaignid); // 待拨号码为空 if (!$row) { return false; } //print_r($row); $id = $row['id']; $groupid = $row['groupid']; $campaignid = $row['campaignid']; $phoneNum = $row['dialnumber']; $trytime = $row['trytime']; $assign = $row['assign']; $pdcontext = $row['incontext']; $outcontext = $row['outcontext']; if ($row['inexten'] != "") { $pdextension = $row['inexten']; } else { if ($row['assign'] != "") { $pdextension = $row['assign']; } else { $pdextension = $row['dialnumber']; } } $res = astercrm::deleteRecord($id, "diallist"); $f['dialednumber'] = $phoneNum; $f['dialedby'] = $_SESSION['curuser']['username']; $f['groupid'] = $groupid; $f['trytime'] = $trytime + 1; $f['assign'] = $assign; $f['campaignid'] = $campaignid; $res = astercrm::insertNewDialedlist($f); $actionid = md5(uniqid("")); $strChannel = "local/" . $phoneNum . "@" . $outcontext . "/n"; if ($config['system']['allow_dropcall'] == true) { $myAsterisk->dropCall($actionid, array('Channel' => "{$strChannel}", 'WaitTime' => 30, 'Exten' => $pdextension, 'Context' => $pdcontext, 'Variable' => "{$strVariable}", 'Priority' => 1, 'MaxRetries' => 0, 'CallerID' => $phoneNum)); } else { $myAsterisk->config['asmanager'] = $config['asterisk']; $res = $myAsterisk->connect(); $myAsterisk->sendCall($strChannel, $pdextension, $pdcontext, 1, NULL, NULL, 30, $phoneNum, NULL, NULL, NULL, $actionid); } return true; }