Is now possible to delete services from the monitor.
This commit is contained in:
parent
0c945e1177
commit
d6812f56bc
@ -4,7 +4,17 @@ use v5.30.0;
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use Carp qw/confess/;
|
||||
|
||||
use Cualsea::Server::Loop;
|
||||
|
||||
my $loop = Cualsea::Server::Loop->new;
|
||||
$loop->run while 1;
|
||||
|
||||
while (1) {
|
||||
try {
|
||||
$loop->run;
|
||||
} catch {
|
||||
confess $_;
|
||||
};
|
||||
}
|
||||
|
@ -23,8 +23,7 @@ sub handle_add {
|
||||
my $init = $params{init};
|
||||
my $pidfile = $params{pidfile};
|
||||
my $binpath = $params{binpath};
|
||||
if ( !-e $binpath || $init ne 'sysvinit' || !_validate_init_name($name) )
|
||||
{
|
||||
if ( !-e $binpath || $init ne 'sysvinit' || !_validate_init_name($name) ) {
|
||||
return {
|
||||
is_error => 1,
|
||||
desc => "Parameters didn't pass contraints on add",
|
||||
@ -39,11 +38,11 @@ INSERT INTO services (name, init, pidfile, binpath) VALUES (?, ?, ?, ?);
|
||||
EOF
|
||||
};
|
||||
if ($@) {
|
||||
if ($@ =~ /UNIQUE/i) {
|
||||
if ( $@ =~ /UNIQUE/i ) {
|
||||
my $return_value = {
|
||||
status => 400,
|
||||
status => 400,
|
||||
is_error => 1,
|
||||
desc => 'Endpoint already exists.',
|
||||
desc => 'Endpoint already exists.',
|
||||
};
|
||||
return $return_value;
|
||||
}
|
||||
@ -56,6 +55,34 @@ EOF
|
||||
};
|
||||
}
|
||||
|
||||
sub handle_del {
|
||||
my %params = @_;
|
||||
my $name = $params{name};
|
||||
my $dbh = Cualsea::Server::DB->dbh();
|
||||
|
||||
my $service = $dbh->selectrow_hashref( <<"EOF", undef, $name );
|
||||
SELECT name FROM services WHERE name = ?
|
||||
EOF
|
||||
|
||||
if ( !defined $service ) {
|
||||
return {
|
||||
is_error => 1,
|
||||
desc => 'Service not found.',
|
||||
status => 404,
|
||||
};
|
||||
}
|
||||
|
||||
$dbh->do( <<'EOF', undef, $name );
|
||||
DELETE FROM services WHERE name = ?
|
||||
EOF
|
||||
|
||||
return {
|
||||
is_error => 0,
|
||||
desc => "Succesful deletion of init service $name.",
|
||||
status => 200,
|
||||
};
|
||||
}
|
||||
|
||||
my %COMMANDS = (
|
||||
add => {
|
||||
params => [
|
||||
@ -81,6 +108,7 @@ my %COMMANDS = (
|
||||
name => { type => Str },
|
||||
}
|
||||
),
|
||||
handle => \&handle_del
|
||||
},
|
||||
report => {
|
||||
params => [],
|
||||
@ -149,6 +177,7 @@ sub new {
|
||||
my $message = $message_manager->read_message;
|
||||
if ( !$self->check_if_user_has_permissions( socket => $socket ) ) {
|
||||
$self->write_no_permission( message_manager => $message_manager );
|
||||
return;
|
||||
}
|
||||
if ( !$self->check_is_command( message => $message ) ) {
|
||||
$self->write_malformed( message_manager => $message_manager );
|
||||
@ -186,9 +215,12 @@ sub new {
|
||||
# We want to forget about $params arrayref
|
||||
# and previous hash as soon as possible.
|
||||
%params = ();
|
||||
for my $param_info_index ( scalar @$params_info ? (0..$#$params_info) : () ) {
|
||||
for my $param_info_index (
|
||||
scalar @$params_info ? ( 0 .. $#$params_info ) : () )
|
||||
{
|
||||
|
||||
my $param_info = $params_info->[$param_info_index];
|
||||
|
||||
# May not come defined,
|
||||
if ( $param_info_index > scalar $#$params ) {
|
||||
last;
|
||||
@ -229,12 +261,16 @@ sub new {
|
||||
my $socket = $params{socket};
|
||||
my ( $pid, $uid, $gid ) = unpack 'LLL', $socket->sockopt(SO_PEERCRED);
|
||||
my $user = getpwuid($uid);
|
||||
while ( my ( $name, undef, undef, $members ) = getgrent() ) {
|
||||
if ( $name eq 'cualsea' ) {
|
||||
return any { $_ eq $user } split ',', $members;
|
||||
last;
|
||||
state $name = '';
|
||||
state $members = '';
|
||||
if (!$name || !$members) {
|
||||
while ( ( $name, undef, undef, $members ) = getgrent() ) {
|
||||
if ( $name eq 'cualsea' ) {
|
||||
last;
|
||||
}
|
||||
}
|
||||
}
|
||||
return any { $_ eq $user } split ',', $members;
|
||||
}
|
||||
}
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user