From e27028f91f5fb2149054adbb89d14177f0e6f3db Mon Sep 17 00:00:00 2001 From: Liam McLoughlin Date: Wed, 27 Jul 2011 21:04:32 +0100 Subject: Added simultaneous build settings --- web/config.php | 3 +++ web/index.php | 23 +++++++++++++++++++++++ web/process.php | 2 +- web/status.php | 9 +++++++++ web/testdrive.php | 2 +- 5 files changed, 37 insertions(+), 2 deletions(-) diff --git a/web/config.php b/web/config.php index 30d6aa4..c31e60b 100644 --- a/web/config.php +++ b/web/config.php @@ -6,6 +6,9 @@ // Path to the zonetab file define("ZONETAB", "/usr/share/zoneinfo/zone.tab"); + // Should we allow multiple simultaneous builds for a user? + define("SIMULTANEOUS_BUILDS", false); + // What should we limit the virtual machine disk size to? define("MAX_DISK_SIZE", 16384); diff --git a/web/index.php b/web/index.php index 6b6abec..a68a219 100644 --- a/web/index.php +++ b/web/index.php @@ -5,6 +5,29 @@ require_once "recaptcha.php"; } + if(!SIMULTANEOUS_BUILDS) { + $db = new mysqli(MYSQL_HOSTNAME, MYSQL_USERNAME, + MYSQL_PASSWORD, MYSQL_DATABASE); + if (mysqli_connect_errno()) { + die("Could not connect to database ".mysqli_connect_error()); + } + + $ipaddress = filter_input(INPUT_SERVER, "REMOTE_ADDR", + FILTER_VALIDATE_IP); + + $stmt = $db->prepare("SELECT id FROM builds WHERE ipaddress = ?"); + $stmt->bind_param("s", $ipaddress); + $stmt->execute(); + $stmt->store_result(); + + if ($stmt->num_rows == 1) { + $stmt->bind_result($buildID); + $stmt->fetch(); + header("Location: status.php?uuid=".$buildID."&simultaneous=true"); + } + $stmt->close(); + } + $timezones = array(); $zonetab = file(ZONETAB); foreach ($zonetab as $buf) { diff --git a/web/process.php b/web/process.php index 238e843..9ba055b 100644 --- a/web/process.php +++ b/web/process.php @@ -9,7 +9,7 @@ require_once "recaptcha.php"; $remoteAddress = filter_input(INPUT_SERVER, - "remote_addr", + "REMOTE_ADDR", FILTER_VALIDATE_IP); $challenge = filter_input(INPUT_POST, "recaptcha_challenge_field", diff --git a/web/status.php b/web/status.php index 719afe6..d2e8715 100644 --- a/web/status.php +++ b/web/status.php @@ -6,9 +6,16 @@ require_once "config.php"; $buildID = filter_input(INPUT_GET, "uuid", FILTER_UNSAFE_RAW); + $simultaneous = filter_input(INPUT_GET, "simultaneous", FILTER_VALIDATE_BOOLEAN); $buildresult = "Unknown!"; $inprogress = false; $builddone = false; + $simultaneousString = ""; + + if($simultaneous && !SIMULTANEOUS_BUILDS) { + $simultaneousString = "You were redirected to this page because you already have a ". + "build in progress. Simultaneous builds are disabled on this server.

"; + } $db = new mysqli(MYSQL_HOSTNAME, MYSQL_USERNAME, MYSQL_PASSWORD, MYSQL_DATABASE); @@ -19,6 +26,7 @@ $stmt = $db->prepare("SELECT handle FROM builds WHERE id = ?"); $stmt->bind_param("s", $buildID); $stmt->execute(); + $stmt->store_result(); if ($stmt->num_rows == 1) { $stmt->bind_result($handle); $stmt->fetch(); @@ -103,6 +111,7 @@

+

diff --git a/web/testdrive.php b/web/testdrive.php index 8f3c718..3847b69 100644 --- a/web/testdrive.php +++ b/web/testdrive.php @@ -18,7 +18,7 @@ $stmt = $db->prepare("SELECT handle FROM builds WHERE id = ?"); $stmt->bind_param("s", $buildID); $stmt->execute(); - + $stmt->store_result(); if ($stmt->num_rows == 1) { $stmt->bind_result($handle); $stmt->fetch(); -- cgit v1.2.3-65-gdbad