<?php
/**
* @author MALKA Marc for The Noob Company
* @link http://www.thenoobcompany.com/
* @license Licence MIT / Licence X11
* @linkinfo http://fr.wikipedia.org/wiki/Licence_MIT
* @copyright 2011
* @filesource curl_check.php
* @version 1.0.0
*/
set_time_limit(10);
ini_set('memory_limit', '8M');
ini_set('display_errors', 'On');
/**
* Le coin des variables
*/
$verify = 'value_to_dynamically_generate'; // Authentification du propriétaire pour Sitetop.
$error_logs = './sitetop_errlogs.txt';
$vote_logs = './sitetop_logs.txt';
$mysql_host = 'localhost';
$mysql_user = 'root';
$mysql_pass = '';
$enable_error_log_mysql = false; // Conçu sur le format du champ "logs" de la base de donnée realmd/auth de MaNGOS/trinitycore
$mysql_db_log = 'realmd';
$mysql_errlog_table = 'logs';
$mysql_errlog_field_time = 'time';
$mysql_errlog_field_time_value = time();
$mysql_errlog_field_realm = 'realm';
$mysql_errlog_field_realm_value = '0';
$mysql_errlog_field_type = 'type';
$mysql_errlog_field_type_value = 50; // type = 50 / le site (a vous de mettre ce que vous voulez)
$mysql_errlog_field_string = 'string'; // le champ qui contient l'erreur en soit
$enable_topvote = false; // topvote
$mysql_topvote_db = 'realmd';
$mysql_topvote_table = 'account';
$mysql_topvote_field_uid = 'id';
$mysql_topvote_field_vote = 'vote';
$enable_credits = false; // points de vote
$mysql_credits_db = 'realmd';
$mysql_credits_table = 'account';
$mysql_credits_field_uid = 'id';
$mysql_credits_field_points = 'points';
$mysql_credits_points_value_incremented = 10; // ajoute 10 crédits
/**
* Le coin des fonctions
*/
function start_logging_error($error_string, $additional = 'not defined')
{
global $error_logs, $mysql_host, $mysql_user, $mysql_pass, $enable_error_log_mysql, $mysql_db_log, $mysql_errlog_table, $mysql_errlog_field_time,
$mysql_errlog_field_time_value, $mysql_errlog_field_realm, $mysql_errlog_field_realm_value, $mysql_errlog_field_type, $mysql_errlog_field_type_value,
$mysql_errlog_field_string;
$logging = fopen($error_logs, "a");
fwrite($logging, "Erreur en cours \n");
fwrite($logging, "erreur_time : $mysql_errlog_field_time_value\n");
fwrite($logging, "$mysql_errlog_field_string : $error_string\n");
fwrite($logging, "additional : $additional\n");
fwrite($logging, "-------------------------------------------\n");
fclose($logging);
if ($enable_error_log_mysql)
{
$error_string = mysql_real_escape_string($error_string);
mysql_query("INSERT INTO `$mysql_db_log`.`$mysql_errlog_table` (`$mysql_errlog_field_time`, `$mysql_errlog_field_realm`, `$mysql_errlog_field_type`, `$mysql_errlog_field_string`) VALUES ('$mysql_errlog_field_time_value', '$mysql_errlog_field_realm_value', '$mysql_errlog_field_type_value', '$error_string');");
}
return;
}
function start_logging_vote($user_id = 'not defined', $vote_ip = 'not defined', $vote_time =
'not defined', $lifetime_voted = 'not defined', $month_voted = 'not defined', $data = 'not defined')
{
global $vote_logs, $mysql_host, $mysql_user, $mysql_pass, $enable_topvote, $mysql_topvote_db, $mysql_topvote_table, $mysql_topvote_field_uid,
$mysql_topvote_field_vote, $enable_credits, $mysql_credits_db, $mysql_credits_table, $mysql_credits_field_uid, $mysql_credits_field_points,
$mysql_credits_points_value_incremented;
// Il est de votre devoir, de verifier, ici, si un vote du même utilisateur a eu lieu les dernières 2 heures.
// The Sitetop System ne serait pas tenu responsable d'un piratage du système dans le but d'effectuer plusieurs votes avec le même uid
// bien que notre système se sert de cette user_id comme d'une protection supplémentaire anti proxy infaillible.
$logging = fopen($vote_logs, "a");
fwrite($logging, "Vote en cours \n");
fwrite($logging, "user_id : $user_id\n");
fwrite($logging, "vote_ip : $vote_ip\n");
fwrite($logging, "vote_time : $vote_time\n");
fwrite($logging, "lifetime_voted : $lifetime_voted\n");
fwrite($logging, "month_voted : $month_voted\n");
fwrite($logging, "data : $data\n");
fwrite($logging, "-------------------------------------------\n");
fclose($logging);
if ($enable_topvote === true) mysql_query("UPDATE `$mysql_topvote_db`.`$mysql_topvote_table` SET `$mysql_topvote_field_vote` = `$mysql_topvote_field_vote`+1 WHERE `$mysql_topvote_field_uid` = '$user_id';");
if ($enable_credits === true) mysql_query("UPDATE `$mysql_credits_db`.`$mysql_credits_table` SET `$mysql_credits_field_points` = `$mysql_credits_field_points`+$mysql_credits_points_value_incremented WHERE `$mysql_credits_field_uid` = '$user_id';");
return;
}
/**
* Traitement du script
*/
if($enable_error_log_mysql or $enable_topvote or $enable_credits)
mysql_connect($mysql_host, $mysql_user, $mysql_pass);
if (isset($_GET['init']))
{
if ($_GET['init'] == 'false')
{
// Cette partie sert à authentifier le serveur lors du changement d'url.
exit($verify);
} elseif ($_GET['init'] == 'true')
{
$check_ip = curl_init();
curl_setopt($check_ip, CURLOPT_URL, "http://www.sitetop.eu/ourips.txt");
curl_setopt($check_ip, CURLOPT_HEADER, false);
curl_setopt($check_ip, CURLOPT_RETURNTRANSFER, true);
$ips = curl_exec($check_ip);
curl_close($check_ip);
if (!empty($ips))
{
$ips = explode(', ', $ips);
$succes = null;
foreach ($ips as $ip)
{
if ($_SERVER['REMOTE_ADDR'] == $ip)
{
$succes = true;
return;
}
}
if ($succes !== true)
{
start_logging_error("SITETOP TRUST : this is not a trusted connection.", "current_ip = ".$_SERVER['REMOTE_ADDR']);
exit();
}
}
else
{
start_logging_error("SITETOP TRUST : The ips used by sitetop are not defined or server is down");
exit();
}
if (isset($_POST['secured_data']))
{
if ((empty($_POST['secured_data'])) or (is_array($_POST['secured_data'])))
{
start_logging_error("POST : 'secured_data' is empty or is an array", $_POST['secured_data']);
exit();
}
$secured_data = json_decode($_POST['secured_data']);
if (($secured_data === null) or (function_exists('json_last_error') && json_last_error() !== JSON_ERROR_NONE))
{
start_logging_error("JSON RESULT : 'secured_data' is not a valid JSON", $_POST['secured_data']);
exit();
}
foreach ($secured_data as $key => $value)
{
$secured_data->$key = htmlentities($value, ENT_NOQUOTES, 'UTF-8');
}
if (!isset($secured_data->uid) or intval($secured_data->uid) === 0)
{
start_logging_error("JSON RESULT : 'secured_data'->'user_id' is not defined or 'secured_data'->'user_id' is not a valid integer",
$_POST['secured_data']);
exit();
}
if (!isset($secured_data->remote_addr) or empty($secured_data->remote_addr))
{
start_logging_error("JSON RESULT : 'secured_data'->'vote_ip' is not defined or empty", $_POST['secured_data']);
exit();
}
if (!isset($secured_data->timestamp) or intval($secured_data->timestamp) === 0)
{
start_logging_error("JSON RESULT : 'secured_data'->'vote_time' is not defined or 'secured_data'->'vote_time' is not a valid integer",
$_POST['secured_data']);
exit();
}
$user_id = intval($secured_data->uid);
$vote_ip = $secured_data->remote_addr;
$vote_time = intval($secured_data->timestamp);
$lifetime_voted = intval($secured_data->lifetime_voted);
$month_voted = intval($secured_data->month_voted);
$data = $secured_data->data;
start_logging_vote($user_id, $vote_ip, $vote_time, $lifetime_voted, $month_voted, $data);
exit();
}
else
{
start_logging_error("POST : 'secured_data' is empty");
exit();
}
}
else
{
start_logging_error("GET : 'init' is not a known value");
exit();
}
}
else
{
start_logging_error("GET : 'init' is not defined");
exit();
}
?>