Как вернуть родной web интерфейс на elastix?
После обновления freepbx на elastix 2.5, первый заменил собой web интерфейс elastix.
после обновления /var/www/html/index.php содержал
<?phpif(file_exists(dirname(__FILE__). '/index_custom.php')) { include_once(dirname(__FILE__). '/index_custom.php'); } else{ header('Location: /admin'); }
заменить файл /var/www/html/index.php
Ниже как должно быть!
<?php
/* vim: set expandtab tabstop=4 softtabstop=4 shiftwidth=4:
Codificaci?n: UTF-8
+----------------------------------------------------------------------+
| Elastix version 0.5 |
| www.elastix.org |
+----------------------------------------------------------------------+
| Copyright © 2006 Palosanto Solutions S. A. |
+----------------------------------------------------------------------+
| Cdla. Nueva Kennedy Calle E 222 y 9na. Este |
| Telfs. 2283-268, 2294-440, 2284-356 |
| Guayaquil — Ecuador |
| www.palosanto.com |
+----------------------------------------------------------------------+
| The contents of this file are subject to the General Public License |
| (GPL) Version 2 (the «License»); you may not use this file except in |
| compliance with the License. You may obtain a copy of the License at |
| www.opensource.org/licenses/gpl-license.php |
| |
| Software distributed under the License is distributed on an «AS IS» |
| basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See |
| the License for the specific language governing rights and |
| limitations under the License. |
+----------------------------------------------------------------------+
| The Original Code is: Elastix Open Source. |
| The Initial Developer of the Original Code is PaloSanto Solutions |
+----------------------------------------------------------------------+
$Id: index.php,v 1.3 2007/07/17 00:03:42 gcarrillo Exp $ */
function spl_elastix_class_autoload($sNombreClase)
{
if (!preg_match('/^\w+$/', $sNombreClase)) return;
$sNombreBase = $sNombreClase.'.class.php';
foreach (explode(':', ini_get('include_path')) as $sDirInclude) {
if (file_exists($sDirInclude.'/'.$sNombreBase)) {
require_once($sNombreBase);
return;
}
}
}
spl_autoload_register('spl_elastix_class_autoload');
// Agregar directorio libs de script a la lista de rutas a buscar para require()
ini_set('include_path', dirname($_SERVER['SCRIPT_FILENAME'])."/libs:".ini_get('include_path'));
include_once(«libs/misc.lib.php»);
include_once «configs/default.conf.php»;
include_once «libs/paloSantoDB.class.php»;
include_once «libs/paloSantoMenu.class.php»;
include_once(«libs/paloSantoACL.class.php»);// Don activate unless you know what you are doing. Too risky!
load_default_timezone();
session_name(«elastixSession»);
session_start();
if(isset($_GET['logout']) && $_GET['logout']=='yes') {
$user = isset($_SESSION['elastix_user'])?$_SESSION['elastix_user']:«unknown»;
writeLOG(«audit.log», «LOGOUT $user: Web Interface logout successful. Accepted logout for $user from $_SERVER[REMOTE_ADDR].»);
session_destroy();
session_name(«elastixSession»);
session_start();
header(«Location: index.php»);
exit;
}
//cargar el archivo de idioma
load_language();
$lang = get_language();
if(file_exists(«langmenus/$lang.lang»)){
include_once «langmenus/$lang.lang»;
global $arrLangMenu;
global $arrLang;
$arrLang = array_merge($arrLang,$arrLangMenu);
}
$pdbACL = new paloDB($arrConf['elastix_dsn']['acl']);
$pACL = new paloACL($pdbACL);
if(!empty($pACL->errMsg)) {
echo «ERROR DE DB: $pACL->errMsg <br>»;
}
// Load smarty
$smarty = getSmarty($arrConf['mainTheme']);
//- 1) SUBMIT. Si se hizo submit en el formulario de ingreso
//- autentico al usuario y lo ingreso a la sesion
if(isset($_POST['submit_login']) and !empty($_POST['input_user'])) {
$pass_md5 = md5($_POST['input_pass']);
if($pACL->authenticateUser($_POST['input_user'], $pass_md5)) {
session_regenerate_id(TRUE);
$_SESSION['elastix_user'] = $_POST['input_user'];
$_SESSION['elastix_pass'] = $pass_md5;
header(«Location: index.php»);
writeLOG(«audit.log», «LOGIN $_POST[input_user]: Web Interface login successful. Accepted password for $_POST[input_user] from $_SERVER[REMOTE_ADDR].»);
exit;
} else {
$user = urlencode(substr($_POST['input_user'],0,20));
if(!$pACL->getIdUser($_POST['input_user'])) // not exists user?
writeLOG(«audit.log», «LOGIN $user: Authentication Failure to Web Interface login. Invalid user $user from $_SERVER[REMOTE_ADDR].»);
else
writeLOG(«audit.log», «LOGIN $user: Authentication Failure to Web Interface login. Failed password for $user from $_SERVER[REMOTE_ADDR].»);
// Debo hacer algo aqu??
}
}
// 2) Autentico usuario
if (isset($_SESSION['elastix_user']) &&
isset($_SESSION['elastix_pass']) &&
$pACL->authenticateUser($_SESSION['elastix_user'], $_SESSION['elastix_pass'])) {
$idUser = $pACL->getIdUser($_SESSION['elastix_user']);
$pMenu = new paloMenu($arrConf['elastix_dsn']['menu']);
$arrMenuFiltered = $pMenu->filterAuthorizedMenus($idUser);
verifyTemplate_vm_email(); // para cambiar el template del email ue se envia al recibir un voicemail
//traducir el menu al idioma correspondiente
foreach($arrMenuFiltered as $idMenu=>$arrMenuItem) {
$arrMenuFiltered[$idMenu]['Name'] = _tr($arrMenuItem['Name']);
}
$smarty->assign(«THEMENAME», $arrConf['mainTheme']);
/*agregado para register*/
$smarty->assign(«Register», _tr(«Register»));
$smarty->assign(«lblRegisterCm», _tr(«Register»));
$smarty->assign(«lblRegisteredCm», _tr(«Registered»));
if(!is_file("/etc/elastix.key")){
$smarty->assign(«Registered», _tr(«Register»));
$smarty->assign(«ColorRegister», "#FF0000");
} else {
$smarty->assign(«Registered», _tr(«Registered»));
$smarty->assign(«ColorRegister», "#008800");
}
$smarty->assign(«md_message_title», _tr('md_message_title'));
$sCurYear = date('Y');
if ($sCurYear < '2013') $sCurYear = '2013';
$smarty->assign(«currentyear», $sCurYear);
$smarty->assign(«ABOUT_ELASTIX_CONTENT», _tr('About Elastix Content'));
$smarty->assign(«ABOUT_CLOSED», _tr('About Elastix Closed'));
$smarty->assign(«LOGOUT», _tr('Logout'));
$smarty->assign(«VersionDetails», _tr('VersionDetails'));
$smarty->assign(«VersionPackage», _tr('VersionPackage'));
$smarty->assign(«textMode», _tr('textMode'));
$smarty->assign(«htmlMode», _tr('htmlMode'));
$smarty->assign(«AMOUNT_CHARACTERS», _tr(«characters left»));
$smarty->assign(«SAVE_NOTE», _tr(«Save Note»));
$smarty->assign(«MSG_SAVE_NOTE», _tr(«Saving Note»));
$smarty->assign(«MSG_GET_NOTE», _tr(«Loading Note»));
$smarty->assign(«LBL_NO_STICKY», _tr(«Click here to leave a note.»));
$smarty->assign(«ABOUT_ELASTIX», _tr('About Elastix')." ".$arrConf['elastix_version']);
$selectedMenu = getParameter('menu');
/* El m?dulo _elastixutils sirve para contener las utilidades json que
* atienden requerimientos de varios widgets de la interfaz Elastix. Todo
* requerimiento nuevo que no sea un m?dulo debe de agregarse aqu? */
// TODO: agregar manera de rutear _elastixutils a trav?s de paloSantoNavigation
if (!is_null($selectedMenu) && $selectedMenu == '_elastixutils' &&
file_exists('modules/_elastixutils/index.php')) {
// Cargar las configuraciones para el m?dulo elegido
if (file_exists('modules/_elastixutils/configs/default.conf.php')) {
require_once 'modules/_elastixutils/configs/default.conf.php';
global $arrConf;
global $arrConfModule;
$arrConf = array_merge($arrConf, $arrConfModule);
}
// Cargar las traducciones para el m?dulo elegido
load_language_module($selectedMenu);
require_once 'modules/_elastixutils/index.php';
echo _moduleContent($smarty, $selectedMenu);
return;
}
/* El m?dulo pbxadmin que integra a FreePBX no construye enlaces con
* par?metros menu, ni con config.php en todos los casos. Por lo tanto, los
* usos sucesivos de enlaces en FreePBX embebido requiren recordar que se
* sirven a trav?s de pbxadmin. */
if (empty($selectedMenu) && !empty($_SESSION['menu']))
$selectedMenu = $_SESSION['menu'];
// Inicializa el objeto palosanto navigation
$oPn = new paloSantoNavigation($arrMenuFiltered, $smarty, $selectedMenu);
$selectedMenu = $oPn->getSelectedModule();
$_SESSION['menu'] = $selectedMenu;
// Guardar historial de la navegaci?n
// TODO: tambi?n para rawmode=yes ?
putMenuAsHistory($pdbACL, $pACL, $idUser, $selectedMenu);
// Obtener contenido del m?dulo, si usuario est? autorizado a ?l
$bModuleAuthorized = $pACL->isUserAuthorizedById($idUser, «access», $selectedMenu);
$sModuleContent = ($bModuleAuthorized)? $oPn->showContent(): '';
// rawmode es un modo de operacion que pasa directamente a la pantalla la salida
// del modulo. Esto es util en ciertos casos.
$rawmode = getParameter(«rawmode»);
if(isset($rawmode) && $rawmode=='yes') {
echo $sModuleContent;
} else {
$oPn->renderMenuTemplates();
if (file_exists('themes/'.$arrConf['mainTheme'].'/themesetup.php')) {
require_once('themes/'.$arrConf['mainTheme'].'/themesetup.php');
themeSetup($smarty, $selectedMenu, $pdbACL, $pACL, $idUser);
}
// Autorizacion
if ($bModuleAuthorized) {
$smarty->assign(«CONTENT», $sModuleContent);
$smarty->assign('MENU', (count($arrMenuFiltered) > 0)
? $smarty->fetch("_common/_menu.tpl")
: _tr('No modules'));
}
$smarty->display("_common/index.tpl");
}
} else {
$rawmode = getParameter(«rawmode»);
if(isset($rawmode) && $rawmode=='yes'){
include_once «libs/paloSantoJSON.class.php»;
$jsonObject = new PaloSantoJSON();
$jsonObject->set_status(«ERROR_SESSION»);
$jsonObject->set_error(_tr(«Your session has expired. If you want to do a login please press the button 'Accept'.»));
$jsonObject->set_message(null);
Header('Content-Type: application/json');
echo $jsonObject->createJSON();
}
else{
$oPn = new paloSantoNavigation(array(), $smarty);
$oPn->putHEAD_JQUERY_HTML();
$smarty->assign(«THEMENAME», $arrConf['mainTheme']);
$smarty->assign(«currentyear»,date(«Y»));
$smarty->assign(«PAGE_NAME», _tr('Login page'));
$smarty->assign(«WELCOME», _tr('Welcome to Elastix'));
$smarty->assign(«ENTER_USER_PASSWORD», _tr('Please enter your username and password'));
$smarty->assign(«USERNAME», _tr('Username'));
$smarty->assign(«PASSWORD», _tr('Password'));
$smarty->assign(«SUBMIT», _tr('Submit'));
$smarty->display("_common/login.tpl");
}
}
?>
после обновления /var/www/html/index.php содержал
<?phpif(file_exists(dirname(__FILE__). '/index_custom.php')) { include_once(dirname(__FILE__). '/index_custom.php'); } else{ header('Location: /admin'); }
заменить файл /var/www/html/index.php
Ниже как должно быть!
<?php
/* vim: set expandtab tabstop=4 softtabstop=4 shiftwidth=4:
Codificaci?n: UTF-8
+----------------------------------------------------------------------+
| Elastix version 0.5 |
| www.elastix.org |
+----------------------------------------------------------------------+
| Copyright © 2006 Palosanto Solutions S. A. |
+----------------------------------------------------------------------+
| Cdla. Nueva Kennedy Calle E 222 y 9na. Este |
| Telfs. 2283-268, 2294-440, 2284-356 |
| Guayaquil — Ecuador |
| www.palosanto.com |
+----------------------------------------------------------------------+
| The contents of this file are subject to the General Public License |
| (GPL) Version 2 (the «License»); you may not use this file except in |
| compliance with the License. You may obtain a copy of the License at |
| www.opensource.org/licenses/gpl-license.php |
| |
| Software distributed under the License is distributed on an «AS IS» |
| basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See |
| the License for the specific language governing rights and |
| limitations under the License. |
+----------------------------------------------------------------------+
| The Original Code is: Elastix Open Source. |
| The Initial Developer of the Original Code is PaloSanto Solutions |
+----------------------------------------------------------------------+
$Id: index.php,v 1.3 2007/07/17 00:03:42 gcarrillo Exp $ */
function spl_elastix_class_autoload($sNombreClase)
{
if (!preg_match('/^\w+$/', $sNombreClase)) return;
$sNombreBase = $sNombreClase.'.class.php';
foreach (explode(':', ini_get('include_path')) as $sDirInclude) {
if (file_exists($sDirInclude.'/'.$sNombreBase)) {
require_once($sNombreBase);
return;
}
}
}
spl_autoload_register('spl_elastix_class_autoload');
// Agregar directorio libs de script a la lista de rutas a buscar para require()
ini_set('include_path', dirname($_SERVER['SCRIPT_FILENAME'])."/libs:".ini_get('include_path'));
include_once(«libs/misc.lib.php»);
include_once «configs/default.conf.php»;
include_once «libs/paloSantoDB.class.php»;
include_once «libs/paloSantoMenu.class.php»;
include_once(«libs/paloSantoACL.class.php»);// Don activate unless you know what you are doing. Too risky!
load_default_timezone();
session_name(«elastixSession»);
session_start();
if(isset($_GET['logout']) && $_GET['logout']=='yes') {
$user = isset($_SESSION['elastix_user'])?$_SESSION['elastix_user']:«unknown»;
writeLOG(«audit.log», «LOGOUT $user: Web Interface logout successful. Accepted logout for $user from $_SERVER[REMOTE_ADDR].»);
session_destroy();
session_name(«elastixSession»);
session_start();
header(«Location: index.php»);
exit;
}
//cargar el archivo de idioma
load_language();
$lang = get_language();
if(file_exists(«langmenus/$lang.lang»)){
include_once «langmenus/$lang.lang»;
global $arrLangMenu;
global $arrLang;
$arrLang = array_merge($arrLang,$arrLangMenu);
}
$pdbACL = new paloDB($arrConf['elastix_dsn']['acl']);
$pACL = new paloACL($pdbACL);
if(!empty($pACL->errMsg)) {
echo «ERROR DE DB: $pACL->errMsg <br>»;
}
// Load smarty
$smarty = getSmarty($arrConf['mainTheme']);
//- 1) SUBMIT. Si se hizo submit en el formulario de ingreso
//- autentico al usuario y lo ingreso a la sesion
if(isset($_POST['submit_login']) and !empty($_POST['input_user'])) {
$pass_md5 = md5($_POST['input_pass']);
if($pACL->authenticateUser($_POST['input_user'], $pass_md5)) {
session_regenerate_id(TRUE);
$_SESSION['elastix_user'] = $_POST['input_user'];
$_SESSION['elastix_pass'] = $pass_md5;
header(«Location: index.php»);
writeLOG(«audit.log», «LOGIN $_POST[input_user]: Web Interface login successful. Accepted password for $_POST[input_user] from $_SERVER[REMOTE_ADDR].»);
exit;
} else {
$user = urlencode(substr($_POST['input_user'],0,20));
if(!$pACL->getIdUser($_POST['input_user'])) // not exists user?
writeLOG(«audit.log», «LOGIN $user: Authentication Failure to Web Interface login. Invalid user $user from $_SERVER[REMOTE_ADDR].»);
else
writeLOG(«audit.log», «LOGIN $user: Authentication Failure to Web Interface login. Failed password for $user from $_SERVER[REMOTE_ADDR].»);
// Debo hacer algo aqu??
}
}
// 2) Autentico usuario
if (isset($_SESSION['elastix_user']) &&
isset($_SESSION['elastix_pass']) &&
$pACL->authenticateUser($_SESSION['elastix_user'], $_SESSION['elastix_pass'])) {
$idUser = $pACL->getIdUser($_SESSION['elastix_user']);
$pMenu = new paloMenu($arrConf['elastix_dsn']['menu']);
$arrMenuFiltered = $pMenu->filterAuthorizedMenus($idUser);
verifyTemplate_vm_email(); // para cambiar el template del email ue se envia al recibir un voicemail
//traducir el menu al idioma correspondiente
foreach($arrMenuFiltered as $idMenu=>$arrMenuItem) {
$arrMenuFiltered[$idMenu]['Name'] = _tr($arrMenuItem['Name']);
}
$smarty->assign(«THEMENAME», $arrConf['mainTheme']);
/*agregado para register*/
$smarty->assign(«Register», _tr(«Register»));
$smarty->assign(«lblRegisterCm», _tr(«Register»));
$smarty->assign(«lblRegisteredCm», _tr(«Registered»));
if(!is_file("/etc/elastix.key")){
$smarty->assign(«Registered», _tr(«Register»));
$smarty->assign(«ColorRegister», "#FF0000");
} else {
$smarty->assign(«Registered», _tr(«Registered»));
$smarty->assign(«ColorRegister», "#008800");
}
$smarty->assign(«md_message_title», _tr('md_message_title'));
$sCurYear = date('Y');
if ($sCurYear < '2013') $sCurYear = '2013';
$smarty->assign(«currentyear», $sCurYear);
$smarty->assign(«ABOUT_ELASTIX_CONTENT», _tr('About Elastix Content'));
$smarty->assign(«ABOUT_CLOSED», _tr('About Elastix Closed'));
$smarty->assign(«LOGOUT», _tr('Logout'));
$smarty->assign(«VersionDetails», _tr('VersionDetails'));
$smarty->assign(«VersionPackage», _tr('VersionPackage'));
$smarty->assign(«textMode», _tr('textMode'));
$smarty->assign(«htmlMode», _tr('htmlMode'));
$smarty->assign(«AMOUNT_CHARACTERS», _tr(«characters left»));
$smarty->assign(«SAVE_NOTE», _tr(«Save Note»));
$smarty->assign(«MSG_SAVE_NOTE», _tr(«Saving Note»));
$smarty->assign(«MSG_GET_NOTE», _tr(«Loading Note»));
$smarty->assign(«LBL_NO_STICKY», _tr(«Click here to leave a note.»));
$smarty->assign(«ABOUT_ELASTIX», _tr('About Elastix')." ".$arrConf['elastix_version']);
$selectedMenu = getParameter('menu');
/* El m?dulo _elastixutils sirve para contener las utilidades json que
* atienden requerimientos de varios widgets de la interfaz Elastix. Todo
* requerimiento nuevo que no sea un m?dulo debe de agregarse aqu? */
// TODO: agregar manera de rutear _elastixutils a trav?s de paloSantoNavigation
if (!is_null($selectedMenu) && $selectedMenu == '_elastixutils' &&
file_exists('modules/_elastixutils/index.php')) {
// Cargar las configuraciones para el m?dulo elegido
if (file_exists('modules/_elastixutils/configs/default.conf.php')) {
require_once 'modules/_elastixutils/configs/default.conf.php';
global $arrConf;
global $arrConfModule;
$arrConf = array_merge($arrConf, $arrConfModule);
}
// Cargar las traducciones para el m?dulo elegido
load_language_module($selectedMenu);
require_once 'modules/_elastixutils/index.php';
echo _moduleContent($smarty, $selectedMenu);
return;
}
/* El m?dulo pbxadmin que integra a FreePBX no construye enlaces con
* par?metros menu, ni con config.php en todos los casos. Por lo tanto, los
* usos sucesivos de enlaces en FreePBX embebido requiren recordar que se
* sirven a trav?s de pbxadmin. */
if (empty($selectedMenu) && !empty($_SESSION['menu']))
$selectedMenu = $_SESSION['menu'];
// Inicializa el objeto palosanto navigation
$oPn = new paloSantoNavigation($arrMenuFiltered, $smarty, $selectedMenu);
$selectedMenu = $oPn->getSelectedModule();
$_SESSION['menu'] = $selectedMenu;
// Guardar historial de la navegaci?n
// TODO: tambi?n para rawmode=yes ?
putMenuAsHistory($pdbACL, $pACL, $idUser, $selectedMenu);
// Obtener contenido del m?dulo, si usuario est? autorizado a ?l
$bModuleAuthorized = $pACL->isUserAuthorizedById($idUser, «access», $selectedMenu);
$sModuleContent = ($bModuleAuthorized)? $oPn->showContent(): '';
// rawmode es un modo de operacion que pasa directamente a la pantalla la salida
// del modulo. Esto es util en ciertos casos.
$rawmode = getParameter(«rawmode»);
if(isset($rawmode) && $rawmode=='yes') {
echo $sModuleContent;
} else {
$oPn->renderMenuTemplates();
if (file_exists('themes/'.$arrConf['mainTheme'].'/themesetup.php')) {
require_once('themes/'.$arrConf['mainTheme'].'/themesetup.php');
themeSetup($smarty, $selectedMenu, $pdbACL, $pACL, $idUser);
}
// Autorizacion
if ($bModuleAuthorized) {
$smarty->assign(«CONTENT», $sModuleContent);
$smarty->assign('MENU', (count($arrMenuFiltered) > 0)
? $smarty->fetch("_common/_menu.tpl")
: _tr('No modules'));
}
$smarty->display("_common/index.tpl");
}
} else {
$rawmode = getParameter(«rawmode»);
if(isset($rawmode) && $rawmode=='yes'){
include_once «libs/paloSantoJSON.class.php»;
$jsonObject = new PaloSantoJSON();
$jsonObject->set_status(«ERROR_SESSION»);
$jsonObject->set_error(_tr(«Your session has expired. If you want to do a login please press the button 'Accept'.»));
$jsonObject->set_message(null);
Header('Content-Type: application/json');
echo $jsonObject->createJSON();
}
else{
$oPn = new paloSantoNavigation(array(), $smarty);
$oPn->putHEAD_JQUERY_HTML();
$smarty->assign(«THEMENAME», $arrConf['mainTheme']);
$smarty->assign(«currentyear»,date(«Y»));
$smarty->assign(«PAGE_NAME», _tr('Login page'));
$smarty->assign(«WELCOME», _tr('Welcome to Elastix'));
$smarty->assign(«ENTER_USER_PASSWORD», _tr('Please enter your username and password'));
$smarty->assign(«USERNAME», _tr('Username'));
$smarty->assign(«PASSWORD», _tr('Password'));
$smarty->assign(«SUBMIT», _tr('Submit'));
$smarty->display("_common/login.tpl");
}
}
?>
Нет комментариев