PageRenderTime 52ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

/upload/inc/misc.php

https://github.com/AKSW/geolift-webbuilder
PHP | 657 lines | 532 code | 96 blank | 29 comment | 177 complexity | a67fba16a90d405b64c256f3d791bffb MD5 | raw file
Possible License(s): Apache-2.0
  1. <?php
  2. /*
  3. * Copyright 2014 Alrik Hausdorf and Eugen Rein
  4. *
  5. * Licensed under the Apache License, Version 2.0 (the "License");
  6. * you may not use this file except in compliance with the License.
  7. * You may obtain a copy of the License at
  8. *
  9. * http://www.apache.org/licenses/LICENSE-2.0
  10. *
  11. * Unless required by applicable law or agreed to in writing, software
  12. * distributed under the License is distributed on an "AS IS" BASIS,
  13. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14. * See the License for the specific language governing permissions and
  15. * limitations under the License.
  16. */
  17. global $base_dir;
  18. if (!isset($_REQUEST['function']))
  19. die('{"error":"no function selected"}');
  20. if ($_REQUEST['function'] == "getDatasets") {
  21. if (!isset($_REQUEST['user']))
  22. die('{"error":"user-field required"}');
  23. if (trim($_REQUEST['user']) == "")
  24. die('{"error":"user-field required"}');
  25. $user_dir = $base_dir . md5($_REQUEST['user']) . DIRECTORY_SEPARATOR;
  26. $results_array = array();
  27. foreach (glob($user_dir . '*.json') as $file) {
  28. // echo $file;
  29. if (!endsWith($file, "user.json")) {
  30. $result1 = json_decode(file_get_contents($file));
  31. $result1->jobs = array();
  32. foreach (glob($user_dir . $result1->input . DIRECTORY_SEPARATOR . '*.job') as $file1) {
  33. $json = json_decode(file_get_contents($file1));
  34. $json->file = substr(strrchr($file1, DIRECTORY_SEPARATOR), 1);
  35. $result1->jobs[] = $json;
  36. }
  37. $results_array[] = $result1;
  38. }
  39. }
  40. echo(json_encode($results_array));
  41. } elseif ($_REQUEST['function'] == "login") {
  42. if (!isset($_REQUEST['user']))
  43. die('{"error":"user-field required"}');
  44. if (trim($_REQUEST['user']) == "")
  45. die('{"error":"user-field required"}');
  46. $user_dir = $base_dir . md5($_REQUEST['user']) . DIRECTORY_SEPARATOR;
  47. if (is_dir($user_dir)) {
  48. if (is_file($user_dir . DIRECTORY_SEPARATOR . "user.json")) {
  49. setJsonResponse();
  50. $json = file_get_contents($user_dir . "user.json");
  51. echo($json);
  52. die('');
  53. }
  54. } else {
  55. mkdir($user_dir);
  56. $json = array('mail' => $_REQUEST['user']);
  57. file_put_contents($user_dir . "user.json", json_encode($json));
  58. echo(json_encode($json));
  59. }
  60. } elseif ($_REQUEST['function'] == "getSchema") {
  61. setJsonResponse();
  62. $json = shell_exec(GEOLIFT_SCHEMA_COMMAND);
  63. echo($json);
  64. die('');
  65. } elseif ($_REQUEST['function'] == "saveData") {
  66. setJsonResponse();
  67. if (!isset($_REQUEST['user']))
  68. die('{"error":"user-field required"}');
  69. if (trim($_REQUEST['user']) == "")
  70. die('{"error":"user-field required"}');
  71. if (!isset($_REQUEST['file']))
  72. die('{"error":"file-field required"}');
  73. if (trim($_REQUEST['file']) == "")
  74. die('{"error":"file-field required"}');
  75. if (!isset($_REQUEST['data']))
  76. die('{"error":"data-field required"}');
  77. if (trim($_REQUEST['data']) == "")
  78. die('{"error":"data-field required"}');
  79. $file_dir = $base_dir . md5(($_REQUEST['user'])) . DIRECTORY_SEPARATOR . ($_REQUEST['file']) . DIRECTORY_SEPARATOR;
  80. if (isset($_REQUEST['job'])) {
  81. $newFilename = $_REQUEST['job'];
  82. unlink($file_dir . $newFilename);
  83. } else {
  84. $newFilename = "query_0.job";
  85. $run = 0;
  86. while (is_dir($file_dir . $newFilename) or is_file($file_dir . $newFilename)) {
  87. $newFilename = "query_" . $run++ . ".job";
  88. }
  89. }
  90. file_put_contents($file_dir . $newFilename, urldecode($_REQUEST['data']));
  91. $return = array(
  92. 'success' => "Saved.");
  93. //create config file
  94. $file_dir = realpath($base_dir . md5(($_REQUEST['user'])) . DIRECTORY_SEPARATOR . ($_REQUEST['file']) . DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR;
  95. $file = $file_dir . ($newFilename);
  96. $input_file_name = $file_dir . 'input.ttl';
  97. $config_file_name = str_replace('.job', '.ttl', $newFilename);
  98. $config_file_name = $file_dir . $config_file_name;
  99. $config_file_handler = @fopen($config_file_name, 'wb');
  100. $ouput_file_name = str_replace('.job', '.out', $newFilename);
  101. $ouput_file_name = $file_dir . $ouput_file_name;
  102. $json = file_get_contents($file);
  103. $query = json_decode($json, true);
  104. if (!$query) {
  105. die('{"error": "Job config can not be parsed."}');
  106. }
  107. if (!isset($query['job'])) {
  108. die('{"error": "Job config can not be parsed."}');
  109. }
  110. if (!$query['job']) {
  111. die('{"error": "Job config can not be parsed."}');
  112. }
  113. if (FALSE === $config_file_handler) {
  114. die('{"error": "Job config can not be written."}');
  115. }
  116. $user_file_dir = realpath($base_dir . md5($_REQUEST['user'])) . DS . ($_REQUEST['file']) . '.json';
  117. $Filejson = file_get_contents($user_file_dir);
  118. $Filequery = json_decode($Filejson);
  119. if (!$Filequery->url) {
  120. if (is_dir($file) || !is_file($file)) {
  121. die('{"error":"Job not found."}');
  122. }
  123. if (is_dir($input_file_name) || !is_file($input_file_name)) {
  124. die('{"error":"Job not found."}');
  125. }
  126. $input_file_name = $input_file_name;
  127. } else {
  128. $input_file_name = $Filequery->filename;
  129. }
  130. $config_elements = $query['job'];
  131. $dataset_counter = 1;
  132. $parameter_counter = 1;
  133. $end = null;
  134. $next = array();
  135. $config_data = array();
  136. $datasets = array();
  137. $parameters = array();
  138. foreach ($config_elements as $key => $element) {
  139. if ('start' == $element['name']) {
  140. $name = ':d' . $dataset_counter;
  141. $dataset_counter++;
  142. $next_id = $element['next'];
  143. $next[] = $next_id;
  144. $config_data[$next_id] = array(
  145. ':hasInput' => array(':d1')
  146. );
  147. if(!$Filequery->url) {
  148. $datasets[':d1'] = array(
  149. 'a' => ':Dataset',
  150. ':inputFile' => '"' . $input_file_name . '"'
  151. );
  152. } else {
  153. $datasets[':d1'] = array(
  154. 'a' => ':Dataset',
  155. ':hasUri' => '<' . $input_file_name . '>',
  156. ':FromEndPoint' => '<' . $Filequery->endpoint . '>'
  157. );
  158. }
  159. break;
  160. }
  161. }
  162. foreach ($config_elements as $key => $element) {
  163. if ('end' == $element['name']) {
  164. $end = $element;
  165. break;
  166. }
  167. }
  168. while(!empty($next)) {
  169. $next_id = array_shift($next);
  170. foreach ($config_elements as $key => $element) {
  171. if($element['id'] == $next_id && $end['id'] !== $next_id) {
  172. $parameter_type_prefix = ucfirst($element['name']);
  173. $config_data_type_prefix = ucfirst($element['name']);
  174. $config_data_label_prefix = ucfirst($element['name']);
  175. if('nlp' == $element['name']) {
  176. $parameter_type_prefix = strtoupper($element['name']);
  177. $config_data_type_prefix = strtoupper($element['name']);
  178. $config_data_label_prefix = strtoupper($element['name']);
  179. }
  180. $parameter_name = ':' . $element['name'] . ucfirst($element['type']) . 'Parameter';
  181. $parameter_type = ':' . ucfirst($element['type']) . 'Parameter, ' . ':' . $parameter_type_prefix . ucfirst($element['type']) . 'Parameter';
  182. $config_data_name = ':' . $element['name'] . $element['id'];
  183. $config_data_type = ':' . ucfirst($element['type']) . ', ' . ':' . $config_data_type_prefix . ucfirst($element['type']);
  184. $config_data_label = '"' . $config_data_label_prefix . ' ' . ucfirst($element['type']) . '"';
  185. $next_element_ids = array();
  186. if(is_array($element['next'])) {
  187. $next_element_ids = $element['next'];
  188. } else if(null != $element['next']) {
  189. $next_element_ids[] = $element['next'];
  190. }
  191. if(!isset($config_data[$next_id])) {
  192. $config_data[$next_id] = array();
  193. }
  194. if(!isset($config_data[$next_id]['name'])) {
  195. $config_data[$next_id]['name'] = $config_data_name;
  196. }
  197. if(!isset($config_data[$next_id]['a'])) {
  198. $config_data[$next_id]['a'] = $config_data_type;
  199. }
  200. if(!isset($config_data[$next_id]['rdfs:label'])) {
  201. $config_data[$next_id]['rdfs:label'] = $config_data_label;
  202. }
  203. foreach ($next_element_ids as $next_element_id) {
  204. $name = ':d' . $dataset_counter;
  205. $dataset_counter++;
  206. if($next_element_id != $end['id']) {
  207. if(!isset($config_data[$next_element_id])) {
  208. $config_data[$next_element_id] = array();
  209. }
  210. if(!isset($config_data[$next_element_id][':hasInput'])) {
  211. $config_data[$next_element_id][':hasInput'] = array();
  212. }
  213. $config_data[$next_element_id][':hasInput'][] = $name;
  214. $datasets[$name] = array(
  215. 'a' => ':Dataset'
  216. );
  217. }
  218. if(!in_array($next_element_id, $next)) {
  219. $next[] = $next_element_id;
  220. }
  221. if(!isset($config_data[$next_id][':hasOutput'])) {
  222. $config_data[$next_id][':hasOutput'] = array();
  223. }
  224. $config_data[$next_id][':hasOutput'][] = $name;
  225. if($end['id'] == $next_element_id) {
  226. $datasets[$name] = array(
  227. 'a' => ':Dataset',
  228. ':outputFile' => '"' . $ouput_file_name . '"',
  229. ':outputFormat' => '"Turtle"'
  230. );
  231. } else {
  232. $datasets[$name] = array(
  233. 'a' => ':Dataset'
  234. );
  235. }
  236. }
  237. if(isset($element['properties'])) {
  238. if(!isset($config_data[$next_id][':hasParameter'])) {
  239. $config_data[$next_id][':hasParameter'] = array();
  240. }
  241. if('dereferencing' == $element['name']) {
  242. if(isset($element['properties']['predicate'], $element['properties']['predicate value'])) {
  243. $parameter_key = $element['properties']['predicate'];
  244. $parameter_value = $element['properties']['predicate value'];
  245. $element['properties'][$parameter_key] = $parameter_value;
  246. }
  247. unset($element['properties']['predicate']);
  248. unset($element['properties']['predicate value']);
  249. }
  250. foreach ($element['properties'] as $parameter_key => $parameter_value) {
  251. //simple match against a URI
  252. if(!preg_match('@^\s*([^:]+://.*)$@', $parameter_value, $matches) && false !== strpos($parameter_value, ':')) {
  253. $parameter_value = trim($parameter_value);
  254. $parameter['a'] = $parameter_type;
  255. $parameter[':hasKey'] = '"' . $parameter_key . '"';
  256. $parameter[':hasValue'] = $parameter_value;
  257. } else if (is_bool($parameter_value)) {
  258. $parameter_value = ($parameter_value ? 'true' : 'false');
  259. $parameter_value = trim($parameter_value);
  260. $parameter['a'] = $parameter_type;
  261. $parameter[':hasKey'] = '"' . $parameter_key . '"';
  262. $parameter[':hasValue'] = $parameter_value;
  263. } else {
  264. $parameter_value = trim($parameter_value);
  265. $parameter['a'] = $parameter_type;
  266. $parameter[':hasKey'] = '"' . $parameter_key . '"';
  267. $parameter[':hasValue'] = '"' . $parameter_value . '"';
  268. }
  269. $config_data[$next_id][':hasParameter'][] = $parameter_name . $parameter_counter;
  270. $parameters[$parameter_name . $parameter_counter] = $parameter;
  271. $parameter_counter++;
  272. }
  273. }
  274. }
  275. }
  276. }
  277. //create config file
  278. //write header
  279. $newline = PHP_EOL;
  280. $lines = array(
  281. "@prefix : <http://geoknow.org/specsontology/> .{$newline}",
  282. "@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .{$newline}",
  283. "@prefix geo: <http://w3.org/2003/01/geo/wgs84_pos#> .{$newline}"
  284. );
  285. foreach ($lines as $line) {
  286. fwrite($config_file_handler, $line);
  287. }
  288. //write datasets
  289. foreach ($datasets as $name => $dataset) {
  290. $i = 0;
  291. foreach ($dataset as $key => $value) {
  292. $separator = ';';
  293. $pre = '';
  294. if($i >= count($dataset) - 1) {
  295. $separator = '.';
  296. }
  297. if($i == 0) {
  298. $pre = $name;
  299. }
  300. $line = "{$pre} {$key} {$value} {$separator}{$newline}";
  301. fwrite($config_file_handler, $line);
  302. $i++;
  303. }
  304. }
  305. //write parameters
  306. foreach ($parameters as $name => $parameter) {
  307. $i = 0;
  308. foreach ($parameter as $key => $value) {
  309. $separator = ';';
  310. $pre = '';
  311. if($i >= count($parameter) - 1) {
  312. $separator = '.';
  313. }
  314. if($i == 0) {
  315. $pre = $name;
  316. }
  317. $line = "{$pre} {$key} {$value} {$separator}{$newline}";
  318. fwrite($config_file_handler, $line);
  319. $i++;
  320. }
  321. }
  322. //write modules and operators
  323. foreach ($config_data as $config_element) {
  324. $name = $config_element['name'];
  325. unset($config_element['name']);
  326. $i = 0;
  327. foreach ($config_element as $key => $value) {
  328. $separator = ';';
  329. $pre = '';
  330. if($i >= count($config_element) - 1) {
  331. $separator = '.';
  332. }
  333. if($i == 0) {
  334. $pre = $name;
  335. }
  336. if(is_array($value)) {
  337. $value = implode(', ', $value);
  338. }
  339. $line = "{$pre} {$key} {$value} {$separator}{$newline}";
  340. fwrite($config_file_handler, $line);
  341. $i++;
  342. }
  343. }
  344. fclose($config_file_handler);
  345. echo(json_encode($return));
  346. } elseif ($_REQUEST['function'] == "removeJob") {
  347. setJsonResponse();
  348. if (!isset($_REQUEST['user']))
  349. die('{"error":"user-field required"}');
  350. if (trim($_REQUEST['user']) == "")
  351. die('{"error":"user-field required"}');
  352. if (!isset($_REQUEST['file']))
  353. die('{"error":"file-field required"}');
  354. if (trim($_REQUEST['file']) == "")
  355. die('{"error":"file-field required"}');
  356. if (!isset($_REQUEST['job']))
  357. die('{"error":"job-field required"}');
  358. if (trim($_REQUEST['job']) == "")
  359. die('{"error":"job-field required"}');
  360. $file_dir = $base_dir . md5(($_REQUEST['user'])) . DIRECTORY_SEPARATOR . ($_REQUEST['file']) . DIRECTORY_SEPARATOR;
  361. $newFilename = $_REQUEST['job'];
  362. unlink($file_dir . $newFilename);
  363. $return = array(
  364. 'success' => "Removed.");
  365. echo(json_encode($return));
  366. } elseif ($_REQUEST['function'] == "removeFile") {
  367. setJsonResponse();
  368. if (!isset($_REQUEST['user']))
  369. die('{"error":"user-field required"}');
  370. if (trim($_REQUEST['user']) == "")
  371. die('{"error":"user-field required"}');
  372. if (!isset($_REQUEST['file']))
  373. die('{"error":"file-field required"}');
  374. if (trim($_REQUEST['file']) == "")
  375. die('{"error":"file-field required"}');
  376. $file_dir = $base_dir . md5(($_REQUEST['user'])) . DIRECTORY_SEPARATOR . ($_REQUEST['file']) . DIRECTORY_SEPARATOR;
  377. unlink($base_dir . md5(($_REQUEST['user'])) . DIRECTORY_SEPARATOR . ($_REQUEST['file']) . '.json');
  378. deleteDir($file_dir);
  379. $return = array(
  380. 'success' => "Removed.");
  381. echo(json_encode($return));
  382. } elseif ($_REQUEST['function'] == "loadJob") {
  383. setJsonResponse();
  384. if (!isset($_REQUEST['user']))
  385. die('{"error":"user-field required"}');
  386. if (trim($_REQUEST['user']) == "")
  387. die('{"error":"user-field required"}');
  388. if (!isset($_REQUEST['file']))
  389. die('{"error":"file-field required"}');
  390. if (trim($_REQUEST['file']) == "")
  391. die('{"error":"file-field required"}');
  392. if (!isset($_REQUEST['job']))
  393. die('{"error":"job-field required"}');
  394. if (trim($_REQUEST['job']) == "")
  395. die('{"error":"job-field required"}');
  396. $file = $base_dir . md5(($_REQUEST['user'])) . DIRECTORY_SEPARATOR . ($_REQUEST['file']) . DIRECTORY_SEPARATOR . ($_REQUEST['job']);
  397. if (!is_dir($file) && is_file($file)) {
  398. $json = file_get_contents($file);
  399. echo($json);
  400. die('');
  401. } else {
  402. die('{"error":"Job not found."}');
  403. }
  404. } elseif ($_REQUEST['function'] == 'runJob') {
  405. setJsonResponse();
  406. $success = array('success' => true);
  407. if (!isset($_REQUEST['user']))
  408. die('{"error":"user-field required"}');
  409. if (trim($_REQUEST['user']) == "")
  410. die('{"error":"user-field required"}');
  411. if (!isset($_REQUEST['file']))
  412. die('{"error":"file-field required"}');
  413. if (trim($_REQUEST['file']) == "")
  414. die('{"error":"file-field required"}');
  415. if (!isset($_REQUEST['job']))
  416. die('{"error":"job-field required"}');
  417. if (trim($_REQUEST['job']) == "")
  418. die('{"error":"job-field required"}');
  419. $file_dir = realpath($base_dir . md5(($_REQUEST['user'])) . DIRECTORY_SEPARATOR . ($_REQUEST['file']) . DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR;
  420. $file = $file_dir . ($_REQUEST['job']);
  421. $input_file_name = $file_dir . 'input.ttl';
  422. $config_file_name = str_replace('.job', '.ttl', $_REQUEST['job']);
  423. $config_file_name = $file_dir . $config_file_name;
  424. $ouput_file_name = str_replace('.job', '.out', $_REQUEST['job']);
  425. $ouput_file_name = $file_dir . $ouput_file_name;
  426. $pid_file_name = str_replace('.job', '.pid', $_REQUEST['job']);
  427. $pid_file_name = $file_dir . $pid_file_name;
  428. $log_file_name = str_replace('.job', '.log', $_REQUEST['job']);
  429. $log_file_name = $file_dir . $log_file_name;
  430. $json = file_get_contents($file);
  431. $query = json_decode($json, true);
  432. if (!$query) {
  433. die('{"error": "Job config can not be parsed."}');
  434. }
  435. if (!isset($query['job'])) {
  436. die('{"error": "Job config can not be parsed."}');
  437. }
  438. if (!$query['job']) {
  439. die('{"error": "Job config can not be parsed."}');
  440. }
  441. $user_file_dir = realpath($base_dir . md5($_REQUEST['user'])) . DS . ($_REQUEST['file']) . '.json';
  442. $Filejson = file_get_contents($user_file_dir);
  443. $Filequery = json_decode($Filejson);
  444. $query['state'] = 'running';
  445. file_put_contents($file, json_encode($query));
  446. if (!$Filequery->url) {
  447. if (is_dir($file) || !is_file($file)) {
  448. die('{"error":"Job not foundd."}');
  449. }
  450. if (is_dir($input_file_name) || !is_file($input_file_name)) {
  451. die('{"error":"Job not found."}');
  452. }
  453. $input_file_name = $input_file_name;
  454. } else {
  455. $input_file_name = $Filequery->filename;
  456. }
  457. if (is_dir($ouput_file_name)) {
  458. die('{"error":"Output file can not be written."}');
  459. }
  460. if (is_file($ouput_file_name) && !is_writable($ouput_file_name)) {
  461. die('{"error":"Output file can not be written."}');
  462. }
  463. if (is_dir($pid_file_name)) {
  464. die('{"error":"PID file can not be written."}');
  465. }
  466. if (is_file($pid_file_name) && !is_writable($pid_file_name)) {
  467. die('{"error":"PID file can not be written."}');
  468. }
  469. if (is_dir($config_file_name)) {
  470. die('{"error":"Config file is not readable."}');
  471. }
  472. if (is_file($config_file_name) && !is_readable($config_file_name)) {
  473. die('{"error":"Config file is not readable."}');
  474. }
  475. //create output and log files if they don't exists already
  476. touch($ouput_file_name);
  477. @unlink($log_file_name);
  478. touch($log_file_name);
  479. //prepare geolift command
  480. $command = str_replace('{{CONFIG_FILE}}', $config_file_name, GEOLIFT_RUN_COMMAND);
  481. //start geolift in separate process, suppress all outputs and save PID to pid file
  482. $command = "nohup {$command} > {$log_file_name} 2>&1 ".PHP_EOL;
  483. $command.= "php " . GEOLIFT_BASE_PATH . DS . "upload" . DS . "inc" . DS . "sendMail.php " . md5(($_REQUEST['user'])) . " " . (($_REQUEST['file'])) . " " . (($_REQUEST['job'])) . " ";
  484. //write SH for command and run it
  485. $run_file_name = str_replace('.job', '.sh', $_REQUEST['job']);
  486. $run_file_name = $file_dir . $run_file_name;
  487. file_put_contents($run_file_name, $command);
  488. exec("sh $run_file_name & echo $!", $out, $return_var);
  489. //$return_var = 0 : exec started command successfully
  490. //$out[0] : contains PID
  491. if (0 === $return_var && isset($out[0])) {
  492. file_put_contents($pid_file_name, $out[0]);
  493. echo json_encode($success);
  494. die('');
  495. }
  496. die('{"error":"Unknown error occurred."}');
  497. } elseif ($_REQUEST['function'] == 'getOutput') {
  498. setJsonResponse();
  499. $success = array('success' => true);
  500. if (!isset($_REQUEST['user']))
  501. die('{"error":"user-field required"}');
  502. if (trim($_REQUEST['user']) == "")
  503. die('{"error":"user-field required"}');
  504. if (!isset($_REQUEST['file']))
  505. die('{"error":"file-field required"}');
  506. if (trim($_REQUEST['file']) == "")
  507. die('{"error":"file-field required"}');
  508. if (!isset($_REQUEST['job']))
  509. die('{"error":"job-field required"}');
  510. if (trim($_REQUEST['job']) == "")
  511. die('{"error":"job-field required"}');
  512. $ouput_file_name = str_replace('.job', '.out', $_REQUEST['job']);
  513. $file_dir = realpath($base_dir . md5(($_REQUEST['user'])) . DIRECTORY_SEPARATOR . ($_REQUEST['file']) . DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR;
  514. $file = $file_dir . ($ouput_file_name);
  515. header("Content-disposition: attachment; filename=" . $ouput_file_name);
  516. readfile($file);
  517. } elseif ($_REQUEST['function'] == 'getLogOutput') {
  518. setJsonResponse();
  519. $success = array('success' => true);
  520. if (!isset($_REQUEST['user']))
  521. die('{"error":"user-field required"}');
  522. if (trim($_REQUEST['user']) == "")
  523. die('{"error":"user-field required"}');
  524. if (!isset($_REQUEST['file']))
  525. die('{"error":"file-field required"}');
  526. if (trim($_REQUEST['file']) == "")
  527. die('{"error":"file-field required"}');
  528. if (!isset($_REQUEST['job']))
  529. die('{"error":"job-field required"}');
  530. if (trim($_REQUEST['job']) == "")
  531. die('{"error":"job-field required"}');
  532. $ouput_file_name = str_replace('.job', '.log', $_REQUEST['job']);
  533. $file_dir = realpath($base_dir . md5(($_REQUEST['user'])) . DIRECTORY_SEPARATOR . ($_REQUEST['file']) . DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR;
  534. $file = $file_dir . ($ouput_file_name);
  535. header("Content-disposition: attachment; filename=" . $ouput_file_name);
  536. readfile($file);
  537. } elseif ($_REQUEST['function'] == 'getConfig') {
  538. setJsonResponse();
  539. $success = array('success' => true);
  540. if (!isset($_REQUEST['user']))
  541. die('{"error":"user-field required"}');
  542. if (trim($_REQUEST['user']) == "")
  543. die('{"error":"user-field required"}');
  544. if (!isset($_REQUEST['file']))
  545. die('{"error":"file-field required"}');
  546. if (trim($_REQUEST['file']) == "")
  547. die('{"error":"file-field required"}');
  548. if (!isset($_REQUEST['job']))
  549. die('{"error":"job-field required"}');
  550. if (trim($_REQUEST['job']) == "")
  551. die('{"error":"job-field required"}');
  552. $config_file_name = str_replace('.job', '.ttl', $_REQUEST['job']);
  553. $file_dir = realpath($base_dir . md5(($_REQUEST['user'])) . DIRECTORY_SEPARATOR . ($_REQUEST['file']) . DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR;
  554. $file = $file_dir . ($config_file_name);
  555. if (!file_exists($file)) {
  556. die('{"error":"Config file could not be found"}');
  557. }
  558. header("Content-disposition: attachment; filename=" . $config_file_name);
  559. readfile($file);
  560. }
  561. ?>