normalizeArgv($argv); try { /* Assert that the system config file exists and has been included */ if (!$this->scrottConfExists()) { $ctrl = new Sysconf(); $ctrl->handle($argv); return; } /* Assert we are running over HTTP(S), whichever is desired */ switch ($_SCROTT['settSSL']) { case "force": $this->sec_require_https(); break; case "forbid": $this->sec_forbid_https(); break; default: switch (Setting::settSSL()) { case "force": $this->sec_require_https(); break; case "forbid": $this->sec_forbid_https(); break; } } /* Assert session IP */ $this->sec_verify_ip(); /* Assert that a user is logged in */ if (!$this->getCurrentUser()) { $ctrl = new Auth(); $ctrl->handle($argv); return; } /* Handle page request */ if (count($argv) == 0) $ctrl = new Dashboard(); else { switch ($argv[0]) { case "logout": $ctrl = new Deauth(); break; case "deleteaccount": $ctrl = new Deleteacct(); break; default: /* Check if arg is an object guid */ $obj = new DBObject(); if ($obj->isGUID($argv[0])) { $ctrl = new Obj(); break; } /* No page to show for requested path */ throw new Exception("The requested path is not valid."); break; } } $ctrl->handle($argv); } catch (Exception $e) { $ctrl = new Except(); $ctrl->handle($e->getMessage()); } } /* * Get a useful path string by normalizeing the $argv array received from the main function. * This will remove directory names that appear in the $this->ar() string and the initial * and trailing (if present) empty strings */ function normalizeArgv($argv) { $argv = array_values(array_filter($argv)); $ar = array_values(array_filter(explode("/", $this->ar()))); $i = 0; $trunc = true; if (count($ar) == 0) return $argv; foreach ($ar as $elem) { if ($elem != $argv[$i]) { $trunc = false; break; } $i++; } if (!$trunc) return $argv; return array_values(array_slice($argv, count($ar))); } } ?>