Eccolo
Codice:
<?php
header("Access-Control-Allow-Origin: *");
error_reporting(E_ALL);
//accorciato
$mysqli = new mysqli($hostname, $username, $password, $database);
require_once "core.php";
$url = "http://mastergames.forumcommunity.net";
$mid = $mysqli->real_escape_string($_POST['mid']);
$act = $_POST['action'];
echo file_get_contents($url."/api.php?mid=".$mid);
$data = json_decode(file_get_contents($url."/api.php?mid=".$mid));
$groups = array("Amministratore", "NGG Admin", "NGG Manager", "Gfx Director", "NGG Mod", "GFX Skinner", "Chief Coder", "NGG Coder");
$commands = array("/help", "/ban", "/pardon", "/assignpoints", "/cls", "/clsHistory");
$definitions = array(
"Lista comandi e aiuto.",
"Banna un utente (/ban [uid] [motivazione] o /ban [motivazione] se sei nel profilo dell'utente)",
"Sbanna un utente (/pardon [uid] o /pardon se sei nel profilo dell'utente)",
"Assegna punti (/assignpoints [uid] [punti: valore negativo se desideri togliere punti])",
"Svuota la console",
"Svuota la cronologia dei comandi"
);
$nick = $data->{"m".$mid}->nickname;
echo $nick;
$version = "0.3.3";
$core = new ACPCore($nick);
//if($nick == "Paralizer"){die("Accesso negato.");}
print_r($core);
print_r($nick);
print_r($data);
if(in_array($data->{"m".$mid}->group->name, $groups))
{ //Se l'utente in questione fa parte di uno di questi gruppi...
switch($act)
{
case "init":
$lastlogin = base64_decode(file_get_contents("lastlogin.txt"));
echo "AP System Console Administration v".$version."<br>";
echo "Ultimo accesso: {$lastlogin}<br><br>";
echo "Benvenuto ".$nick.", digita /help per la lista dei comandi.<br>";
//echo "<div id='cnewinput'>> </div>";
file_put_contents("lastlogin.txt", base64_encode($nick));
break;
case "reinit":
$lastlogin = base64_decode(file_get_contents("lastlogin.txt"));
//accorciato
break;
case "session_update":
$query = "SELECT * FROM ngg_ap_activeterminals WHERE nickname='{$nick}'";
$query = $mysqli->query($query)->num_rows;
$ctime = time();
if($query == 0)
{
$query = "INSERT INTO ngg_ap_activeterminals VALUES(NULL, '{$nick}', '{$ctime}');";
$query = $mysqli->query($query);
if($query)
{
echo "Sessione aggiornata.";
}
else
{
echo "Aggiornamento sessione fallito. (DB_ERR)";
}
}
else
{
echo "Nothing to do..";
}
break;
case "session_delete":
$query = "DELETE FROM ngg_ap_activeterminals WHERE nickname='{$nick}';";
$query = $mysqli->query($query);
if($query)
{
echo "Sessione cancellata.";
}
else
{
echo "Operazione di cancellamento sessione fallita.";
}
break;
case "command":
if(isset($_POST['input']))
{
$input = $mysqli->real_escape_string($_POST['input']);
$params = explode(" ", $input);
$params[0] = strtolower($params[0]);
switch($params[0])
{
case "/help":
echo "HotKeys:<br>Apri console - ALT + C<br>";
echo "<table style='text-align: left; margin: 0; padding: 0'>";
for($i = 0; $i<count($commands); $i++)
{
echo "<tr><td>".$commands[$i]."</td><td>".$definitions[$i]."</td></tr>";
}
echo "</table>";
break;
case "/changelog":
echo file_get_contents("changelog.txt");
break;
case "/ban":
if(count($params) == 3)
{
$uid = htmlspecialchars($mysqli->real_escape_string($params[1]));
$reason = htmlentities(htmlspecialchars($mysqli->real_escape_string($params[2])));
$bannedby = $nick;
$query = "SELECT * FROM ngg_ap_blacklist WHERE uid='{$uid}';";
$query = $mysqli->query($query)->num_rows;
if($query == 0)
{
$query = "INSERT INTO ngg_ap_blacklist VALUES(NULL, '{$uid}', '{$reason}', '{$bannedby}');";
$query = $mysqli->query($query);
if($query)
{
echo "L'utente è stato messo in blacklist.";
}
else
{
echo "Operazione fallita. (DB_ERR)";
}
}
else
{
echo "L'utente è già in blacklist.";
}
}
else if(count($params) == 2 && isset($_POST['inprofile']))
{
$uid = $mysqli->real_escape_string($_POST['uid']);
if(!isset($uid) || !$uid)
{
die("Parametri invalidi.");
}
$reason = htmlentities(htmlspecialchars($mysqli->real_escape_string($params[1])));
$bannedby = $nick;
$query = "SELECT * FROM ngg_ap_blacklist WHERE uid='{$uid}';";
$query = $mysqli->query($query)->num_rows;
if($query == 0)
{
$query = "INSERT INTO ngg_ap_blacklist VALUES(NULL, '{$uid}', '{$reason}', '{$bannedby}');";
$query = $mysqli->query($query);
if($query)
{
echo "L'utente è stato messo in blacklist.";
}
else
{
echo "Operazione fallita. (DB_ERR)";
}
}
else
{
echo "L'utente è già in blacklist.";
}
}
else
{
echo "Parametri invalidi.";
}
break;
case "/assignpoints":
if(count($params) == 3 || (isset($_POST['inprofile']) && count($params) == 2))
{
$uid = $mysqli->real_escape_string($params[1]);
if(isset($_POST['inprofile']) && count($params) == 2)
{
$uid = $mysqli->real_escape_string($_POST['uid']);
}
$query = "SELECT * FROM ngg_ap_system WHERE uid='{$uid}';";
$query = $mysqli->query($query);
if($query)
{
$numrows = $query->num_rows;
if($numrows == 1)
{
$query = $query->fetch_array(MYSQLI_ASSOC);
$querycheck = "SELECT * FROM ngg_ap_blacklist WHERE uid='{$query['uid']}'";
$querycheck = $mysqli->query($query);
$querycheck = $querycheck->num_rows;
if($querycheck >= 1)
{
echo "L'utente è stato bannato dal sistema, per cui non è possibile eseguire quest'azione.";
}
else
{
$totpt = $query['points'] + $mysqli->real_escape_string((isset($_POST['inprofile']) ? $params[1] : $params[2]));
$query = "UPDATE ngg_ap_system SET points='{$totpt}' WHERE uid='{$uid}';";
$query = $mysqli->query($query);
if($query)
{
echo "Punti aggiornati.";
}
else
{
echo "Operazione fallita. (DB_ERR)";
}
}
}
else
{
echo "L'utente non è stato trovato, aggiunta in corso.<br>";
$totpt = $mysqli->real_escape_string((isset($_POST['inprofile']) ? $params[1] : $params[2]));
$queryadd = "INSERT INTO ngg_ap_system VALUES(NULL, '{$uid}', '{$totpt}');";
$queryadd = $mysqli->query($queryadd);
if($queryadd)
{
echo "Utente registrato.<br>Punti aggiunti.";
}
else
{
echo "Operazione fallita. (DB_ERR)";
}
}
}
else
{
echo "Ricerca utente fallita. (DB_ERR)";
}
}
else
{
echo "Parametri invalidi.";
}
break;
case "/pardon":
if(count($params) == 2 || (count($params) == 1 && isset($_POST['inprofile'])))
{
$uid = $mysqli->real_escape_string($params[1]);
if(isset($_POST['inprofile']))
{
$uid = $mysqli->real_escape_string($_POST['uid']);
}
$query = "SELECT * FROM ngg_ap_blacklist WHERE uid='{$uid}'";
$query = $mysqli->query($query);
$query = $query->num_rows;
if($query == 0)
{
echo "L'utente {$uid} non è in blacklist";
}
else
{
$query = "DELETE FROM ngg_ap_blacklist WHERE uid='{$uid}'";
$query = $mysqli->query($query);
if($query)
{
echo "L'utente è stato rimosso dalla blacklist.";
}
else
{
echo "Operazione fallita.";
}
}
}
else
{
echo "Parametri invalidi.";
}
break;
case "/show_sessions":
if($core->HavePermission("canViewSTable"))
{
$query = "SELECT * FROM ngg_ap_activeterminals";
$query = $mysqli->query($query);
$numrows = $query->num_rows;
if($numrows != 0)
{
echo "<table style='text-align: left; margin: 0; padding: 0'><tr><td>ID</td><td>Nickname</td><td>Avviata</td></tr>";
for($i = 0; $i<$numrows; $i++)
{
$row = $query->fetch_row();
$id = $row[0];
$nick = $row[1];
$date = date("H:i", $row[2]);
echo "<tr><td>{$id}</td><td>{$nick}</td><td>{$date}</td></tr>";
}
echo "</table>";
}
else
{
echo "Non ci sono sessioni attive.";
}
}
else
{
echo "Accesso negato.";
}
break;
case "/transfer":
if(count($params) == 3)
{
$uid1 = $mysqli->real_escape_string($params[1]);
$uid2 = $mysqli->real_escape_string($params[2]);
}
break;
default:
echo "Comando invalido.";
break;
}
}
else
{
echo "Errore interno.";
}
break;
case "isAdmin":
echo "yes";
break;
}
}
else
{
if($act == "isAdmin")
{
echo "no - ".$data->{"m".$mid}->nickname;
}
else
{
echo "access_denied";
}
}
?>