195 lines
6.9 KiB
Perl
195 lines
6.9 KiB
Perl
#!/usr/bin/perl
|
|
# HLstatsX Community Edition - Real-time player and clan rankings and statistics
|
|
# Copyleft (L) 2008-20XX Nicholas Hastings (nshastings@gmail.com)
|
|
# http://www.hlxcommunity.com
|
|
#
|
|
# This program is free software; you can redistribute it and/or
|
|
# modify it under the terms of the GNU General Public License
|
|
# as published by the Free Software Foundation; either version 2
|
|
# of the License, or (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program; if not, write to the Free Software
|
|
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
#
|
|
# For support and installation notes visit http://www.hlxcommunity.com
|
|
|
|
####
|
|
# Script to mark banned users in HLstatsX Community Edition from a Sourcebans, AMXBans, Beetlesmod, or ES GlobalBan database (or multiple at once!)
|
|
# Last Revised: 2009-07-22 13:35 GMT
|
|
# BeetlesMod and GlobalBan support added by Bo Tribun (R3M)
|
|
|
|
#######################################################################################
|
|
# You must fill info out for the HLX DB and at least one of the Bans databases
|
|
#######################################################################################
|
|
# Sourcebans DB Info
|
|
$sb_dbhost = "localhost";
|
|
$sb_dbport = 3306;
|
|
$sb_dbuser = "";
|
|
$sb_dbpass = "";
|
|
$sb_dbname = "";
|
|
$sb_prefix = "sb_"; # be sure to include the underscore (_)
|
|
|
|
# AMXBans DB Info
|
|
$amxb_dbhost = "localhost";
|
|
$amxb_dbport = 3306;
|
|
$amxb_dbuser = "";
|
|
$amxb_dbpass = "";
|
|
$amxb_dbname = "";
|
|
|
|
# BeetlesMod DB Info
|
|
$bm_dbhost = "localhost";
|
|
$bm_dbport = 3306;
|
|
$bm_dbuser = "";
|
|
$bm_dbpass = "";
|
|
$bm_dbname = "";
|
|
|
|
# ES GlobalBan DB Info
|
|
$gb_dbhost = "localhost";
|
|
$gb_dbport = 3306;
|
|
$gb_dbuser = "";
|
|
$gb_dbpass = "";
|
|
$gb_dbname = "";
|
|
|
|
# HLX DB Info
|
|
$hlx_dbhost = "localhost";
|
|
$hlx_dbport = 3306;
|
|
$hlx_dbuser = "";
|
|
$hlx_dbpass = "";
|
|
$hlx_dbname = "";
|
|
|
|
|
|
##
|
|
##
|
|
################################################################################
|
|
## No need to edit below this line
|
|
##
|
|
|
|
use DBI;
|
|
|
|
$havesbinfo = ($sb_dbhost eq "" || $sb_dbuser eq "" || $sb_dbpass eq "" || $sb_dbname eq "")?0:1;
|
|
$haveamxbinfo = ($amxb_dbhost eq "" || $amxb_dbuser eq "" || $amxb_dbpass eq "" || $amxb_dbname eq "")?0:1;
|
|
$havebminfo = ($bm_dbhost eq "" || $bm_dbuser eq "" || $bm_dbpass eq "" || $bm_dbname eq "")?0:1;
|
|
$havegbinfo = ($gb_dbhost eq "" || $gb_dbuser eq "" || $gb_dbpass eq "" || $gb_dbname eq "")?0:1;
|
|
$havehlxinfo = ($hlx_dbhost eq "" || $hlx_dbuser eq "" || $hlx_dbpass eq "" || $hlx_dbname eq "")?0:1;
|
|
|
|
die("DB login info incomplete. Exiting\n") if ($havehlxinfo == 0 || ($havesbinfo == 0 && $haveamxbinfo == 0 && $havebminfo == 0 && $havegbinfo == 0));
|
|
|
|
@steamids = ();
|
|
|
|
if ($havesbinfo) {
|
|
print "Connecting to Sourcebans database...\n";
|
|
my $sb_dbconn = DBI->connect(
|
|
"DBI:mysql:database=$sb_dbname;host=$sb_dbhost;port=$sb_dbport",
|
|
$sb_dbuser, $sb_dbpass) or die ("\nCan't connect to Sourcebans database '$sb_dbname' on '$sb_dbhost'\n" .
|
|
"Server error: $DBI::errstr\n");
|
|
|
|
print "Successfully connected to Sourcebans database. Retrieving banned Steam IDs now...\n";
|
|
|
|
my $result = &doQuery($sb_dbconn, "SELECT `authid` FROM ".$sb_prefix."bans WHERE `length` = 0 AND `RemovedBy` IS NULL");
|
|
while ( my($steamid) = $result->fetchrow_array) {
|
|
push(@steamids, $steamid);
|
|
}
|
|
my $rows = $result->rows;
|
|
if ($rows) {
|
|
print $rows." banned users retrieved from Sourcebans.\n";
|
|
}
|
|
$sb_dbconn->disconnect;
|
|
}
|
|
|
|
if ($haveamxbinfo) {
|
|
print "Connecting to AMXBans database...\n";
|
|
my $amxb_dbconn = DBI->connect(
|
|
"DBI:mysql:database=$amxb_dbname;host=$amxb_dbhost;port=$amxb_dbport",
|
|
$amxb_dbuser, $amxb_dbpass) or die ("\nCan't connect to AMXBans database '$amxb_dbname' on '$amxb_dbhost'\n" .
|
|
"Server error: $DBI::errstr\n");
|
|
|
|
print "Successfully connected to AMXBans database. Retrieving banned Steam IDs now...\n";
|
|
|
|
my $result = &doQuery($amxb_dbconn, "SELECT `player_id` FROM amx_bans WHERE `ban_length` = 0");
|
|
while ( my($steamid) = $result->fetchrow_array) {
|
|
push(@steamids, $steamid);
|
|
}
|
|
my $rows = $result->rows;
|
|
if ($rows) {
|
|
print $rows." banned users retrieved from AMXBans.\n";
|
|
}
|
|
$amxb_dbconn->disconnect;
|
|
}
|
|
|
|
if ($havebminfo) {
|
|
print "Connecting to BeetlesMod database...\n";
|
|
my $bm_dbconn = DBI->connect(
|
|
"DBI:mysql:database=$bm_dbname;host=$bm_dbhost;port=$bm_dbport",
|
|
$bm_dbuser, $bm_dbpass) or die ("\nCan't connect to BeetlesMod database '$bm_dbname' on '$bm_dbhost'\n" .
|
|
"Server error: $DBI::errstr\n");
|
|
|
|
print "Successfully connected to BeetlesMod database. Retrieving banned Steam IDs now...\n";
|
|
|
|
my $result = &doQuery($bm_dbconn, "SELECT `steamid` FROM `bm_bans` WHERE `Until` IS NULL");
|
|
while ( my($steamid) = $result->fetchrow_array) {
|
|
push(@steamids, $steamid);
|
|
}
|
|
my $rows = $result->rows;
|
|
if ($rows) {
|
|
print $rows." banned users retrieved from BeetlesMod.\n";
|
|
}
|
|
$bm_dbconn->disconnect;
|
|
}
|
|
|
|
if ($havegbinfo) {
|
|
print "Connecting to ES GlobalBan database...\n";
|
|
my $gb_dbconn = DBI->connect(
|
|
"DBI:mysql:database=$gb_dbname;host=$gb_dbhost;port=$gb_dbport",
|
|
$gb_dbuser, $gb_dbpass) or die ("\nCan't connect to ES GlobalBan database '$gb_dbname' on '$gb_dbhost'\n" .
|
|
"Server error: $DBI::errstr\n");
|
|
|
|
print "Successfully connected to ES GlobalBan database. Retrieving banned Steam IDs now...\n";
|
|
|
|
my $result = &doQuery($gb_dbconn, "SELECT `steam_id` FROM `gban_ban` WHERE `active` = 1 AND `pending` = 0 AND `length` = 0");
|
|
while ( my($steamid) = $result->fetchrow_array) {
|
|
push(@steamids, $steamid);
|
|
}
|
|
my $rows = $result->rows;
|
|
if ($rows) {
|
|
print $rows." banned users retrieved from ES GlobalBan.\n";
|
|
}
|
|
$gb_dbconn->disconnect;
|
|
}
|
|
|
|
if (@steamids) {
|
|
$steamidstring = "'";
|
|
foreach $steamid (@steamids)
|
|
{
|
|
$steamid =~ s/^STEAM_[0-9]+?\://i;
|
|
$steamidstring .= $steamid."','";
|
|
}
|
|
$steamidstring =~ s/\,\'$//;
|
|
|
|
print "Connecting to HLX:CE database...\n";
|
|
$hlx_dbconn = DBI->connect(
|
|
"DBI:mysql:database=$hlx_dbname;host=$hlx_dbhost;port=$hlx_dbport",
|
|
$hlx_dbuser, $hlx_dbpass) or die ("\nCan't connect to HLX:CE database '$hlx_dbname' on '$hlx_dbhost'\n" .
|
|
"Server error: $DBI::errstr\n");
|
|
print "Updating HLX:CE banned players...\n";
|
|
$result = &doQuery($hlx_dbconn, "UPDATE `hlstats_Players` SET `hideranking` = 2 WHERE `playerId` IN (SELECT `playerId` FROM hlstats_PlayerUniqueIds WHERE `uniqueId` IN ($steamidstring)) AND `hideranking` < 2");
|
|
print $result->rows." users newly marked as banned.\n";
|
|
$hlx_dbconn->disconnect;
|
|
} else {
|
|
die("No banned users found in database(s). Exiting\n");
|
|
}
|
|
|
|
sub doQuery
|
|
{
|
|
my ($dbconn, $query, $callref) = @_;
|
|
my $result = $dbconn->prepare($query) or die("Unable to prepare query:\n$query\n$DBI::errstr\n$callref");
|
|
$result->execute or die("Unable to execute query:\n$query\n$DBI::errstr\n$callref");
|
|
|
|
return $result;
|
|
}
|