From 15106a307101a6bb447867e9c3966975f6a5c618 Mon Sep 17 00:00:00 2001 From: Tomas Plesnik <plesnik@ics.muni.cz> Date: Tue, 12 Mar 2013 15:18:55 +0100 Subject: [PATCH] pripojeni do DB presunuto do WardenCommon jako funkce + v END sekci zajisten disconnest --- src/warden-server/bin/getClients.pl | 12 ++++++-- src/warden-server/bin/getStatus.pl | 34 +++++++++++++---------- src/warden-server/bin/registerReceiver.pl | 19 +++++++++---- src/warden-server/bin/registerSender.pl | 21 ++++++++++---- src/warden-server/bin/unregisterClient.pl | 23 ++++++++++----- 5 files changed, 74 insertions(+), 35 deletions(-) diff --git a/src/warden-server/bin/getClients.pl b/src/warden-server/bin/getClients.pl index acdb0a9..ff4db39 100755 --- a/src/warden-server/bin/getClients.pl +++ b/src/warden-server/bin/getClients.pl @@ -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; diff --git a/src/warden-server/bin/getStatus.pl b/src/warden-server/bin/getStatus.pl index fac320d..bd1ba55 100755 --- a/src/warden-server/bin/getStatus.pl +++ b/src/warden-server/bin/getStatus.pl @@ -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; diff --git a/src/warden-server/bin/registerReceiver.pl b/src/warden-server/bin/registerReceiver.pl index c8e4f99..0aac8ee 100755 --- a/src/warden-server/bin/registerReceiver.pl +++ b/src/warden-server/bin/registerReceiver.pl @@ -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; diff --git a/src/warden-server/bin/registerSender.pl b/src/warden-server/bin/registerSender.pl index 772b7d3..83dc56f 100755 --- a/src/warden-server/bin/registerSender.pl +++ b/src/warden-server/bin/registerSender.pl @@ -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; diff --git a/src/warden-server/bin/unregisterClient.pl b/src/warden-server/bin/unregisterClient.pl index caddcb0..2daa616 100755 --- a/src/warden-server/bin/unregisterClient.pl +++ b/src/warden-server/bin/unregisterClient.pl @@ -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; -- GitLab