release 1.3.0

This commit is contained in:
Newcomer1989
2019-06-11 13:04:44 +02:00
parent 311a751f52
commit 46c5f0a6ce
76 changed files with 2580 additions and 4352 deletions

View File

@@ -1,62 +1,57 @@
<?PHP
function event_userenter(TeamSpeak3_Adapter_ServerQuery_Event $event, TeamSpeak3_Node_Host $host) {
global $cfg, $mysqlcon, $dbname, $sqlexec2;
global $cfg, $mysqlcon, $dbname;
$sqlexec3 = '';
if($event['client_type'] == 0) {
#enter_logfile($cfg,6,"User ".$event['client_nickname']." (uuid: ".$event['client_unique_identifier'].") connected to the server.");
enter_logfile($cfg,6,"User ".$event['client_nickname']." (uuid: ".$event['client_unique_identifier'].") connected to the server.");
try {
$host->serverGetSelected()->clientListReset();
usleep($cfg['teamspeak_query_command_delay']);
$clientinfo = $host->serverGetSelected()->clientInfoDb($event["client_database_id"]);
if($clientinfo['client_lastip'] == NULL) { //TeamSpeak sucks sometimes and gives a empty result
enter_logfile($cfg,4,"event_userenter: TeamSpeak gives an empty value for the IP address of ".$event['client_nickname']." (uuid: ".$event['client_unique_identifier'].").. retry in 0,1 seconds..");
usleep(100000);
try {
unset($clientinfo);
usleep($cfg['teamspeak_query_command_delay']);
$clientinfo = $host->serverGetSelected()->clientInfoDb($event["client_database_id"]);
if($clientinfo['client_lastip'] == NULL) {
enter_logfile($cfg,4,"event_userenter: TeamSpeak gives an empty value for the IP address of ".$event['client_nickname']." (uuid: ".$event['client_unique_identifier'].").. retry in 0,5 seconds..");
usleep(500000);
try {
unset($clientinfo);
usleep($cfg['teamspeak_query_command_delay']);
$clientinfo = $host->serverGetSelected()->clientInfoDb($event["client_database_id"]);
if($clientinfo['client_lastip'] == NULL) {
enter_logfile($cfg,2,"event_userenter: Fuck it.. TeamSpeak gives an empty value for the IP address of of ".$event['client_nickname']." (uuid: ".$event['client_unique_identifier'].").");
return 0;
}
} catch (Exception $e) {
enter_logfile($cfg,2,"event_userenter 4:".$e->getCode().': '.$e->getMessage());
}
$clientlist = $host->serverGetSelected()->clientList();
foreach ($clientlist as $client) {
if($client['client_database_id'] == $event['client_database_id']) {
if(strstr($client['connection_client_ip'], '[')) {
$ip = str_replace(array('[',']'),'',$client['connection_client_ip']);
} else {
$ip = $client['connection_client_ip'];
}
} catch (Exception $e) {
enter_logfile($cfg,2,"event_userenter 4:".$e->getCode().': '.$e->getMessage());
break;
}
}
if($cfg['rankup_hash_ip_addresses_mode'] == 1) {
$hash = password_hash($clientinfo['client_lastip'], PASSWORD_DEFAULT);
$ip = '';
} elseif($cfg['rankup_hash_ip_addresses_mode'] == 2) {
$salt = md5(dechex(crc32(substr(__DIR__,0,-4))));
$hash = password_hash($clientinfo['client_lastip'], PASSWORD_DEFAULT, array("cost" => 10, "salt" => $salt));
$ip = '';
if(!isset($ip)) {
enter_logfile($cfg,6,"New user (".$event['client_nickname']." [".$event['client_database_id']."]) joined the server, but can't found a valid IP address.");
} else {
$hash = '';
$ip = $clientinfo['client_lastip'];
if($cfg['rankup_hash_ip_addresses_mode'] == 1) {
$hash = password_hash($ip, PASSWORD_DEFAULT);
$ip = '';
} elseif($cfg['rankup_hash_ip_addresses_mode'] == 2) {
$salt = md5(dechex(crc32(substr(__DIR__,0,-4))));
$hash = password_hash($ip, PASSWORD_DEFAULT, array("cost" => 10, "salt" => $salt));
$ip = '';
} else {
$hash = '';
}
enter_logfile($cfg,6,"Event Userenter: Users IP-hash: ".$hash);
if(($sqlhashs = $mysqlcon->query("SELECT * FROM `$dbname`.`user_iphash`")->fetchAll(PDO::FETCH_ASSOC|PDO::FETCH_UNIQUE)) === false) {
enter_logfile($cfg,2,"event_userenter 2:".print_r($mysqlcon->errorInfo(), true));
}
$uuid = htmlspecialchars($event['client_unique_identifier'], ENT_QUOTES);
if(isset($sqlhashs[$uuid])) {
$sqlexec3 .= "UPDATE `$dbname`.`user_iphash` SET `iphash`='".$hash."',`ip`='".$ip."' WHERE `uuid`='".$event['client_unique_identifier']."'; ";
enter_logfile($cfg,6,"Userenter: UPDATE `$dbname`.`user_iphash` SET `iphash`='".$hash."',`ip`='".$ip."' WHERE `uuid`='".$event['client_unique_identifier']."'; ");
} else {
$sqlexec3 .= "INSERT INTO `$dbname`.`user_iphash` (`uuid`,`iphash`,`ip`) VALUES ('".$event['client_unique_identifier']."','".$hash."','".$ip."'); ";
enter_logfile($cfg,6,"Userenter: INSERT INTO `$dbname`.`user_iphash` (`uuid`,`iphash`,`ip`) VALUES ('".$event['client_unique_identifier']."','".$hash."','".$ip."'); ");
}
if($mysqlcon->exec($sqlexec3) === false) {
enter_logfile($cfg,2,"event_userenter 3:".print_r($mysqlcon->errorInfo(), true));
}
}
#enter_logfile($cfg,6,"Event Userenter: Users IP-hash: ".$hash." IP: ".$ip);
if(($sqlhashs = $mysqlcon->query("SELECT * FROM `$dbname`.`user_iphash`")->fetchAll(PDO::FETCH_ASSOC|PDO::FETCH_UNIQUE)) === false) {
enter_logfile($cfg,2,"event_userenter 1:".print_r($mysqlcon->errorInfo(), true));
}
#enter_logfile($cfg,6,"User-hash-Table: ".print_r($sqlhashs, true));
$uuid = htmlspecialchars($event['client_unique_identifier'], ENT_QUOTES);
if(isset($sqlhashs[$uuid])) {
$sqlexec2 .= "UPDATE `$dbname`.`user_iphash` SET `iphash`='".$hash."',`ip`='".$ip."' WHERE `uuid`='".$event['client_unique_identifier']."'; ";
} else {
$sqlexec2 .= "INSERT INTO `$dbname`.`user_iphash` (`uuid`,`iphash`,`ip`) VALUES ('".$event['client_unique_identifier']."','".$hash."','".$ip."'); ";
}
} catch (Exception $e) {
enter_logfile($cfg,2,"event_userenter 4:".$e->getCode().': '.$e->getMessage());
}