Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?php
if(function_exists('spl_autoload_register')) {
spl_autoload_register('ISPConfig::autoload');
}
/**
* Main controller class
*
* @author croydon
*/
class ISPConfig {
private static $is_cli_run = false;
private static $cli_script = false;
private static $autoload_files = array(
'PXBashColor' => 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;
}
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
}
}
}
}
/**
* @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();
if(isset($_GET['debug']) && $_GET['debug']) {
ISPConfigLog::setLogPriority(ISPConfigLog::PRIO_DEBUG);
}
// get operating system
try {
$os = ISPConfigBaseOS::getOSVersion();
ISPConfigLog::info('Starting perfect server setup for ' . $os['NAME'], true);
$installer = ISPConfigBaseOS::getOSInstance();
ISPConfigLog::warn('Please delete the log files in var/log/setup-* once you don\'t need them anymore because they contain your passwords!', true);
} catch(Exception $ex) {
throw $ex;
}
exit;
}
}