From 0d34a92fb342c2dbf8a6daa7d3aae9da89913247 Mon Sep 17 00:00:00 2001 From: Tomas Plesnik <plesnik@ics.muni.cz> Date: Wed, 23 Jan 2013 00:41:56 +0100 Subject: [PATCH] vytvoreno inteligentni nacitani cest ke knihovnam a config souborum; doplnena knihovna WardenCommon.pm pro pouzivane funkce --- src/warden-server/bin/getClients.pl | 49 +++------ src/warden-server/bin/getStatus.pl | 57 +++-------- src/warden-server/bin/registerReceiver.pl | 114 +++++---------------- src/warden-server/bin/registerSender.pl | 108 +++++--------------- src/warden-server/bin/unregisterClient.pl | 117 +++++----------------- src/warden-server/lib/Warden.pm | 22 ++-- src/warden-server/lib/WardenCommon.pm | 13 ++- 7 files changed, 132 insertions(+), 348 deletions(-) diff --git a/src/warden-server/bin/getClients.pl b/src/warden-server/bin/getClients.pl index 430e602..f2d5040 100755 --- a/src/warden-server/bin/getClients.pl +++ b/src/warden-server/bin/getClients.pl @@ -8,53 +8,31 @@ use strict; use Getopt::Std; -use File::Basename; use DBI; use DBD::mysql; +use FindBin qw($RealBin $RealScript); +use lib "$FindBin::RealBin/../lib"; +use WardenCommon; ################################################################################ -# GLOBAL VARIABLES +# VARIABLES ################################################################################ our $VERSION = "2.2"; -my $filename = basename($0); +my $etc = "$FindBin::RealBin/../etc"; ################################################################################ -# Functions +# FUNCTIONS ################################################################################ sub usage { - print "Usage: $filename [without parameters]\n"; + print "Usage: $RealScript [without parameters]\n"; exit 1; } -#------------------------------------------------------------------------------- -# errMsg - print error message and die -#------------------------------------------------------------------------------- -sub errMsg -{ - my $msg = shift; - $msg = trim($msg); - print $msg . "\n"; - exit 1; -} # End of errMsg - - -#------------------------------------------------------------------------------- -# trim - remove whitespace from the start and end of the string -#------------------------------------------------------------------------------- -sub trim -{ - my $string = shift; - $string =~ s/^\s+//; - $string =~ s/\s+$//; - return $string; -} # End of trim - - ################################################################################ # MAIN @@ -65,18 +43,14 @@ die usage unless getopts("h"); my $help = $opt_h; # catch help param -if ($help) { - usage; -} +if ($help) {usage} # superuser controle my $UID = $<; -if ($UID != 0) { - die errMsg("You must be root for running this script!") -} +if ($UID != 0) {WardenCommon::errMsg("You must be root for running this script!")} # read config file -my $conf_file = "/opt/warden-server/etc/warden-server.conf"; # path is updated by install.sh +my $conf_file = "$etc/warden-server.conf"; our $DB_NAME = undef; our $DB_USER = undef; our $DB_PASS = undef; @@ -88,7 +62,8 @@ unless (do $conf_file) { } # connect to DB -our $DBH = DBI->connect("DBI:mysql:database=$DB_NAME;host=$DB_HOST", $DB_USER, $DB_PASS, {RaiseError => 1, mysql_auto_reconnect => 1}) || die "Could not connect to database: $DBH->errstr"; +our $DBH = DBI->connect("DBI:mysql:database=$DB_NAME;host=$DB_HOST", $DB_USER, $DB_PASS, {RaiseError => 1, mysql_auto_reconnect => 1}) + || die "Could not connect to database: $DBH->errstr"; # obtain data from DB my $sth = $DBH->prepare("SELECT * FROM clients ORDER BY client_id ASC;") or die "Cannot prepare statement: " . $DBH->errstr; diff --git a/src/warden-server/bin/getStatus.pl b/src/warden-server/bin/getStatus.pl index 2637a62..6561a34 100755 --- a/src/warden-server/bin/getStatus.pl +++ b/src/warden-server/bin/getStatus.pl @@ -8,54 +8,32 @@ use strict; use Getopt::Std; -use File::Basename; use DBI; use DBD::mysql; use Format::Human::Bytes; +use FindBin qw($RealBin $RealScript); +use lib "$FindBin::RealBin/../lib"; +use WardenCommon; ################################################################################ -# GLOBAL VARIABLES +# VARIABLES ################################################################################ our $VERSION = "2.2"; -my $filename = basename($0); +my $etc = "$FindBin::RealBin/../etc"; ################################################################################ -# Functions +# FUNCTIONS ################################################################################ sub usage { - print "Usage: $filename [without parameters]\n"; + print "Usage: $RealScript [without parameters]\n"; exit 1; } -#------------------------------------------------------------------------------- -# errMsg - print error message and die -#------------------------------------------------------------------------------- -sub errMsg -{ - my $msg = shift; - $msg = trim($msg); - print $msg . "\n"; - exit 1; -} # End of errMsg - - -#------------------------------------------------------------------------------- -# trim - remove whitespace from the start and end of the string -#------------------------------------------------------------------------------- -sub trim -{ - my $string = shift; - $string =~ s/^\s+//; - $string =~ s/\s+$//; - return $string; -} # End of trim - - ################################################################################ # MAIN @@ -66,18 +44,14 @@ die usage unless getopts("h"); my $help = $opt_h; # catch help param -if ($help) { - usage; -} +if ($help) {usage} # superuser controle my $UID = $<; -if ($UID != 0) { - die errMsg("You must be root for running this script!") -} +if ($UID != 0) {WardenCommon::errMsg("You must be root for running this script!")} # read config file -my $conf_file = "/opt/warden-server/etc/warden-server.conf"; # path is updated by install.sh +my $conf_file = "$etc/warden-server.conf"; our $BASEDIR = undef our $SYSLOG = undef; our $SYSLOG_VERBOSE = undef; @@ -94,15 +68,16 @@ unless (do $conf_file) { } # connect to DB -our $DBH = DBI->connect("DBI:mysql:database=$DB_NAME;host=$DB_HOST", $DB_USER, $DB_PASS, {RaiseError => 1, mysql_auto_reconnect => 1}) || die "Could not connect to database: $DBH->errstr"; +our $DBH = DBI->connect("DBI:mysql:database=$DB_NAME;host=$DB_HOST", $DB_USER, $DB_PASS, {RaiseError => 1, mysql_auto_reconnect => 1}) + || die "Could not connect to database: $DBH->errstr"; #----------------------------------------------------------------------------- # Warden server variables -my $package_version = trim(`cat /opt/warden-server/etc/package_version`); +my $package_version = WardenCommon::trim(`cat /opt/warden-server/etc/package_version`); my $version = substr($package_version, 14); -my $hostname = trim(`hostname -f`); -my $ip_address = trim(`hostname -i`); -my $port = trim(`netstat -pln | grep apache | cut -f 4 -d ":"`); +my $hostname = WardenCommon::trim(`hostname -f`); +my $ip_address = WardenCommon::trim(`hostname -i`); +my $port = WardenCommon::trim(`netstat -pln | grep apache | cut -f 4 -d ":"`); my ($syslog, $syslog_verbose); if ($SYSLOG == 1) { $syslog = "enabled"; diff --git a/src/warden-server/bin/registerReceiver.pl b/src/warden-server/bin/registerReceiver.pl index 3c95297..43267f6 100755 --- a/src/warden-server/bin/registerReceiver.pl +++ b/src/warden-server/bin/registerReceiver.pl @@ -9,35 +9,37 @@ use strict; use Getopt::Std; use Switch; -use File::Basename; use DBI; use DBD::mysql; use DateTime; use Sys::Syslog qw(:DEFAULT setlogsock); Sys::Syslog::setlogsock('unix'); use Carp; +use FindBin qw($RealBin $RealScript); +use lib "$FindBin::RealBin/../lib"; +use WardenCommon; ################################################################################ -# GLOBAL VARIABLES +# VARIABLES ################################################################################ our $VERSION = "2.2"; -my $filename = basename($0); +my $etc = "$FindBin::RealBin/../etc"; ################################################################################ -# Functions +# FUNCTIONS ################################################################################ sub usage { - print "Usage: $filename [-h -o -n <hostname> -r <requestor> -t <type> -i <ip_net_client>]\n"; + print "Usage: $RealScript [-h -o -n <hostname> -r <requestor> -t <type> -i <ip_net_client>]\n"; exit 1; } sub help { - print "$filename [-h -o -n <hostname> -r <requestor> -t <type> -i <ip_net_client>]\n"; + print "$RealScript [-h -o -n <hostname> -r <requestor> -t <type> -i <ip_net_client>]\n"; print "-h print this text and exit\n"; print "-n hostname of receiver\n"; print "-r client registration requestor\n"; @@ -48,54 +50,6 @@ sub help { } -#------------------------------------------------------------------------------- -# errMsg - print error message and die -#------------------------------------------------------------------------------- -sub errMsg -{ - my $msg = shift; - $msg = trim($msg); - print $msg . "\n"; - exit 1; -} # End of errMsg - - -#------------------------------------------------------------------------------- -# trim - remove whitespace from the start and end of the string -#------------------------------------------------------------------------------- -sub trim -{ - my $string = shift; - $string =~ s/^\s+//; - $string =~ s/\s+$//; - return $string; -} # End of trim - - -#------------------------------------------------------------------------------- -# sendMsg - sent message to syslog (SYS::Syslog) -#------------------------------------------------------------------------------- -sub sendMsg -{ - my $syslog = shift; - my $syslog_verbose = shift; - my $syslog_facility = shift; - my $severity = shift; - my $syslog_msg = shift; - my $filename = File::Basename::basename($0); - - if ($syslog_verbose == 1 && ($severity eq "err" || $severity eq "debug")) { - $syslog_msg .= "\nStack info: " . Carp::longmess(); - } - - if ($syslog == 1 && defined $severity && defined $syslog_msg) { - Sys::Syslog::openlog($filename, "cons,pid", $syslog_facility); - Sys::Syslog::syslog("$severity", "$syslog_msg"); - Sys::Syslog::closelog(); - } -} # End of sendMsg - - ################################################################################ # MAIN @@ -111,31 +65,27 @@ my $type = $opt_t; my $ip_net_client = $opt_i; my $help = $opt_h; my $receive_own_events = "f"; - -if ($opt_o) { - $receive_own_events = "t"; -} +if ($opt_o) {$receive_own_events = "t"} # catch help param -if ($help) { - help; -} +if ($help) {help} +# check validity of IP address (CIDR format) if ($ip_net_client !~ /^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(\d|[1-2]\d|3[0-2]))$/) { - die "Enter correct IP address in CIDR format!"; + WardenCommon::errMsg("Enter correct IP address in CIDR format!"); } # superuser controle my $UID = $<; -if ($UID != 0) {die errMsg("You must be root for running this script!")} +if ($UID != 0) {WardenCommon::errMsg("You must be root for running this script!")} # check parameters definition switch () { - case {!defined $hostname} { print "ERROR: Parameter 'hostname' is not defined!\n"; exit 1; } - case {!defined $requestor} { print "ERROR: Parameter 'requestor' is not defined!\n"; exit 1; } - case {!defined $type} { print "ERROR: Parameter 'type' is not defined!\n"; exit 1; } - case {!defined $receive_own_events} { print "ERROR: Parameter 'receive_own_events' is not defined!\n"; exit 1; } - case {!defined $ip_net_client} { print "ERROR: Parameter 'ip_net_client' is not defined!\n"; exit 1; } + case {!defined $hostname} {WardenCommon::errMsg("Parameter 'hostname' is not defined!")} + case {!defined $requestor} {WardenCommon::errMsg("Parameter 'requestor' is not defined!")} + case {!defined $type} {WardenCommon::errMsg("Parameter 'type' is not defined!")} + case {!defined $receive_own_events} {WardenCommon::errMsg("Parameter 'receive_own_events' is not defined!")} + case {!defined $ip_net_client} {WardenCommon::errMsg("Parameter 'ip_net_client' is not defined!")} } # defined variables by script @@ -144,9 +94,8 @@ my $registered = DateTime->now; my $service = undef; my $description_tags = undef; - # read config file -my $conf_file = "/opt/warden-server/etc/warden-server.conf"; # path is updated by install.sh +my $conf_file = "$etc/warden-server.conf"; our $SYSLOG = undef; our $SYSLOG_VERBOSE = undef; our $SYSLOG_FACILITY = undef; @@ -161,33 +110,24 @@ unless (do $conf_file) { } # connect to DB -our $DBH = DBI->connect("DBI:mysql:database=$DB_NAME;host=$DB_HOST", $DB_USER, $DB_PASS, {RaiseError => 1, mysql_auto_reconnect => 1}) || die "Could not connect to database: $DBH->errstr"; +our $DBH = DBI->connect("DBI:mysql:database=$DB_NAME;host=$DB_HOST", $DB_USER, $DB_PASS, {RaiseError => 1, mysql_auto_reconnect => 1}) + || die "Could not connect to database: $DBH->errstr"; # 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; $sth->execute($hostname, $client_type, $type, $ip_net_client) or die "Cannot execute statement: " . $sth->errstr; my $result = $sth->fetchrow(); -my $warden_server = trim(`hostname -f`); +my $warden_server = WardenCommon::trim(`hostname -f`); if (defined $result) { - sendMsg($SYSLOG, - $SYSLOG_VERBOSE, - $SYSLOG_FACILITY, - "info", - "Attempt to re-register the receiver [hostname: '$hostname', type: '$type', cidr: '$ip_net_client']"); - errMsg("Receiver has already been registered at $warden_server in '$result'"); + WardenCommon::sendMsg($SYSLOG, $SYSLOG_VERBOSE, $SYSLOG_FACILITY, "err", "Attempt to re-register the receiver [hostname: '$hostname', type: '$type', cidr: '$ip_net_client']"); + WardenCommon::errMsg("Receiver has already been registered at $warden_server in '$result'"); } else { $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) or die "Cannot execute statement: " . $sth->errstr; if ($ret_val == 1) { - sendMsg($SYSLOG, - $SYSLOG_VERBOSE, - $SYSLOG_FACILITY, - "info", - "New receiver [hostname: '$hostname', type: '$type', cidr: '$ip_net_client'] was registered"); - print "Registration of receiver from $hostname was SUCCESSFUL!!!\n"; - exit 0; + WardenCommon::sendMsg($SYSLOG, $SYSLOG_VERBOSE, $SYSLOG_FACILITY, "info", "New receiver [hostname: '$hostname', type: '$type', cidr: '$ip_net_client'] was registered"); + WardenCommon::succMsg("Registration of receiver from $hostname was SUCCESSFUL!!!"); } else { - print "Registration of receiver from $hostname FAILED!!!\n"; - exit 1; + WardenCommon::errMsg("Registration of receiver from $hostname FAILED!!!"); } } diff --git a/src/warden-server/bin/registerSender.pl b/src/warden-server/bin/registerSender.pl index 4097487..c09eb0e 100755 --- a/src/warden-server/bin/registerSender.pl +++ b/src/warden-server/bin/registerSender.pl @@ -9,35 +9,37 @@ use strict; use Getopt::Std; use Switch; -use File::Basename; use DBI; use DBD::mysql; use DateTime; use Sys::Syslog qw(:DEFAULT setlogsock); Sys::Syslog::setlogsock('unix'); use Carp; +use FindBin qw($RealBin $RealScript); +use lib "$FindBin::RealBin/../lib"; +use WardenCommon; ################################################################################ -# GLOBAL VARIABLES +# VARIABLES ################################################################################ our $VERSION = "2.2"; -my $filename = basename($0); +my $etc = "$FindBin::RealBin/../etc"; ################################################################################ -# Functions +# FUNCTIONS ################################################################################ sub usage { - print "Usage: $filename [-h -n <hostname> -r <requestor> -s <service> -d <description_tags> -i <ip_net_client>]\n"; + print "Usage: $RealScript [-h -n <hostname> -r <requestor> -s <service> -d <description_tags> -i <ip_net_client>]\n"; exit 1; } sub help { - print "$filename [-h -n <hostname> -r <requestor> -s <service> -d <description_tags> -i <ip_net_client>]\n"; + print "$RealScript [-h -n <hostname> -r <requestor> -s <service> -d <description_tags> -i <ip_net_client>]\n"; print "-h print this text and exit\n"; print "-n hostname of sender\n"; print "-r client registration requestor\n"; @@ -48,54 +50,6 @@ sub help { } -#------------------------------------------------------------------------------- -# errMsg - print error message and die -#------------------------------------------------------------------------------- -sub errMsg -{ - my $msg = shift; - $msg = trim($msg); - print $msg . "\n"; - exit 1; -} # End of errMsg - - -#------------------------------------------------------------------------------- -# trim - remove whitespace from the start and end of the string -#------------------------------------------------------------------------------- -sub trim -{ - my $string = shift; - $string =~ s/^\s+//; - $string =~ s/\s+$//; - return $string; -} # End of trim - - -#------------------------------------------------------------------------------- -# sendMsg - sent message to syslog (SYS::Syslog) -#------------------------------------------------------------------------------- -sub sendMsg -{ - my $syslog = shift; - my $syslog_verbose = shift; - my $syslog_facility = shift; - my $severity = shift; - my $syslog_msg = shift; - my $filename = File::Basename::basename($0); - - if ($syslog_verbose == 1 && ($severity eq "err" || $severity eq "debug")) { - $syslog_msg .= "\nStack info: " . Carp::longmess(); - } - - if ($syslog == 1 && defined $severity && defined $syslog_msg) { - Sys::Syslog::openlog($filename, "cons,pid", $syslog_facility); - Sys::Syslog::syslog("$severity", "$syslog_msg"); - Sys::Syslog::closelog(); - } -} # End of sendMsg - - ################################################################################ # MAIN @@ -113,25 +67,24 @@ my $ip_net_client = $opt_i; my $help = $opt_h; # catch help param -if ($help) { - help; -} +if ($help) {help} +# check validity of IP address (CIDR format) if ($ip_net_client !~ /^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(\d|[1-2]\d|3[0-2]))$/) { - die errMsg("Enter correct IP in CIDR format!"); + WardenCommon::errMsg("Enter correct IP in CIDR format!"); } # superuser controle my $UID = $<; -if ($UID != 0) {die errMsg("You must be root for running this script!")} +if ($UID != 0) {WardenCommon::errMsg("You must be root for running this script!")} # check parameters definition switch () { - case {!defined $hostname} { print "ERROR: Parameter 'hostname' is not defined!\n"; exit 1; } - case {!defined $requestor} { print "ERROR: Parameter 'requestor' is not defined!\n"; exit 1; } - case {!defined $service} { print "ERROR: Parameter 'service' is not defined!\n"; exit 1; } - case {!defined $description_tags} { print "ERROR: Parameter 'description_tags' is not defined!\n"; exit 1; } - case {!defined $ip_net_client} { print "ERROR: Parameter 'ip_net_client' is not defined!\n"; exit 1; } + case {!defined $hostname} {WardenCommon::errMsg("Parameter 'hostname' is not defined!")} + case {!defined $requestor} {WardenCommon::errMsg("Parameter 'requestor' is not defined!")} + case {!defined $service} {WardenCommon::errMsg("Parameter 'service' is not defined!")} + case {!defined $description_tags} {WardenCommon::errMsg("Parameter 'description_tags' is not defined!")} + case {!defined $ip_net_client} {WardenCommon::errMsg("Parameter 'ip_net_client' is not defined!")} } # defined variables by method @@ -141,7 +94,7 @@ my $type = undef; my $receive_own_events = undef; # read config file -my $conf_file = "/opt/warden-server/etc/warden-server.conf"; # path is updated by install.sh +my $conf_file = "$etc/warden-server.conf"; our $SYSLOG = undef; our $SYSLOG_VERBOSE = undef; our $SYSLOG_FACILITY = undef; @@ -156,33 +109,24 @@ unless (do $conf_file) { } # connect to DB -our $DBH = DBI->connect("DBI:mysql:database=$DB_NAME;host=$DB_HOST", $DB_USER, $DB_PASS, {RaiseError => 1, mysql_auto_reconnect => 1}) || die "Could not connect to database: $DBH->errstr"; +our $DBH = DBI->connect("DBI:mysql:database=$DB_NAME;host=$DB_HOST", $DB_USER, $DB_PASS, {RaiseError => 1, mysql_auto_reconnect => 1}) + || die "Could not connect to database: $DBH->errstr"; # 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; $sth->execute($hostname, $service, $client_type, $ip_net_client) or die "Cannot execute statement: " . $sth->errstr; my $result = $sth->fetchrow(); -my $warden_server = trim(`hostname -f`); +my $warden_server = WardenCommon::trim(`hostname -f`); if (defined $result) { - sendMsg($SYSLOG, - $SYSLOG_VERBOSE, - $SYSLOG_FACILITY, - "info", - "Attempt to re-register the sender [hostname: '$hostname', service: '$service', cidr: '$ip_net_client']"); - errMsg("Sender has already been registered at $warden_server in '$result'"); + WardenCommon::sendMsg($SYSLOG, $SYSLOG_VERBOSE, $SYSLOG_FACILITY, "err", "Attempt to re-register the sender [hostname: '$hostname', service: '$service', cidr: '$ip_net_client']"); + WardenCommon::errMsg("Sender has already been registered at $warden_server in '$result'"); } else { $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) or die "Cannot execute statement: " . $sth->errstr; if ($ret_val == 1) { - sendMsg($SYSLOG, - $SYSLOG_VERBOSE, - $SYSLOG_FACILITY, - "info", - "New sender [hostname: '$hostname', service: '$service', cidr: '$ip_net_client'] was registered"); - print "Registration of sender from $hostname was SUCCESSFUL!!!\n"; - exit 0; + WardenCommon::sendMsg($SYSLOG, $SYSLOG_VERBOSE, $SYSLOG_FACILITY, "info", "New sender [hostname: '$hostname', service: '$service', cidr: '$ip_net_client'] was registered"); + WardenCommon::succMsg("Registration of sender from $hostname was SUCCESSFUL!!!"); } else { - print "Registration of sender from $hostname FAILED!!!\n"; - exit 1; + WardenCommon::errMsg("Registration of sender from $hostname FAILED!!!"); } } diff --git a/src/warden-server/bin/unregisterClient.pl b/src/warden-server/bin/unregisterClient.pl index fb09d44..04c6edf 100755 --- a/src/warden-server/bin/unregisterClient.pl +++ b/src/warden-server/bin/unregisterClient.pl @@ -9,92 +9,47 @@ use strict; use Getopt::Std; use Switch; -use File::Basename; use DBI; use DBD::mysql; use DateTime; use Sys::Syslog qw(:DEFAULT setlogsock); Sys::Syslog::setlogsock('unix'); use Carp; +use FindBin qw($RealBin $RealScript); +use lib "$FindBin::RealBin/../lib"; +use WardenCommon; ################################################################################ -# GLOBAL VARIABLES +# VARIABLES ################################################################################ our $VERSION = "2.2"; -my $filename = basename($0); +my $etc = "$FindBin::RealBin/../etc"; ################################################################################ -# Functions +# FUNCTIONS ################################################################################ sub usage { - print "Usage: $filename [-h -i <client_id>]\n"; + print "Usage: $RealScript [-h -i <client_id>]\n"; exit 1; } + sub help { - print "$filename [-h -i <client_id>]\n"; + print "$RealScript [-h -i <client_id>]\n"; print "-h print this text and exit\n"; print "-i client_id for unregistration\n"; exit 0; } -#------------------------------------------------------------------------------- -# errMsg - print error message and die -#------------------------------------------------------------------------------- -sub errMsg -{ - my $msg = shift; - $msg = trim($msg); - print $msg . "\n"; - exit 1; -} # End of errMsg - - -#------------------------------------------------------------------------------- -# trim - remove whitespace from the start and end of the string -#------------------------------------------------------------------------------- -sub trim -{ - my $string = shift; - $string =~ s/^\s+//; - $string =~ s/\s+$//; - return $string; -} # End of trim - - -#------------------------------------------------------------------------------- -# sendMsg - sent message to syslog (SYS::Syslog) -#------------------------------------------------------------------------------- -sub sendMsg -{ - my $syslog = shift; - my $syslog_verbose = shift; - my $syslog_facility = shift; - my $severity = shift; - my $syslog_msg = shift; - my $filename = File::Basename::basename($0); - - if ($syslog_verbose == 1 && ($severity eq "err" || $severity eq "debug")) { - $syslog_msg .= "\nStack info: " . Carp::longmess(); - } - - if ($syslog == 1 && defined $severity && defined $syslog_msg) { - Sys::Syslog::openlog($filename, "cons,pid", $syslog_facility); - Sys::Syslog::syslog("$severity", "$syslog_msg"); - Sys::Syslog::closelog(); - } -} # End of sendMsg - - -#------------------------------------------------------------------------------- +################################################################################ # MAIN -#------------------------------------------------------------------------------- +################################################################################ our ($opt_h, $opt_i); if ($#ARGV == -1) {usage} @@ -104,22 +59,17 @@ my $client_id = $opt_i; my $help = $opt_h; # catch help param -if ($help) { - help; -} +if ($help) {help} # superuser controle my $UID = $<; -if ($UID != 0) {die errMsg("You must be root for running this script!")} +if ($UID != 0) {WardenCommon::errMsg("You must be root for running this script!")} # check parameters definition -if (!defined $client_id) { - print "ERROR: Parameter 'client_id' is not defined!\n"; - exit 1; -} +if (!defined $client_id) {WardenCommon::errMsg("Parameter 'client_id' is not defined!")} # read config file -my $conf_file = "/opt/warden-server/etc/warden-server.conf"; # path is updated by install.sh +my $conf_file = "$etc/warden-server.conf"; our $SYSLOG = undef; our $SYSLOG_VERBOSE = undef; our $SYSLOG_FACILITY = undef; @@ -134,22 +84,19 @@ unless (do $conf_file) { } # connect to DB -our $DBH = DBI->connect("DBI:mysql:database=$DB_NAME;host=$DB_HOST", $DB_USER, $DB_PASS, {RaiseError => 1, mysql_auto_reconnect => 1}) || die "Could not connect to database: $DBH->errstr"; +our $DBH = DBI->connect("DBI:mysql:database=$DB_NAME;host=$DB_HOST", $DB_USER, $DB_PASS, {RaiseError => 1, mysql_auto_reconnect => 1}) + || die "Could not connect to database: $DBH->errstr"; # check if receiver has been already registered my $sth = $DBH->prepare("SELECT client_id, hostname, service, client_type, type FROM clients WHERE client_id = ? 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 = trim(`hostname -f`); +my $warden_server = WardenCommon::trim(`hostname -f`); # delete registered client if (!defined $id) { - sendMsg($SYSLOG, - $SYSLOG_VERBOSE, - $SYSLOG_FACILITY, - "err", - "Attempt to delete unregister client (client_id: #$client_id)"); - errMsg("Client (#$client_id) is not registered at $warden_server"); + WardenCommon::sendMsg($SYSLOG, $SYSLOG_VERBOSE, $SYSLOG_FACILITY, "err", "Attempt to delete unregister client (client_id: #$client_id)"); + WardenCommon::errMsg("Client (#$client_id) is not registered at $warden_server"); } else { if ($client_type eq 's') { $sth = $DBH->prepare("DELETE FROM clients WHERE client_id = ?;") or die "Cannot prepare statement: " . $DBH->errstr; @@ -157,31 +104,19 @@ if (!defined $id) { if ($ret_val == 1) { $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; - sendMsg($SYSLOG, - $SYSLOG_VERBOSE, - $SYSLOG_FACILITY, - "info", - "Sender '$hostname' [client_id: '$client_id', service: '$service'] was deleted and its data were invalidated from $warden_server"); - print "Unregistration of sender client (client_id: #$client_id) was SUCCESSFUL!!!\n"; - exit 0; + WardenCommon::sendMsg($SYSLOG, $SYSLOG_VERBOSE, $SYSLOG_FACILITY, "info", "Sender '$hostname' [client_id: '$client_id', service: '$service'] was deleted and its data were invalidated from $warden_server"); + WardenCommon::succMsg("Unregistration of sender client (client_id: #$client_id) was SUCCESSFUL!!!"); } else { - print "Unregistration of sender client (client_id: #$client_id) FAILED!!!\n"; - exit 1; + WardenCommon::errMsg("Unregistration of sender client (client_id: #$client_id) FAILED!!!"); } } else { $sth = $DBH->prepare("DELETE FROM clients 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($SYSLOG, - $SYSLOG_VERBOSE, - $SYSLOG_FACILITY, - "info", - "Receiver '$hostname' [client_id: '$client_id', type: '$type'] was deleted from $warden_server"); - print "Unregistration of receiver client (client_id: #$client_id) was SUCCESSFUL!!!\n"; - exit 0; + WardenCommon::sendMsg($SYSLOG, $SYSLOG_VERBOSE, $SYSLOG_FACILITY, "info", "Receiver '$hostname' [client_id: '$client_id', type: '$type'] was deleted from $warden_server"); + WardenCommon::succMsg("Unregistration of receiver client (client_id: #$client_id) was SUCCESSFUL!!!"); } else { - print "Unregistration of receiver client (client_id: #$client_id) FAILED!!!\n"; - exit 1; + WardenCommon::errMsg("Unregistration of receiver client (client_id: #$client_id) FAILED!!!"); } } } diff --git a/src/warden-server/lib/Warden.pm b/src/warden-server/lib/Warden.pm index 6ac8aec..1aa8a75 100755 --- a/src/warden-server/lib/Warden.pm +++ b/src/warden-server/lib/Warden.pm @@ -13,22 +13,25 @@ use DBI; use DBD::mysql; use Sys::Syslog qw(:DEFAULT setlogsock); Sys::Syslog::setlogsock('unix'); -use File::Basename; use Net::CIDR::Lite; use DateTime; use MIME::Base64; use Crypt::X509; use SOAP::Lite; use Carp; +use FindBin qw($RealBin $RealScript); +use lib "$FindBin::RealBin/../lib"; +use WardenCommon; our $VERSION = "2.2"; +my $etc = "$FindBin::RealBin/../etc"; + ################################################################################ # READING OF CONFIGURATION VARIABLES ################################################################################ - -my $conf_file = "/opt/warden-server/etc/warden-server.conf"; # path is updated by install.sh +my $conf_file = "$etc/warden-server.conf"; our $SYSLOG = undef; our $SYSLOG_VERBOSE = undef; our $SYSLOG_FACILITY = undef; @@ -47,11 +50,12 @@ unless (do $conf_file) { } + ################################################################################ # VARIABLES ################################################################################ - -our $DBH = DBI->connect("DBI:mysql:database=$DB_NAME;host=$DB_HOST", $DB_USER, $DB_PASS, {RaiseError => 1, mysql_auto_reconnect => 1}) || die "Could not connect to database: $DBH->errstr"; +our $DBH = DBI->connect("DBI:mysql:database=$DB_NAME;host=$DB_HOST", $DB_USER, $DB_PASS, {RaiseError => 1, mysql_auto_reconnect => 1}) + || die "Could not connect to database: $DBH->errstr"; ################################################################################ @@ -68,7 +72,7 @@ sub sendMsg my $severity = shift; my $syslog_msg = shift; my $soap_msg = shift; - my $filename = File::Basename::basename($0); + my $filename = $RealScript; if ($SYSLOG_VERBOSE == 1 && ($severity eq "err" || $severity eq "debug")) { $syslog_msg .= "\nStack info: " . Carp::longmess(); @@ -80,8 +84,7 @@ sub sendMsg Sys::Syslog::closelog(); } - if (defined $soap_msg) { - die SOAP::Fault->faultstring($soap_msg); + if (defined $soap_msg) {die SOAP::Fault->faultstring($soap_msg)}; } } # End of sendMsg @@ -150,7 +153,7 @@ sub authorizeClient my $correct_ip_source = 0; my %ret; while(($client_id, $an, $cidr, $receive_own) = $sth->fetchrow()) { - my $cidr_list = Net::CIDR::Lite-> new -> add($cidr); + my $cidr_list = Net::CIDR::Lite->new->add($cidr); $ret{'client_id'} = $client_id; $ret{'dns'} = $an; @@ -183,6 +186,7 @@ sub authorizeClient } # END of authorizeClient + ################################################################################ # SOAP Functions ################################################################################ diff --git a/src/warden-server/lib/WardenCommon.pm b/src/warden-server/lib/WardenCommon.pm index 9b7cd98..5cf1a6f 100755 --- a/src/warden-server/lib/WardenCommon.pm +++ b/src/warden-server/lib/WardenCommon.pm @@ -16,9 +16,20 @@ use Carp; our $VERSION = "2.2"; +#------------------------------------------------------------------------------- +# succMsg - print message and exit seccessfully +#------------------------------------------------------------------------------- +sub succMsg +{ + my $msg = shift; + $msg = trim($msg); + print $msg . "\n"; + exit 0; +} # End of succMsg + #------------------------------------------------------------------------------- -# errMsg - print error message and die +# errMsg - print error message and exit unsuccessfully #------------------------------------------------------------------------------- sub errMsg { -- GitLab