diff --git a/resources/lib/UnityHTTPD.php b/resources/lib/UnityHTTPD.php index bed4bb95..2d15b1e5 100644 --- a/resources/lib/UnityHTTPD.php +++ b/resources/lib/UnityHTTPD.php @@ -235,6 +235,22 @@ public static function getPostData(string $key): mixed } } + /* returns null if not found and not $throw_if_not_found */ + public static function getQueryParameter(string $key, bool $throw_if_not_found = true): mixed + { + if (!is_array($_GET)) { + throw new RuntimeException('$_GET is not an array!'); + } + if (!array_key_exists($key, $_GET)) { + if ($throw_if_not_found) { + self::badRequest("\$_GET has no array key '$key'"); + } else { + return null; + } + } + return $_GET[$key]; + } + public static function getUploadedFileContents( string $filename, bool $do_delete_tmpfile_after_read = true, diff --git a/webroot/admin/ajax/get_group_members.php b/webroot/admin/ajax/get_group_members.php index 53d822ae..7bd4c618 100644 --- a/webroot/admin/ajax/get_group_members.php +++ b/webroot/admin/ajax/get_group_members.php @@ -9,11 +9,8 @@ UnityHTTPD::forbidden("not an admin"); } -if (!isset($_GET["gid"])) { - UnityHTTPD::badRequest("PI UID not set"); -} - -$group = new UnityGroup($_GET["gid"], $LDAP, $SQL, $MAILER, $WEBHOOK); +$gid = UnityHTTPD::getQueryParameter("gid"); +$group = new UnityGroup($gid, $LDAP, $SQL, $MAILER, $WEBHOOK); $members = $group->getGroupMembersAttributes(["gecos", "mail"]); $requests = $group->getRequests(); diff --git a/webroot/admin/ajax/get_page_contents.php b/webroot/admin/ajax/get_page_contents.php index d21077c5..b4f62292 100644 --- a/webroot/admin/ajax/get_page_contents.php +++ b/webroot/admin/ajax/get_page_contents.php @@ -8,9 +8,6 @@ UnityHTTPD::forbidden("not an admin"); } -if (!isset($_GET["pageid"])) { - UnityHTTPD::badRequest("Pageid not found"); -} - -$page = $SQL->getPage($_GET["pageid"]); +$pageid = UnityHTTPD::getQueryParameter("pageid"); +$page = $SQL->getPage($pageid); echo $page["content"]; diff --git a/webroot/api/content/index.php b/webroot/api/content/index.php index c62701e5..df4cb7b5 100644 --- a/webroot/api/content/index.php +++ b/webroot/api/content/index.php @@ -6,14 +6,6 @@ require_once __DIR__ . "/../../../resources/autoload.php"; -if (isset($_GET["line_wrap"])) { - $CHAR_WRAP = $_GET["line_wrap"]; -} else { - $CHAR_WRAP = 80; -} - -if (!isset($_GET["content_name"])) { - UnityHTTPD::badRequest("content_name not set"); -} - -echo $SQL->getPage($_GET["content_name"])["content"]; +$CHAR_WRAP = UnityHTTPD::getQueryParameter("line_wrap", false) ?? 80; +$content_name = UnityHTTPD::getQueryParameter("content_name"); +echo $SQL->getPage($content_name)["content"]; diff --git a/webroot/js/ajax/ssh_generate.php b/webroot/js/ajax/ssh_generate.php index 9671c5e5..37a4dae9 100644 --- a/webroot/js/ajax/ssh_generate.php +++ b/webroot/js/ajax/ssh_generate.php @@ -3,6 +3,7 @@ require "../../../resources/autoload.php"; use phpseclib3\Crypt\EC; +use UnityWebPortal\lib\UnityHTTPD; echo "
";
 
@@ -13,7 +14,7 @@
 echo $public->toString('OpenSSH');
 echo "";
 echo "
"; -if (isset($_GET["type"]) && $_GET["type"] == "ppk") { +if (UnityHTTPD::getQueryParameter("type", false) == "ppk") { echo $private->toString('PuTTY'); } else { echo $private->toString('OpenSSH'); diff --git a/webroot/panel/ajax/get_group_members.php b/webroot/panel/ajax/get_group_members.php index 91d8e560..177d31e0 100644 --- a/webroot/panel/ajax/get_group_members.php +++ b/webroot/panel/ajax/get_group_members.php @@ -5,11 +5,9 @@ use UnityWebPortal\lib\UnityGroup; use UnityWebPortal\lib\UnityHTTPD; -if (!isset($_GET["gid"])) { - UnityHTTPD::badRequest("PI UID not set"); -} -$group = new UnityGroup($_GET["gid"], $LDAP, $SQL, $MAILER, $WEBHOOK); +$gid = UnityHTTPD::getQueryParameter("gid"); +$group = new UnityGroup($gid, $LDAP, $SQL, $MAILER, $WEBHOOK); if (!$group->memberExists($USER)) { UnityHTTPD::forbidden("not a group member"); } diff --git a/webroot/panel/modal/pi_search.php b/webroot/panel/modal/pi_search.php index 6872e5ad..9f71698c 100644 --- a/webroot/panel/modal/pi_search.php +++ b/webroot/panel/modal/pi_search.php @@ -4,7 +4,7 @@ use UnityWebPortal\lib\UnityHTTPD; -$search_query = $_GET["search"]; // Search is passed as a get var +$search_query = UnityHTTPD::getQueryParameter("search"); if (empty($search_query)) { echo "No Results"; UnityHTTPD::die(); @@ -27,7 +27,11 @@ try { $fn = strtolower($assoc_obj->getOwner()->getFullName()); } catch (Throwable $e) { - UnitySite::errorLog("warning", "failed to get owner name for PI group '$assoc'", error: $e); + UnityHTTPD::errorLog( + "warning", + "failed to get owner name for PI group '$assoc'", + error: $e + ); $fn = ""; } if (strpos($fn, strtolower($search_query)) !== false) {