forked from alexey-gamov/aspia-web-update
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathupdate.php
79 lines (64 loc) · 2.15 KB
/
update.php
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
70
71
72
73
74
75
76
77
78
79
<?php
//
// Aspia Project
// Copyright (C) 2020 Dmitry Chapyshev <[email protected]>
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
//
require_once 'config.php';
$mysqli = new mysqli(Config::$db_host, Config::$db_user, Config::$db_pass, Config::$db_name);
$mysqli->set_charset('utf8');
if (mysqli_connect_errno())
{
die('Could not connect! ' . $mysqli->connect_error);
}
parse_str($_SERVER["QUERY_STRING"], $query);
$package = $mysqli->real_escape_string($query['package']);
$version = $mysqli->real_escape_string($query['version']);
if (!empty($package) and !empty($version))
{
if (!$result = $mysqli->query("SELECT id FROM packages WHERE name='$package'"))
{
die('Failed to execute database query! ' . $mysqli->error);
}
if ($result->num_rows != 0)
{
$package = $result->fetch_array()['id'];
$version = implode('.', array_slice(explode('.', $version), 0, 3));
if (!$result = $mysqli->query("SELECT target_version, description, url FROM updates WHERE package_id = '$package' AND source_version = '$version'"))
{
die('Failed to execute database query! ' . $mysqli->error);
}
$xml = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><update/>');
if ($result->num_rows != 0)
{
$update = $result->fetch_array();
$xml->addChild('version', $update['target_version']);
$xml->addChild('description', $update['description']);
$xml->addChild('url', $update['url']);
}
header('Content-Type: application/xml');
print($xml->asXML());
}
else
{
die('Package not found!');
}
}
else
{
die('Invalid request received!');
}
$mysqli->close();
?>