143 lines
5.2 KiB
PHP
143 lines
5.2 KiB
PHP
|
<?php
|
||
|
define("INDEX", 1);
|
||
|
$chrono_start = microtime();
|
||
|
$onyx = @file_get_contents('./.onyx') or die("Configuration introuvable.");
|
||
|
define("_FCORE",trim($onyx));
|
||
|
$_SERVER['REMOTE_ADDR'] = "127.0.0.1";
|
||
|
require_once(_FCORE."kernel.php");
|
||
|
require_once(_FCORE."hb_game/tables.php");
|
||
|
set_time_limit(0);
|
||
|
error_reporting(E_ALL);
|
||
|
|
||
|
echo "Demarrage du serveur ...";
|
||
|
$socket = socket_create(AF_INET, SOCK_STREAM, 0);
|
||
|
@socket_bind($socket, '127.0.0.1', 13650) or die("\nERREUR : Port déja utilise");
|
||
|
socket_listen($socket);
|
||
|
$bdd = new bdd();
|
||
|
echo " Serveur pret, en attente.\n\n";
|
||
|
|
||
|
while(true) {
|
||
|
$client = socket_accept($socket);
|
||
|
|
||
|
//On attend une requête
|
||
|
$reception = socket_read($client, 255);
|
||
|
echo "Reception d'une connexion en provenance de ".$reception."\n";
|
||
|
if (!empty($reception)) {
|
||
|
$ip = $reception;
|
||
|
$_SERVER['REMOTE_ADDR'] = $ip;
|
||
|
//On renvoie le type de connexion au serveur
|
||
|
socket_write($client, "secure", 6);
|
||
|
|
||
|
//On attend une requête contenant le nom de l'utilisateur
|
||
|
$HB_login = socket_read($client, 255);
|
||
|
$bdd->connexion();
|
||
|
$bdd->escape($HB_login);
|
||
|
$res = $bdd->unique_query("SELECT mdp_var FROM $table_user WHERE pseudo = '$HB_login';");
|
||
|
$bdd->deconnexion();
|
||
|
if (empty($res['mdp_var'])) socket_write($client, 'not found', 9);
|
||
|
else socket_write($client, $res['mdp_var'], 255);
|
||
|
|
||
|
//On attend une requête contenant le mot de passe
|
||
|
$HB_password = socket_read($client, 255);
|
||
|
$bdd->connexion();
|
||
|
$bdd->escape($HB_password);
|
||
|
$resultat = $bdd->unique_query("SELECT id, mv, last_visite, auth_level, raisonmv FROM $table_user WHERE pseudo = '$HB_login' AND mdp = '$HB_password';");
|
||
|
if ($resultat) {
|
||
|
$id = $resultat['id'];
|
||
|
$reqPlan = $bdd->query("SELECT id, file_bat, file_tech, file_cas, file_vais, file_ter FROM $table_planete WHERE id_user = '$id' ORDER BY id ASC;");
|
||
|
$resultatP = $reqPlan[0];
|
||
|
if (!$reqPlan) {
|
||
|
$bdd->deconnexion();
|
||
|
socket_write($client, 'ERR:Impossible de trouver votre planète !', 41);
|
||
|
}
|
||
|
else {
|
||
|
if ($resultat['mv'] != 0) {
|
||
|
if ($resultat['last_visite']+259200 > time() && $resultat['auth_level'] < 2) {
|
||
|
if ($resultat['mv'] == 3) socket_write($client, 'MV3:'.$resultat['raisonmv'], 260);
|
||
|
elseif ($resultat['mv'] == 2) socket_write($client, 'MV2:'.($resultat['last_visite']+259200).':'.$resultat['raisonmv'], 300);
|
||
|
else socket_write($client, 'MV1:'.$resultat['last_visite']+259200, 255);
|
||
|
}
|
||
|
else {
|
||
|
$bdd->query("UPDATE $table_user SET mv = '0' WHERE id = '$id';");
|
||
|
$bdd->query("UPDATE $table_planete SET timestamp = '".time()."' WHERE id_user = '$id';");
|
||
|
|
||
|
//On fait repartir à 0 les files d'attente
|
||
|
include_once(_FCORE."hb_game/Class/class.gerefile.php");
|
||
|
$cntplan = count($reqPlan);
|
||
|
for ($i = 0; $i < $cntplan; $i++) {
|
||
|
if (!empty($reqPlan[$i]['file_bat'])) {
|
||
|
$file = unserialize($reqPlan[$i]['file_bat']);
|
||
|
$file->timestamp = time();
|
||
|
$fileBat = serialize($file);
|
||
|
$bdd->escape($fileBat);
|
||
|
}
|
||
|
else $fileBat = '';
|
||
|
if (!empty($reqPlan[$i]['file_tech'])) {
|
||
|
$file = unserialize($reqPlan[$i]['file_tech']);
|
||
|
$file->timestamp = time();
|
||
|
$fileTech = serialize($file);
|
||
|
$bdd->escape($fileTech);
|
||
|
}
|
||
|
else $fileTech = '';
|
||
|
if (!empty($reqPlan[$i]['file_cas'])) {
|
||
|
$file = unserialize($reqPlan[$i]['file_cas']);
|
||
|
$file->timestamp = time();
|
||
|
$fileCas = serialize($file);
|
||
|
$bdd->escape($fileCas);
|
||
|
}
|
||
|
else $fileCas = '';
|
||
|
if (!empty($reqPlan[$i]['file_vais'])) {
|
||
|
$file = unserialize($reqPlan[$i]['file_vais']);
|
||
|
$file->timestamp = time();
|
||
|
$fileVais = serialize($file);
|
||
|
$bdd->escape($fileCas);
|
||
|
}
|
||
|
else $fileVais = '';
|
||
|
if (!empty($reqPlan[$i]['file_ter'])) {
|
||
|
$file = unserialize($reqPlan[$i]['file_ter']);
|
||
|
$file->timestamp = time();
|
||
|
$fileTer = serialize($file);
|
||
|
$bdd->escape($fileTer);
|
||
|
}
|
||
|
else $fileTer = '';
|
||
|
|
||
|
$idPlan = $reqPlan[$i]['id'];
|
||
|
$bdd->query("UPDATE $table_planete SET file_bat = '$fileBat', file_tech = '$fileTech', file_cas = '$fileCas', file_vais = '$fileVais', file_ter = '$fileTer' WHERE id = '$idPlan';");
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
$time = time();
|
||
|
$bdd->query("UPDATE $table_user SET last_visite = '$time', last_ip = '$ip' WHERE id = '$id';");
|
||
|
$bdd->query("INSERT INTO $table_registre_identification (id_util, ip) VALUES ('".$id."','".$ip."');");
|
||
|
$bdd->deconnexion();
|
||
|
|
||
|
$sess = new session();
|
||
|
$sess->load();
|
||
|
$sess->values['connected'] = TRUE;
|
||
|
$sess->values['id'] = $resultat['id'];
|
||
|
$sess->values['idPlan'] = $resultatP['id'];
|
||
|
$sess->values['auth_level'] = $resultat['auth_level'];
|
||
|
$sess->put();
|
||
|
|
||
|
socket_write($client, "ok", 2);
|
||
|
|
||
|
socket_write($client, $config['session_name'], strlen($config['session_name']));
|
||
|
socket_write($client, $sess->cookie, strlen($sess->cookie));
|
||
|
$fin = time() + $config['session_time']."po";
|
||
|
socket_write($client, $fin, strlen($fin));
|
||
|
|
||
|
$sess = false;
|
||
|
unset($sess);
|
||
|
echo "Identification validee pour $HB_login => $fin\n";
|
||
|
}
|
||
|
}
|
||
|
else socket_write($client, 'not found', 9);
|
||
|
}
|
||
|
else socket_write($client, "ERR:La phase d'identification n'a pas encore commence", 49);
|
||
|
|
||
|
socket_close($client);
|
||
|
echo "Fin d'une connexion\n\n";
|
||
|
flush();
|
||
|
}
|
||
|
?>
|