| 
<?php
 /*
 * PIMPED APACHE-STATUS
 *
 */
 
 require_once __DIR__ . '/classes/confighandler.class.php';
 require_once __DIR__ . '/classes/primitivelogger.class.php';
 require_once __DIR__ . '/classes/logger.class.php';
 
 global $aEnv;
 global $oMsg;
 global $oLog;
 global $aServergroups, $aDefaultCfg, $aCfg;
 global $sJsOnReady;
 $sJsOnReady = '';
 $aServers2Collect = array();
 $sGetStarted = '<br>see documentation <a href="https://www.axel-hahn.de/docs/apachestatus/get_started.htm">get started<a>.';
 
 $sSelfURL=str_replace('\\','/',str_replace(realpath($_SERVER['DOCUMENT_ROOT']), '', __DIR__));
 
 $oCfg=new confighandler("internal-env");
 $aEnv=$oCfg->get();
 
 // I wanna see all warnings
 if (stripos($aEnv["project"]["version"], "beta")) {
 error_reporting(E_ALL);
 ini_set('display_errors', 'On');
 }
 $aEnv["links"]["update"]["check"]["url"]=str_replace("[VERSION]", $aEnv["project"]["version"], $aEnv["links"]["update"]["check"]["url"]);
 
 $oMsg = new PrimitiveLogger();
 $oLog = new logger();
 
 $oLog->add('$_GET: <pre>' . print_r($_GET, 1).'</pre>');
 $oLog->add('$_POST: <pre>' . print_r($_POST, 1).'</pre>');
 
 // --- load default and user config
 require_once("inc_functions.php");
 $oLog->add('inc_function was loaded');
 
 $aDefaultCfg=$oCfg->get("internal-config_default");
 if (!is_array($aDefaultCfg) || !count($aDefaultCfg)) {
 die("ERROR: Config was not loaded. Reinstall with a fresh download.");
 }
 // repeated in admin/inc_settings.php
 $aUserCfg=$oCfg->get("config_user");
 if (!is_array($aUserCfg)|| !count($aUserCfg)) {
 $_GET["view"]='install.php';
 }
 $aCfg = array_merge($aDefaultCfg, $aUserCfg);
 
 
 // ------------------------------------------------------------
 // check required features
 // ------------------------------------------------------------
 
 if (!function_exists("curl_multi_init")) {
 die("ERROR: PHP-CURL is not installed. It is required to run." . $sGetStarted);
 }
 
 if (!class_exists("DomDocument")) {
 $oMsg->add("PHP-XML is not installed. XML Export is not available.", 'warning');
 }
 
 // ------------------------------------------------------------
 // check GET
 // ------------------------------------------------------------
 // --- languages
 $aEnv["active"]["lang"] = array_key_exists("lang", $_GET) ? $_GET["lang"] : $aCfg['lang'];
 if (!$aEnv["active"]["lang"] || !file_exists(__DIR__ . "/lang/" . $aEnv["active"]["lang"] . ".php")){
 $aEnv["active"]["lang"] = 'en';
 }
 require_once(__DIR__ . "/lang/" . $aEnv["active"]["lang"] . ".php");
 
 $sData = file_get_contents(__DIR__ . "/lang/" . $aEnv["active"]["lang"] . ".js");
 if (!$sData) {
 $oMsg->add("language file was not found: lang/" . $aEnv["active"]["lang"] . ".js.", 'error');
 $sData = '{}';
 }
 
 // @since v1.16
 checkAuth();
 
 $aCfg['datatableOptions']["oLanguage"]= json_decode($sData, 1);
 
 $aCfg['datatableOptions']= json_encode($aCfg['datatableOptions']);
 // print_r($aCfg['datatableOptions']);
 
 // --- view
 $aEnv["active"]["view"] = array_key_exists("view", $_GET) ? $_GET["view"] : $aCfg['defaultView'];
 $aEnv["active"]["view"] = $aEnv["active"]["view"] ? $aEnv["active"]["view"] : $aCfg['views'][0];
 $aEnv["active"]["view"] = array_key_exists("action", $_GET) ? $_GET["action"] : $aEnv["active"]["view"];
 
 // --- skins
 $aEnv["active"]["skin"] = array_key_exists("skin", $_GET) ? $_GET["skin"] : $aCfg['skin'];
 
 // --- autoreload
 $aEnv["active"]["reload"] = array_key_exists("reload", $_GET) ? $_GET["reload"] : false;
 
 // -- servergroup
 // --- load server groups and servers
 $aServergroups=$oCfg->get("config_servers");
 
 // if no server was configured then setup defaults
 if (!count($aServergroups) && is_array($aUserCfg) ){
 require_once __DIR__ . '/classes/configserver.class.php';
 $oServers=new configServer();
 
 $aServergroups=$oCfg->get("config_servers");
 if ($aServergroups && count($aServergroups)){
 $oMsg->add($aLangTxt['AdminMessageServer-add-defaults-ok'], 'success');
 } else {
 $oMsg->add($aLangTxt['AdminMessageServer-add-defaults-error'], 'error');
 }
 }
 
 $aEnv["active"]["group"] = array_key_exists("group", $_GET) ? $_GET["group"] : false;
 if (!$aEnv["active"]["group"]) {
 
 foreach ($aServergroups as $sGroup => $aData) {
 $aEnv["active"]["group"] = $sGroup;
 break;
 }
 }
 
 
 $aEnv["active"]["servers"] = array_key_exists("servers", $_GET) ? $_GET["servers"] : false;
 
 if ($aServergroups && !array_key_exists($aEnv["active"]["group"], $aServergroups)) {
 $oMsg->add(sprintf($aLangTxt['error-wrong-group'], $aEnv["active"]["group"]), 'error');
 }
 
 // show menu items if a user config exists
 if(is_array($aUserCfg)){
 if (!$aEnv["active"]["group"]) {
 $oMsg->add(sprintf($aLangTxt['error-no-group'], $aEnv["active"]["group"]), 'error');
 } else {
 
 foreach ($aServergroups[$aEnv["active"]["group"]]["servers"] as $sHost => $aData2) {
 $aServers2Collect[] = $sHost;
 }
 
 $aServers2Collect = array_key_exists("servers", $_GET) ? explode(",", $_GET["servers"]) : $aServers2Collect;
 
 // check: all servers are in my group?
 if ($aServers2Collect) {
 foreach ($aServers2Collect as $sHost) {
 if (!array_key_exists($sHost, $aServergroups[$aEnv["active"]["group"]]['servers'])) {
 $oMsg->add(sprintf($aLangTxt['error-server-not-in-group'], $sHost, $aEnv["active"]["group"]), 'error');
 }
 }
 } else {
 if (!isset($adminindex) || !$adminindex){
 $oMsg->add(sprintf($aLangTxt['error-no-server']), 'error');
 }
 }
 }
 }
 |