Implemented variable substitution in user & group handling.

This commit is contained in:
László Valkó 2018-10-14 21:30:19 +02:00
parent 6bddba73ef
commit 50fb75ba64

View file

@ -3330,15 +3330,20 @@ sub handle_directory ($$$$$$)
return 1;
}
sub handle_group ($$$)
sub handle_group ($$$$)
{
my ($pkg, $counters, $update) = @_;
my ($pkg, $vars, $counters, $update) = @_;
my $name = $$pkg{name};
my $hostname = $ENV{'COMPUTERNAME'};
my $groupname = $$pkg{'group'};
my $members = $$pkg{'members'};
$members = [] unless defined $members;
if (defined $vars) {
$groupname = substitute_variables($vars, $groupname, 0, undef, 'global')
if $groupname =~ /%[^%]*%/o;
$members = [map { $_ =~ /%[^%]*%/o ? substitute_variables($vars, $_, 0, undef, 'global') : $_ } @$members];
}
my $sourcefile = $ENV{systemroot}.'\\System32\\wbem\\wmic.exe';
my $paramlist = ['path', 'win32_groupuser', 'where', '(groupcomponent="win32_group.name=\''.$groupname.'\',domain=\''.$hostname.'\'")'];
@ -3402,9 +3407,9 @@ sub handle_group ($$$)
return 1;
}
sub handle_user ($$$)
sub handle_user ($$$$)
{
my ($pkg, $counters, $update) = @_;
my ($pkg, $vars, $counters, $update) = @_;
my $name = $$pkg{name};
my $username = $$pkg{'user'};
@ -3419,6 +3424,12 @@ sub handle_user ($$$)
$fullname = '' unless defined $fullname;
my $pwexpires = $$pkg{'pwexpires'};
$pwexpires = defined $pwexpires && $pwexpires;
if (defined $vars) {
$username = substitute_variables($vars, $username, 0, undef, 'global')
if $username =~ /%[^%]*%/o;
$fullname = substitute_variables($vars, $fullname, 0, undef, 'global')
if $fullname =~ /%[^%]*%/o;
}
my $sourcefile = $ENV{systemroot}.'\\System32\\wbem\\wmic.exe';
my $paramlist = ['useraccount', 'where', '"name=\''.$username.'\'"'];
@ -3559,10 +3570,10 @@ sub handle_pkg ($$$$$$)
}
if (defined $$pkg{'user'}) {
return handle_user($pkg, $counters, $update);
return handle_user($pkg, $vars, $counters, $update);
}
if (defined $$pkg{'group'}) {
return handle_group($pkg, $counters, $update);
return handle_group($pkg, $vars, $counters, $update);
}
if (defined $$pkg{'directory'}) {
return handle_directory($config, $pkg, $vars, $base_directory, $counters, $update);