forked from gmazoyer/looking-glass
-
Notifications
You must be signed in to change notification settings - Fork 0
/
execute.php
72 lines (61 loc) · 2.19 KB
/
execute.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
<?php
/*
* Looking Glass - An easy to deploy Looking Glass
* Copyright (C) 2014-2015 Guillaume Mazoyer <gmazoyer@gravitons.in>
*
* 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, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
require_once('includes/config.defaults.php');
require_once('config.php');
require_once('routers/router.php');
// From where the user *really* comes from.
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$requester = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
$requester = $_SERVER['REMOTE_ADDR'];
}
// Obvious spam
if (!isset($_POST['dontlook']) || !empty($_POST['dontlook'])) {
log_to_file('Spam detected from '.$requester.'.');
die('Spam detected');
}
// Just asked for the documentation
if (isset($_POST['doc']) && !empty($_POST['doc'])) {
$query = htmlspecialchars($_POST['doc']);
print(json_encode($config['doc'][$query]));
}
if (isset($_POST['query']) && !empty($_POST['query']) &&
isset($_POST['routers']) && !empty($_POST['routers']) &&
isset($_POST['parameter']) && !empty($_POST['parameter'])) {
$query = trim($_POST['query']);
$hostname = trim($_POST['routers']);
$parameter = trim($_POST['parameter']);
// Do the processing
$router = Router::instance($hostname, $requester);
try {
$output = $router->send_command($query, $parameter);
} catch (Exception $e) {
$error = $e->getMessage();
}
if (isset($output)) {
// Display the result of the command
$data = array('result' => $output);
} else {
// Display the error
$data = array('error' => $error);
}
print(json_encode($data));
}
// End of execute.php