require './samba-lib.pl';
# check acls
-%access = &get_module_acl();
+
&error_setup("<blink><font color=red>$text{'eacl_aviol'}</font></blink>");
&error("$text{'eacl_np'} $text{'eacl_pmpass'}")
unless $access{'maint_makepass'};
--- /dev/null
+
+do 'samba-lib.pl';
+
+sub cgi_args
+{
+my ($cgi) = @_;
+my @shares = &list_shares();
+if ($cgi eq 'edit_pshare.cgi' || $cgi eq 'edit_popts.cgi') {
+ # First printer share
+ foreach my $s (@shares) {
+ next if (!&can('r', \%access, $s) || $s eq 'global');
+ local %share;
+ &get_share($s);
+ if (&istrue("printable")) {
+ return 'share='.&urlize($s);
+ }
+ }
+ return $access{'c_ps'} ? '' : 'none'; # Create if allowed
+ }
+elsif ($cgi eq 'edit_fshare.cgi' || $cgi eq 'edit_sec.cgi' ||
+ $cgi eq 'edit_fperm.cgi' || $cgi eq 'edit_fname.cgi' ||
+ $cgi eq 'edit_fmisc.cgi') {
+ # First non-printer share
+ foreach my $s (@shares) {
+ next if (!&can('r', \%access, $s) || $s eq 'global');
+ local %share;
+ &get_share($s);
+ if (!&istrue("printable")) {
+ return 'share='.&urlize($s);
+ }
+ }
+ return $access{'c_fs'} ? '' : 'none'; # Create if allowed
+ }
+elsif ($cgi eq 'edit_euser.cgi') {
+ # First user, if any
+ my @ulist = &list_users();
+ return @ulist ? 'idx='.$ulist[0]->{'index'} : 'none';
+ }
+return undef;
+}
require './samba-lib.pl';
# check acls
-%access = &get_module_acl();
+
&error_setup("<blink><font color=red>$text{'eacl_aviol'}</font></blink>");
&error("$text{'eacl_np'} $text{'eacl_pcm'}") unless $access{'conf_bind'};
require './samba-lib.pl';
# check acls
-%access = &get_module_acl();
+
&error_setup("<blink><font color=red>$text{'eacl_aviol'}</font></blink>");
&error("$text{'eacl_np'} $text{'eacl_pcm'}") unless $access{'conf_misc'};
require './samba-lib.pl';
# check acls
-%access = &get_module_acl();
+
&error_setup("<blink><font color=red>$text{'eacl_aviol'}</font></blink>");
&error("$text{'eacl_np'} $text{'eacl_pcn'}") unless $access{'conf_net'};
require './samba-lib.pl';
# check acls
-%access = &get_module_acl();
+
&error_setup("<blink><font color=red>$text{'eacl_aviol'}</font></blink>");
&error("$text{'eacl_np'} $text{'eacl_pcp'}") unless $access{'conf_pass'};
require './samba-lib.pl';
# check acls
-%access = &get_module_acl();
+
&error_setup("<blink><font color=red>$text{'eacl_aviol'}</font></blink>");
&error("$text{'eacl_np'} $text{'eacl_pcprint'}") unless $access{'conf_print'};
require './samba-lib.pl';
# check acls
-%access = &get_module_acl();
+
&error_setup("<blink><font color=red>$text{'eacl_aviol'}</font></blink>");
&error("$text{'eacl_np'} $text{'eacl_pcs'}") unless $access{'conf_smb'};
require './samba-lib.pl';
# check acls
-%access = &get_module_acl();
+
&error_setup("<blink><font color=red>$text{'eacl_aviol'}</font></blink>");
&error("$text{'eacl_np'} $text{'eacl_pcopy'}") unless $access{'copy'};
require './samba-lib.pl';
&ReadParse();
# check acls
-%access = &get_module_acl();
+
&error_setup("<blink><font color=red>$text{'eacl_aviol'}</font></blink>");
&error("$text{'eacl_np'} $text{'eacl_pmusers'}")
unless $access{'maint_users'} && $access{'view_users'};
&ReadParse();
# check acls
-%access = &get_module_acl();
+
&error_setup("<blink><font color=red>$text{'eacl_aviol'}</font></blink>");
&error("$text{'eacl_np'} $text{'eacl_pds'}")
unless &can('rw', \%access, $in{share});
require './samba-lib.pl';
&ReadParse();
&error_setup($text{'delete_err'});
-%access = &get_module_acl();
+
@d = split(/\0/, $in{'d'});
@d || &error($text{'delete_enone'});
require './samba-lib.pl';
# check acls
-%access = &get_module_acl();
+
&error_setup("<blink><font color=red>$text{'eacl_aviol'}</font></blink>");
&error("$text{'eacl_np'} $text{'eacl_pvusers'}")
unless $access{'view_users'};
require './samba-lib.pl';
&ReadParse();
# check acls
-%access = &get_module_acl();
+
&error_setup("<blink><font color=red>$text{'eacl_aviol'}</font></blink>");
&error("$text{'eacl_np'} $text{'eacl_pvusers'}")
unless $access{'view_users'};
require './samba-lib.pl';
&ReadParse();
# check acls
-%access = &get_module_acl();
+
&error_setup("<blink><font color=red>$text{'eacl_aviol'}</font></blink>");
&error("$text{'eacl_np'} $text{'eacl_pvfmisc'}")
unless &can('ro', \%access, $in{'share'});
require './samba-lib.pl';
&ReadParse();
# check acls
-%access = &get_module_acl();
+
&error_setup("<blink><font color=red>$text{'eacl_aviol'}</font></blink>");
&error("$text{'eacl_np'} $text{'eacl_pvfname'}")
unless &can('rn', \%access, $in{'share'});
require './samba-lib.pl';
&ReadParse();
# check acls
-%access = &get_module_acl();
+
&error_setup("<blink><font color=red>$text{'eacl_aviol'}</font></blink>");
&error("$text{'eacl_np'} $text{'eacl_pvperm'}")
unless &can('rp', \%access, $in{'share'});
&ReadParse();
$s = $in{'share'};
# check acls
-%access = &get_module_acl();
+
&error_setup("<blink><font color=red>$text{'eacl_aviol'}</font></blink>");
if(!$s) {
&error("$text{'eacl_np'} $text{'eacl_pcfs'}")
# Show a form for editing an existing groups
require './samba-lib.pl';
-%access = &get_module_acl();
+
$access{'maint_groups'} || &error($text{'groups_ecannot'});
&ReadParse();
if ($in{'new'}) {
# Allow the user to edit auto updating of Samba groups by useradmin
require './samba-lib.pl';
-%access = &get_module_acl();
+
$access{'maint_gsync'} || &error($text{'gsync_ecannot'});
&ui_print_header(undef, $text{'gsync_title'}, "");
require './samba-lib.pl';
&ReadParse();
# check acls
-%access = &get_module_acl();
+
&error_setup("<blink><font color=red>$text{'eacl_aviol'}</font></blink>");
&error("$text{'eacl_np'} $text{'eacl_pvpopt'}")
unless &can('ro', \%access, $in{'share'});
&ReadParse();
$s = $in{'share'};
# check acls
-%access = &get_module_acl();
+
&error_setup("<blink><font color=red>$text{'eacl_aviol'}</font></blink>");
if(!$s) {
&error("$text{'eacl_np'} $text{'eacl_pcps'}")
require './samba-lib.pl';
&ReadParse();
# check acls
-%access = &get_module_acl();
+
&error_setup("<blink><font color=red>$text{'eacl_aviol'}</font></blink>");
&error("$text{'eacl_np'} $text{'eacl_pvsec'}")
unless &can('rs', \%access, $in{'share'});
require './samba-lib.pl';
# check acls
-%access = &get_module_acl();
+
&error_setup("<blink><font color=red>$text{'eacl_aviol'}</font></blink>");
&error("$text{'eacl_np'} $text{'eacl_pmsync'}")
unless $access{'maint_sync'};
# Show form for binding to a domain
require './samba-lib.pl';
-%access = &get_module_acl();
+
$access{'winbind'} || &error($text{'winbind_ecannot'});
&ui_print_header(undef, $text{'winbind_title'}, "");
# [printers]) are included as well.
require './samba-lib.pl';
-%access = &get_module_acl();
# Check for Samba executable
if (!-x $config{'samba_server'}) {
&ReadParse();
# check acls
-%access = &get_module_acl();
+
&error_setup("<blink><font color=red>$text{'eacl_aviol'}</font></blink>");
if ($in{share}) { # this may be cracked very easy, don't know how to do better :(
# per-share acls ...
@d || &error($text{'viewu_enone'});
# check acls
-%access = &get_module_acl();
+
&error_setup("<blink><font color=red>$text{'eacl_aviol'}</font></blink>");
if ($in{share}) { # this may be cracked very easy, don't know how to do better :(
# per-share acls ...
# List all existing Samba groups
require './samba-lib.pl';
-%access = &get_module_acl();
+
$access{'maint_groups'} || &error($text{'groups_ecannot'});
&ui_print_header(undef, $text{'groups_title'}, "");
require './samba-lib.pl';
# check acls
-%access = &get_module_acl();
+
&error_setup("<blink><font color=red>$text{'eacl_aviol'}</font></blink>");
&error("$text{'eacl_np'} $text{'eacl_pcswat'}") unless $access{'swat'};
require './samba-lib.pl';
&ReadParse();
# check acls
-%access = &get_module_acl();
+
&error_setup("<blink><font color=red>$text{'eacl_aviol'}</font></blink>");
&error("$text{'eacl_np'} $text{'eacl_pmpass'}")
unless $access{'maint_makepass'};
# Kill all smbd and nmdb processes and re-start them
require './samba-lib.pl';
-%access = &get_module_acl();
+
&error_setup("<blink><font color=red>$text{'eacl_aviol'}</font></blink>");
&error("$text{'eacl_np'} $text{'eacl_papply'}") unless $access{'apply'};
BEGIN { push(@INC, ".."); };
use WebminCore;
&init_config();
+%access = &get_module_acl();
# Get the samba version
if (open(VERSION, "$module_config_directory/version")) {
$global = &get_share("global");
# check acls
-%access = &get_module_acl();
+
&error_setup("<blink><font color=red>$text{'eacl_aviol'}</font></blink>");
&error("$text{'eacl_np'} $text{'eacl_pcm'}") unless $access{'conf_bind'};
&ReadParse();
# check acls
-%access = &get_module_acl();
+
&error_setup("<blink><font color=red>$text{'eacl_aviol'}</font></blink>");
&error("$text{'eacl_np'} $text{'eacl_pcopy'}") unless $access{'copy'};
require './samba-lib.pl';
&ReadParse();
# check acls
-%access = &get_module_acl();
+
&error_setup("<blink><font color=red>$text{'eacl_aviol'}</font></blink>");
&error("$text{'eacl_np'} $text{'eacl_pmusers'}")
unless $access{'maint_users'} && $access{'view_users'};
&get_share($in{old_name});
# check acls
-%access = &get_module_acl();
+
&error_setup("<blink><font color=red>$text{'eacl_aviol'}</font></blink>");
&error("$text{'eacl_np'} $text{'eacl_pufmisc'}")
unless &can('rwoO', \%access, $in{old_name});
&get_share($in{old_name});
# check acls
-%access = &get_module_acl();
+
&error_setup("<blink><font color=red>$text{'eacl_aviol'}</font></blink>");
&error("$text{'eacl_np'} $text{'eacl_pufname'}")
unless &can('rwnN', \%access, $in{old_name});
&get_share($in{old_name});
# check acls
-%access = &get_module_acl();
+
&error_setup("<blink><font color=red>$text{'eacl_aviol'}</font></blink>");
&error("$text{'eacl_np'} $text{'eacl_pufperm'}")
unless &can('rwpP', \%access, $in{old_name});
&get_share($in{old_name}) if $in{old_name};
# check acls
-%access = &get_module_acl();
+
&error_setup("<blink><font color=red>$text{'eacl_aviol'}</font></blink>");
if ($in{old_name}) {
&error("$text{'eacl_np'} $text{'eacl_pus'}")
# Update or delete a Samba group
require './samba-lib.pl';
-%access = &get_module_acl();
+
$access{'maint_groups'} || &error($text{'groups_ecannot'});
&ReadParse();
@groups = &list_groups();
# Save unix-samba group synchronisation options
require './samba-lib.pl';
-%access = &get_module_acl();
+
$access{'maint_gsync'} || &error($text{'gsync_ecannot'});
&ReadParse();
$global = &get_share("global");
# check acls
-%access = &get_module_acl();
+
&error_setup("<blink><font color=red>$text{'eacl_aviol'}</font></blink>");
&error("$text{'eacl_np'} $text{'eacl_pcm'}") unless $access{'conf_misc'};
$global = &get_share("global");
# check acls
-%access = &get_module_acl();
+
&error_setup("<blink><font color=red>$text{'eacl_aviol'}</font></blink>");
&error("$text{'eacl_np'} $text{'eacl_pcn'}") unless $access{'conf_net'};
$global = &get_share("global");
# check acls
-%access = &get_module_acl();
+
&error_setup("<blink><font color=red>$text{'eacl_aviol'}</font></blink>");
&error("$text{'eacl_np'} $text{'eacl_pcp'}") unless $access{'conf_pass'};
&get_share($in{'old_name'});
# check acls
-%access = &get_module_acl();
+
&error_setup("<blink><font color=red>$text{'eacl_aviol'}</font></blink>");
&error("$text{'eacl_np'} $text{'eacl_pupopt'}")
unless &can('rwoO', \%access, $in{old_name});
$global = &get_share("global");
# check acls
-%access = &get_module_acl();
+
&error_setup("<blink><font color=red>$text{'eacl_aviol'}</font></blink>");
&error("$text{'eacl_np'} $text{'eacl_pcprint'}") unless $access{'conf_print'};
&get_share($in{old_name}) if $in{old_name};
# check acls
-%access = &get_module_acl();
+
&error_setup("<blink><font color=red>$text{'eacl_aviol'}</font></blink>");
if ($in{old_name}) {
&error("$text{'eacl_np'} $text{'eacl_pus'}")
&get_share($in{old_name});
# check acls
-%access = &get_module_acl();
+
&error_setup("<blink><font color=red>$text{'eacl_aviol'}</font></blink>");
&error("$text{'eacl_np'} $text{'eacl_pusec'}")
unless &can('rwsS', \%access, $in{old_name});
$global = &get_share("global");
# check acls
-%access = &get_module_acl();
+
&error_setup("<blink><font color=red>$text{'eacl_aviol'}</font></blink>");
&error("$text{'eacl_np'} $text{'eacl_pcs'}") unless $access{'conf_smb'};
require './samba-lib.pl';
&ReadParse();
# check acls
-%access = &get_module_acl();
+
&error_setup("<blink><font color=red>$text{'eacl_aviol'}</font></blink>");
&error("$text{'eacl_np'} $text{'eacl_pmsync'}")
unless $access{'maint_sync'};
# Bind to a domain
require './samba-lib.pl';
-%access = &get_module_acl();
+
$access{'winbind'} || &error($text{'winbind_ecannot'});
&ReadParse();
# Attempt to start the smbd and nmbd processes
require './samba-lib.pl';
-%access = &get_module_acl();
+
&error_setup("<blink><font color=red>$text{'eacl_aviol'}</font></blink>");
&error("$text{'eacl_np'} $text{'eacl_papply'}") unless $access{'apply'};
# Kill all smbd and nmdb processes and re-start them
require './samba-lib.pl';
-%access = &get_module_acl();
+
&error_setup("<blink><font color=red>$text{'eacl_aviol'}</font></blink>");
&error("$text{'eacl_np'} $text{'eacl_papply'}") unless $access{'apply'};
&ReadParse();
# check acls
-%access = &get_module_acl();
+
&error_setup("<blink><font color=red>$text{'eacl_aviol'}</font></blink>");
&error("$text{'eacl_np'} $text{'eacl_pcswat'}") unless $access{'swat'};
&ReadParse();
# check acls
-%access = &get_module_acl();
+
&error_setup("<blink><font color=red>$text{'eacl_aviol'}</font></blink>");
&error("$text{'eacl_np'} $text{'eacl_pcswat'}") unless $access{'swat'};
&ReadParse();
# check acls
-%access = &get_module_acl();
+
&error_setup("<blink><font color=red>$text{'eacl_aviol'}</font></blink>");
if ($in{share}) { # this may be cracked very easy, don't know how to do better : # per-share acls ...
# per-share acls ...