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

vytvoreno inteligentni nacitani cest ke knihovnam a config souborum; doplnena...

vytvoreno inteligentni nacitani cest ke knihovnam a config souborum; doplnena knihovna WardenCommon.pm pro pouzivane funkce
parent 525f9e6c
No related branches found
No related tags found
No related merge requests found
...@@ -8,53 +8,31 @@ ...@@ -8,53 +8,31 @@
use strict; use strict;
use Getopt::Std; use Getopt::Std;
use File::Basename;
use DBI; use DBI;
use DBD::mysql; use DBD::mysql;
use FindBin qw($RealBin $RealScript);
use lib "$FindBin::RealBin/../lib";
use WardenCommon;
################################################################################ ################################################################################
# GLOBAL VARIABLES # VARIABLES
################################################################################ ################################################################################
our $VERSION = "2.2"; our $VERSION = "2.2";
my $filename = basename($0); my $etc = "$FindBin::RealBin/../etc";
################################################################################ ################################################################################
# Functions # FUNCTIONS
################################################################################ ################################################################################
sub usage { sub usage {
print "Usage: $filename [without parameters]\n"; print "Usage: $RealScript [without parameters]\n";
exit 1; 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 # MAIN
...@@ -65,18 +43,14 @@ die usage unless getopts("h"); ...@@ -65,18 +43,14 @@ die usage unless getopts("h");
my $help = $opt_h; my $help = $opt_h;
# catch help param # catch help param
if ($help) { if ($help) {usage}
usage;
}
# superuser controle # superuser controle
my $UID = $<; my $UID = $<;
if ($UID != 0) { if ($UID != 0) {WardenCommon::errMsg("You must be root for running this script!")}
die errMsg("You must be root for running this script!")
}
# read config file # 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_NAME = undef;
our $DB_USER = undef; our $DB_USER = undef;
our $DB_PASS = undef; our $DB_PASS = undef;
...@@ -88,7 +62,8 @@ unless (do $conf_file) { ...@@ -88,7 +62,8 @@ unless (do $conf_file) {
} }
# connect to DB # 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 # obtain data from DB
my $sth = $DBH->prepare("SELECT * FROM clients ORDER BY client_id ASC;") or die "Cannot prepare statement: " . $DBH->errstr; my $sth = $DBH->prepare("SELECT * FROM clients ORDER BY client_id ASC;") or die "Cannot prepare statement: " . $DBH->errstr;
......
...@@ -8,54 +8,32 @@ ...@@ -8,54 +8,32 @@
use strict; use strict;
use Getopt::Std; use Getopt::Std;
use File::Basename;
use DBI; use DBI;
use DBD::mysql; use DBD::mysql;
use Format::Human::Bytes; use Format::Human::Bytes;
use FindBin qw($RealBin $RealScript);
use lib "$FindBin::RealBin/../lib";
use WardenCommon;
################################################################################ ################################################################################
# GLOBAL VARIABLES # VARIABLES
################################################################################ ################################################################################
our $VERSION = "2.2"; our $VERSION = "2.2";
my $filename = basename($0); my $etc = "$FindBin::RealBin/../etc";
################################################################################ ################################################################################
# Functions # FUNCTIONS
################################################################################ ################################################################################
sub usage { sub usage {
print "Usage: $filename [without parameters]\n"; print "Usage: $RealScript [without parameters]\n";
exit 1; 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 # MAIN
...@@ -66,18 +44,14 @@ die usage unless getopts("h"); ...@@ -66,18 +44,14 @@ die usage unless getopts("h");
my $help = $opt_h; my $help = $opt_h;
# catch help param # catch help param
if ($help) { if ($help) {usage}
usage;
}
# superuser controle # superuser controle
my $UID = $<; my $UID = $<;
if ($UID != 0) { if ($UID != 0) {WardenCommon::errMsg("You must be root for running this script!")}
die errMsg("You must be root for running this script!")
}
# read config file # 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 $BASEDIR = undef
our $SYSLOG = undef; our $SYSLOG = undef;
our $SYSLOG_VERBOSE = undef; our $SYSLOG_VERBOSE = undef;
...@@ -94,15 +68,16 @@ unless (do $conf_file) { ...@@ -94,15 +68,16 @@ unless (do $conf_file) {
} }
# connect to DB # 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 # 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 $version = substr($package_version, 14);
my $hostname = trim(`hostname -f`); my $hostname = WardenCommon::trim(`hostname -f`);
my $ip_address = trim(`hostname -i`); my $ip_address = WardenCommon::trim(`hostname -i`);
my $port = trim(`netstat -pln | grep apache | cut -f 4 -d ":"`); my $port = WardenCommon::trim(`netstat -pln | grep apache | cut -f 4 -d ":"`);
my ($syslog, $syslog_verbose); my ($syslog, $syslog_verbose);
if ($SYSLOG == 1) { if ($SYSLOG == 1) {
$syslog = "enabled"; $syslog = "enabled";
......
...@@ -9,35 +9,37 @@ ...@@ -9,35 +9,37 @@
use strict; use strict;
use Getopt::Std; use Getopt::Std;
use Switch; use Switch;
use File::Basename;
use DBI; use DBI;
use DBD::mysql; use DBD::mysql;
use DateTime; use DateTime;
use Sys::Syslog qw(:DEFAULT setlogsock); use Sys::Syslog qw(:DEFAULT setlogsock);
Sys::Syslog::setlogsock('unix'); Sys::Syslog::setlogsock('unix');
use Carp; use Carp;
use FindBin qw($RealBin $RealScript);
use lib "$FindBin::RealBin/../lib";
use WardenCommon;
################################################################################ ################################################################################
# GLOBAL VARIABLES # VARIABLES
################################################################################ ################################################################################
our $VERSION = "2.2"; our $VERSION = "2.2";
my $filename = basename($0); my $etc = "$FindBin::RealBin/../etc";
################################################################################ ################################################################################
# Functions # FUNCTIONS
################################################################################ ################################################################################
sub usage { 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; exit 1;
} }
sub help { 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 "-h print this text and exit\n";
print "-n hostname of receiver\n"; print "-n hostname of receiver\n";
print "-r client registration requestor\n"; print "-r client registration requestor\n";
...@@ -48,54 +50,6 @@ sub help { ...@@ -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 # MAIN
...@@ -111,31 +65,27 @@ my $type = $opt_t; ...@@ -111,31 +65,27 @@ my $type = $opt_t;
my $ip_net_client = $opt_i; my $ip_net_client = $opt_i;
my $help = $opt_h; my $help = $opt_h;
my $receive_own_events = "f"; my $receive_own_events = "f";
if ($opt_o) {$receive_own_events = "t"}
if ($opt_o) {
$receive_own_events = "t";
}
# catch help param # catch help param
if ($help) { if ($help) {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]))$/) { 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 # superuser controle
my $UID = $<; 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 # check parameters definition
switch () { switch () {
case {!defined $hostname} { print "ERROR: Parameter 'hostname' is not defined!\n"; exit 1; } case {!defined $hostname} {WardenCommon::errMsg("Parameter 'hostname' is not defined!")}
case {!defined $requestor} { print "ERROR: Parameter 'requestor' is not defined!\n"; exit 1; } case {!defined $requestor} {WardenCommon::errMsg("Parameter 'requestor' is not defined!")}
case {!defined $type} { print "ERROR: Parameter 'type' is not defined!\n"; exit 1; } case {!defined $type} {WardenCommon::errMsg("Parameter 'type' is not defined!")}
case {!defined $receive_own_events} { print "ERROR: Parameter 'receive_own_events' is not defined!\n"; exit 1; } case {!defined $receive_own_events} {WardenCommon::errMsg("Parameter 'receive_own_events' is not defined!")}
case {!defined $ip_net_client} { print "ERROR: Parameter 'ip_net_client' is not defined!\n"; exit 1; } case {!defined $ip_net_client} {WardenCommon::errMsg("Parameter 'ip_net_client' is not defined!")}
} }
# defined variables by script # defined variables by script
...@@ -144,9 +94,8 @@ my $registered = DateTime->now; ...@@ -144,9 +94,8 @@ my $registered = DateTime->now;
my $service = undef; my $service = undef;
my $description_tags = undef; my $description_tags = undef;
# read config file # 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 = undef;
our $SYSLOG_VERBOSE = undef; our $SYSLOG_VERBOSE = undef;
our $SYSLOG_FACILITY = undef; our $SYSLOG_FACILITY = undef;
...@@ -161,33 +110,24 @@ unless (do $conf_file) { ...@@ -161,33 +110,24 @@ unless (do $conf_file) {
} }
# connect to DB # 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 # 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; $sth->execute($hostname, $client_type, $type, $ip_net_client) or die "Cannot execute statement: " . $sth->errstr;
my $result = $sth->fetchrow(); my $result = $sth->fetchrow();
my $warden_server = trim(`hostname -f`); my $warden_server = WardenCommon::trim(`hostname -f`);
if (defined $result) { if (defined $result) {
sendMsg($SYSLOG, WardenCommon::sendMsg($SYSLOG, $SYSLOG_VERBOSE, $SYSLOG_FACILITY, "err", "Attempt to re-register the receiver [hostname: '$hostname', type: '$type', cidr: '$ip_net_client']");
$SYSLOG_VERBOSE, WardenCommon::errMsg("Receiver has already been registered at $warden_server in '$result'");
$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'");
} else { } 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) or die "Cannot execute statement: " . $sth->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) { if ($ret_val == 1) {
sendMsg($SYSLOG, WardenCommon::sendMsg($SYSLOG, $SYSLOG_VERBOSE, $SYSLOG_FACILITY, "info", "New receiver [hostname: '$hostname', type: '$type', cidr: '$ip_net_client'] was registered");
$SYSLOG_VERBOSE, WardenCommon::succMsg("Registration of receiver from $hostname was SUCCESSFUL!!!");
$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;
} else { } else {
print "Registration of receiver from $hostname FAILED!!!\n"; WardenCommon::errMsg("Registration of receiver from $hostname FAILED!!!");
exit 1;
} }
} }
...@@ -9,35 +9,37 @@ ...@@ -9,35 +9,37 @@
use strict; use strict;
use Getopt::Std; use Getopt::Std;
use Switch; use Switch;
use File::Basename;
use DBI; use DBI;
use DBD::mysql; use DBD::mysql;
use DateTime; use DateTime;
use Sys::Syslog qw(:DEFAULT setlogsock); use Sys::Syslog qw(:DEFAULT setlogsock);
Sys::Syslog::setlogsock('unix'); Sys::Syslog::setlogsock('unix');
use Carp; use Carp;
use FindBin qw($RealBin $RealScript);
use lib "$FindBin::RealBin/../lib";
use WardenCommon;
################################################################################ ################################################################################
# GLOBAL VARIABLES # VARIABLES
################################################################################ ################################################################################
our $VERSION = "2.2"; our $VERSION = "2.2";
my $filename = basename($0); my $etc = "$FindBin::RealBin/../etc";
################################################################################ ################################################################################
# Functions # FUNCTIONS
################################################################################ ################################################################################
sub usage { 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; exit 1;
} }
sub help { 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 "-h print this text and exit\n";
print "-n hostname of sender\n"; print "-n hostname of sender\n";
print "-r client registration requestor\n"; print "-r client registration requestor\n";
...@@ -48,54 +50,6 @@ sub help { ...@@ -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 # MAIN
...@@ -113,25 +67,24 @@ my $ip_net_client = $opt_i; ...@@ -113,25 +67,24 @@ my $ip_net_client = $opt_i;
my $help = $opt_h; my $help = $opt_h;
# catch help param # catch help param
if ($help) { if ($help) {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]))$/) { 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 # superuser controle
my $UID = $<; 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 # check parameters definition
switch () { switch () {
case {!defined $hostname} { print "ERROR: Parameter 'hostname' is not defined!\n"; exit 1; } case {!defined $hostname} {WardenCommon::errMsg("Parameter 'hostname' is not defined!")}
case {!defined $requestor} { print "ERROR: Parameter 'requestor' is not defined!\n"; exit 1; } case {!defined $requestor} {WardenCommon::errMsg("Parameter 'requestor' is not defined!")}
case {!defined $service} { print "ERROR: Parameter 'service' is not defined!\n"; exit 1; } case {!defined $service} {WardenCommon::errMsg("Parameter 'service' is not defined!")}
case {!defined $description_tags} { print "ERROR: Parameter 'description_tags' is not defined!\n"; exit 1; } case {!defined $description_tags} {WardenCommon::errMsg("Parameter 'description_tags' is not defined!")}
case {!defined $ip_net_client} { print "ERROR: Parameter 'ip_net_client' is not defined!\n"; exit 1; } case {!defined $ip_net_client} {WardenCommon::errMsg("Parameter 'ip_net_client' is not defined!")}
} }
# defined variables by method # defined variables by method
...@@ -141,7 +94,7 @@ my $type = undef; ...@@ -141,7 +94,7 @@ my $type = undef;
my $receive_own_events = undef; my $receive_own_events = undef;
# read config file # 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 = undef;
our $SYSLOG_VERBOSE = undef; our $SYSLOG_VERBOSE = undef;
our $SYSLOG_FACILITY = undef; our $SYSLOG_FACILITY = undef;
...@@ -156,33 +109,24 @@ unless (do $conf_file) { ...@@ -156,33 +109,24 @@ unless (do $conf_file) {
} }
# connect to DB # 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 # 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 $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; $sth->execute($hostname, $service, $client_type, $ip_net_client) or die "Cannot execute statement: " . $sth->errstr;
my $result = $sth->fetchrow(); my $result = $sth->fetchrow();
my $warden_server = trim(`hostname -f`); my $warden_server = WardenCommon::trim(`hostname -f`);
if (defined $result) { if (defined $result) {
sendMsg($SYSLOG, WardenCommon::sendMsg($SYSLOG, $SYSLOG_VERBOSE, $SYSLOG_FACILITY, "err", "Attempt to re-register the sender [hostname: '$hostname', service: '$service', cidr: '$ip_net_client']");
$SYSLOG_VERBOSE, WardenCommon::errMsg("Sender has already been registered at $warden_server in '$result'");
$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'");
} else { } 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) or die "Cannot execute statement: " . $sth->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) { if ($ret_val == 1) {
sendMsg($SYSLOG, WardenCommon::sendMsg($SYSLOG, $SYSLOG_VERBOSE, $SYSLOG_FACILITY, "info", "New sender [hostname: '$hostname', service: '$service', cidr: '$ip_net_client'] was registered");
$SYSLOG_VERBOSE, WardenCommon::succMsg("Registration of sender from $hostname was SUCCESSFUL!!!");
$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;
} else { } else {
print "Registration of sender from $hostname FAILED!!!\n"; WardenCommon::errMsg("Registration of sender from $hostname FAILED!!!");
exit 1;
} }
} }
...@@ -9,92 +9,47 @@ ...@@ -9,92 +9,47 @@
use strict; use strict;
use Getopt::Std; use Getopt::Std;
use Switch; use Switch;
use File::Basename;
use DBI; use DBI;
use DBD::mysql; use DBD::mysql;
use DateTime; use DateTime;
use Sys::Syslog qw(:DEFAULT setlogsock); use Sys::Syslog qw(:DEFAULT setlogsock);
Sys::Syslog::setlogsock('unix'); Sys::Syslog::setlogsock('unix');
use Carp; use Carp;
use FindBin qw($RealBin $RealScript);
use lib "$FindBin::RealBin/../lib";
use WardenCommon;
################################################################################ ################################################################################
# GLOBAL VARIABLES # VARIABLES
################################################################################ ################################################################################
our $VERSION = "2.2"; our $VERSION = "2.2";
my $filename = basename($0); my $etc = "$FindBin::RealBin/../etc";
################################################################################ ################################################################################
# Functions # FUNCTIONS
################################################################################ ################################################################################
sub usage { sub usage {
print "Usage: $filename [-h -i <client_id>]\n"; print "Usage: $RealScript [-h -i <client_id>]\n";
exit 1; exit 1;
} }
sub help { 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 "-h print this text and exit\n";
print "-i client_id for unregistration\n"; print "-i client_id for unregistration\n";
exit 0; 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 # MAIN
#------------------------------------------------------------------------------- ################################################################################
our ($opt_h, $opt_i); our ($opt_h, $opt_i);
if ($#ARGV == -1) {usage} if ($#ARGV == -1) {usage}
...@@ -104,22 +59,17 @@ my $client_id = $opt_i; ...@@ -104,22 +59,17 @@ my $client_id = $opt_i;
my $help = $opt_h; my $help = $opt_h;
# catch help param # catch help param
if ($help) { if ($help) {help}
help;
}
# superuser controle # superuser controle
my $UID = $<; 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 # check parameters definition
if (!defined $client_id) { if (!defined $client_id) {WardenCommon::errMsg("Parameter 'client_id' is not defined!")}
print "ERROR: Parameter 'client_id' is not defined!\n";
exit 1;
}
# read config file # 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 = undef;
our $SYSLOG_VERBOSE = undef; our $SYSLOG_VERBOSE = undef;
our $SYSLOG_FACILITY = undef; our $SYSLOG_FACILITY = undef;
...@@ -134,22 +84,19 @@ unless (do $conf_file) { ...@@ -134,22 +84,19 @@ unless (do $conf_file) {
} }
# connect to DB # 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 # 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; 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; $sth->execute($client_id) or die "Cannot execute statement: " . $sth->errstr;
my ($id, $hostname, $service, $client_type, $type) = $sth->fetchrow(); 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 # delete registered client
if (!defined $id) { if (!defined $id) {
sendMsg($SYSLOG, WardenCommon::sendMsg($SYSLOG, $SYSLOG_VERBOSE, $SYSLOG_FACILITY, "err", "Attempt to delete unregister client (client_id: #$client_id)");
$SYSLOG_VERBOSE, WardenCommon::errMsg("Client (#$client_id) is not registered at $warden_server");
$SYSLOG_FACILITY,
"err",
"Attempt to delete unregister client (client_id: #$client_id)");
errMsg("Client (#$client_id) is not registered at $warden_server");
} else { } else {
if ($client_type eq 's') { if ($client_type eq 's') {
$sth = $DBH->prepare("DELETE FROM clients WHERE client_id = ?;") or die "Cannot prepare statement: " . $DBH->errstr; $sth = $DBH->prepare("DELETE FROM clients WHERE client_id = ?;") or die "Cannot prepare statement: " . $DBH->errstr;
...@@ -157,31 +104,19 @@ if (!defined $id) { ...@@ -157,31 +104,19 @@ if (!defined $id) {
if ($ret_val == 1) { 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; $sth->execute($hostname, $service) or die "Cannot execute statement: " . $sth->errstr;
sendMsg($SYSLOG, 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");
$SYSLOG_VERBOSE, WardenCommon::succMsg("Unregistration of sender client (client_id: #$client_id) was SUCCESSFUL!!!");
$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;
} else { } else {
print "Unregistration of sender client (client_id: #$client_id) FAILED!!!\n"; WardenCommon::errMsg("Unregistration of sender client (client_id: #$client_id) FAILED!!!");
exit 1;
} }
} else { } else {
$sth = $DBH->prepare("DELETE FROM clients WHERE client_id = ?;") or die "Cannot prepare statement: " . $DBH->errstr; $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; my $ret_val = $sth->execute($client_id) or die "Cannot execute statement: " . $sth->errstr;
if ($ret_val == 1) { if ($ret_val == 1) {
sendMsg($SYSLOG, WardenCommon::sendMsg($SYSLOG, $SYSLOG_VERBOSE, $SYSLOG_FACILITY, "info", "Receiver '$hostname' [client_id: '$client_id', type: '$type'] was deleted from $warden_server");
$SYSLOG_VERBOSE, WardenCommon::succMsg("Unregistration of receiver client (client_id: #$client_id) was SUCCESSFUL!!!");
$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;
} else { } else {
print "Unregistration of receiver client (client_id: #$client_id) FAILED!!!\n"; WardenCommon::errMsg("Unregistration of receiver client (client_id: #$client_id) FAILED!!!");
exit 1;
} }
} }
} }
...@@ -13,22 +13,25 @@ use DBI; ...@@ -13,22 +13,25 @@ use DBI;
use DBD::mysql; use DBD::mysql;
use Sys::Syslog qw(:DEFAULT setlogsock); use Sys::Syslog qw(:DEFAULT setlogsock);
Sys::Syslog::setlogsock('unix'); Sys::Syslog::setlogsock('unix');
use File::Basename;
use Net::CIDR::Lite; use Net::CIDR::Lite;
use DateTime; use DateTime;
use MIME::Base64; use MIME::Base64;
use Crypt::X509; use Crypt::X509;
use SOAP::Lite; use SOAP::Lite;
use Carp; use Carp;
use FindBin qw($RealBin $RealScript);
use lib "$FindBin::RealBin/../lib";
use WardenCommon;
our $VERSION = "2.2"; our $VERSION = "2.2";
my $etc = "$FindBin::RealBin/../etc";
################################################################################ ################################################################################
# READING OF CONFIGURATION VARIABLES # READING OF CONFIGURATION VARIABLES
################################################################################ ################################################################################
my $conf_file = "$etc/warden-server.conf";
my $conf_file = "/opt/warden-server/etc/warden-server.conf"; # path is updated by install.sh
our $SYSLOG = undef; our $SYSLOG = undef;
our $SYSLOG_VERBOSE = undef; our $SYSLOG_VERBOSE = undef;
our $SYSLOG_FACILITY = undef; our $SYSLOG_FACILITY = undef;
...@@ -47,11 +50,12 @@ unless (do $conf_file) { ...@@ -47,11 +50,12 @@ unless (do $conf_file) {
} }
################################################################################ ################################################################################
# VARIABLES # VARIABLES
################################################################################ ################################################################################
our $DBH = DBI->connect("DBI:mysql:database=$DB_NAME;host=$DB_HOST", $DB_USER, $DB_PASS, {RaiseError => 1, mysql_auto_reconnect => 1})
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"; || die "Could not connect to database: $DBH->errstr";
################################################################################ ################################################################################
...@@ -68,7 +72,7 @@ sub sendMsg ...@@ -68,7 +72,7 @@ sub sendMsg
my $severity = shift; my $severity = shift;
my $syslog_msg = shift; my $syslog_msg = shift;
my $soap_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")) { if ($SYSLOG_VERBOSE == 1 && ($severity eq "err" || $severity eq "debug")) {
$syslog_msg .= "\nStack info: " . Carp::longmess(); $syslog_msg .= "\nStack info: " . Carp::longmess();
...@@ -80,8 +84,7 @@ sub sendMsg ...@@ -80,8 +84,7 @@ sub sendMsg
Sys::Syslog::closelog(); Sys::Syslog::closelog();
} }
if (defined $soap_msg) { if (defined $soap_msg) {die SOAP::Fault->faultstring($soap_msg)};
die SOAP::Fault->faultstring($soap_msg);
} }
} # End of sendMsg } # End of sendMsg
...@@ -183,6 +186,7 @@ sub authorizeClient ...@@ -183,6 +186,7 @@ sub authorizeClient
} # END of authorizeClient } # END of authorizeClient
################################################################################ ################################################################################
# SOAP Functions # SOAP Functions
################################################################################ ################################################################################
......
...@@ -16,9 +16,20 @@ use Carp; ...@@ -16,9 +16,20 @@ use Carp;
our $VERSION = "2.2"; 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 sub errMsg
{ {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment