Skip to content
Snippets Groups Projects
Commit 15106a30 authored by Tomáš Plesník's avatar Tomáš Plesník
Browse files

pripojeni do DB presunuto do WardenCommon jako funkce + v END sekci zajisten disconnest

parent e7fa3084
No related branches found
No related tags found
No related merge requests found
......@@ -52,11 +52,10 @@ if ($help) {
}
# connect to DB
our $DBH = DBI->connect("DBI:mysql:database=$WardenCommon::DB_NAME;host=$WardenCommon::DB_HOST", $WardenCommon::DB_USER, $WardenCommon::DB_PASS, {RaiseError => 1, mysql_auto_reconnect => 1})
|| die "Could not connect to database: $DBI::errstr";
my $dbh = WardenCommon::connectDB($WardenCommon::DB_NAME, $WardenCommon::DB_HOST, $WardenCommon::DB_USER, $WardenCommon::DB_PASS);
# obtain data from DB
my $sth = $DBH->prepare("SELECT * FROM clients WHERE valid = 't' ORDER BY client_id ASC;") or die "Cannot prepare statement: " . $DBH->errstr;
my $sth = $dbh->prepare("SELECT * FROM clients WHERE valid = 't' ORDER BY client_id ASC;") or die "Cannot prepare statement: " . $dbh->errstr;
$sth->execute or die "Cannot execute statement: " . $sth->errstr;
my $hash_ref = $sth->fetchall_hashref("client_id");
......@@ -81,4 +80,11 @@ print "+------------------------------------------------------------------------
print "\n";
print "Current registered clients in: " . scalar localtime(time) . "\n";
# cleanup section
END {
if (defined $dbh) {
$dbh->disconnect or warn "Disconnection from database '$WardenCommon::DB_NAME' failed: $dbh->errstr\n";
}
}
exit 0;
......@@ -59,8 +59,7 @@ if ($UID != 0) {
}
# connect to DB
our $DBH = DBI->connect("DBI:mysql:database=$WardenCommon::DB_NAME;host=$WardenCommon::DB_HOST", $WardenCommon::DB_USER, $WardenCommon::DB_PASS, {RaiseError => 1, mysql_auto_reconnect => 1})
|| die "Could not connect to database: $DBI::errstr";
my $dbh = WardenCommon::connectDB($WardenCommon::DB_NAME, $WardenCommon::DB_HOST, $WardenCommon::DB_USER, $WardenCommon::DB_PASS);
#-----------------------------------------------------------------------------
# Warden server variables
......@@ -85,13 +84,13 @@ if ($WardenCommon::SYSLOG_VERBOSE == 1) {
# Warden server status
# size of database events
my $sth = $DBH->prepare("SELECT data_length + index_length FROM information_schema.TABLES WHERE table_schema = ? AND TABLE_NAME = ?") or die "Cannot prepare statement: " . $DBH->errstr;
my $sth = $dbh->prepare("SELECT data_length + index_length FROM information_schema.TABLES WHERE table_schema = ? AND TABLE_NAME = ?") or die "Cannot prepare statement: " . $dbh->errstr;
$sth->execute($WardenCommon::DB_NAME, 'events') or die "Cannot execute statement: " . $sth->errstr;
my $size = $sth->fetchrow();
my $db_size = defined $size ? Format::Human::Bytes::base10($size) : "none";
# sum of records in table events
$sth = $DBH->prepare("SELECT count(*) FROM events WHERE valid = 't';") or die "Cannot prepare statement: " . $DBH->errstr;
$sth = $dbh->prepare("SELECT count(*) FROM events WHERE valid = 't';") or die "Cannot prepare statement: " . $dbh->errstr;
$sth->execute or die "Cannot execute statement: " . $sth->errstr;
my $events_sum = $sth->fetchrow();
if (!defined $events_sum) {
......@@ -99,7 +98,7 @@ if (!defined $events_sum) {
}
# sum of records in table events (with invalid)
$sth = $DBH->prepare("SELECT count(*) FROM events;") or die "Cannot prepare statement: " . $DBH->errstr;
$sth = $dbh->prepare("SELECT count(*) FROM events;") or die "Cannot prepare statement: " . $dbh->errstr;
$sth->execute or die "Cannot execute statement: " . $sth->errstr;
my $events_sum_inv = $sth->fetchrow();
if (!defined $events_sum_inv) {
......@@ -107,7 +106,7 @@ if (!defined $events_sum_inv) {
}
# id of last record in table events
$sth = $DBH->prepare("SELECT max(id) FROM events WHERE valid = 't';") or die "Cannot prepare statement: " . $DBH->errstr;
$sth = $dbh->prepare("SELECT max(id) FROM events WHERE valid = 't';") or die "Cannot prepare statement: " . $dbh->errstr;
$sth->execute or die "Cannot execute statement: " . $sth->errstr;
my $events_last_id = $sth->fetchrow();
if (!defined $events_last_id) {
......@@ -115,7 +114,7 @@ if (!defined $events_last_id) {
}
# id of last record in table events (with invalid)
$sth = $DBH->prepare("SELECT max(id) FROM events;") or die "Cannot prepare statement: " . $DBH->errstr;
$sth = $dbh->prepare("SELECT max(id) FROM events;") or die "Cannot prepare statement: " . $dbh->errstr;
$sth->execute or die "Cannot execute statement: " . $sth->errstr;
my $events_last_id_inv = $sth->fetchrow();
if (!defined $events_last_id_inv) {
......@@ -123,7 +122,7 @@ if (!defined $events_last_id_inv) {
}
# timestamp of first record in table events
$sth = $DBH->prepare("SELECT received FROM events WHERE id = (SELECT min(id) FROM events WHERE valid = 't');") or die "Cannot prepare statement: " . $DBH->errstr;
$sth = $dbh->prepare("SELECT received FROM events WHERE id = (SELECT min(id) FROM events WHERE valid = 't');") or die "Cannot prepare statement: " . $dbh->errstr;
$sth->execute or die "Cannot execute statement: " . $sth->errstr;
my $events_first_timestamp = $sth->fetchrow();
if (!defined $events_first_timestamp) {
......@@ -131,7 +130,7 @@ if (!defined $events_first_timestamp) {
}
# timestamp of first record in table events (with invalid)
$sth = $DBH->prepare("SELECT received FROM events WHERE id = (SELECT min(id) FROM events);") or die "Cannot prepare statement: " . $DBH->errstr;
$sth = $dbh->prepare("SELECT received FROM events WHERE id = (SELECT min(id) FROM events);") or die "Cannot prepare statement: " . $dbh->errstr;
$sth->execute or die "Cannot execute statement: " . $sth->errstr;
my $events_first_timestamp_inv = $sth->fetchrow();
if (!defined $events_first_timestamp_inv) {
......@@ -139,7 +138,7 @@ if (!defined $events_first_timestamp_inv) {
}
# timestamp of last record in table events
$sth = $DBH->prepare("SELECT received FROM events WHERE id = (SELECT max(id) FROM events WHERE valid = 't');") or die "Cannot prepare statement: " . $DBH->errstr;
$sth = $dbh->prepare("SELECT received FROM events WHERE id = (SELECT max(id) FROM events WHERE valid = 't');") or die "Cannot prepare statement: " . $dbh->errstr;
$sth->execute or die "Cannot execute statement: " . $sth->errstr;
my $events_last_timestamp = $sth->fetchrow();
if (!defined $events_last_timestamp) {
......@@ -147,7 +146,7 @@ if (!defined $events_last_timestamp) {
}
# timestamp of last record in table events (with invalid)
$sth = $DBH->prepare("SELECT received FROM events WHERE id = (SELECT max(id) FROM events);") or die "Cannot prepare statement: " . $DBH->errstr;
$sth = $dbh->prepare("SELECT received FROM events WHERE id = (SELECT max(id) FROM events);") or die "Cannot prepare statement: " . $dbh->errstr;
$sth->execute or die "Cannot execute statement: " . $sth->errstr;
my $events_last_timestamp_inv = $sth->fetchrow();
if (!defined $events_last_timestamp_inv) {
......@@ -155,7 +154,7 @@ if (!defined $events_last_timestamp_inv) {
}
# sum of records in table clients
$sth = $DBH->prepare("SELECT count(*) FROM clients WHERE valid = 't';") or die "Cannot prepare statement: " . $DBH->errstr;
$sth = $dbh->prepare("SELECT count(*) FROM clients WHERE valid = 't';") or die "Cannot prepare statement: " . $dbh->errstr;
$sth->execute or die "Cannot execute statement: " . $sth->errstr;
my $clients_sum = $sth->fetchrow();
if (!defined $clients_sum) {
......@@ -163,7 +162,7 @@ if (!defined $clients_sum) {
}
# sum of records in table clients (with invalid)
$sth = $DBH->prepare("SELECT count(*) FROM clients;") or die "Cannot prepare statement: " . $DBH->errstr;
$sth = $dbh->prepare("SELECT count(*) FROM clients;") or die "Cannot prepare statement: " . $dbh->errstr;
$sth->execute or die "Cannot execute statement: " . $sth->errstr;
my $clients_sum_inv = $sth->fetchrow();
if (!defined $clients_sum_inv) {
......@@ -174,7 +173,7 @@ if (!defined $clients_sum_inv) {
# Statistics of active registered senders
my $hash_ref;
if ($clients_sum != 0) {
$sth = $DBH->prepare("SELECT clients.client_id, clients.hostname, clients.service, count(*), max(received) FROM events LEFT JOIN clients ON (events.hostname=clients.hostname AND events.service=clients.service) WHERE clients.valid='t' AND events.valid='t' GROUP BY client_id;") or die "Cannot prepare statement: " . $DBH->errstr;
$sth = $dbh->prepare("SELECT clients.client_id, clients.hostname, clients.service, count(*), max(received) FROM events LEFT JOIN clients ON (events.hostname=clients.hostname AND events.service=clients.service) WHERE clients.valid='t' AND events.valid='t' GROUP BY client_id;") or die "Cannot prepare statement: " . $dbh->errstr;
$sth->execute or die "Cannot execute statement: " . $sth->errstr;
my ($client_id, $hostname, $service, $count, $timestamp, $client_status);
$hash_ref = $sth->fetchall_hashref("client_id");
......@@ -233,4 +232,11 @@ if ($clients_sum != 0) {
print "Current server status in:\t" . scalar localtime(time) . "\n";
# cleanup section
END {
if (defined $dbh) {
$dbh->disconnect or warn "Disconnection from database '$WardenCommon::DB_NAME' failed: $dbh->errstr\n";
}
}
exit 0;
......@@ -113,19 +113,19 @@ my $service = undef;
my $description_tags = undef;
# connect to DB
our $DBH = DBI->connect("DBI:mysql:database=$WardenCommon::DB_NAME;host=$WardenCommon::DB_HOST", $WardenCommon::DB_USER, $WardenCommon::DB_PASS, {RaiseError => 1, mysql_auto_reconnect => 1})
|| die "Could not connect to database: $DBI::errstr";
my $dbh = WardenCommon::connectDB($WardenCommon::DB_NAME, $WardenCommon::DB_HOST, $WardenCommon::DB_USER, $WardenCommon::DB_PASS);
my $warden_server = WardenCommon::trim(`hostname -f`);
# check if receiver has been already registered or register it
my $sth = $DBH->prepare("SELECT registered FROM clients WHERE hostname = ? AND client_type = ? AND type = ? AND ip_net_client = ? LIMIT 1;") or die "Cannot prepare statement: " . $DBH->errstr;
my $sth = $dbh->prepare("SELECT registered FROM clients WHERE hostname = ? AND client_type = ? AND type = ? AND ip_net_client = ? LIMIT 1;") or die "Cannot prepare statement: " . $dbh->errstr;
$sth->execute($hostname, $client_type, $type, $ip_net_client) or die "Cannot execute statement: " . $sth->errstr;
my $result = $sth->fetchrow();
my $warden_server = WardenCommon::trim(`hostname -f`);
if (defined $result) {
sendMsg("err", "Attempt to re-register receiver [Hostname: '$hostname', Type: '$type', CIDR: '$ip_net_client'] at Warden server '$warden_server'");
WardenCommon::errMsg("Receiver has already been registered at Warden server '$warden_server' in '$result'");
} else {
$sth = $DBH->prepare("INSERT INTO clients VALUES (?,?,?,?,?,?,?,?,?,?,?);") or die "Cannot prepare statement: " . $DBH->errstr;
$sth = $dbh->prepare("INSERT INTO clients VALUES (?,?,?,?,?,?,?,?,?,?,?);") or die "Cannot prepare statement: " . $dbh->errstr;
my $ret_val = $sth->execute(undef, $hostname, $registered, $requestor, $service, $client_type, $type, $receive_own_events, $description_tags, $ip_net_client, $valid) or die "Cannot execute statement: " . $sth->errstr;
if ($ret_val == 1) {
sendMsg("info", "New receiver [Hostname: '$hostname', Requestor: '$requestor', Type: '$type', ROE: '$receive_own_events', CIDR: '$ip_net_client'] has been registered");
......@@ -134,3 +134,12 @@ if (defined $result) {
WardenCommon::errMsg("Registration of receiver $hostname ($type) FAILED!!!");
}
}
# cleanup section
END {
if (defined $dbh) {
$dbh->disconnect or warn "Disconnection from database '$WardenCommon::DB_NAME' failed: $dbh->errstr\n";
}
}
exit 0;
......@@ -112,19 +112,19 @@ my $type = undef;
my $receive_own_events = undef;
# connect to DB
our $DBH = DBI->connect("DBI:mysql:database=$WardenCommon::DB_NAME;host=$WardenCommon::DB_HOST", $WardenCommon::DB_USER, $WardenCommon::DB_PASS, {RaiseError => 1, mysql_auto_reconnect => 1})
|| die "Could not connect to database: $DBI::errstr";
my $dbh = WardenCommon::connectDB($WardenCommon::DB_NAME, $WardenCommon::DB_HOST, $WardenCommon::DB_USER, $WardenCommon::DB_PASS);
# check if receiver has been already registered or register it
my $sth = $DBH->prepare("SELECT registered FROM clients WHERE hostname = ? AND service = ? AND client_type = ? AND ip_net_client = ? LIMIT 1;") or die "Cannot prepare statement: " . $DBH->errstr;
my $warden_server = WardenCommon::trim(`hostname -f`);
# check if receiver has been already registered or do its registration
my $sth = $dbh->prepare("SELECT registered FROM clients WHERE hostname = ? AND service = ? AND client_type = ? AND ip_net_client = ? LIMIT 1;") or die "Cannot prepare statement: " . $dbh->errstr;
$sth->execute($hostname, $service, $client_type, $ip_net_client) or die "Cannot execute statement: " . $sth->errstr;
my $result = $sth->fetchrow();
my $warden_server = WardenCommon::trim(`hostname -f`);
if (defined $result) {
sendMsg("err", "Attempt to re-register sender [Hostname: '$hostname', Service: '$service', CIDR: '$ip_net_client'] at Warden server '$warden_server'");
WardenCommon::errMsg("Sender has already been registered at Warden server '$warden_server' in '$result'");
} else {
$sth = $DBH->prepare("INSERT INTO clients VALUES (?,?,?,?,?,?,?,?,?,?,?);") or die "Cannot prepare statement: " . $DBH->errstr;
$sth = $dbh->prepare("INSERT INTO clients VALUES (?,?,?,?,?,?,?,?,?,?,?);") or die "Cannot prepare statement: " . $dbh->errstr;
my $ret_val = $sth->execute(undef, $hostname, $registered, $requestor, $service, $client_type, $type, $receive_own_events, $description_tags, $ip_net_client, $valid) or die "Cannot execute statement: " . $sth->errstr;
if ($ret_val == 1) {
sendMsg("info", "New sender [Hostname: '$hostname', Requestor: '$requestor', Service: '$service', Description_tags: '$description_tags', CIDR: '$ip_net_client'] has been registered");
......@@ -133,3 +133,12 @@ if (defined $result) {
WardenCommon::errMsg("Registration of sender $hostname ($service) FAILED!!!");
}
}
# cleanup section
END {
if (defined $dbh) {
$dbh->disconnect or warn "Disconnection from database '$WardenCommon::DB_NAME' failed: $dbh->errstr\n";
}
}
exit 0;
......@@ -88,14 +88,14 @@ if (!defined $client_id) {
}
# connect to DB
our $DBH = DBI->connect("DBI:mysql:database=$WardenCommon::DB_NAME;host=$WardenCommon::DB_HOST", $WardenCommon::DB_USER, $WardenCommon::DB_PASS, {RaiseError => 1, mysql_auto_reconnect => 1})
|| die "Could not connect to database: $DBI::errstr";
my $dbh = WardenCommon::connectDB($WardenCommon::DB_NAME, $WardenCommon::DB_HOST, $WardenCommon::DB_USER, $WardenCommon::DB_PASS);
my $warden_server = WardenCommon::trim(`hostname -f`);
# check if receiver has been already registered
my $sth = $DBH->prepare("SELECT client_id, hostname, service, client_type, type FROM clients WHERE client_id = ? AND valid = 't' LIMIT 1;") or die "Cannot prepare statement: " . $DBH->errstr;
my $sth = $dbh->prepare("SELECT client_id, hostname, service, client_type, type FROM clients WHERE client_id = ? AND valid = 't' LIMIT 1;") or die "Cannot prepare statement: " . $dbh->errstr;
$sth->execute($client_id) or die "Cannot execute statement: " . $sth->errstr;
my ($id, $hostname, $service, $client_type, $type) = $sth->fetchrow();
my $warden_server = WardenCommon::trim(`hostname -f`);
# delete registered client
if (!defined $id) {
......@@ -103,10 +103,10 @@ if (!defined $id) {
WardenCommon::errMsg("Client (#$client_id) is not registered at Warden server '$warden_server'");
} else {
if ($client_type eq 's') {
$sth = $DBH->prepare("UPDATE clients SET valid = 'f' WHERE client_id = ?;") or die "Cannot prepare statement: " . $DBH->errstr;
$sth = $dbh->prepare("UPDATE clients SET valid = 'f' WHERE client_id = ?;") or die "Cannot prepare statement: " . $dbh->errstr;
my $ret_val = $sth->execute($client_id) or die "Cannot execute statement: " . $sth->errstr;
if ($ret_val == 1) {
$sth = $DBH->prepare("UPDATE events SET valid = 'f' where hostname = ? AND service = ?;") or die "Cannot prepare statement: " . $DBH->errstr;
$sth = $dbh->prepare("UPDATE events SET valid = 'f' where hostname = ? AND service = ?;") or die "Cannot prepare statement: " . $dbh->errstr;
$sth->execute($hostname, $service) or die "Cannot execute statement: " . $sth->errstr;
# log message until after invalidate all events
sendMsg("info", "Sender [Client_id: '$client_id', Hostname: '$hostname', Service: '$service'] has been deleted and its data were invalidated from Warden server '$warden_server'");
......@@ -115,7 +115,7 @@ if (!defined $id) {
WardenCommon::errMsg("Unregistration of sender (#$client_id) FAILED!!!");
}
} else {
$sth = $DBH->prepare("UPDATE clients SET valid = 'f' WHERE client_id = ?;") or die "Cannot prepare statement: " . $DBH->errstr;
$sth = $dbh->prepare("UPDATE clients SET valid = 'f' WHERE client_id = ?;") or die "Cannot prepare statement: " . $dbh->errstr;
my $ret_val = $sth->execute($client_id) or die "Cannot execute statement: " . $sth->errstr;
if ($ret_val == 1) {
sendMsg("info", "Receiver [Client_id: '$client_id', Hostname: '$hostname', Type: '$type'] has been deleted from Warden server '$warden_server'");
......@@ -125,3 +125,12 @@ if (!defined $id) {
}
}
}
# cleanup section
END {
if (defined $dbh) {
$dbh->disconnect or warn "Disconnection from database '$WardenCommon::DB_NAME' failed: $dbh->errstr\n";
}
}
exit 0;
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment