diff options
| author | Darkelarious <darkelarious@333networks.com> | 2017-05-13 14:18:28 +0200 |
|---|---|---|
| committer | Darkelarious <darkelarious@333networks.com> | 2017-05-13 14:20:49 +0200 |
| commit | 34a2c7390ea9662d33258d384e72fff1912343ff (patch) | |
| tree | d96ea33c0107e4906a152aa1de4b5c75b81ba0a8 /util/tools/r_database.pl | |
| parent | 84af66aba26d2088d5d95c240d176f3edaf17b58 (diff) | |
| download | MasterServer-Perl-34a2c7390ea9662d33258d384e72fff1912343ff.tar.gz MasterServer-Perl-34a2c7390ea9662d33258d384e72fff1912343ff.zip | |
revised synchronization methods, config settings and bug fixesv2.3.0
Diffstat (limited to 'util/tools/r_database.pl')
| -rwxr-xr-x | util/tools/r_database.pl | 48 |
1 files changed, 44 insertions, 4 deletions
diff --git a/util/tools/r_database.pl b/util/tools/r_database.pl index 601b1ae..2875844 100755 --- a/util/tools/r_database.pl +++ b/util/tools/r_database.pl @@ -6,7 +6,7 @@ use DBI; our $dbh = open_database(); sub open_database { - my $dbh = DBI->connect('dbi:Pg:dbname=masterserver', 'user', 'password') + my $dbh = DBI->connect('dbi:Pg:dbname=database', 'user', 'password') or die "Cannot connect: $DBI::errstr\n"; # don't forget at end! @@ -19,7 +19,7 @@ sub open_database { ## If the address already exists in the database, it will be ignored. ################################################################################ sub db_add_server { - my %o = (@_); + my %o = @_; # Try to get the address out of the database. my $exists = $dbh->selectall_arrayref( @@ -32,9 +32,49 @@ sub db_add_server { undef, $o{ip}, $o{port}); return if (defined $exists->[0]); + # generate random "secure" string + my @c = ('A'..'Z'); + my $s = ""; + $s .= $c[rand @c] for 1..6; + #print "Add $o{ip}\t $o{port}\n"; - $exists = $dbh->do("INSERT INTO pending (ip, heartbeat) VALUES(?, ?)", - undef, $o{ip}, $o{port}); + $exists = $dbh->do("INSERT INTO pending (ip, heartbeat, secure) VALUES(?, ?, ?)", + undef, $o{ip}, $o{port}, $s); +} + +################################################################################ +## Add a remote master server applet +################################################################################ +sub add_master_applet { + my %o = @_; + + my $u = $dbh->do( + "SELECT * FROM appletlist + WHERE ip = ? + AND port = ? + AND gamename = ?", + undef, $o{ip}, $o{port}, lc $o{gamename}); + + # return if found + return if ($u > 0); + + # insert applet data + return $dbh->do("INSERT INTO appletlist (ip, port, gamename) + SELECT ?, ?, ?", undef, + $o{ip}, $o{port}, lc $o{gamename}); +} + +################################################################################ +## update time on master applet +################################################################################ +sub update_master_applet { + my %o = @_; + return $dbh->do("UPDATE appletlist + SET updated = to_timestamp(?) + WHERE ip = ? + AND port = ? + AND gamename = ?", + undef, time, $o{ip}, $o{port}, lc $o{gamename}); } 1; |
