diff options
| author | Darkelarious <darkelarious@333networks.com> | 2017-08-22 11:00:13 +0200 |
|---|---|---|
| committer | Darkelarious <darkelarious@333networks.com> | 2017-08-22 11:00:13 +0200 |
| commit | c06322da38b4cb76b2036af1a5448083adb8ff20 (patch) | |
| tree | 189c9f0fec3325be927f763aba23cf18aa68cfe4 /lib/MasterServer/Database/SQLite/dbGetServers.pm | |
| parent | e0d727670cbeda0db0812c5c9efc503d75f8d0a4 (diff) | |
| download | MasterServer-Perl-c06322da38b4cb76b2036af1a5448083adb8ff20.tar.gz MasterServer-Perl-c06322da38b4cb76b2036af1a5448083adb8ff20.zip | |
new server checking mechanism, complete recode of major functionsv2.4.0
Diffstat (limited to 'lib/MasterServer/Database/SQLite/dbGetServers.pm')
| -rwxr-xr-x | lib/MasterServer/Database/SQLite/dbGetServers.pm | 58 |
1 files changed, 20 insertions, 38 deletions
diff --git a/lib/MasterServer/Database/SQLite/dbGetServers.pm b/lib/MasterServer/Database/SQLite/dbGetServers.pm index 719e00a..7ddce2b 100755 --- a/lib/MasterServer/Database/SQLite/dbGetServers.pm +++ b/lib/MasterServer/Database/SQLite/dbGetServers.pm @@ -3,37 +3,35 @@ package MasterServer::Database::SQLite::dbGetServers; use strict; use warnings; use Exporter 'import'; - our @EXPORT = qw| get_server get_pending |; ################################################################################ ## get server details for one or multiple servers -## opts: limit, see $order +## opts: limit, see %where or $order ################################################################################ sub get_server { my $s = shift; - my %o = ( - sort => '', - @_ - ); + my %o = (sort => '', blacklisted => 0, @_); my %where = ( - $o{next_id} ? ( 'id > ?' => $o{next_id}) : (), - $o{id} ? ( 'id = ?' => $o{id}) : (), - $o{ip} ? ( 'ip = ?' => $o{ip}) : (), - $o{port} ? ( 'port = ?' => $o{port}) : (), - $o{gamename} ? ( 'gamename = ?' => lc $o{gamename}) : (), - $o{gamever} ? ( 'gamever = ?' => $o{gamever}) : (), - $o{hostname} ? ( 'hostname = ?' => $o{hostname}) : (), - $o{hostport} ? ( 'hostport = ?' => $o{hostport}) : (), - $o{country} ? ( 'country = ?' => $o{country}) : (), - $o{b333ms} ? ( 'b333ms = ?' => $o{b333ms}) : (), - $o{blacklisted} ? ('blacklisted = ?' => $o{blacklisted}) : (), + $o{next_id} ? ( 'id > ?' => $o{next_id}) : (), + $o{id} ? ( 'id = ?' => $o{id}) : (), + $o{ip} ? ( 'ip = ?' => $o{ip}) : (), + $o{port} ? ( 'port = ?' => $o{port}) : (), + $o{gamename} ? ('gamename = ?' => lc $o{gamename}) : (), + $o{gamever} ? ( 'gamever = ?' => $o{gamever}) : (), + $o{hostname} ? ('hostname = ?' => $o{hostname}) : (), + $o{hostport} ? ('hostport = ?' => $o{hostport}) : (), + $o{country} ? ( 'country = ?' => $o{country}) : (), + $o{b333ms} ? ( 'b333ms = ?' => $o{b333ms}) : (), $o{added} ? ( 'added < datetime(?, \'unixepoch\')' => (time-$o{added})) : (), $o{beacon} ? ( 'beacon > datetime(?, \'unixepoch\')' => (time-$o{beacon})) : (), $o{updated} ? ('updated > datetime(?, \'unixepoch\')' => (time-$o{updated})) : (), $o{before} ? ('updated < datetime(?, \'unixepoch\')' => (time-$o{before})) : (), + + # never process blacklisted servers, unless explicitly specified + ('blacklisted = CAST(? AS BOOLEAN)' => $o{blacklisted}), ); my @select = ( qw| @@ -79,45 +77,29 @@ sub get_server { ################################################################################ ## get server details for one or multiple pending servers -## opts: limit, next_id, beaconport, heartbeat, gamename, secure, enctype, added +## opts: limit, next_id, ip, heartbeat port ################################################################################ sub get_pending { my $s = shift; - my %o = ( - sort => '', - @_ - ); + my %o = (sort => '', @_); my %where = ( $o{next_id} ? ( 'id > ?' => $o{next_id}) : (), $o{id} ? ( 'id = ?' => $o{id}) : (), $o{ip} ? ( 'ip = ?' => $o{ip}) : (), - $o{beaconport} ? ('beaconport = ?' => $o{beaconport}) : (), $o{heartbeat} ? ( 'heartbeat = ?' => $o{heartbeat}) : (), - $o{gamename} ? ( 'gamename = ?' => lc $o{gamename}) : (), - $o{secure} ? ( 'secure = ?' => $o{secure}) : (), - $o{enctype} ? ( 'enctype = ?' => $o{enctype}) : (), - $o{added} ? ('added < datetime(?, \'unixepoch\')' => (time-$o{added})) : (), - $o{after} ? ('added > datetime(?, \'unixepoch\')' => (time-$o{after})) : (), ); - my @select = ( qw| id ip beaconport heartbeat gamename secure enctype added |,); + my @select = ( qw| id ip heartbeat added |,); my $order = sprintf { id => 'id %s', ip => 'ip %s', - beaconport => 'beaconport %s', heartbeat => 'heartbeat %s', - gamename => 'gamename %s', - secure => 'secure %s', - enctype => 'enctype %s', added => 'added %s', }->{ $o{sort}||'id' }, $o{reverse} ? 'DESC' : 'ASC'; - return $s->db_all( q| - SELECT !s FROM pending - !W - ORDER BY !s| - .($o{limit} ? " LIMIT ?" : ""), + return $s->db_all( q| SELECT !s FROM pending !W ORDER BY !s| + .($o{limit} ? " LIMIT ?" : ""), join(', ', @select), \%where, $order, ($o{limit} ? $o{limit} : ()), ); } |
