| Server IP : 85.214.143.32 / Your IP : 216.73.216.33 Web Server : nginx/1.24.0 System : Linux datensicherung.webdress.site 6.8.0-139-generic #139-Ubuntu SMP PREEMPT_DYNAMIC Sat Aug 1 03:52:05 UTC 2026 x86_64 User : www-data ( 33) PHP Version : 7.4.33 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,pcntl_unshare, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /usr/share/webmin/ |
Upload File : |
# newmods.pl
# Updates an acl file to include new modules. Called with the parameters
# <config directory> <module>+
for($i=1; $i<@ARGV; $i++) {
if (!(-d "$ARGV[0]/$ARGV[$i]")) {
push(@new, $ARGV[$i]);
}
}
if (@new) {
# Read in the existing file
open(ACL, "<$ARGV[0]/webmin.acl");
@acl = <ACL>;
close(ACL);
# Get the list of users to grant new modules to
if (open(NEWMODS, "<$ARGV[0]/newmodules")) {
while(<NEWMODS>) {
s/\r|\n//g;
$users{$_}++ if (/\S/);
}
close(NEWMODS);
$newmods++;
}
if ($newmods) {
# Find the users to add to
for($i=0; $i<@acl; $i++) {
if ($acl[$i] =~ /^(\S+):/ && $users{$1}) {
push(@pos, $i);
}
}
}
else {
# Just use 'root' or 'admin' or the first user in the file
$pos[0] = 0;
for($i=0; $i<@acl; $i++) {
if ($acl[$i] =~ /^(\S+):/ &&
($1 eq 'root' || $1 eq 'admin')) {
$pos[0] = $i;
last;
}
}
}
# Update it with new modules
foreach $pos (@pos) {
$acl[$pos] =~ /^(\S+):\s*(.*)$/ || next;
$name = $1; @list = split(/\s+/, $2);
foreach $o (@list) { $old{$o}++; }
foreach $n (@new) {
push(@list, $n) if (!$old{$n});
}
$acl[$pos] = "$name: ".join(" ",@list)."\n";
}
# Write it out
open(ACL, ">$ARGV[0]/webmin.acl");
print ACL @acl;
close(ACL);
}