Commit | Line | Data |
---|---|---|
b325120a | 1 | <?php |
90a3d6d8 DY |
2 | ob_start(); |
3 | try { | |
7e87a291 | 4 | // Include init after ophandlers/snmp, not before, so local.php can redefine things. |
b6a7d936 | 5 | require 'inc/ophandlers.php'; |
7e87a291 DO |
6 | // snmp.php is an exception, it is treated by a special hack |
7 | if (isset ($_REQUEST['op']) and $_REQUEST['op'] == 'querySNMPData') | |
8 | include 'inc/snmp.php'; | |
e673ee24 | 9 | require 'inc/init.php'; |
0cc24e9a | 10 | assertStringArg ('op'); |
067d799f | 11 | $op = $_REQUEST['op']; |
329ec966 | 12 | prepareNavigation(); |
e1ae3fb4 | 13 | // FIXME: find a better way to handle this error |
e8900a2b | 14 | if ($op == 'addFile' && !isset($_FILES['file']['error'])) |
3a089a44 | 15 | throw new RackTablesError ('File upload error, check upload_max_filesize in php.ini', RackTablesError::MISCONFIGURED); |
da958e52 | 16 | fixContext(); |
e673ee24 | 17 | |
e8900a2b | 18 | if (!isset ($ophandler[$pageno][$tabno][$op]) or !function_exists ($ophandler[$pageno][$tabno][$op])) |
3a089a44 | 19 | throw new RackTablesError ("Invalid navigation data for '${pageno}-${tabno}-${op}'", RackTablesError::INTERNAL); |
15c65ce4 | 20 | |
e673ee24 | 21 | // We have a chance to handle an error before starting HTTP header. |
46f92ff7 | 22 | if (!isset ($delayauth[$pageno][$tabno][$op]) and !permitted()) |
db55cf54 | 23 | $location = buildWideRedirectURL (oneLiner (157)); // operation not permitted |
46f92ff7 | 24 | else |
7056988c | 25 | { |
3a7bdcc6 | 26 | $location = call_user_func ($ophandler[$pageno][$tabno][$op]); |
59a83bd8 | 27 | if (!strlen ($location)) |
3a089a44 | 28 | throw new RackTablesError ('Operation handler failed to return its status', RackTablesError::INTERNAL); |
7056988c | 29 | } |
e673ee24 | 30 | header ("Location: " . $location); |
90a3d6d8 DY |
31 | ob_end_flush(); |
32 | } | |
3a089a44 DO |
33 | // "soft" failures only require a short error message |
34 | catch (InvalidRequestArgException $e) | |
35 | { | |
36 | ob_end_clean(); | |
37 | header ('Location: ' . buildWideRedirectURL (oneLiner (107, array ($e->getMessage())))); | |
38 | } | |
ec523868 | 39 | catch (RTDatabaseError $e) |
3a089a44 DO |
40 | { |
41 | ob_end_clean(); | |
42 | header ('Location: ' . buildWideRedirectURL (oneLiner (108, array ($e->getMessage())))); | |
43 | } | |
44 | // the rest ends up in a dedicated page | |
90a3d6d8 DY |
45 | catch (Exception $e) |
46 | { | |
47 | ob_end_clean(); | |
3a089a44 | 48 | printException ($e); |
90a3d6d8 | 49 | } |
e673ee24 DO |
50 | |
51 | ?> |