summaryrefslogtreecommitdiffstats
path: root/samba_wizard/scripts/Smbconf.pm
diff options
context:
space:
mode:
Diffstat (limited to 'samba_wizard/scripts/Smbconf.pm')
-rwxr-xr-xsamba_wizard/scripts/Smbconf.pm339
1 files changed, 0 insertions, 339 deletions
diff --git a/samba_wizard/scripts/Smbconf.pm b/samba_wizard/scripts/Smbconf.pm
deleted file mode 100755
index 253b9c0c..00000000
--- a/samba_wizard/scripts/Smbconf.pm
+++ /dev/null
@@ -1,339 +0,0 @@
-#!/usr/bin/perl
-
-# Drakwizard
-
-# Copyright (C) 2002 MandrakeSoft Arnaud Desmons (adesmons@mandrakesoft.com)
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-package Smbconf;
-use lib '/usr/lib/libDrakX';
-require "__WIZ_HOME__/common/scripts/Vareqval.pm";
-require "__WIZ_HOME__/common/scripts/IFCFG.pm";
-use MDK::Common;
-use strict;
-use services;
-use Data::Dumper;
-
-# All possibilies in the config file must be precedeed by ";"
-# This script can just comment, uncomment or/and change values
-# but can not add anything.
-# so one variable cannot be commented and not in the same file.
-
-my $o = IFCFG->new();
-
-sub check {
- $> and return 1;
- $o->is_dhcp() and return 2;
- 0;
-}
-
-sub check_services {
- $ENV{wiz_do_homes} and return 3;
- $ENV{wiz_do_file_sharing} and return 2;
- $ENV{wiz_do_printer_sharing} and return 1;
- 0;
-}
-
-sub check_dir {
- -d ($ENV{wiz_dir}) and return 10;
- 1;
-}
-
-# the "__" before comment is to avoid conflicts with possible "comment" variable
-# for variables value is in value key and comment idem (no risque of conflict)
-
-sub read_conf {
- my $self = {};
- my ($file) = @_;
- my $menu;
- my @tab;
- my %conf;
-
- open(FH, $file) or die "$! ($file)";
- while (<FH>) {
- if (/^(\s*\;?\s*)\[(.*)\].*/) {
- $menu = $2;
- $conf{$menu}{__comment} = $1;
- }
- elsif (/^(?!\#)(\s*\;*\s*)(.*?)\s*=\s*(.*)\s*$/) {
- $conf{$menu}{$2}{value} = $3;
- $conf{$menu}{$2}{comment} = $1;
- }
- push @tab, $_;
- }
- $self->{conf} = \%conf;
- $self->{tab} = \@tab;
- bless $self;
-}
-
-# we parse @tab to check for values in the struct.
-
-sub write_conf {
- my $self = shift;
- my ($file) = @_;
- my $menu;
-
- open(FH, "> $file") or die "$!";
- foreach (@{$self->{tab}}) {
- if (/^\s*\;?\s*\[(.*)\].*/) {
- $menu = $1;
- print FH "$self->{conf}->{$menu}{__comment}"."[$menu]\n";
- }
- elsif (/^(?!\#)\s*\;*\s*(.*?)\s*=/) {
- print FH "$self->{conf}->{$menu}{$1}{comment}"."$1" ." = ". "$self->{conf}->{$menu}{$1}{value}\n";
- }
- else {
- print FH $_;
- }
- }
-}
-
-#section has the name of the printer
-sub add_printer {
- my $self = shift;
- my ($printer) = @_;
-
- if (exists $self->{conf}->{$printer}) {
- $self->comment_menu($printer, " ");
- }
- else {
- $self->{conf}->{$printer}{printable}{comment} = " ";
- $self->{conf}->{$printer}{printer}{comment} = " ";
- push @{$self->{tab}}, "[$printer]\n";
- push @{$self->{tab}}, "printer = $printer\n";
- push @{$self->{tab}}, "printable = yes\n";
- $self->{conf}->{$printer}{printer}{value} = $printer;
- $self->{conf}->{$printer}{printable}{value} = "yes";
- }
-}
-
-sub list_printers {
- my @list if 0;
-
- return @list if @list;
- @list = sort grep /^(?!\#).*/, map {
- my ($printer) = split(':', $_);
- } cat_("/etc/printcap");
-}
-
-
-sub check_users {
- return 1 if $ENV{wiz_do_printer_sharing};
- 0;
-}
-
-sub comment_menu {
- my $self = shift;
- my ($menu, $str) = @_;
-
- return if (!$menu or !exists $self->{conf}->{$menu});
- $self->{conf}->{$menu}{__comment} = $str;
- foreach (keys %{$self->{conf}->{$menu}}) {
- ($_ eq "__comment") and next;
- $self->{conf}->{$menu}{$_}{comment} = $str;
- }
-}
-
-sub comment_var {
- my $self = shift;
- my ($menu, $var, $str) = @_;
-
- $self->{conf}->{$menu}{$var}{comment} = $str;
-}
-
-sub chg_var {
- my $self = shift;
- my ($menu, $var, $str) = @_;
-
- $self->{conf}->{$menu}{$var}{value} = $str;
-}
-
-# all or selected printers
-sub printer_sharing {
- my $self = shift;
-
- if ($ENV{wiz_all_printers}) {
- $self->comment_menu("printers", " ");
- foreach my $printer (keys (%::bool)) {
- $self->comment_menu($printer, ";");
- }
- }
- else {
- $self->comment_menu("printers", ";");
- foreach my $printer (keys (%::bool)) {
- if (int($::bool{$printer})) {
- $self->comment_menu($printer, " ");
- $self->add_printer($printer);
- }
- else {
- $self->comment_menu($printer, ";");
- }
- }
- }
-}
-
-sub get_printers {
- if ($ENV{wiz_do_printer_sharing}) {
- my $string;
- $ENV{wiz_all_printers} and return "all printers";
- foreach (keys (%::bool)) {
- $string .= "$_, " if int($::bool{$_});
- }
- "$string";
- }
- else {
- "disabled";
- }
-}
-
-sub check_workgroup {
- !$ENV{wiz_workgroup} and return 1;
- 10;
-}
-
-sub ask_acces {
- 10;
-}
-
-my $old = read_conf("/etc/samba/smb.conf");
-
-sub get_write {
- $old->{conf}->{public}{"write list"}{value};
-}
-
-sub get_read {
- $old->{conf}->{public}{"read list"}{value};
-}
-
-sub check_banner {
- !$ENV{wiz_banner} and return 1;
- 10;
-}
-
-sub get_workgroup {
- $old->{conf}->{global}{workgroup}{value};
-}
-
-sub get_banner {
- $old->{conf}->{global}{"server string"}{value};
-}
-
-sub ask_dir {
- return 2 if $ENV{wiz_do_file_sharing};
- return 1 if $ENV{wiz_do_printer_sharing};
- 0;
-}
-
-sub get_dir {
- $old->{conf}->{public}{path}{value};
-}
-
-sub get_file_sharing {
- return 0 if ($old->{conf}->{public}{__comment} =~ /\;|\#/);
- 1;
-}
-
-sub get_home_sharing {
- return 0 if ($old->{conf}->{homes}{__comment} =~ /\;|\#/);
- 1;
-}
-
-sub get_netmask {
- "192.168.100.1/255.255.255.0";
-}
-
-sub get_allow_host {
- $old->{conf}->{global}{"hosts allow"}{value};
-}
-
-sub get_deny_host {
- $old->{conf}->{global}{"hosts deny"}{value};
-}
-
-sub chk_level {
-# if ($ENV{wiz_level} == 2) {
-# $ENV{wiz_allow_allow} = "toto";
-# $ENV{wiz_allow_allow} = "toto";
-# }
-# else {
-# $ENV{wiz_hosts_deny} = "tata";
-# $ENV{wiz_hosts_deny} = "tata";
-# }
-# if ($ENV{wiz_level} == 3) {
-# $ENV{wiz_allow_allow} = "toto";
-# $ENV{wiz_allow_allow} = "toto";
-# }
-# else {
-# $ENV{wiz_hosts_deny} = "tata";
-# $ENV{wiz_hosts_deny} = "tata";
-# }
- $ENV{wiz_level};
-}
-
-# remember one variable cannot be commented and not in the same file.
-sub do_it {
- my $file = "__WIZ_HOME__/samba_wizard/scripts/smb.conf.default";
-
- my $conf = read_conf($file);
- $conf->chg_var("global", "workgroup", $ENV{wiz_workgroup});
- $conf->chg_var("global", "server string", $ENV{wiz_banner});
- $conf->chg_var("public", "write list", $ENV{wiz_write_list}) if $ENV{wiz_do_file_sharing};
- $conf->chg_var("public", "read list", $ENV{wiz_read_list}) if $ENV{wiz_do_file_sharing};
- my $ip = $o->itf_get("IPADDR");
- if ($ENV{wiz_do_file_sharing}) {
- standalone->explanations("Enabling $ENV{wiz_dir} samba file sharing");
- $conf->comment_menu("public", " ");
- $conf->chg_var("public", "path", $ENV{wiz_dir});
- }
- else {
- standalone->explanations("Disabling samba file sharing");
- $conf->comment_menu("public", ";");
- }
- if ($ENV{wiz_do_homes}) {
- standalone->explanations("Enabling samba homes sharing");
- $conf->comment_menu("homes", " ");
- }
- else {
- standalone->explanations("Disabling samba homes sharing");
- $conf->comment_menu("homes", ";");
- }
- standalone->explanations("Samba deny $ENV{wiz_hosts_deny}");
- standalone->explanations("Samba allow $ENV{wiz_hosts_allow}");
-# $conf->chg_var("global", "hosts deny", $ENV{wiz_hosts_deny});
-# $conf->chg_var("global", "hosts allow", $ENV{wiz_hosts_allow});
-
- if ($ENV{wiz_do_printer_sharing}) {
- standalone->explanations("Enabling printer sharing");
- $conf->printer_sharing();
- }
- else {
- standalone->explanations("Disabling printer sharing");
- foreach my $printer (keys (%::bool)) {
- if (!int($::bool{$printer})) {
- $conf->comment_menu("$printer", ";");
- }
- }
- $conf->comment_menu("printers", ";");
- }
- $conf->write_conf("/etc/samba/smb.conf");
- if (services::is_service_running('smb')) {
- services::restart('smb')
- } else {
- services::start('smb')
- }
- 10;
-}
-1;