⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 common.php

📁 最近在做软交换时研究的一个软交换的东东
💻 PHP
字号:
<?php/** * @file * common functions - core handler *//* * Checks if user is set and sets */function checkErrorMessage() {  if ($_SESSION['ari_error']) {    $ret .= "<div class='error'>               " . $_SESSION['ari_error'] . "             </div>             <br>";    unset($_SESSION['ari_error']);  }  return $ret;}/* * Checks modules directory, and configuration, and loaded modules  */function loadModules() {  global $ARI_ADMIN_MODULES;  global $ARI_DISABLED_MODULES;  global $loaded_modules;  $modules_path = "./modules";  if (is_dir($modules_path)) {    $filter = ".module";    $recursive_max = 1;    $recursive_count = 0;    $files = getFiles($modules_path,$filter,$recursive_max,$recursive_count);    foreach($files as $key => $path) {      // build module object       include_once($path);       $path_parts = pathinfo($path);      list($name,$ext) = split("\.",$path_parts['basename']);      // check for module and get rank      if (class_exists($name)) {        $module = new $name();        // check if admin module        $found = 0;        if ($ARI_ADMIN_MODULES) {          $admin_modules = split(',',$ARI_ADMIN_MODULES);          foreach ($admin_modules as $key => $value) {            if ($name==$value) {              $found = 1;              break;            }          }        }        // check if disabled module        $disabled = 0;        if ($ARI_DISABLED_MODULES) {          $disabled_modules = split(',',$ARI_DISABLED_MODULES);          foreach ($disabled_modules as $key => $value) {            if ($name==$value) {              $disabled = 1;              break;            }          }        }        // if not admin module or admin user add to module name to array        if (!$disabled && (!$found || $_SESSION['ari_user']['admin'])) {          $loaded_modules[$name] = $module;        }      }    }  }  else {    $_SESSION['ari_error'] = _("$path not a directory or not readable");  }}/** * Builds database connections */function databaseLogon() {  global $STANDALONE;  global $ASTERISKMGR_DBHOST;  global $AMP_FUNCTIONS_FILES;  global $AMPORTAL_CONF_FILE;  global $LEGACY_AMP_DBENGINE;  global $LEGACY_AMP_DBFILE;  global $LEGACY_AMP_DBHOST;  global $LEGACY_AMP_DBNAME;  global $ASTERISKCDR_DBENGINE;  global $ASTERISKCDR_DBFILE;  global $ASTERISKCDR_DBHOST;  global $ASTERISKCDR_DBNAME;  global $ARI_DISABLED_MODULES;  global $loaded_modules;  // get user  if ($STANDALONE['use']) {    $mgrhost = $ASTERISKMGR_DBHOST;    $mgruser = $STANDALONE['asterisk_mgruser'];    $mgrpass = $STANDALONE['asterisk_mgrpass'];    $asteriskcdr_dbengine = $ASTERISKCDR_DBENGINE;    $asteriskcdr_dbfile = $ASTERISKCDR_DBFILE;    $asteriskcdr_dbuser = $STANDALONE['asteriskcdr_dbuser'];    $asteriskcdr_dbpass = $STANDALONE['asteriskcdr_dbpass'];    $asteriskcdr_dbhost = $ASTERISKCDR_DBHOST;    $asteriskcdr_dbname = $ASTERISKCDR_DBNAME;  }   else {    $include = 0;    $files = split(';',$AMP_FUNCTIONS_FILES);    foreach ($files as $file) {      if (is_file($file)) {        include_once($file);        $include = 1;      }    }    if ($include) {      $amp_conf = parse_amportal_conf($AMPORTAL_CONF_FILE);      $mgrhost = $ASTERISKMGR_DBHOST;      $mgruser = $amp_conf['AMPMGRUSER'];      $mgrpass = $amp_conf['AMPMGRPASS'];      $amp_dbengine = isset($amp_conf["AMPDBENGINE"]) ? $amp_conf["AMPDBENGINE"] : $LEGACY_AMP_DBENGINE;      $amp_dbfile = isset($amp_conf["AMPDBFILE"]) ? $amp_conf["AMPDBFILE"] : $LEGACY_AMP_DBFILE;      $amp_dbuser = $amp_conf["AMPDBUSER"];      $amp_dbpass = $amp_conf["AMPDBPASS"];      $amp_dbhost = isset($amp_conf["AMPDBHOST"]) ? $amp_conf["AMPDBHOST"] : $LEGACY_AMP_DBHOST;      $amp_dbname = isset($amp_conf["AMPDBNAME"]) ? $amp_conf["AMPDBNAME"] : $LEGACY_AMP_DBNAME;      $asteriskcdr_dbengine = $ASTERISKCDR_DBENGINE;      $asteriskcdr_dbfile = $ASTERISKCDR_DBFILE;      $asteriskcdr_dbuser = $amp_conf["AMPDBUSER"];      $asteriskcdr_dbpass = $amp_conf["AMPDBPASS"];      $asteriskcdr_dbhost = $ASTERISKCDR_DBHOST;      $asteriskcdr_dbhost = isset($amp_conf["AMPDBHOST"]) ? $amp_conf["AMPDBHOST"] : $ASTERISKCDR_DBHOST;      $asteriskcdr_dbname = $ASTERISKCDR_DBNAME;      unset($amp_conf);    }   }  // asterisk manager interface (berkeley database I think)  global $asterisk_manager_interface;  $asterisk_manager_interface = new AsteriskManagerInterface();  $success = $asterisk_manager_interface->Connect($mgrhost,$mgruser,$mgrpass);  if (!$success) {    $_SESSION['ari_error'] =        _("ARI does not appear to have access to the Asterisk Manager.") . " ($errno)<br>" .       _("Check the ARI 'main.conf.php' configuration file to set the Asterisk Manager Account.") . "<br>" .       _("Check /etc/asterisk/manager.conf for a proper Asterisk Manager Account") . "<br>" .      _("make sure [general] enabled = yes and a 'permit=' line for localhost or the webserver.");    return FALSE;  }  // pear interface databases  $db = new Database();  // AMP asterisk database  if (!$STANDALONE['use']) {    $_SESSION['dbh_asterisk'] = $db->logon($amp_dbengine,                                           $amp_dbfile,                                           $amp_dbuser,                                            $amp_dbpass,                                           $amp_dbhost,                                           $amp_dbname);    if (!isset($_SESSION['dbh_asterisk'])) {      $_SESSION['ari_error'] .= _("Cannot connect to the $amp_dbname database") . "<br>" .                               _("Check AMP installation, asterisk, and ARI main.conf");      return FALSE;    }  }  // cdr database  if (in_array('callmonitor',array_keys($loaded_modules))) {    $_SESSION['dbh_cdr'] = $db->logon($asteriskcdr_dbengine,                                      $asteriskcdr_dbfile,                                      $asteriskcdr_dbuser,                                       $asteriskcdr_dbpass,                                      $asteriskcdr_dbhost,                                      $asteriskcdr_dbname);    if (!isset($_SESSION['dbh_cdr'])) {      $_SESSION['ari_error'] .= sprintf(_("Cannot connect to the $asteriskcdr_dbname database"),$asteriskcdr_dbname) . "<br>" .                               _("Check AMP installation, asterisk, and ARI main.conf");      return FALSE;    }  }  return TRUE;}/** * Logout if needed for any databases */function databaseLogoff() {  global $asterisk_manager_interface;  $asterisk_manager_interface->Disconnect();}/* * Checks if user is set and sets */function loginBlock() {  $login = new Login();  if (isset($_REQUEST['logout'])) {    $login->Unauth();  }  if (!isset($_SESSION['ari_user'])) {    $login->Auth();  }  if (!isset($_SESSION['ari_user'])) {    // login form    $ret .= $login->GetForm();    return $ret;  }}/* * Main handler for website */function handleBlock() {  global $ARI_NO_LOGIN;  global $loaded_modules;  // check errors here and in login block  $content .= checkErrorMessage();  // check logout  if ($_SESSION['ari_user'] && !$ARI_NO_LOGIN) {    $logout = 1;  }  // if nothing set goto user default page  if (!isset($_REQUEST['m'])) {    $_REQUEST['m'] = $_SESSION['ari_user']['default_page'];  }  // if not function specified then use display page function  if (!isset($_REQUEST['f'])) {    $_REQUEST['f'] = 'display';  }  $m = $_REQUEST['m'];     // module  $f = $_REQUEST['f'];     // function  $a = $_REQUEST['a'];     // action  // set arguments  $args = array();  foreach($_REQUEST as $key => $value) {    $args[$key] = $value;  }  // set rank  $ranked_modules = array();  foreach ($loaded_modules as $module) {    $module_methods = get_class_methods($module);    // note that PHP4 returns all lowercase    while (list($index, $value) = each($module_methods)) {      $module_methods[strtolower($index)] = strtolower($value);    }    reset($module_methods);            $rank = 99999;    $rank_function = "rank";    if (in_array(strtolower($rank_function), $module_methods)) {      $rank = $module->$rank_function();     }    $ranked_modules[$rank] = $module;  }  ksort($ranked_modules);  // process modules  foreach ($ranked_modules as $module) {    // process module    $name = get_class($module);    // note PHP4 returns all lowercase    $module_methods = get_class_methods($module);    // note PHP4 returns all lowercase    while (list($index, $value) = each($module_methods)) {      $module_methods[strtolower($index)] = strtolower($value);    }    reset($module_methods);    // init module    $module->init();    // add nav menu items    $nav_menu_function = "navMenu";    if (in_array(strtolower($nav_menu_function), $module_methods)) {      $nav_menu .= $module->$nav_menu_function($args);     }          if (strtolower($m)==strtolower($name)) {      // build sub menu       $subnav_menu_function = "navSubMenu";      if (in_array(strtolower($subnav_menu_function), $module_methods)) {        $subnav_menu .= $module->$subnav_menu_function($args);       }      // execute function (usually to build content)      if (in_array(strtolower($f), $module_methods)) {        $content .= $module->$f($args);      }    }  }  // add logout link  if ($logout != '') {     $nav_menu .= "<p><small><small><a href='" . $_SESSION['ARI_ROOT'] . "?logout=1'>" . _("Logout") . "</a></small></small></p>";  }   // error message if no content  if (!$content) {    $content .= _("Page Not Found.");  }   return array($nav_menu,$subnav_menu,$content);}/* * Main handler for website */function handler() {  global $ARI_VERSION;  // version  $ari_version = $ARI_VERSION;  // check error  $error = $_SESSION['ari_error'];  // load modules  loadModules();  // login to database  $success = databaseLogon();  if ($success) {    // check if login is needed    $content = loginBlock();    if (!isset($content)) {        list($nav_menu,$subnav_menu,$content) = handleBlock();    }  }  else {    $display = new Display();    $content .= $display->displayHeaderText("ARI");    $content .= $display->displayLine();    $content .= checkErrorMessage();  }  // log off any databases needed  databaseLogoff();  // check for ajax request and refresh or if not build the page  if (isset($_REQUEST['ajax_refresh']) ) {    echo "<?xml version='1.0' encoding='UTF-8' standalone='yes'?>      <response>        <nav_menu><![CDATA[" . $nav_menu . "]]></nav_menu>        <subnav_menu><![CDATA[" . $subnav_menu . "]]></subnav_menu>        <content><![CDATA[" . $content . "]]></content>      </response>";  }  else {    // build the page    include_once("./theme/page.tpl.php");   }}/** * Includes and run functions */  // create asterisk manager interface singleton$asterisk_manager_interface = '';// array to keep track of loaded modules$loaded_modules = array();include_once("./includes/asi.php");include_once("./includes/database.php");include_once("./includes/display.php"); include_once("./includes/ajax.php");?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -