Add addPostVars/delPostVars actions (#1978)

v2.11
Clément OUDOT 4 years ago
parent 0e40bab934
commit 1dfbbe9fb3
  1. 33
      lemonldap-ng-common/scripts/lemonldap-ng-cli
  2. 69
      lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Cli.pm

@ -22,7 +22,10 @@ for ( my $i = 0 ; $i < @ARGV ; $i++ ) {
$action ||= "help";
if ( $action =~ /^(?:[gs]et|del|(?:add|del)Key|save|restore|rollback)$/ ) {
if ( $action =~
/^(?:[gs]et|del|(?:add|del)Key|(?:add|del)PostVars|save|restore|rollback)$/
)
{
eval { require Lemonldap::NG::Manager::Cli; };
die "Manager libraries not available, aborting ($@)" if ($@);
Lemonldap::NG::Manager::Cli->run(@ARGV);
@ -40,19 +43,21 @@ sub help {
print STDERR qq{Usage: $0 <options> action <parameters>
Available actions:
- help : print this
- info : get currentconfiguration info
- update-cache : force configuration cache to be updated
- test-email <destination> : send a test email
- get <keys> : get values of parameters
- set <key> <value> : set parameter(s) value(s)
- del <keys> : delete parameters
- addKey <key> <subkey> <value> : add or set a subkey in a parameter
- delKey <key> <subkey> : delete subkey of a parameter
- save : export configuration to STDOUT
- restore - : import configuration from STDIN
- restore <file> : import configuration from file
- rollback : restore previous configuration
- help : print this
- info : get currentconfiguration info
- update-cache : force configuration cache to be updated
- test-email <destination> : send a test email
- get <key> : get values of parameters
- set <key> <value> : set parameter(s) value(s)
- del <key> : delete parameters
- addKey <key> <subkey> <value> : add or set a subkey in a parameter
- delKey <key> <subkey> : delete subkey of a parameter
- addPostVars <host> <uri> <key> <value> : add post vars for form replay
- delPostVars <host> <uri> <key> : delete post vars for form replay
- save : export configuration to STDOUT
- restore - : import configuration from STDIN
- restore <file> : import configuration from file
- rollback : restore previous configuration
Options:
- yes <0|1> : accept confirmation prompt automatically

@ -247,6 +247,68 @@ sub delKey {
return $self->_save($new);
}
sub addPostVars {
my $self = shift;
unless ( @_ % 4 == 0 ) {
die 'usage: "addPostVars (?:vhost uri key value)+';
}
my @list;
while (@_) {
my $vhost = shift;
my $uri = shift;
my $key = shift;
my $value = shift;
$self->logger->info(
"CLI: Append post vars $key $value to URI $uri for vhost $vhost");
push @list, [ $vhost, $uri, $key, $value ];
}
require Clone;
my $new = Clone::clone( $self->mgr->hLoadedPlugins->{conf}->currentConf );
foreach my $el (@list) {
$new->{post}->{ $el->[0] }->{ $el->[1] }->{vars} = []
unless ( defined $new->{post}->{ $el->[0] }->{ $el->[1] }->{vars} );
push(
@{ $new->{post}->{ $el->[0] }->{ $el->[1] }->{vars} },
[ $el->[2], $el->[3] ]
);
}
return $self->_save($new);
}
sub delPostVars {
my $self = shift;
unless ( @_ % 3 == 0 ) {
die 'usage: "delPostVars (?:vhost uri key)+';
}
my @list;
while (@_) {
my $vhost = shift;
my $uri = shift;
my $key = shift;
$self->logger->info(
"CLI: Delete post vars $key from URI $uri for vhost $vhost");
push @list, [ $vhost, $uri, $key ];
}
require Clone;
my $new = Clone::clone( $self->mgr->hLoadedPlugins->{conf}->currentConf );
foreach my $el (@list) {
$new->{post}->{ $el->[0] }->{ $el->[1] }->{vars} = []
unless ( defined $new->{post}->{ $el->[0] }->{ $el->[1] }->{vars} );
for (
my $i = 0 ;
$i <= $#{ $new->{post}->{ $el->[0] }->{ $el->[1] }->{vars} } ;
$i++
)
{
delete( $new->{post}->{ $el->[0] }->{ $el->[1] }->{vars}->[$i] )
if (
$new->{post}->{ $el->[0] }->{ $el->[1] }->{vars}->[$i]->[0] eq
$el->[2] );
}
}
return $self->_save($new);
}
sub lastCfg {
my ($self) = @_;
$self->logger->info("CLI: Retrieve last conf.");
@ -450,11 +512,12 @@ sub run {
die 'nothing to do, aborting';
}
my $action = shift;
unless (
$action =~ /^(?:get|set|del|addKey|delKey|save|restore|rollback)$/ )
unless ( $action =~
/^(?:get|set|del|addKey|delKey|addPostVars|delPostVars|save|restore|rollback)$/
)
{
die
"Unknown action $action. Only get, set, del, addKey, delKey, save, restore, rollback allowed";
"Unknown action $action. Only get, set, del, addKey, delKey, addPostVars, delPostVars, save, restore, rollback allowed";
}
unless ( $action eq "restore" ) {

Loading…
Cancel
Save