diff options
Diffstat (limited to 'samba_wizard')
-rwxr-xr-x | samba_wizard/Samba.pm | 531 |
1 files changed, 10 insertions, 521 deletions
diff --git a/samba_wizard/Samba.pm b/samba_wizard/Samba.pm index f02949fd..e020b159 100755 --- a/samba_wizard/Samba.pm +++ b/samba_wizard/Samba.pm @@ -44,24 +44,14 @@ my $o = { var => { wiz_box_list => '', wiz_netbios => '', - wiz_hosts_allow => '', - wiz_do_file_sharing => '', wiz_all_printers => '', wiz_level => '', wiz_printers => '', wiz_do_printer_sharing => '', wiz_printers_comment => '', wiz_printers_browseable => '', wiz_printers_guestok => '', wiz_printers_createmode => '', - wiz_do_homes => '', wiz_workgroup => '', - wiz_dir => '', - wiz_share_comment => '', wiz_share_browseable => '', wiz_share_writable => '', wiz_banner => '', - wiz_write_list => '', - wiz_read_list => '', - wiz_hosts_deny => '', wiz_log_file => '', wiz_log_level => '', wiz_max_log_size => '', list_printers => '', - wiz_home_writable => '', wiz_home_browseable => '', wiz_home_createmode => '', - wiz_home_comment => '', wiz_local_master => '', wiz_os_level => '', wiz_security => '', @@ -71,10 +61,7 @@ my $o = { wiz_passdb_backend => '', wiz_passdb_backend_yn => '', wiz_domain => '', wiz_ldap_admin_dn => '', wiz_ldap_suffix => '', wiz_ldap_root_pw => '', wiz_ldap_root_pw_2 => '', - wiz_addshare_comment => '', wiz_addshare_browseable => '', wiz_addshare_writable => '', - wiz_addshare_createmode => '', wiz_addshare_dotfiles => '', - wiz_selected_share => '', - wiz_selected_share_comment => '', + wiz_sambatype => '', }, init => sub { test_host_domain($SHORTHOSTNAME, $DOMAINNAME); @@ -100,16 +87,8 @@ my %type = ( 2 => N('PDC - primary domain controller'), 3 => N('Standalone - standalone server'), 4 => N('Member - member of a domain'), - 5 => N('Share - Manage your share'), ); -my %share = ( - 1 => N('Add - add a share'), - 2 => N('Remove - remove a share'), - 3 => N('Modify - modify a share'), - 4 => N('CDrom - share a CDrom'), - ); - my @yesorno = qw(yes no);# push @yesorno, " "; my @loglevel = qw(0 1 2 3 4 5 6 7 8 9 10); @@ -136,9 +115,6 @@ $o->{pages} = { return 'ask_workgroup' } elsif ($o->{var}{wiz_type} == 4) { return 'member' } - elsif ($o->{var}{wiz_type} == 5 and -f $wiz_samba_etc) { - return 'share_menu'; - } }, data => [ { label => N("Wich type of Samba server do you you want:"), val => \$o->{var}{wiz_type}, list => [ keys %type ], format => sub { $type{$_[0]} } }, @@ -235,162 +211,6 @@ $o->{pages} = { }, next => 'ask_workgroup', }, - share_menu => { - name => N('What do you want todo with your share ?') . "\n\n" . N('add/remove/modify a share'), - data => [ - { label => N("what do you want:"), val => \$o->{var}{wiz_share}, list => [ keys %share ], format => sub { $share{$_[0]} } }, - ], - post => sub { - if ($o->{var}{wiz_share} == 1) { - return 'add_share' } - elsif ($o->{var}{wiz_share} == 2) { - return 'choose_share' } - elsif ($o->{var}{wiz_share} == 3) { - return 'choose_share' } - elsif ($o->{var}{wiz_share} == 4) { - return 'add_cdrom_share' } - }, - no_back => 1, - }, - choose_share => { - name => N('Manage wich share ?') . "\n\n" . N('Please choose the share you want to manage.'), - pre => \&list_all_shares, - post => sub { - if ($o->{var}{wiz_share} == 2) { - return 'delete_share'; - } else { - return 'modify_share'; - } - }, - data => [ - { label => N('Choose share you want to manage:'), val => \$o->{var}{wiz_selected_share}, fixed_list => \@listshare }, - ], - complete => sub { - if ($o->{var}{wiz_selected_share} =~ /cdrom/ || $o->{var}{wiz_share} == 2) { - $::in->ask_warn(N('Error'), N('Can\'t modify cdrom share, please choose another share.')); - return 1; - } - }, - }, - delete_share => { - name => N('Remove a share'), - pre => sub { - my $dshare = $o->{var}{wiz_selected_share}; - $o->{var}{wiz_selected_share_comment} = $samba->{$dshare}{comment}; - }, - data => [ - { label => N('Delete this share:'), fixed_val => \$o->{var}{wiz_selected_share} }, - { label => N('Comment for this share:'), fixed_val => \$o->{var}{wiz_selected_share_comment} }, - ], - next => 'summary_delete', - }, - modify_share => { - name => N('Modify a share'), - pre => sub { - my $share = $o->{var}{wiz_selected_share}; - $o->{var}{wiz_share_comment} = $samba->{$share}{comment}; - $o->{var}{wiz_add_share_writable} = $samba->{$share}{writable}; - $o->{var}{wiz_share_browseable} = $samba->{$share}{browseable}; - $o->{var}{wiz_share_path} = $samba->{$share}{path}; - $o->{var}{wiz_share_public} = $samba->{$share}{public}; - }, - complete => sub { - if (!($o->{var}{wiz_share_comment})) { - $::in->ask_warn(N('Error'), N('Please enter a share comment.')); - return 1; - } - }, - data => [ - { label => N('Name of the share:'), fixed_val => \$o->{var}{wiz_selected_share} }, - { label => N('Comment:'), val => \$o->{var}{wiz_share_comment} }, - { label => N('Path:'), val => \$o->{var}{wiz_share_path} }, - { label => N('Browseable:'), val => \$o->{var}{wiz_share_browseable}, fixed_list => \@yesorno, help => N("Allows share to be displayed in list of share.") }, - { label => N('Writable:'), val => \$o->{var}{wiz_share_writable}, fixed_list => \@yesorno }, - { label => N('Public:'), val => \$o->{var}{wiz_share_public}, fixed_list => \@yesorno }, - ], - next => 'modify_share_options', - }, - modify_share_options => { - name => N('Modify a share') . "\n\n" . N('Advanced options, use them if you know what you are doing.'), - pre => sub { - my $share = $o->{var}{wiz_selected_share}; - $o->{var}{wiz_share_createmode} = $samba->{$share}{'create mode'}; - $o->{var}{wiz_share_readlist} = exists $samba->{$share}{'read list'}; - $o->{var}{wiz_share_writelist} = exists $samba->{$share}{'write list'}; - $o->{var}{wiz_share_dotfiles} = exists $samba->{$share}{'hide dot files'}; - }, - data => [ - { label => N('Create mode:'), val => \$o->{var}{wiz_share_createmode} }, - { label => N('Read list:'), val => \$o->{var}{wiz_share_readlist}, help => N('Specifies a list of users that have read-only access to a writable share. ie: root fred @users @wheel') }, - { label => N('Write list:'), val => \$o->{var}{wiz_share_writelist}, help => N('Specifies a list of users that have read-write access to a read-only share. ie: root fred @users @wheel') }, - { label => N('Show dot files:'), val => \$o->{var}{wiz_share_dotfiles}, fixed_list => \@yesorno, help => N("The hide dot files option hides any files on the server that begin with a dot (.)") }, - { label => N('Hide files:'), val => \$o->{var}{wiz_share_hidefiles}, help => N("The hide files option provides one or more directory or filename patterns to Samba. Any file matching this pattern will be treated as a hidden file from the perspective of the client. ie: /.icewm/") }, - ], - next => 'summary_modify', - }, - add_share => { - name => N('Add a share') . "\n" . N('Comment: description of the share') . "\n" . N('Browseable: view share') . "\n" . N('Writable: user can write in the share'), - data => [ - { label => N('Name of the share:'), val => \$o->{var}{wiz_addshare_name} }, - { label => N('Comment:'), val => \$o->{var}{wiz_addshare_comment} }, - { label => N('Path:'), val => \$o->{var}{wiz_addshare_path} }, - { label => N('Browseable:'), val => \$o->{var}{wiz_addshare_browseable}, fixed_list => \@yesorno, help => N("Allows share to be displayed in list of share.") }, - { label => N('Public:'), val => \$o->{var}{wiz_addshare_public}, fixed_list => \@yesorno }, - ], - complete => sub { - foreach my $clef (keys %$samba) { - if ($clef =~ /$o->{var}{wiz_addshare_name}/) { - $::in->ask_warn(N("Error"), N("Share with the same name already exist, please choose another name.")); - return 1 - } - } - }, - next => 'add_share_options', - }, - add_cdrom_share => { - name => N('Add a CDROM share'), - pre => sub { - if ($samba->{cdrom}{comment}) { - $o->{var}{wiz_cdrom_comment} = $samba->{cdrom}{comment}; - } else { - $o->{var}{wiz_cdrom_comment} = "%L CDrom"; - } - if ($samba->{cdrom}{path}) { - $o->{var}{wiz_cdrom_path} = $samba->{cdrom}{path} - } else { - $o->{var}{wiz_cdrom_path} = "/mnt/cdrom"; - } - $o->{var}{wiz_cdrom_browseable} = "yes"; - $o->{var}{wiz_cdrom_pre} = "/bin/mount /mnt/cdrom"; - $o->{var}{wiz_cdrom_post} = "/bin/umount /mnt/cdrom"; - $o->{var}{wiz_cdrom_public} = "yes"; - }, - data => [ - { label => N('Comment:'), fixed_val => \$o->{var}{wiz_cdrom_comment} }, - { label => N('CDrom path:'), fixed_val => \$o->{var}{wiz_cdrom_path} }, - { label => N('Browseable:'), fixed_val => \$o->{var}{wiz_cdrom_browseable} }, - { label => N('Root preexec:'), fixed_val => \$o->{var}{wiz_cdrom_pre} }, - { label => N('Root postexec:'), fixed_val => \$o->{var}{wiz_cdrom_post} }, - { label => N('Public:'), fixed_val => \$o->{var}{wiz_cdrom_public} }, - ], - next => 'summary_addcdromshare', - }, - add_share_options => { - name => N('Add a share') . "\n" . N('If you doesn\'t want to use one of this options, leave it blanck.'), - pre => sub { - $o->{var}{wiz_addshare_createmode} = "0700"; - $o->{var}{wiz_addshare_public} = "no"; - }, - data => [ - { label => N('Writable:'), val => \$o->{var}{wiz_addshare_writable}, fixed_list => \@yesorno }, - { label => N('Create mode:'), val => \$o->{var}{wiz_addshare_createmode} }, - { label => N('Read list:'), val => \$o->{var}{wiz_addshare_readlist}, help => N('Specifies a list \of users that have read-only access to a writable share. ie: root fred @users @wheel') }, - { label => N('Write list:'), val => \$o->{var}{wiz_addshare_writelist}, help => N('Specifies a lis\t of users that have read-write access to a read-only share. ie: root fred @users @wheel') }, - { label => N('Show dot files:'), val => \$o->{var}{wiz_addshare_dotfiles}, fixed_list => \@yesorno, help => N("The hide dot files option hides any files on the server that begin with a dot (.)") }, - { label => N('Hide files:'), val => \$o->{var}{wiz_addshare_hidefiles}, help => N("The hide files option provides one or more directory or filename patterns to Samba. Any file matching this pattern will be treated as a hidden file from the perspective of the client. ie: /.icewm/") }, - ], - next => 'summary_addshare', - }, ldap_conf => { name => N('LDAP configuration for Domain Controlling') . "\n\n" . N('The account (dn) that samba uses to access the LDAP server. This account needs to have write access to the LDAP tree. You will need to give samba the password for this dn.'), pre => sub { @@ -482,93 +302,8 @@ $o->{pages} = { { label => N('Max log size:'), val => \$o->{var}{wiz_max_log_size}, help => "50" }, { label => N('Log level:'), val => \$o->{var}{wiz_log_level}, fixed_list => \@loglevel }, ], - next => 'ask_services', - }, - ask_netmask => { - name => N('Access control') . "\n\n" . N('* Example 1: allow all IPs in 150.203.*.*; except one\nhosts allow = 150.203. EXCEPT 150.203.6.66') . "\n\n" . N('* Example 2: allow hosts that match the given network/netmask\nhosts allow = 150.203.15.0/255.255.255.0') . "\n\n" . N('* Example 3: allow a couple of hosts\nhosts allow = lapland, arvidsjaur') . "\n\n" . N('* Example 4: allow only hosts in NIS netgroup "foonet", but deny access from one particular host\nhosts allow = @foonet\nhosts deny = pirate') . "\n\n" . N('Note that access still requires suitable user-level passwords.'), - pre => sub { - $o->{var}{wiz_hosts_allow} ||= $samba->{global}{'hosts allow'}; - $o->{var}{wiz_hosts_allow} ||= $samba->{global}{'hosts deny'}; - }, - post => \&check, - data => [ - { label => N('Allow hosts:'), val => \$o->{var}{wiz_allow_host}, help => "150.203. EXCEPT 150.203.6.66" }, - { label => N('Deny hosts:'), val => \$o->{var}{wiz_deny_host}, help => "guibux, 10.0.1.253" }, ], - next => 'ask_services', - }, - ask_services => { - name => N('Enabled Samba Services') . "\n\n" . N('Samba can provide a common file sharing area to your Windows workstation, and can also provide printer sharing for the printers connected to your server.'), - pre => sub { - $o->{var}{wiz_do_file_sharing} ||= exists $samba->{public}; - $o->{var}{wiz_do_printer_sharing} ||= exists $samba->{printers}; - $o->{var}{wiz_do_homes} ||= exists $samba->{homes}; - }, - data => [ - { text => N('Enable public file sharing area'), type => 'bool', val => \$o->{var}{wiz_do_file_sharing} }, - { text => N('Enable server printer sharing'), type => 'bool', val => \$o->{var}{wiz_do_printer_sharing} }, - { text => N('Make home directories available for their owners'), type => 'bool', val => \$o->{var}{wiz_do_homes} }, - ], - post => sub { - if ($o->{var}{wiz_do_file_sharing} == 1) { - return 'ask_dir'; - } elsif ($o->{var}{wiz_do_printer_sharing} == 1) { - return 'ask_printers'; - } elsif ($o->{var}{wiz_do_homes} == 1) { - return 'ask_homes'; - } else { return 'summary' } - }, - next => 'ask_dir', - }, - ask_dir => { - name => N('Shared directory:') . "\n\n" . N('Type the path of the directory you want being shared.'), - pre => sub { - $o->{var}{wiz_dir} ||= $samba->{public}{path}; - if ($samba->{public}{comment}) { - $o->{var}{wiz_share_comment} ||= $samba->{public}{comment} - } else { - $o->{var}{wiz_share_comment} = "Public Share"; - } - $o->{var}{wiz_share_browseable} ||= $samba->{public}{browseable}; - $o->{var}{wiz_share_writable} ||= $samba->{public}{writable}; - }, - data => [ - { label => N('Comment:'), val => \$o->{var}{wiz_share_comment} }, - { label => N('Shared directory:'), val => \$o->{var}{wiz_dir} }, - { label => N('Browseable:'), val => \$o->{var}{wiz_share_browseable}, fixed_list => \@yesorno, help => N("Allows share to be displayed in list of share.") }, - { label => N('Writable:'), val => \$o->{var}{wiz_share_writable}, fixed_list => \@yesorno }, - { text => N("Create shared directory if it doesn't exist"), type => 'bool', val => \$o->{var}{create_missing_directory} }, - ], - complete => sub { - if(!$o->{var}{wiz_dir}) { - $::in->ask_warn(N("Error"), N("Please enter directory path.")); - } else { - if (! -d $o->{var}{wiz_dir} and $o->{var}{create_missing_directory}) { - wiz_mkdir_p($o->{var}{wiz_dir}) or $::in->ask_warn(N("Error"), N("Failed to create directory.")); - return 1; - } - } - }, - next => 'ask_access' + next => 'summary', }, - ask_access => { - name => N('File permissions') . "\n\n" . N('Type users or group separated by a comma (groups must be preceded by a \'@\') like this :') . "\n". N('root, fred, @users, @wheel for each kind of permission.') . "\n" . N('You need to use filesystem with ACL support, like XFS or ext3 mounted with ACL options, or you file permissions won\'t work.'), - pre => sub { - $o->{var}{wiz_read_list} ||= $samba->{public}{'read list'}; - $o->{var}{wiz_write_list} ||= $samba->{public}{'write list'}; - }, - post => sub { - if ($o->{var}{wiz_do_printer_sharing} == 1) { - return 'ask_printers'; - } elsif ($o->{var}{wiz_do_homes} == 1) { - return 'ask_homes'; - } - }, - data => [ - { label => N('read list:'), help => N('Specifies a list of users that have read-only access to a writable share. ie: root fred @users @wheel'), val => \$o->{var}{wiz_read_list} }, - { label => N('write list:'), help => N('Specifies a list of users that have read-write access to a read-only share. ie: root fred @users @wheel'), val => \$o->{var}{wiz_write_list} }, - ], - next => 'summary', - }, ask_printers => { name => N('Select which printers you want to be accessible from known users'), pre => sub { @@ -610,98 +345,16 @@ $o->{pages} = { ], next => 'summary', }, - ask_homes => { - name => N('Users home options') . "\n" . N('You have selected to allow user access their home directories via samba but you/they must use smbpasswd to set a password.') . "\n" . N('Comment: description of users home directory') . "\n" . N('Browseable: view share') . "\n" . N('Writable: user can write in their home') . "\n" . N('Create mode: man chmod for more info'), - pre => sub { - if ($samba->{homes}{comment}) { - $o->{var}{wiz_home_comment} ||= $samba->{homes}{comment}; - } else { - $o->{var}{wiz_home_comment} = "Home Directories"; - } - $o->{var}{wiz_home_browseable} ||= $samba->{homes}{browseable}; - $o->{var}{wiz_home_writable} ||= $samba->{homes}{writable}; - if ($samba->{homes}{'create mode'}) { - $o->{var}{wiz_home_createmode} ||= $samba->{homes}{'create mode'}; - } else { - $o->{var}{wiz_home_createmode} = "0755"; - } - }, - data => [ - { label => N('Comment:'), val => \$o->{var}{wiz_home_comment} }, - { label => N('Browseable:'), val => \$o->{var}{wiz_home_browseable}, fixed_list => \@yesorno }, - { label => N('Writable:'), val => \$o->{var}{wiz_home_writable}, fixed_list => \@yesorno }, - { label => N('Create mode:'), val => \$o->{var}{wiz_home_createmode} }, - ], - next => 'summary', - }, - summary_modify => { - name => N('Summary modify a share') . "\n\n" . N('If you really want to modify this share, click the Next button or use the Back button.'), - data => [ - { label => N('Name of the share:'), fixed_val => \$o->{var}{wiz_share_name} }, - { label => N('Comment:'), fixed_val => \$o->{var}{wiz_share_comment} }, - { label => N('Browseable:'), fixed_val => \$o->{var}{wiz_share_browseable} }, - { label => N('Writable:'), fixed_val => \$o->{var}{wiz_share_writable} }, - { label => N('Public:'), fixed_val => \$o->{var}{wiz_share_public} }, - { label => N('Create mode:'), fixed_val => \$o->{var}{wiz_share_createmode} }, - { label => N('Read list:'), fixed_val => \$o->{var}{wiz_share_readlist} }, - { label => N('Write list:'), fixed_val => \$o->{var}{wiz_share_writelist} }, - { label => N('Show dot files:'), fixed_val => \$o->{var}{wiz_share_dotfiles} }, - { label => N('Hide files:'), fixed_val => \$o->{var}{wiz_share_hidefiles} }, - ], - post => \&do_it_modify_share, - next => 'end_modify_share', - }, - summary_addcdromshare => { - name => N('CDROM') . "\n\n" . N('If you really want to share a CDROM, click the Next button or use the Back button.'), - post => \&do_it_add_cdromshare, - data => [ - { label => N('Comment:'), fixed_val => \$o->{var}{wiz_cdrom_comment} }, - { label => N('Cdrom path:'), fixed_val => \$o->{var}{wiz_cdrom_path} }, - { label => N('Browseable:'), fixed_val => \$o->{var}{wiz_cdrom_browseable} }, - { label => N('Root preexec:'), fixed_val => \$o->{var}{wiz_cdrom_pre} }, - { label => N('Root postexec:'), fixed_val => \$o->{var}{wiz_cdrom_post} }, - { label => N('Public:'), fixed_val => \$o->{var}{wiz_cdrom_public} }, - ], - next => 'end_add_share', - }, - summary_addshare => { - name => N('Summary add share') . "\n\n" . N('If you really want to add this this share, click the Next button or use the Back button.'), - post => \&do_it_add_share, - data => [ - { label => N('Name of the share:'), fixed_val => \$o->{var}{wiz_addshare_name} }, - { label => N('Comment:'), fixed_val => \$o->{var}{wiz_addshare_comment} }, - { label => N('Browseable:'), fixed_val => \$o->{var}{wiz_addshare_browseable} }, - { label => N('Writable:'), fixed_val => \$o->{var}{wiz_addshare_writable} }, - { label => N('Public:'), fixed_val => \$o->{var}{wiz_addshare_public} }, - { label => N('Create mode:'), fixed_val => \$o->{var}{wiz_addshare_createmode} }, - { label => N('Read list:'), fixed_val => \$o->{var}{wiz_addshare_readlist} }, - { label => N('Write list:'), fixed_val => \$o->{var}{wiz_addshare_writelist} }, - { label => N('Show dot files:'), fixed_val => \$o->{var}{wiz_addshare_dotfiles} }, - ], - next => 'end_add_share', - }, - summary_delete => { - name => N('Summary remove a share') . "\n\n" . N('If you really want to remove this share, click the Next button or use the Back button.'), - data => [ - { label => N('Name of the share to delete:'), fixed_val => \$o->{var}{wiz_selected_share} }, - ], - post => \&do_it_remove_share, - next => 'end_delete_share', - }, summary => { name => N('Configuring Samba') . "\n\n" . N('The wizard collected the following parameters to configure Samba.') . "\n\n" . N('To accept these values, and configure your server, click the Next button or use the Back button to correct them.') . "\n\n" . N('If you have previously create some shares, they will appear in this configuration. Re-run wizard and choose: Manage share to remove/add/modify them.'), pre => sub { - $o->{var}{printers} = get_printers(); - $o->{var}{file_sharing} = $o->{var}{wiz_do_file_sharing} ? N("enabled") : N("disabled"); - $o->{var}{printer_sharing} = $o->{var}{wiz_do_printer_sharing} ? N("enabled") : N("disabled"); - $o->{var}{shared_homes} = $o->{var}{wiz_do_homes} ? N("enabled") : N("disabled") + $o->{var}{wiz_sambatype} = $type{$o->{var}{wiz_type}}; }, data => [ + { label => N('Samba type:'), fixed_val => \$o->{var}{wiz_sambatype} }, { label => N('Workgroup:'), fixed_val => \$o->{var}{wiz_workgroup} }, { label => N('Server banner:'), fixed_val => \$o->{var}{wiz_banner} }, - { label => N('Public file sharing:'), fixed_val => \$o->{var}{file_sharing} }, - { label => N('Print server:'), fixed_val => \$o->{var}{printer_sharing} }, - { label => N('Home:'), fixed_val => \$o->{var}{shared_homes} }, + { label => N('Log file:'), fixed_val => \$o->{var}{wiz_log_file} }, ], post => \&do_it, next => 'end' @@ -711,24 +364,10 @@ $o->{pages} = { post => sub { store_samba_type($o->{var}{wiz_type}); }, + no_back => 1, end => 1, next => 0 }, - end_modify_share => { - name => N('Congratulations') . "\n\n" . N('The wizard successfully modify your share.'), - end => 1, - next => 0 - }, - end_add_share => { - name => N('Congratulations') . "\n\n" . N('The wizard successfully add your share.'), - end => 1, - next => 0 - }, - end_delete_share => { - name => N('Congratulations') . "\n\n" . N('The wizard successfully remove your share.'), - end => 1, - next => 0 - }, error_end => { name => N("Failed"), data => [ { label => N("Please relaunch drakwizard, and try to change some parameters.") } ], @@ -745,23 +384,6 @@ sub new { }, $class; } -sub wiz_mkdir_p { - my ($dir) = @_; - if (-d $dir) { - # Do nothing, directory exists - } elsif (-e $dir) { - # Directory is file, we are not going to delete it - return 0; - } else { - # Create parent directory - wiz_mkdir_p(dirname($dir)) or return 0; - # Create our directory - mkdir($dir, 0755) or return 0; - chown "nobody", "users", $dir; - } - 1; -} - sub check() { $> and return 1; $wiz->{net}->is_dhcp() and return 2; @@ -775,11 +397,6 @@ sub add_printer { $samba->{$printer}{printable} = 'yes'; } -sub remove_share { - my ($share) = @_; - delete $samba->{$share}; -} - sub remove_printer { my ($printer) = @_; delete $samba->{$printer}; @@ -807,19 +424,6 @@ sub list_printers() { } else { () } } -sub list_all_shares() { - undef @listshare; - foreach my $clef (keys %$samba) { - if ($samba->{$clef}{printable} =~ /yes/i) { - print "$clef is a printer\n"; - } elsif ($clef =~ /global/ or $clef =~ /print\$/) { - print "unwanted\n"; - } else { - push @listshare, $clef; - } - } - return @listshare; -} sub printer_sharing() { # create default sedction for printers with default value @@ -931,79 +535,6 @@ sub write_conf_restart_smb { } else { services::start('smb') } } -sub do_it_remove_share { - $::testing and return; - my $in = 'interactive'->vnew('su', 'Samba'); - my $w = $in->wait_message(N("Samba server"), N("Configuring your Samba server...")); - my $share = $o->{var}{wiz_selected_share}; - delete $samba->{$share}; - - write_conf_restart_smb(); - undef $w; - check_started('smbd'); -} - -sub do_it_modify_share { - $::testing and return; - my $in = 'interactive'->vnew('su', 'Samba'); - my $w = $in->wait_message(N("Samba server"), N("Configuring your Samba server...")); - my $share = $o->{var}{wiz_selected_share}; - $samba->{$share}; - $samba->{$share}{comment} = $o->{var}{wiz_share_comment}; - $samba->{$share}{browseable} = $o->{var}{wiz_share_browseable}; - $samba->{$share}{writable} = $o->{var}{wiz_share_writable}; - $samba->{$share}{public} = $o->{var}{wiz_share_public}; - $o->{var}{wiz_share_hidefiles} and $samba->{$share}{'hide files'} = $o->{var}{wiz_share_hidefiles}; - $o->{var}{wiz_share_dotfiles} and $samba->{$share}{'hide dot files'} = $o->{var}{wiz_share_dotfiles}; - $o->{var}{wiz_share_readlist} and $samba->{$share}{'read list'} = $o->{var}{wiz_share_readlist}; - $o->{var}{wiz_share_writelist} and $samba->{$share}{'write list'} = $o->{var}{wiz_share_writelist}; - $o->{var}{wiz_share_createmode} and $samba->{$share}{'create mode'} = $o->{var}{wiz_share_createmode}; - - write_conf_restart_smb(); - undef $w; - check_started('smbd'); -} - -sub do_it_add_cdromshare { - $::testing and return; - my $in = 'interactive'->vnew('su', 'Samba'); - my $w = $in->wait_message(N("Samba server"), N("Configuring your Samba server...")); - $samba->{cdrom}{comment} = $o->{var}{wiz_cdrom_comment}; - $samba->{cdrom}{path} = $o->{var}{wiz_cdrom_path}; - $samba->{cdrom}{path} = $o->{var}{wiz_cdrom_path}; - $samba->{cdrom}{browseable} = $o->{var}{wiz_cdrom_browseable}; - $samba->{cdrom}{'root preexec'} = $o->{var}{wiz_cdrom_pre}; - $samba->{cdrom}{'root postexec'} = $o->{var}{wiz_cdrom_post}; - $samba->{cdrom}{public} = $o->{var}{wiz_cdrom_public}; - - write_conf_restart_smb(); - undef $w; - check_started('smbd'); -} - -sub do_it_add_share { - $::testing and return; - my $in = 'interactive'->vnew('su', 'Samba'); - my $w = $in->wait_message(N("Samba server"), N("Configuring your Samba server...")); - - my $share = $o->{var}{wiz_addshare_name}; - $samba->{$share}; - $samba->{$share}{comment} = $o->{var}{wiz_addshare_comment}; - $samba->{$share}{path} = $o->{var}{wiz_addshare_path}; - $samba->{$share}{browseable} = $o->{var}{wiz_addshare_browseable}; - $samba->{$share}{writable} = $o->{var}{wiz_addshare_writable}; - $samba->{$share}{public} = $o->{var}{wiz_addshare_public}; - $o->{var}{wiz_addshare_dotfiles} and $samba->{$share}{'hide dot files'} = $o->{var}{wiz_addshare_dotfiles}; - $o->{var}{wiz_addshare_hidefiles} and $samba->{$share}{'hide files'} = $o->{var}{wiz_addshare_hidefiles}; - $o->{var}{wiz_addshare_readlist} and $samba->{$share}{'read list'} = $o->{var}{wiz_addshare_readlist}; - $o->{var}{wiz_addshare_writelist} and $samba->{$share}{'write list'} = $o->{var}{wiz_addshare_writelist}; - $o->{var}{wiz_addshare_createmode} and $samba->{$share}{'create mode'} = $o->{var}{wiz_addshare_createmode}; - - write_conf_restart_smb(); - undef $w; - check_started('smbd'); -} - # remember one variable cannot be commented and not in the same file. sub do_it { $::testing and return; @@ -1014,57 +545,15 @@ sub do_it { # global section $samba->{global}{workgroup} = $o->{var}{wiz_workgroup}; $samba->{global}{'server string'} = $o->{var}{wiz_banner}; - - if ($o->{var}{wiz_netbios}) { - $samba->{global}{netbios} = $o->{var}{wiz_netbios}; - } + $o->{var}{wiz_netbios} and $o->{var}{wiz_netbios} and $samba->{global}{netbios} = $o->{var}{wiz_netbios}; # add special global options global_special_options; # log level in global section - $samba->{global}{'log file'} = $o->{var}{wiz_log_file}; - if ($o->{var}{wiz_log_level}) { - $samba->{global}{'log level'} = $o->{var}{wiz_log_level}; - } - - $samba->{global}{'max log size'} = $o->{var}{wiz_max_log_size}; - - # public share - if ($o->{var}{wiz_do_file_sharing}) { - $samba->{public}; - $o->{var}{wiz_write_list} and $samba->{public}{'write list'} = $o->{var}{wiz_write_list}; - $o->{var}{wiz_read_list} and $samba->{public}{'read list'} = $o->{var}{wiz_read_list}; - # enable options if exist - $o->{var}{wiz_share_comment} and $samba->{public}{comment} = $o->{var}{wiz_share_comment}; - $o->{var}{wiz_share_browseable} and $samba->{public}{browseable} = $o->{var}{wiz_share_browseable}; - $o->{var}{wiz_share_writable} and $samba->{public}{writable} = $o->{var}{wiz_share_writable}; - standalone->explanations("Enabling $o->{var}{wiz_dir} samba file sharing"); - $samba->{public}{path} = $o->{var}{wiz_dir}; - } else { - standalone->explanations("Disabling samba file sharing"); - delete $samba->{public}; - } - - # share home dir - if ($o->{var}{wiz_do_homes}) { - standalone->explanations("Enabling samba homes sharing"); - $samba->{homes}; - $samba->{homes}{comment} = $o->{var}{wiz_home_comment}; - $samba->{homes}{browseable} = $o->{var}{wiz_home_browseable}; - $samba->{homes}{writable} = $o->{var}{wiz_home_writable}; - $samba->{homes}{'create mode'} = $o->{var}{wiz_home_createmode}; - } else { - standalone->explanations("Disabling samba homes sharing"); - delete $samba->{homes}; - } - standalone->explanations("Samba deny $o->{var}{wiz_hosts_deny}"); - standalone->explanations("Samba allow $o->{var}{wiz_hosts_allow}"); - - # get comment -# my $v = $samba->get_comments('{printers}'); -# print $v->{normal}; -# print $v->{right_inline}; + $o->{var}{wiz_log_file} and $samba->{global}{'log file'} = $o->{var}{wiz_log_file}; + $o->{var}{wiz_log_level} and $samba->{global}{'log level'} = $o->{var}{wiz_log_level}; + $o->{var}{wiz_max_log_size} and $samba->{global}{'max log size'} = $o->{var}{wiz_max_log_size}; # share printers if ($o->{var}{wiz_do_printer_sharing}) { |