| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 | 
							- <?php
 
- class 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';
 
- 		}
 
- 	}
 
- }
 
 
  |