"Games are currently closed", "text" => "See this announcement for more information" ]); } $serverID = $_GET['ID'] ?? $_GET['id'] ?? false; $server = db::run("SELECT * FROM selfhosted_servers WHERE id = :ServerID", [":ServerID" => $serverID])->fetch(PDO::FETCH_OBJ); if(!$server || !Users::IsAdmin(Users::STAFF_ADMINISTRATOR) && $server->hoster != SESSION["userId"]) pageBuilder::errorCode(404); $Whitelist = ($server->PrivacyWhitelist == null) ? [] : json_decode($server->PrivacyWhitelist); Catalog::$GearAttributes = json_decode($server->allowed_gears, true); $alert = false; if($_SERVER['REQUEST_METHOD'] == "POST") { $delete = $_POST["delete"] ?? false; if($delete) { db::run("DELETE FROM selfhosted_servers WHERE id = :ServerID", [":ServerID" => $serverID]); die(); } $name = $_POST["name"] ?? false; $description = $_POST["description"] ?? false; $ip = $_POST["ip"] ?? false; $port = $_POST["port"] ?? false; $version = $_POST["version"] ?? false; $maxplayers = $_POST["maxplayers"] ?? false; $Privacy = $_POST["Privacy"] ?? "Public"; $pbs = in_array($version, ["2011", "2012"]) && isset($_POST["pbs"]) && $_POST["pbs"] == "on"; Catalog::ParseGearAttributes(); if(empty($name)) $alert = ["text" => "Server name cannot be empty", "color" => "danger"]; else if(strlen($name) > 50) $alert = ["text" => "Server name cannot be longer than 50 characters", "color" => "danger"]; else if(strlen($description) > 1000) $alert = ["text" => "Server description cannot be longer than 1000 characters", "color" => "danger"]; else if(Polygon::IsExplicitlyFiltered($name)) $alert = ["text" => "The name contains inappropriate text", "color" => "danger"]; else if(Polygon::IsExplicitlyFiltered($description)) $alert = ["text" => "The description contains inappropriate text", "color" => "danger"]; else if(empty($ip)) $alert = ["text" => "IP address cannot be empty", "color" => "danger"]; else if(!filter_var($ip, FILTER_VALIDATE_IP)) $alert = ["text" => "Invalid IP address", "color" => "danger"]; else if(!is_numeric($port) || $port < 1 || $port > 65536) { $alert = ["text" => "Invalid port", "color" => "danger"]; $port = false; } else if(!in_array($version, ["2010", "2011", "2012"])) $alert = ["text" => "Invalid version", "color" => "danger"]; else if (!in_array($Privacy, ["Public", "Private"])) $alert = ["text" => "Privacy must be set to Public or Private", "color" => "danger"]; else if(!is_numeric($maxplayers) || $maxplayers < 1 || $maxplayers > 100) { $alert = ["text" => "Maximum player count must be between 1 to 100", "color" => "danger"]; $maxplayers = false; } else { $server->name = $name; $server->description = $description; $server->ip = $ip; $server->port = $port; $server->version = $version; $server->maxplayers = $maxplayers; $server->Privacy = $Privacy; $server->allowed_gears = json_encode(Catalog::$GearAttributes); $server->pbs = $pbs; $query = $pdo->prepare("UPDATE selfhosted_servers SET name = :name, description = :desc, ip = :ip, port = :port, version = :version, maxplayers = :players, Privacy = :privacy, allowed_gears = :gears, pbs = :pbs WHERE id = :id"); $query->bindParam(":name", $server->name, PDO::PARAM_STR); $query->bindParam(":desc", $server->description, PDO::PARAM_STR); $query->bindParam(":ip", $server->ip, PDO::PARAM_STR); $query->bindParam(":port", $server->port, PDO::PARAM_INT); $query->bindParam(":version", $server->version, PDO::PARAM_INT); $query->bindParam(":players", $server->maxplayers, PDO::PARAM_INT); $query->bindParam(":privacy", $server->Privacy, PDO::PARAM_STR); $query->bindParam(":gears", $server->allowed_gears, PDO::PARAM_STR); $query->bindParam(":pbs", $server->pbs, PDO::PARAM_INT); $query->bindParam(":id", $serverID, PDO::PARAM_INT); $query->execute(); $alert = ["text" => "Your changes to this server have been saved (".date('h:i:s A').")", "color" => "primary"]; } } pageBuilder::$pageConfig["title"] = "Configure Server"; pageBuilder::buildHeader(); ?>
IMPORTANT: Please use a VPN for hosting servers if you can. There are some VPNs that do feature port forwarding.