summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xftp_wizard/Proftpd.pm102
1 files changed, 43 insertions, 59 deletions
diff --git a/ftp_wizard/Proftpd.pm b/ftp_wizard/Proftpd.pm
index f08aba26..f696a7de 100755
--- a/ftp_wizard/Proftpd.pm
+++ b/ftp_wizard/Proftpd.pm
@@ -81,7 +81,12 @@ $o->{pages} = {
{ label => N("Enable the FTP server for the intranet"), type => 'bool', val => \$o->{var}{wiz_ftp_internal} },
{ label => N("Enable the FTP server for the Internet"), type => 'bool', val => \$o->{var}{wiz_ftp_external} },
],
- post => \&check_opt,
+ complete => sub {
+ if ($o->{var}{wiz_ftp_external} == 0 && $o->{var}{wiz_ftp_internal} == 0) {
+ $::in->ask_warn(N("Error"), N("Please choose whether to allow a connection to FTP server from internal or external hosts."));
+ return 1;
+ } else { return 0 }
+ },
next => 'options'
},
options => {
@@ -99,29 +104,24 @@ $o->{pages} = {
{ label => N("Allow FTP resume:"), type => 'bool', val => \$o->{var}{wiz_ftp_resume} },
{ label => N("Allow FXP:"), type => 'bool', val => \$o->{var}{wiz_ftp_fxp} },
],
- post => \&check_shell,
+ complete => sub {
+ if (!any { /bash/ } cat_("/etc/shells")) {
+ $::in->ask_warn(N("Error"), N("I can't find bash in list of shells! It seems you have modified it by hand! Please correct."));
+ return 1;
+ } else { return 0 }
+ },
next => 'summary',
},
- warning_dhcp => {
- name => N("Warning.") . "\n\n" . N("You are in DHCP, server may not work with your configuration."),
- ignore => 1,
- next => 'config'
- },
- error_choose => {
- name => N("Please choose whether to allow a connection to FTP server from internal or external hosts."),
- next => 'config',
- },
- error_shell => {
- name => N("I can't find bash in list of shells! It seems you have modified it by hand! Please correct."),
- no_back => 1,
- end => 1,
- next => 0,
+ warning_dhcp => {
+ name => N("Warning.") . "\n\n" . N("You are in DHCP, server may not work with your configuration."),
+ ignore => 1,
+ next => 'config'
},
- must_be_root => {
- name => N("Error.") . "\n\n" . N("Sorry, you must be root to do this..."),
- ignore => 1,
+ must_be_root => {
+ name => N("Error.") . "\n\n" . N("Sorry, you must be root to do this..."),
+ ignore => 1,
next => 'config'
- },
+ },
summary => {
name => N("Configuring the FTP server") . "\n\n" . N("The wizard collected the following parameters needed to configure your FTP server") . "\n\n" . N("To accept those values, and configure your server, click the next button or use the back button to correct them"),
pre => sub {
@@ -166,47 +166,31 @@ sub new {
}, $class;
}
-sub check_opt {
- if ($o->{var}{wiz_ftp_external} == 0 && $o->{var}{wiz_ftp_internal} == 0) {
- return 'error_choose'
- }
-}
-
-sub check_shell {
- if (!any { /bash/ } cat_("/etc/shells")) { return 'error_shell' }
-}
-
sub true {
my ($val) = @_;
return member($val, qw(1 '1' "1" true 'true' "true"));
}
-sub check_dir {
- -d $o->{var}{wiz_dir} and return 10;
- 1
-}
-
sub get_dir {
- my $file = "/etc/proftpd.conf";
- die "no FTP configuration file found! warning." if !-f $file;
- local *NEW;
- open(NEW, "< $file") or die "error while opening $file: $!";
-
- local $_;
- while (<NEW>) { # we need 3 elements to consider section as known
- if (m/^\s*<drakwizard>/s...m!^\s*</drakwizard>!s) {
- if (m/^\s*<Anonymous\s*(.*)>/s) {
- return $1;
- }
- }
+ my $file = "/etc/proftpd.conf";
+ die "no FTP configuration file found! warning." if !-f $file;
+ local *NEW;
+ open(NEW, "< $file") or die "error while opening $file: $!";
+ local $_;
+ while (<NEW>) { # we need 3 elements to consider section as known
+ if (m/^\s*<drakwizard>/s...m!^\s*</drakwizard>!s) {
+ if (m/^\s*<Anonymous\s*(.*)>/s) {
+ return $1;
+ }
}
- ""
+ }
+ "";
}
sub check {
$> and return 'must_be_root';
$wiz->{net}->is_dhcp and return 'warning_dhcp';
- ''
+ '';
}
sub print_anonymous {
@@ -234,7 +218,7 @@ sub change_options {
if (any { /^$var_in_conf/ } cat_($file)) {
substInFile { s/$var_in_conf.*/$var_in_conf $status/ } $file;
} else {
- append_to_file($file, "$var_in_conf $status\n")
+ append_to_file($file, "$var_in_conf $status\n");
}
}
@@ -244,7 +228,7 @@ sub add_options {
if (any { /^$var/ } cat_($file)) {
substInFile { s/$var.*/$var $value/ } $file;
} else {
- append_to_file($file, "$var $value\n")
+ append_to_file($file, "$var $value\n");
}
}
@@ -270,7 +254,7 @@ sub do_it {
if (!$bloc) {
$bloc = "
-#drakwizard_pxe_b
+#drakwizard_proftpd
<Global>
<Limit LOGIN>
Order allow,deny
@@ -278,7 +262,7 @@ sub do_it {
Deny from all
</Limit>
</Global>
-#drakwizard_pxe_end
+#drakwizard_proftpd
";
append_to_file($file, $bloc);
@@ -290,9 +274,9 @@ sub do_it {
# wiz_root_login wiz_server_admin wiz_default_root wiz_ftp_resume wiz_ftp_fxp
if ($o->{var}{wiz_server_admin}) {
if (any { /^ServerAdmin/ } cat_($file)) {
- substInFile { s/ServerAdmin.*/ServerAdmin $o->{var}{wiz_server_admin}/ } $file
+ substInFile { s/ServerAdmin.*/ServerAdmin $o->{var}{wiz_server_admin}/ } $file;
} else {
- append_to_file($file, "ServerAdmin $o->{var}{wiz_server_admin}\n")
+ append_to_file($file, "ServerAdmin $o->{var}{wiz_server_admin}\n");
}
} else { substInFile { s/ServerAdmin.*// } $file }
@@ -305,9 +289,9 @@ sub do_it {
my $data;
if ($o->{var}{wiz_default_root} == 1) {
- $data = "DefaultRoot ~"
+ $data = "DefaultRoot ~";
} else {
- $data = ""
+ $data = "";
}
if (any { /^DefaultRoot/ } cat_($file)) {
substInFile { s/DefaultRoot.*/$data/ } $file;
@@ -321,9 +305,9 @@ sub do_it {
}
if (services::is_service_running('proftpd')) {
- services::restart('proftpd')
+ services::restart('proftpd');
} else {
- services::start('proftpd')
+ services::start('proftpd');
}
check_started('proftpd');
}