| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- <?php
- function pingServer($hostname, $port) {
- $sock = socket_create(AF_INET, SOCK_STREAM, getprotobyname("tcp"));
- if (!$sock)
- return false;
- if (!@socket_connect($sock, $hostname, $port)) {
- error_log("Failed to connect to ${hostname}:${port}");
- return false;
- }
- socket_close($sock);
- return true;
- }
- if (isset($_GET["command"])) {
- switch ($_GET["command"]) {
- case "version":
- $fic = substr(file_get_contents("./.git/HEAD"), 5);
- if ($fic === FALSE) {
- header("HTTP/1.1 500 Server error");
- break;
- }
- $fic = file_get_contents("./.git/".trim($fic));
- if ($fic === FALSE) {
- header("HTTP/1.1 500 Server error");
- break;
- }
- echo json_encode(trim($fic));
- break;
- case "servers":
- require_once("./inc/servers.php");
- echo json_encode(getServers());
- break;
- case "channels":
- require_once("./inc/channels.php");
- echo json_encode(getChannels());
- break;
- case "ping":
- require_once("./.htconfig.php");
- require_once("inc/servers.php");
- if (!isset($_GET["key"]) || $_GET["key"] !== API_KEY) {
- $state = getServersState();
- if (!$state) {
- header("HTTP/0.0 500 Internal Server Error");
- die;
- }
- echo json_encode($state);
- die;
- }
- require_once("./inc/servers.php");
- $result = [];
- foreach (getServers() as $i => $attrs) {
- $success = false;
- foreach ($attrs["ports"] as $port => $unused) {
- if (pingServer($i, $port)) {
- $success = true;
- break;
- }
- }
- $result[$i] = $success;
- }
- $result = array(
- "result" => $result,
- "date" => time()
- );
- writeServersState($result);
- }
- }
- ?>
|