the-bastion/bin/plugin/group-owner/groupDelEgressKey
2021-02-17 10:03:40 +01:00

62 lines
1.8 KiB
Perl
Executable file

#! /usr/bin/env perl
# vim: set filetype=perl ts=4 sw=4 sts=4 et:
use common::sense;
use File::Basename;
use lib dirname(__FILE__) . '/../../../lib/perl';
use OVH::Result;
use OVH::Bastion;
use OVH::Bastion::Plugin qw( :DEFAULT help );
my $remainingOptions = OVH::Bastion::Plugin::begin(
argv => \@ARGV,
header => "Remove a bastion group egress key",
options => {
"group=s" => \my $group,
"id=s" => \my $id,
},
helptext => <<"EOF",
Remove a bastion group egress key
Usage: --osh SCRIPT_NAME <--group GROUP> <--id ID>
--group GROUP Name of the group to delete the egress key from
--id ID Specify the key ID to delete, you can get it with groupInfo
EOF
);
#
# code
#
my $fnret;
if (!$id || !$group) {
help();
osh_exit 'ERR_MISSING_PARAMETER', "Missing the --group or --id parameter";
}
$fnret = OVH::Bastion::is_valid_group_and_existing(group => $group, groupType => "key");
$fnret or osh_exit($fnret);
# get returned untainted value
$group = $fnret->value->{'group'};
my $shortGroup = $fnret->value->{'shortGroup'};
if (!OVH::Bastion::is_group_owner(account => $self, group => $shortGroup, superowner => 1)) {
osh_exit 'ERR_NOT_GROUP_OWNER', "You must be an owner to delete an egress group key";
}
$fnret = OVH::Bastion::get_group_keys(group => $group);
my @matchingKeys = grep { $fnret->value->{'keys'}{$_}{'id'} eq $id } @{$fnret->value->{'sortedKeys'} || []};
if (!@matchingKeys) {
osh_exit 'ERR_INVALID_PARAMETER', "Couldn't find any key with the ID you specified ($id) in group $shortGroup";
}
my @command = qw{ sudo -n -u keykeeper -- /usr/bin/env perl -T };
push @command, $OVH::Bastion::BASEPATH . '/bin/helper/osh-groupDelEgressKey';
push @command, "--group", $group, "--id", $id;
osh_exit(OVH::Bastion::helper(cmd => \@command));