LIB_DIR . '/libbashcolor.inc.php' ); private static function init() { if(php_sapi_name() == 'cli') { self::$is_cli_run = true; $argc = 0; $argv = array(); if(isset($_SERVER['argc'])) { $argc = $_SERVER['argc']; } if(isset($_SERVER['argv'])) { $argv = $_SERVER['argv']; } if(isset($argv[0])) { self::$cli_script = basename($argv[0]); } for($a = 1; $a < $argc; $a++) { if(substr($argv[$a], 0, 2) == '--') { $sArg = substr($argv[$a], 2); if(strpos($sArg, '=') !== false) { list($sKey, $sValue) = explode('=', $sArg); } else { $sKey = $sArg; $sValue = true; } if($sKey != 'module' && $sKey != 'method') { $_GET[$sKey] = $sValue; } } elseif(!array_key_exists('module', $_GET)) { $_GET['module'] = $argv[$a]; } elseif(!array_key_exists('method', $_GET)) { $_GET['method'] = $argv[$a]; } } } } /** * @param string $class_name * @throws ISPConfigClassException */ public static function autoload($class_name) { if(preg_match('/^\w+$/', $class_name) === false) { throw new ISPConfigClassException($class_name . ' is not a valid class name.'); } $class_dir = LIB_DIR; if(preg_match('/Exception$/', $class_name)) { $class_dir .= '/exceptions'; } elseif(preg_match('/Module$/', $class_name)) { $class_dir .= '/modules'; } elseif(preg_match('/API$/', $class_name)) { $class_dir .= '/api'; } elseif(preg_match('/OS$/', $class_name)) { $class_dir .= '/os'; } $use_file = null; if(isset(self::$autoload_files[$class_name])) { $use_file = self::$autoload_files[$class_name]; } elseif(file_exists($class_dir . '/class.' . $class_name . '.inc.php')) { $use_file = $class_dir . '/class.' . $class_name . '.inc.php'; } elseif(file_exists($class_dir . '/class.' . strtolower($class_name) . '.inc.php')) { $use_file = $class_dir . '/class.' . strtolower($class_name) . '.inc.php'; } elseif(preg_match('/^ISPConfig\w+Exception$/', $class_name)) { $use_file = LIB_DIR . '/exceptions/class.ISPConfigException.inc.php'; } else { throw new ISPConfigClassException('No class file for ' . $class_name . ' found.'); } if($class_name != 'ISPConfigLog') { ISPConfigLog::debug('Trying to autoload class file "' . $use_file . '" for class "' . $class_name . '"'); } if(!file_exists($use_file)) { throw new ISPConfigClassException('File ' . $use_file . ' not found for class ' . $class_name . '.'); } include_once $use_file; if(!class_exists($class_name)) { throw new ISPConfigClassException($class_name . ' not found in file ' . LIB_DIR . '/class.' . $class_name . '.inc.php.'); } } /** * @return boolean */ public static function isCLI() { return self::$is_cli_run; } /** * @return string */ public static function getScriptName() { return self::$cli_script; } /** * @throws ISPConfigModuleException */ public static function run() { self::init(); // get operating system try { $os = ISPConfigBaseOS::getOSVersion(); ISPConfigLog::info('Starting perfect server setup for ' . $os['NAME'], true); $installer = ISPConfigBaseOS::getOSInstance(); $installer->runPerfectSetup(true); // dry run for testing } catch(Exception $ex) { throw $ex; } exit; } }