require './nets.pl';
require './survey.pl';
require './mbd.pm';
+use lib '../include';
+use nms;
+use strict;
+use warnings;
+
+my ($dbh, $q);
sub fhbits {
my $bits = 0;
my $age = Time::HiRes::tv_interval($active_surveys{$sport}{start}, $now);
if ($age > $Config::survey_time && $active_surveys{$sport}{active}) {
print "Survey for '" . $Config::access_list[$active_surveys{$sport}{entry}]->{name} . "'/" .
- $active_surveys{$sport}{dport} . ": " . $active_surveys{$sport}{num} . " active servers.\n";
+ $active_surveys{$sport}{dport} . ": " . $active_surveys{$sport}{num} . " active servers.\n";
$active_surveys{$sport}{active} = 0;
+
+ # (re)connect to the database if needed
+ if (!defined($dbh) || !$dbh->ping) {
+ $dbh = nms::db_connect();
+ $q = $dbh->prepare("INSERT INTO mbd_log (ts,game,port,description,active_servers) VALUES (CURRENT_TIMESTAMP,?,?,?,?)")
+ or die "Couldn't prepare query";
+ }
+ $q->execute($active_surveys{$sport}{entry}, $active_surveys{$sport}{dport}, $Config::access_list[$active_surveys{$sport}{entry}]->{name}, $active_surveys{$sport}{num});
}
if ($age > $Config::survey_time * 3.0) {
delete $active_surveys{$sport};
my $num_nets = 0;
for my $net (@Config::networks) {
- next if (cache_cidrlookup(inet_ntoa($saddr), $net));
-
my ($range) = cache_cidrrange($net);
$range =~ /-(.*?)$/;
my $broadcast = $1;
- $sendsock->set({
- ip => {
- saddr => inet_ntoa($saddr),
- daddr => $broadcast
- },
- udp => {
- source => $sport,
- dest => $dport,
- data => $data
- }
- });
- $sendsock->send;
-
if ($survey) {
$sendsock->set({
ip => {
$sendsock->send;
}
+ next if (cache_cidrlookup(inet_ntoa($saddr), $net));
+
+ $sendsock->set({
+ ip => {
+ saddr => inet_ntoa($saddr),
+ daddr => $broadcast
+ },
+ udp => {
+ source => $sport,
+ dest => $dport,
+ data => $data
+ }
+ });
+ $sendsock->send;
+
++$num_nets;
}