summaryrefslogtreecommitdiffstats
path: root/ftp_wizard
diff options
context:
space:
mode:
Diffstat (limited to 'ftp_wizard')
-rwxr-xr-xftp_wizard/Proftpd.pm52
1 files changed, 36 insertions, 16 deletions
diff --git a/ftp_wizard/Proftpd.pm b/ftp_wizard/Proftpd.pm
index f696a7de..d34ea43a 100755
--- a/ftp_wizard/Proftpd.pm
+++ b/ftp_wizard/Proftpd.pm
@@ -30,6 +30,11 @@ use MDK::Wizard::Wizcommon;
my $wiz = MDK::Wizard::Wizcommon->new;
+my $file = "/etc/proftpd.conf";
+
+my ($servername) = cat_($file) =~ /ServerName\s+(\S*.*)/;
+my ($ftp_port) = cat_($file) =~ /Port\s+(\d+)/;
+
my $o = {
name => N("FTP wizard"),
var => {
@@ -42,6 +47,8 @@ my $o = {
wiz_default_root => '',
wiz_ftp_resume => '',
wiz_ftp_fxp => '',
+ wiz_server_name => '',
+ wiz_port => '',
},
needed_rpm => [ 'proftpd' ],
defaultimage => "$ENV{__WIZ_HOME__}ftp_wizard/images/FTP.png"
@@ -90,28 +97,42 @@ $o->{pages} = {
next => 'options'
},
options => {
- name => N("FTP Proftpd server options") . "\n\n" . N("Permit root login: allow root to log on FTP server.") . "\n" . N("Admin email: email address of the FTP administrator.") . "\n" . N("Chroot home user: users will only see their home directory.") . "\n\n" . N("Allow FTP resume: allow resume upload or download on FTP server.") . "\n" . N("Allow FXP: allow file transfer via another FTP."),
+ name => N("FTP Proftpd server options, step 1") . "\n\n" . N("Permit root login: allow root to log on FTP server.") . "\n" . N("Admin email: email address of the FTP administrator."),
pre => sub {
$o->{var}{wiz_root_login} ||= 0;
- $o->{var}{wiz_default_root} ||= 1;
- $o->{var}{wiz_ftp_resume} ||= 1;
- $o->{var}{wiz_ftp_fxp} ||= 0;
+ $o->{var}{wiz_server_name} = $servername;
},
data => [
- { label => N("Admin email:"), val => \$o->{var}{wiz_server_admin} },
+ { label => N('Server name:'), val => \$o->{var}{wiz_server_name} },
+ { label => N("Admin email:"), val => \$o->{var}{wiz_server_admin}, help => 'admin@guibland.com' },
{ label => N("Permit root login:"), type => 'bool', val => \$o->{var}{wiz_root_login} },
- { label => N("Chroot home user:"), type => 'bool', val => \$o->{var}{wiz_default_root} },
- { 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} },
],
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 }
+ }
+ if (!$o->{var}{wiz_server_name}) { $::in->ask_warn(N("Error"), N("Need a server name")); return 1; }
},
- next => 'summary',
+ next => 'options_step2',
},
+ options_step2 => {
+ name => N('FTP server options, step 2') . "\n\n" . N("Chroot home user: users will only see their home directory.") . "\n" . N("Allow FTP resume: allow resume upload or download on FTP server.") . "\n" . N("Allow FXP: allow file transfer via another FTP."),
+ pre => sub {
+ $o->{var}{wiz_default_root} ||= 1;
+ $o->{var}{wiz_ftp_resume} ||= 1;
+ $o->{var}{wiz_ftp_fxp} ||= 0;
+ $o->{var}{wiz_port} = $ftp_port;
+ },
+ data => [
+ { label => N('FTP Port:'), val => \$o->{var}{wiz_port}, help => 'Default port is 21 for an FTP server' },
+ { label => N("Chroot home user:"), type => 'bool', val => \$o->{var}{wiz_default_root} },
+ { 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} },
+ ],
+ complete => sub { if ($o->{var}{wiz_port} !~ /^\d+$/) { $::in->ask_warn(N('Error'), N('FTP Port should be a number.')); return 1; } },
+ next => 'summary',
+ },
warning_dhcp => {
name => N("Warning.") . "\n\n" . N("You are in DHCP, server may not work with your configuration."),
ignore => 1,
@@ -123,7 +144,7 @@ $o->{pages} = {
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"),
+ name => N("Configuring the FTP server") . "\n\n" . N("The wizard collected the following parameters needed to configure your FTP server") . "\n" . N("To accept those values, and configure your server, click the next button or use the back button to correct them"),
pre => sub {
$o->{var}{internal} = $o->{var}{wiz_ftp_internal} ? N("enabled") : N("disabled");
$o->{var}{external} = $o->{var}{wiz_ftp_external} ? N("enabled") : N("disabled");
@@ -133,9 +154,9 @@ $o->{pages} = {
$o->{var}{fxp} = $o->{var}{wiz_ftp_fxp} ? N("enabled") : N("disabled");
},
data => [
+ { label => N('FTP Port:'), fixed_val => \$o->{var}{wiz_port} },
{ label => N("Intranet FTP server:"), fixed_val => \$o->{var}{internal} },
{ label => N("Internet FTP server:"), fixed_val => \$o->{var}{external} },
- { label => N("Admin email"), fixed_val => \$o->{var}{wiz_server_admin} },
{ label => N("Permit root Login"), fixed_val => \$o->{var}{rootlogin} },
{ label => N("Chroot Home user"), fixed_val => \$o->{var}{defaultroot} },
{ label => N("Allow FTP resume"), fixed_val => \$o->{var}{ftpresume} },
@@ -172,7 +193,6 @@ sub true {
}
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: $!";
@@ -212,7 +232,6 @@ sub print_anonymous {
sub change_options {
my ($var, $var_in_conf) = @_;
- my $file = "/etc/proftpd.conf";
my $status;
if ($var == 1) { $status = "on" } else { $status = "off" }
if (any { /^$var_in_conf/ } cat_($file)) {
@@ -224,7 +243,6 @@ sub change_options {
sub add_options {
my ($var, $value) = @_;
- my $file = "/etc/proftpd.conf";
if (any { /^$var/ } cat_($file)) {
substInFile { s/$var.*/$var $value/ } $file;
} else {
@@ -237,7 +255,6 @@ sub do_it {
$::testing and return;
my $wiz_ftp_internal = $o->{var}{wiz_ftp_external} ? 1 : true $o->{var}{wiz_ftp_internal};
my $wiz_ftp_external = true $o->{var}{wiz_ftp_external};
- my $file = "/etc/proftpd.conf";
die "no FTP configuration file found! warning." if !-f $file;
MDK::Common::cp_af($file, $file . ".orig");
my $allow;
@@ -287,6 +304,9 @@ sub do_it {
change_options($o->{var}{wiz_ftp_resume}, "AllowStoreRestart");
change_options($o->{var}{wiz_ftp_resume}, "AllowRetrieveRestart");
+ substInFile { s/^ServerName.*/ServerName $o->{var}{wiz_server_name}/ } $file;
+ substInFile { s/^Port.*/Port $o->{var}{wiz_port}/ } $file;
+
my $data;
if ($o->{var}{wiz_default_root} == 1) {
$data = "DefaultRoot ~";