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

pridan mechanismus pro re-aktivaci jiz zaregistrovaneho ale zneplatneneho...

pridan mechanismus pro re-aktivaci jiz zaregistrovaneho ale zneplatneneho klienta s moznosti zmeny requestora, description_tags ci receive_own_events; uprava formatu hlasek;
parent 8ec37ff8
No related branches found
No related tags found
No related merge requests found
...@@ -137,41 +137,64 @@ my $valid = "t"; ...@@ -137,41 +137,64 @@ my $valid = "t";
my $registered = DateTime->now; my $registered = DateTime->now;
my $service = undef; my $service = undef;
my $description_tags = undef; my $description_tags = undef;
my $warden_server = WardenCommon::trim(`hostname -f`);
# connect to DB # connect to DB
my $dbh = WardenCommon::connectDB($WardenCommon::DB_NAME, $WardenCommon::DB_HOST, $WardenCommon::DB_USER, $WardenCommon::DB_PASS); my $dbh = WardenCommon::connectDB($WardenCommon::DB_NAME, $WardenCommon::DB_HOST, $WardenCommon::DB_USER, $WardenCommon::DB_PASS);
my $warden_server = WardenCommon::trim(`hostname -f`); # register receiver
my ($sth, $client_id_db, $hostname_db, $registered_db, $requestor_db, $client_type_db, $type_db, $receive_own_events_db, $ip_net_client_db, $valid_db);
# check if user defined client_id wasn't used # check if user client_id is specified and prepare statement according to this
my ($sth, $client_id_db, $registered_db);
if (defined $client_id) { if (defined $client_id) {
$sth = $dbh->prepare("SELECT client_id, registered FROM clients WHERE client_id = ?;") or die "Cannot prepare statement: " . $dbh->errstr; $sth = $dbh->prepare("SELECT client_id, hostname, registered, requestor, client_type, type, receive_own_events, ip_net_client, valid FROM clients WHERE client_id = ?;") 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;
($client_id_db, $registered_db) = $sth->fetchrow();
if (defined $client_id_db) {
sendMsg("err", "Attempt to use client_id (#$client_id_db) registered at Warden server '$warden_server' in '$registered_db'");
WardenCommon::errMsg("Client with ID '$client_id_db' has been already registered at Warden server '$warden_server' in '$registered_db'");
}
}
# check if receiver has been already registered
$sth = $dbh->prepare("SELECT client_id, 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;
($client_id_db, $registered_db) = $sth->fetchrow();
if (defined $client_id_db) {
sendMsg("err", "Attempt to re-register receiver (#$client_id_db) registered at Warden server '$warden_server' in '$registered_db'");
WardenCommon::errMsg("Receiver has been already registered at Warden server '$warden_server' in '$registered_db' with ID '$client_id_db'");
} else { } else {
# register receiver $sth = $dbh->prepare("SELECT client_id, hostname, registered, requestor, client_type, type, receive_own_events, ip_net_client, valid 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;
}
($client_id_db, $hostname_db, $registered_db, $requestor_db, $client_type_db, $type_db, $receive_own_events_db, $ip_net_client_db, $valid_db) = $sth->fetchrow();
# register receiver without user specified client_id
if (!defined $client_id_db) {
$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($client_id, $hostname, $registered, $requestor, $service, $client_type, $type, $receive_own_events, $description_tags, $ip_net_client, $valid) or die "Cannot execute statement: " . $sth->errstr; my $ret_val = $sth->execute($client_id, $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) { if ($ret_val == 1) {
my $last_insert_id = $dbh->last_insert_id(undef, undef, "clients", undef); if (!defined $client_id) {
sendMsg("info", "New receiver [ID: '$last_insert_id', Hostname: '$hostname', Requestor: '$requestor', Type: '$type', ROE: '$receive_own_events', CIDR: '$ip_net_client'] has been registered"); $client_id = $dbh->last_insert_id(undef, undef, "clients", undef);
WardenCommon::succMsg("Registration of receiver (#$last_insert_id) was SUCCESSFUL!!!"); }
sendMsg("info", "New receiver [ID: '$client_id', Hostname: '$hostname', Requestor: '$requestor', Type: '$type', ROE: '$receive_own_events', CIDR: '$ip_net_client'] was registered");
WardenCommon::succMsg("Registration of receiver (#$client_id) was SUCCESSFUL!");
} else { } else {
WardenCommon::errMsg("Registration of receiver $hostname ($type) FAILED!!!"); WardenCommon::errMsg("Registration of receiver $hostname ($service) FAILED!");
} }
# re-activate old sender if is already registered but is not valid
} elsif (defined $client_id_db && $hostname eq $hostname_db && $client_type eq $client_type_db && $type eq $type_db && $ip_net_client eq $ip_net_client_db && $valid_db eq 'f') {
# change requestor if is needed
if ($requestor ne $requestor_db) {
$sth = $dbh->prepare("UPDATE clients SET requestor = ? WHERE client_id = ?;") or die "Cannot prepare statement: " . $dbh->errstr;
$sth->execute($requestor, $client_id_db) or die "Cannot execute statement: " . $sth->errstr;
}
# change receive_own_events if is needed
if ($receive_own_events ne $receive_own_events_db) {
$sth = $dbh->prepare("UPDATE clients SET receive_own_events = ? WHERE client_id = ?;") or die "Cannot prepare statement: " . $dbh->errstr;
$sth->execute($receive_own_events, $client_id_db) or die "Cannot execute statement: " . $sth->errstr;
}
# reactivate old receiver
$sth = $dbh->prepare("UPDATE clients SET valid = 't' WHERE client_id = ?;") or die "Cannot prepare statement: " . $dbh->errstr;
my $ret_val = $sth->execute($client_id_db) or die "Cannot execute statement: " . $sth->errstr;
if ($ret_val == 1) {
sendMsg("info", "Receiver [ID: '$client_id_db', Hostname: '$hostname', Requestor: '$requestor', Type: '$type', ROE: '$receive_own_events', CIDR: '$ip_net_client'] was re-activated");
WardenCommon::succMsg("Re-activation of receiver (#$client_id_db) was SUCCESSFUL!");
} else {
WardenCommon::errMsg("Re-activation of receiver (#$client_id_db) FAILED!");
}
# receiver is already registered and valid - send error msg
} elsif (defined $client_id_db && $hostname eq $hostname_db && $client_type eq $client_type_db && $type eq $type_db && $ip_net_client eq $ip_net_client_db && $valid_db eq 't') {
sendMsg("err", "Attempt to register receiver (#$client_id_db) registered at Warden server '$warden_server' in '$registered_db'");
WardenCommon::errMsg("Receiver has been already registered at Warden server '$warden_server' in '$registered_db' with ID '$client_id_db'");
# user specified client_id is already used - send error msg
} else {
sendMsg("err", "Attempt to use client_id (#$client_id_db) registered at Warden server '$warden_server' in '$registered_db'");
WardenCommon::errMsg("Client ID (#$client_id_db) has been already used at Warden server '$warden_server' in '$registered_db'");
} }
# cleanup section # cleanup section
......
...@@ -133,41 +133,64 @@ my $valid = "t"; ...@@ -133,41 +133,64 @@ my $valid = "t";
my $registered = DateTime->now; my $registered = DateTime->now;
my $type = undef; my $type = undef;
my $receive_own_events = undef; my $receive_own_events = undef;
my $warden_server = WardenCommon::trim(`hostname -f`);
# connect to DB # connect to DB
my $dbh = WardenCommon::connectDB($WardenCommon::DB_NAME, $WardenCommon::DB_HOST, $WardenCommon::DB_USER, $WardenCommon::DB_PASS); my $dbh = WardenCommon::connectDB($WardenCommon::DB_NAME, $WardenCommon::DB_HOST, $WardenCommon::DB_USER, $WardenCommon::DB_PASS);
my $warden_server = WardenCommon::trim(`hostname -f`); # register sender
my ($sth, $client_id_db, $hostname_db, $registered_db, $requestor_db, $service_db, $client_type_db, $description_tags_db, $ip_net_client_db, $valid_db);
# check if user defined client_id wasn't used # check if user client_id is specified and prepare statement according to this
my ($sth, $client_id_db, $registered_db);
if (defined $client_id) { if (defined $client_id) {
$sth = $dbh->prepare("SELECT client_id, registered FROM clients WHERE client_id = ?;") or die "Cannot prepare statement: " . $dbh->errstr; $sth = $dbh->prepare("SELECT client_id, hostname, registered, requestor, service, client_type, description_tags, ip_net_client, valid FROM clients WHERE client_id = ?;") 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;
($client_id_db, $registered_db) = $sth->fetchrow();
if (defined $client_id_db) {
sendMsg("err", "Attempt to use client_id (#$client_id_db) registered at Warden server '$warden_server' in '$registered_db'");
WardenCommon::errMsg("Client with ID '$client_id_db' has been already registered at Warden server '$warden_server' in '$registered_db'");
}
}
# check if sender has been already registered
$sth = $dbh->prepare("SELECT client_id, 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;
($client_id_db, $registered_db) = $sth->fetchrow();
if (defined $client_id_db) {
sendMsg("err", "Attempt to re-register sender (#$client_id_db) registered at Warden server '$warden_server' in '$registered_db'");
WardenCommon::errMsg("Sender has been already registered at Warden server '$warden_server' in '$registered_db' with ID '$client_id_db'");
} else { } else {
# register sender $sth = $dbh->prepare("SELECT client_id, hostname, registered, requestor, service, client_type, description_tags, ip_net_client, valid 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;
}
($client_id_db, $hostname_db, $registered_db, $requestor_db, $service_db, $client_type_db, $description_tags_db, $ip_net_client_db, $valid_db) = $sth->fetchrow();
# register sender without user specified client_id
if (!defined $client_id_db) {
$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($client_id, $hostname, $registered, $requestor, $service, $client_type, $type, $receive_own_events, $description_tags, $ip_net_client, $valid) or die "Cannot execute statement: " . $sth->errstr; my $ret_val = $sth->execute($client_id, $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) { if ($ret_val == 1) {
my $last_insert_id = $dbh->last_insert_id(undef, undef, "clients", undef); if (!defined $client_id) {
sendMsg("info", "New sender [ID: '$last_insert_id', Hostname: '$hostname', Requestor: '$requestor', Service: '$service', Description_tags: '$description_tags', CIDR: '$ip_net_client'] has been registered"); $client_id = $dbh->last_insert_id(undef, undef, "clients", undef);
WardenCommon::succMsg("Registration of sender (#$last_insert_id) was SUCCESSFUL!!!"); }
sendMsg("info", "New sender [ID: '$client_id', Hostname: '$hostname', Requestor: '$requestor', Service: '$service', Description_tags: '$description_tags', CIDR: '$ip_net_client'] was registered");
WardenCommon::succMsg("Registration of sender (#$client_id) was SUCCESSFUL!");
} else { } else {
WardenCommon::errMsg("Registration of sender $hostname ($service) FAILED!!!"); WardenCommon::errMsg("Registration of sender $hostname ($service) FAILED!");
} }
# re-activate old sender if is already registered but is not valid
} elsif (defined $client_id_db && $hostname eq $hostname_db && $service eq $service_db && $client_type eq $client_type_db && $ip_net_client eq $ip_net_client_db && $valid_db eq 'f') {
# change requestor if is needed
if ($requestor ne $requestor_db) {
$sth = $dbh->prepare("UPDATE clients SET requestor = ? WHERE client_id = ?;") or die "Cannot prepare statement: " . $dbh->errstr;
$sth->execute($requestor, $client_id_db) or die "Cannot execute statement: " . $sth->errstr;
}
# change description_tags if is needed
if ($description_tags ne $description_tags_db) {
$sth = $dbh->prepare("UPDATE clients SET description_tags = ? WHERE client_id = ?;") or die "Cannot prepare statement: " . $dbh->errstr;
$sth->execute($description_tags, $client_id_db) or die "Cannot execute statement: " . $sth->errstr;
}
# re-activate old sender
$sth = $dbh->prepare("UPDATE clients SET valid = 't' WHERE client_id = ?;") or die "Cannot prepare statement: " . $dbh->errstr;
my $ret_val = $sth->execute($client_id_db) or die "Cannot execute statement: " . $sth->errstr;
if ($ret_val == 1) {
sendMsg("info", "Sender [ID: '$client_id_db', Hostname: '$hostname', Requestor: '$requestor', Service: '$service', Description_tags: '$description_tags', CIDR: '$ip_net_client'] was re-activated");
WardenCommon::succMsg("Re-activation of sender (#$client_id_db) was SUCCESSFUL! (Client's old data are still obsoleted.)");
} else {
WardenCommon::errMsg("Re-activation of sender (#$client_id_db) FAILED!");
}
# sender is already registered and valid - send error msg
} elsif (defined $client_id_db && $hostname eq $hostname_db && $service eq $service_db && $client_type eq $client_type_db && $ip_net_client eq $ip_net_client_db && $valid_db eq 't') {
sendMsg("err", "Attempt to register sender (#$client_id_db) registered at Warden server '$warden_server' in '$registered_db'");
WardenCommon::errMsg("Sender has been already registered at Warden server '$warden_server' in '$registered_db' with ID '$client_id_db'");
# user specified client_id is already used - send error msg
} else {
sendMsg("err", "Attempt to use client_id (#$client_id_db) registered at Warden server '$warden_server' in '$registered_db'");
WardenCommon::errMsg("Client ID (#$client_id_db) has been already used at Warden server '$warden_server' in '$registered_db'");
} }
# cleanup section # cleanup section
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment