Server IP : 195.201.23.43 / Your IP : 3.17.156.160 Web Server : Apache System : Linux webserver2.vercom.be 5.4.0-192-generic #212-Ubuntu SMP Fri Jul 5 09:47:39 UTC 2024 x86_64 User : kdecoratie ( 1041) PHP Version : 7.1.33-63+ubuntu20.04.1+deb.sury.org+1 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /usr/share/webmin/acl/ |
Upload File : |
#!/usr/bin/perl # Delete a bunch of Webmin users, or add them to a group use strict; use warnings; no warnings 'redefine'; no warnings 'uninitialized'; require './acl-lib.pl'; our (%in, %text, %config, %access, $base_remote_user); &ReadParse(); &error_setup($in{'joingroup'} ? $text{'udeletes_jerr'} : $text{'udeletes_err'}); # Validate inputs my @d = split(/\0/, $in{'d'}); @d || &error($text{'udeletes_enone'}); foreach my $user (@d) { &can_edit_user($user) || &error($text{'delete_euser'}); if ($base_remote_user eq $user && !$in{'joingroup'}) { &error($text{'delete_eself'}); } &used_for_anonymous($user) && &error($text{'delete_eanonuser'}); my $uinfo = &get_user($user); $uinfo->{'readonly'} && &error($text{'udeletes_ereadonly'}); } if ($in{'joingroup'}) { # Add users to a group my $newgroup = &get_group($in{'group'}); if ($access{'gassign'} ne '*') { my @gcan = split(/\s+/, $access{'gassign'}); &indexof($in{'group'}, @gcan) >= 0 || &error($text{'save_egroup'}); } foreach my $user (@d) { my $uinfo = &get_user($user); next if (!$uinfo); next if ($newgroup && &indexof($user, @{$newgroup->{'members'}}) >= 0); # Remove from old group, if any my $oldgroup = &get_users_group($user); if ($oldgroup) { $oldgroup->{'members'} = [ grep { $_ ne $user } @{$oldgroup->{'members'}} ]; &modify_group($oldgroup->{'name'}, $oldgroup); } # Add to new group push(@{$newgroup->{'members'}}, $user); &modify_group($newgroup->{'name'}, $newgroup); my @mods = @{$uinfo->{'modules'}}; if ($oldgroup) { # Remove modules from the old group @mods = grep { &indexof($_, @{$oldgroup->{'modules'}}) < 0 } @mods; } if ($newgroup) { # Add modules from group to list my @ownmods; foreach my $m (@mods) { push(@ownmods, $m) if (&indexof($m, @{$newgroup->{'modules'}}) < 0); } @mods = &unique(@mods, @{$newgroup->{'modules'}}); $uinfo->{'ownmods'} = \@ownmods; # Copy ACL files for group ©_group_user_acl_files($in{'group'}, $user, [ @{$newgroup->{'modules'}}, "" ]); } $uinfo->{'modules'} = \@mods; # Save the user &modify_user($user, $uinfo); } &webmin_log("joingroup", "users", scalar(@d), { 'group' => $in{'group'} }); &redirect(""); } elsif ($in{'confirm'}) { # Do it $access{'delete'} || &error($text{'delete_ecannot'}); foreach my $user (@d) { &delete_user($user); &delete_from_groups($user); } &reload_miniserv(); &webmin_log("delete", "users", scalar(@d)); &redirect(""); } else { # Ask the user if he is sure $access{'delete'} || &error($text{'delete_ecannot'}); &ui_print_header(undef, $text{'udeletes_title'}, ""); print &ui_confirmation_form( "delete_users.cgi", &text('udeletes_rusure', scalar(@d)), [ map { [ "d", $_ ] } @d ], [ [ "confirm", $text{'udeletes_ok'} ] ], &text('udeletes_users', join(" ", map { "<tt>$_</tt>" } @d)), ); print "</center>\n"; &ui_print_footer("", $text{'index_return'}); }Private