Server IP : 195.201.23.43 / Your IP : 3.133.106.74 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 # edit_group.cgi # Edit or create a webmin group use strict; use warnings; no warnings 'redefine'; no warnings 'uninitialized'; require './acl-lib.pl'; our (%in, %text, %config, %access, $config_directory); &ReadParse(); $access{'groups'} || &error($text{'gedit_ecannot'}); my $g; my %group; if ($in{'group'}) { # Editing an existing group &ui_print_header(undef, $text{'gedit_title'}, ""); $g = &get_group($in{'group'}); $g || &error($text{'gedit_egone'}); %group = %$g; } else { # Creating a new group &ui_print_header(undef, $text{'gedit_title2'}, ""); %group = ( ); if ($in{'clone'}) { # Copy modules from clone $g = &get_group($in{'clone'}); if ($g) { $group{'modules'} = $g->{'modules'}; } } } print &ui_form_start("save_group.cgi", "post"); print &ui_hidden("old", $in{'group'}); if ($in{'clone'}) { print &ui_hidden("clone", $in{'clone'}); } print &ui_hidden_table_start($text{'gedit_rights'}, "width=100%", 2, "rights", 1, [ "width=30%" ]); # Show the group name print &ui_table_row($text{'gedit_group'}, &ui_textbox("name", $group{'name'}, 30, 0, undef, "autocomplete=off")); # Show group description print &ui_table_row($text{'gedit_desc'}, &ui_textbox("desc", $group{'desc'}, 60)); # Find and show the parent group my @glist = grep { $_->{'name'} ne $group{'name'} } &list_groups(); my @mcan = $access{'gassign'} eq '*' ? ( ( map { $_->{'name'} } @glist ), '_none' ) : split(/\s+/, $access{'gassign'}); my %gcan = map { $_, 1 } @mcan; if (@glist && %gcan) { my @opts = ( ); if ($gcan{'_none'}) { push(@opts, [ undef, "<$text{'edit_none'}>" ]); } my $memg = undef; foreach my $g (@glist) { if (&indexof('@'.$group{'name'}, @{$g->{'members'}}) >= 0) { $memg = $g->{'name'}; } next if (!$gcan{$g->{'name'}} && $memg ne $g->{'name'}); push(@opts, [ $g->{'name'} ]); } print &ui_table_row($text{'edit_group'}, &ui_select("group", $memg, \@opts)); } if ($in{'group'}) { # Show all current members my @grid = map { $_ =~ /^\@(.*)$/ ? ui_link("edit_group.cgi?group=$1", "<i>$1</i>") : ui_link("edit_user.cgi?user=$_", $_) } @{$group{'members'}}; if (@grid) { print &ui_table_row($text{'gedit_members'}, &ui_links_row(\@grid)); } } # Storage type if ($in{'group'}) { print &ui_table_row($text{'edit_proto'}, $text{'edit_proto_'.$group{'proto'}}); } print &ui_hidden_table_end("basic"); # Start of modules section print &ui_hidden_table_start($text{'edit_mods'}, "width=100%", 2, "mods"); # Show available modules, under categories my @mlist = &list_module_infos(); my %has = map { $_, 1 } @{$group{'modules'}}; my @links = ( &select_all_link("mod", 0, $text{'edit_selall'}), &select_invert_link("mod", 0, $text{'edit_invert'}) ); my @cats = &unique(map { $_->{'category'} || "" } @mlist); my %catnames; &read_file("$config_directory/webmin.catnames", \%catnames); my $grids = ""; foreach my $c (sort { $b cmp $a } @cats) { my @cmlist = grep { $_->{'category'} eq $c } @mlist; $grids .= "<b>".($catnames{$c} || $text{'category_'.$c})."</b><br>\n"; my @grid = ( ); my $sw = 0; foreach my $m (@cmlist) { my $md = $m->{'dir'}; my $label; if ($access{'acl'} && $in{'group'}) { # Show link for editing ACL $label = ui_link("edit_acl.cgi?" . "mod=" . urlize($m->{'dir'}) . "&group=". urlize($in{'group'}), $m->{'desc'}) . "\n"; } else { $label = $m->{'desc'}; } push(@grid, &ui_checkbox("mod", $md, $label,$has{$md})); } $grids .= &ui_grid_table(\@grid, 2, 100, [ "width=50%", "width=50%" ]); } print &ui_table_row(undef, &ui_links_row(\@links). $grids. &ui_links_row(\@links), 2); print &ui_hidden_table_end("mods"); # Add global ACL section if ($access{'acl'} && $in{'group'}) { print &ui_hidden_table_start($text{'edit_global'}, "width=100%", 2, "global", 0, [ "width=30%" ]); my %uaccess = &get_group_module_acl($in{'group'}, ""); print &ui_hidden("acl_security_form", 1); &foreign_require("", "acl_security.pl"); &foreign_call("", "acl_security_form", \%uaccess); print &ui_hidden_table_end("global"); } # Generate form end buttons my @buts = ( ); push(@buts, [ undef, $in{'group'} ? $text{'save'} : $text{'create'} ]); if ($in{'group'}) { push(@buts, [ "but_clone", $text{'edit_clone'} ]); push(@buts, [ "but_delete", $text{'delete'} ]); } print &ui_form_end(\@buts); &ui_print_footer("", $text{'index_return'});Private