Guest

Untitled

By: a guest on Jul 7th, 2011  |  syntax: PHP  |  size: 8.81 KB  |  hits: 59  |  expires: Never
download  |  raw  |  embed  |  report abuse
Copied
  1. <?php
  2.  /**
  3.   * @author MALKA Marc for The Noob Company
  4.   * @link http://www.thenoobcompany.com/
  5.   * @license Licence MIT / Licence X11
  6.   * @linkinfo http://fr.wikipedia.org/wiki/Licence_MIT
  7.   * @copyright 2011
  8.   * @filesource curl_check.php
  9.   * @version 1.0.0
  10.   */
  11.  
  12.  set_time_limit(10);
  13.  ini_set('memory_limit', '8M');
  14.  ini_set('display_errors', 'On');
  15.  
  16.  /**
  17.   * Le coin des variables
  18.   */
  19.  
  20.  $verify = 'value_to_dynamically_generate'; // Authentification du propriétaire pour Sitetop.
  21.  $error_logs = './sitetop_errlogs.txt';
  22.  $vote_logs = './sitetop_logs.txt';
  23.  $mysql_host = 'localhost';
  24.  $mysql_user = 'root';
  25.  $mysql_pass = '';
  26.  
  27.  $enable_error_log_mysql = false; // Conçu sur le format du champ "logs" de la base de donnée realmd/auth de MaNGOS/trinitycore
  28.  $mysql_db_log = 'realmd';
  29.  $mysql_errlog_table = 'logs';
  30.  $mysql_errlog_field_time = 'time';
  31.  $mysql_errlog_field_time_value = time();
  32.  $mysql_errlog_field_realm = 'realm';
  33.  $mysql_errlog_field_realm_value = '0';
  34.  $mysql_errlog_field_type = 'type';
  35.  $mysql_errlog_field_type_value = 50; // type = 50 / le site (a vous de mettre ce que vous voulez)
  36.  $mysql_errlog_field_string = 'string'; // le champ qui contient l'erreur en soit
  37.  
  38.  $enable_topvote = false; // topvote
  39.  $mysql_topvote_db = 'realmd';
  40.  $mysql_topvote_table = 'account';
  41.  $mysql_topvote_field_uid = 'id';
  42.  $mysql_topvote_field_vote = 'vote';
  43.  
  44.  $enable_credits = false; // points de vote
  45.  $mysql_credits_db = 'realmd';
  46.  $mysql_credits_table = 'account';
  47.  $mysql_credits_field_uid = 'id';
  48.  $mysql_credits_field_points = 'points';
  49.  $mysql_credits_points_value_incremented = 10; // ajoute 10 crédits
  50.  
  51.  /**
  52.   * Le coin des fonctions
  53.   */
  54.  
  55.  function start_logging_error($error_string, $additional = 'not defined')
  56.  {
  57.      global $error_logs, $mysql_host, $mysql_user, $mysql_pass, $enable_error_log_mysql, $mysql_db_log, $mysql_errlog_table, $mysql_errlog_field_time,
  58.          $mysql_errlog_field_time_value, $mysql_errlog_field_realm, $mysql_errlog_field_realm_value, $mysql_errlog_field_type, $mysql_errlog_field_type_value,
  59.          $mysql_errlog_field_string;
  60.      $logging = fopen($error_logs, "a");
  61.      fwrite($logging, "Erreur en cours \n");
  62.      fwrite($logging, "erreur_time : $mysql_errlog_field_time_value\n");
  63.      fwrite($logging, "$mysql_errlog_field_string : $error_string\n");
  64.      fwrite($logging, "additional  : $additional\n");
  65.      fwrite($logging, "-------------------------------------------\n");
  66.      fclose($logging);
  67.      if ($enable_error_log_mysql)
  68.      {
  69.          $error_string = mysql_real_escape_string($error_string);
  70.          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');");
  71.      }
  72.      return;
  73.  }
  74.  
  75.  function start_logging_vote($user_id = 'not defined', $vote_ip = 'not defined', $vote_time =
  76.      'not defined', $lifetime_voted = 'not defined', $month_voted = 'not defined', $data = 'not defined')
  77.  {
  78.      global $vote_logs, $mysql_host, $mysql_user, $mysql_pass, $enable_topvote, $mysql_topvote_db, $mysql_topvote_table, $mysql_topvote_field_uid,
  79.          $mysql_topvote_field_vote, $enable_credits, $mysql_credits_db, $mysql_credits_table, $mysql_credits_field_uid, $mysql_credits_field_points,
  80.          $mysql_credits_points_value_incremented;
  81.      // Il est de votre devoir, de verifier, ici, si un vote du même utilisateur a eu lieu les dernières 2 heures.
  82.      // 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
  83.      // bien que notre système se sert de cette user_id comme d'une protection supplémentaire anti proxy infaillible.
  84.      $logging = fopen($vote_logs, "a");
  85.      fwrite($logging, "Vote en cours \n");
  86.      fwrite($logging, "user_id : $user_id\n");
  87.      fwrite($logging, "vote_ip : $vote_ip\n");
  88.      fwrite($logging, "vote_time : $vote_time\n");
  89.      fwrite($logging, "lifetime_voted : $lifetime_voted\n");
  90.      fwrite($logging, "month_voted : $month_voted\n");
  91.      fwrite($logging, "data : $data\n");
  92.      fwrite($logging, "-------------------------------------------\n");
  93.      fclose($logging);
  94.      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';");
  95.      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';");
  96.      return;
  97.  }
  98.  
  99.  /**
  100.   * Traitement du script
  101.   */
  102.  
  103.  if($enable_error_log_mysql or $enable_topvote or $enable_credits)
  104.    mysql_connect($mysql_host, $mysql_user, $mysql_pass);
  105.    
  106.  if (isset($_GET['init']))
  107.  {
  108.      if ($_GET['init'] == 'false')
  109.      {
  110.          // Cette partie sert à authentifier le serveur lors du changement d'url.
  111.          exit($verify);
  112.      } elseif ($_GET['init'] == 'true')
  113.      {
  114.          $check_ip = curl_init();
  115.          curl_setopt($check_ip, CURLOPT_URL, "http://www.sitetop.eu/ourips.txt");
  116.          curl_setopt($check_ip, CURLOPT_HEADER, false);
  117.          curl_setopt($check_ip, CURLOPT_RETURNTRANSFER, true);
  118.          $ips = curl_exec($check_ip);
  119.          curl_close($check_ip);
  120.          if (!empty($ips))
  121.          {
  122.              $ips = explode(', ', $ips);
  123.              $succes = null;
  124.              foreach ($ips as $ip)
  125.              {
  126.                  if ($_SERVER['REMOTE_ADDR'] == $ip)
  127.                  {
  128.                      $succes = true;
  129.                      return;
  130.                  }
  131.              }
  132.              if ($succes !== true)
  133.              {
  134.                  start_logging_error("SITETOP TRUST : this is not a trusted connection.", "current_ip = ".$_SERVER['REMOTE_ADDR']);
  135.                  exit();
  136.              }
  137.          }
  138.          else
  139.          {
  140.              start_logging_error("SITETOP TRUST : The ips used by sitetop are not defined or server is down");
  141.              exit();
  142.          }
  143.          if (isset($_POST['secured_data']))
  144.          {
  145.              if ((empty($_POST['secured_data'])) or (is_array($_POST['secured_data'])))
  146.              {
  147.                  start_logging_error("POST : 'secured_data' is empty or is an array", $_POST['secured_data']);
  148.                  exit();
  149.              }
  150.              $secured_data = json_decode($_POST['secured_data']);
  151.              if (($secured_data === null) or (function_exists('json_last_error') && json_last_error() !== JSON_ERROR_NONE))
  152.              {
  153.                  start_logging_error("JSON RESULT : 'secured_data' is not a valid JSON", $_POST['secured_data']);
  154.                  exit();
  155.              }
  156.              foreach ($secured_data as $key => $value)
  157.              {
  158.                  $secured_data->$key = htmlentities($value, ENT_NOQUOTES, 'UTF-8');
  159.              }
  160.              if (!isset($secured_data->uid) or intval($secured_data->uid) === 0)
  161.              {
  162.                  start_logging_error("JSON RESULT : 'secured_data'->'user_id' is not defined or 'secured_data'->'user_id' is not a valid integer",
  163.                      $_POST['secured_data']);
  164.                  exit();
  165.              }
  166.              if (!isset($secured_data->remote_addr) or empty($secured_data->remote_addr))
  167.              {
  168.                  start_logging_error("JSON RESULT : 'secured_data'->'vote_ip' is not defined or empty", $_POST['secured_data']);
  169.                  exit();
  170.              }
  171.              if (!isset($secured_data->timestamp) or intval($secured_data->timestamp) === 0)
  172.              {
  173.                  start_logging_error("JSON RESULT : 'secured_data'->'vote_time' is not defined or 'secured_data'->'vote_time' is not a valid integer",
  174.                      $_POST['secured_data']);
  175.                  exit();
  176.              }
  177.              $user_id = intval($secured_data->uid);
  178.              $vote_ip = $secured_data->remote_addr;
  179.              $vote_time = intval($secured_data->timestamp);
  180.              $lifetime_voted = intval($secured_data->lifetime_voted);
  181.              $month_voted = intval($secured_data->month_voted);
  182.              $data = $secured_data->data;
  183.              start_logging_vote($user_id, $vote_ip, $vote_time, $lifetime_voted, $month_voted, $data);
  184.              exit();
  185.          }
  186.          else
  187.          {
  188.              start_logging_error("POST : 'secured_data' is empty");
  189.              exit();
  190.          }
  191.      }
  192.      else
  193.      {
  194.          start_logging_error("GET : 'init' is not a known value");
  195.          exit();
  196.      }
  197.  }
  198.  else
  199.  {
  200.      start_logging_error("GET : 'init' is not defined");
  201.      exit();
  202.  }
  203. ?>