| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 | <?phpclass BootstrapController{	private $starterBatchPath;	private $tasksPath;	private $config;	function __construct ($path = "", $path2 = "")	{		$this->config = parse_ini_file(dirname(__FILE__) . "/../../../../GAPS.ini");		$this->starterBatchPath = ($path == "") ? $this->config['STARTER'] : $path;		$this->tasksPath = ($path2 == "") ? realpath(dirname(__FILE__) . "/../../../..") : $path2;		$this->protPath = (isset($this->config['PROT'])) ? $this->config['PROT'] : $this->config['PORTAL'] . "\\System\\Prot";	}	function bootstrap ($get, $post = array())	{		if (!isset($get['action']) || $get['action'] == "") {			if (isset($get['gchr'])) {				$get['action'] = "gchr";			}			else if (isset($get['log'])) {				$get['action'] = "logs";				$get['params'] = $get['log'];			}			else if (isset($get['batch'])) {				$get['action'] = "batch";				$get['params'] = $get['batch'];			}			else if (isset($get['valid'])) {				$get['action'] = "batch";				$get['params'] = "GCStarter.bat";			}			else {				return "Webservice funktioniert.";			}		}		switch ($get['action']) {			case 'options':				require_once(dirname(__FILE__) . '/RemoteController.php');				$remote = RemoteController::Run();				return json_encode($remote);			case 'details':				if (!isset($get['params'])) {					return "Fehler: fehlender Parameter";				}				require_once(dirname(__FILE__) . '/RemoteController.php');				$remote = RemoteController::Run($get['params'], $post['files']);				return json_encode($remote);			case 'gchr':				if (!isset($post['dsn']) || !isset($post['query'])) {					return "Fehler: fehlende Parameter";				}				require_once(dirname(__FILE__) . '/OdbcController.php');				$odbcCtrl = new OdbcController($post['dsn']);				return $odbcCtrl->executeAndConvertToCsv($post['query']);			case 'logs':				if (!isset($get['params'])) {					return "Fehler: fehlender Parameter";				}				if (substr($get['params'], 0, 5) == "Prot\\") {					$logfile = "{$this->protPath}\\" . substr($get['params'], 5);				} else {					$logfile = "{$this->tasksPath}\\logs\\{$get['params']}";				}				if (substr($logfile, -4) != ".log") {					$logfile .= ".log";				}				if (!file_exists($logfile)) {					return "Fehler: Datei `" . addslashes($logfile) . "` nicht gefunden";				}				$stop = (filemtime($logfile) < strtotime("now") - 20 * 60) ? "(.)" : "";				$json = json_encode(str_replace("\"", "`", utf8_encode(file_get_contents($logfile)) . $stop));				if (function_exists("json_last_error") && json_last_error() != 0) {					return "Fehler: " . $this->jsonLastErrorMsg();				}				return $json;			case 'batch':				if (!isset($get['params'])) {					return "Fehler: fehlender Parameter";				}				$batchFile = "{$this->tasksPath}\\{$get['params']}";				$result = $get['params'];				if (isset($post['job'])) {					file_put_contents($batchFile, $post['job']);					$result = json_encode($result);				}				if (!file_exists($batchFile)) {					$batchFile = "{$this->starterBatchPath}\\{$get['params']}";				}				if (!file_exists($batchFile)) {					return "Fehler: Datei '{$get['params']}' unbekannt";				}				$logFile = "{$this->tasksPath}\\logs\\{$get['params']}.log";				$WshShell = new COM("WScript.Shell");				$cmd = "cmd /C \"call {$batchFile} 1> {$logFile} 2>&1\"";				$WshShell->Run($cmd, 0, false);				return $result;		}		return "Fehler: Falscher Aufruf";	}	private function jsonLastErrorMsg ()	{		switch (json_last_error()) {			case JSON_ERROR_NONE:				return ' - No errors';			case JSON_ERROR_DEPTH:				return ' - Maximum stack depth exceeded';			case JSON_ERROR_STATE_MISMATCH:				return ' - Underflow or the modes mismatch';			case JSON_ERROR_CTRL_CHAR:				return ' - Unexpected control character found';			case JSON_ERROR_SYNTAX:				return ' - Syntax error, malformed JSON';			case JSON_ERROR_UTF8:				return ' - Malformed UTF-8 characters, possibly incorrectly encoded';			default:				return ' - Unknown error';		}	}}
 |