blob: be4c51439eba153676f386cecf05062802764ead (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
<?php
// Gentoaster web interface framebuffer testdrive
// Licensed under GPL v3, see COPYING file
require_once "config.php";
$buildID = filter_input(INPUT_GET, "uuid", FILTER_UNSAFE_RAW);
$buildresult = "Unknown!";
$inprogress = false;
$db = new mysqli(
MYSQL_HOSTNAME,
MYSQL_USERNAME,
MYSQL_PASSWORD,
MYSQL_DATABASE
);
if (mysqli_connect_errno()) {
die("Could not connect to database ".mysqli_connect_error());
}
$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();
$stmt->close();
$client = new GearmanClient();
$client->addServer();
$status = $client->jobStatus($handle);
if ($status[0]) {
header("Location: status.php?uuid=".$buildID);
} else {
$query = "SELECT returncode, result ".
"FROM builds WHERE id = ?";
$stmt = $db->prepare($query);
$stmt->bind_param("s", $buildID);
$stmt->execute();
$stmt->bind_result($returncode, $result);
$stmt->fetch();
$stmt->close();
if ($returncode !== null) {
if ($returncode == 0) {
// we're built, let's do this
$client = new GearmanClient();
$client->addServer();
$server = $client->do(
"invoke_start_image",
$buildID
);
$server = unserialize($server);
} else {
header("Location: status.php?uuid=".$buildID);
}
} else {
header("Location: status.php?uuid=".$buildID);
}
}
} else {
$stmt->close();
die("Invalid handle hash");
}
$db->close();
?>
|