chore: import upstream snapshot with attribution

This commit is contained in:
wehub-resource-sync
2026-07-13 13:12:17 +08:00
commit cf8edb9f21
44281 changed files with 1655134 additions and 0 deletions
+10
View File
@@ -0,0 +1,10 @@
---- Changes since 1.140 ----
Added 'Apply Changes' link to all pages, just like in the Apache module.
---- Changes since 1.250 ----
Added a button to the main page for stopping the ProFTPd server.
---- Changes since 1.310 ----
Fixed the default config file path on Debian, as it is different from Ubuntu.
---- Changes since 1.340 ----
Added a Module Config option to specify the file for new virtual hosts.
---- Changes since 1.380 ----
Added support for the DisplayChdir directive.
+31
View File
@@ -0,0 +1,31 @@
#!/usr/local/bin/perl
# allmanual_form.cgi
# Display a text box for manually editing directives from one of the files
require './proftpd-lib.pl';
&ReadParse();
&ui_print_header(undef, $text{'manual_configs'}, "",
undef, undef, undef, undef, &restart_button());
$conf = &get_config();
@files = &unique(map { $_->{'file'} } @$conf);
$in{'file'} = $files[0] if (!$in{'file'});
&indexof($in{'file'}, @files) >= 0 || &error($text{'manual_efile'});
# File selector
print &ui_form_start("allmanual_form.cgi");
print &ui_submit($text{'manual_file'}),"\n";
print &ui_select("file", $in{'file'}, \@files);
print &ui_form_end();
# File editor
print &ui_form_start("allmanual_save.cgi", "form-data");
print &ui_hidden("file", $in{'file'});
print &ui_table_start(undef, undef, 2);
print &ui_table_row(undef,
&ui_textarea("data", &read_file_contents($in{'file'}), 20, 80), 2);
print &ui_table_end();
print &ui_form_end([ [ undef, $text{'save'} ] ]);
&ui_print_footer("", $text{'index_return'});
+27
View File
@@ -0,0 +1,27 @@
#!/usr/local/bin/perl
# allmanual_save.cgi
# Save an entire config file
require './proftpd-lib.pl';
&ReadParseMime();
$conf = &get_config();
@files = &unique(map { $_->{'file'} } @$conf);
&indexof($in{'file'}, @files) >= 0 || &error($text{'manual_efile'});
$temp = &transname();
system("cp ".quotemeta($in{'file'})." $temp");
$in{'data'} =~ s/\r//g;
&open_lock_tempfile(FILE, ">$in{'file'}");
&print_tempfile(FILE, $in{'data'});
&close_tempfile(FILE);
if ($config{'test_manual'}) {
$err = &test_config();
if ($err) {
system("mv $temp ".quotemeta($in{'file'}));
&error(&text('manual_etest', "<pre>$err</pre>"));
}
}
unlink($temp);
&redirect("");
+68
View File
@@ -0,0 +1,68 @@
#!/usr/local/bin/perl
# anon_index.cgi
# Display a menu for anonymous section options
require './proftpd-lib.pl';
&ReadParse();
($conf, $v) = &get_virtual_config($in{'virt'});
$anonstr = &find_directive_struct("Anonymous", $conf);
if (!$anonstr) {
# Go to the anon options page
&redirect("edit_aserv.cgi?virt=$in{'virt'}&init=1");
exit;
}
$anon = $anonstr->{'members'};
# Display header and config icons
$desc = $in{'virt'} eq '' ? $text{'anon_header2'} :
&text('anon_header1', $v->{'value'});
&ui_print_header($desc, $text{'anon_title'}, "", undef, undef, undef, undef, &restart_button());
print "<h3>$text{'anon_opts'}</h3>\n";
$anon_icon = { "icon" => "images/anon.gif",
"name" => $text{'anon_anon'},
"link" => "edit_aserv.cgi?virt=$in{'virt'}" };
&config_icons("anon", "edit_anon.cgi?virt=$in{'virt'}&", $anon_icon);
# Display per-directory/limit options
@dir = ( &find_directive_struct("Directory", $anon) ,
&find_directive_struct("Limit", $anon) );
if (@dir) {
print &ui_hr();
print "<h3>$text{'virt_header'}</h3>\n";
foreach $d (@dir) {
if ($d->{'name'} eq 'Limit') {
push(@links, "limit_index.cgi?virt=$in{'virt'}&".
"anon=1&limit=".&indexof($d, @$anon));
push(@titles, &text('virt_limit', $d->{'value'}));
push(@icons, "images/limit.gif");
}
else {
push(@links, "dir_index.cgi?virt=$in{'virt'}&".
"anon=1&idx=".&indexof($d, @$anon));
push(@titles, &text('virt_dir', $d->{'value'}));
push(@icons, "images/dir.gif");
}
}
&icons_table(\@links, \@titles, \@icons, 3);
}
print "<p>\n";
print &ui_form_start("create_dirlimit.cgi", "post");
print &ui_hidden("virt", $in{'virt'});
print &ui_hidden("anon", 1);
print &ui_table_start($text{'index_dlheader'}, undef, 2);
print &ui_table_row($text{'index_dlmode'},
&ui_radio_table("mode", 0,
[ [ 0, $text{'virt_path'},
&ui_textbox("dir", undef, 50) ],
[ 1, $text{'virt_cmds'},
&ui_textbox("cmd", undef, 30) ] ]));
print &ui_table_end();
print &ui_form_end([ [ undef, $text{'create'} ] ]);
&ui_print_footer("virt_index.cgi?virt=$in{'virt'}", $text{'virt_return'},
"", $text{'index_return'});
+16
View File
@@ -0,0 +1,16 @@
#!/usr/local/bin/perl
# apply.cgi
# Apply config file changes with a HUP signal
require './proftpd-lib.pl';
&ReadParse();
&error_setup($text{'apply_err'});
if ($config{'test_config'}) {
$err = &test_config();
&error("<pre>$err</pre>") if ($err);
}
$err = &apply_configuration();
&error($err) if ($err);
&webmin_log("apply");
&redirect($in{'redir'});
+48
View File
@@ -0,0 +1,48 @@
do 'proftpd-lib.pl';
# backup_config_files()
# Returns files and directories that can be backed up
sub backup_config_files
{
local $conf = &get_config();
local @rv = map { $_->{'file'} } @$conf;
return &unique(@rv);
}
# pre_backup(&files)
# Called before the files are actually read
sub pre_backup
{
return undef;
}
# post_backup(&files)
# Called after the files are actually read
sub post_backup
{
return undef;
}
# pre_restore(&files)
# Called before the files are restored from a backup
sub pre_restore
{
return undef;
}
# post_restore(&files)
# Called after the files are restored from a backup
sub post_restore
{
local ($inet, $inet_mod) = &running_under_inetd();
return undef if ($inet);
local $pid = &get_proftpd_pid();
if ($pid) {
&kill_logged('HUP', $pid);
}
return undef;
}
1;
+8
View File
@@ -0,0 +1,8 @@
proftpd_path=/usr/local/sbin/proftpd
proftpd_conf=/usr/local/etc/proftpd.conf
pid_file=/usr/local/var/proftpd.pid
ftpusers=/etc/ftpusers
test_config=1
test_always=0
test_manual=0
show_list=0
+12
View File
@@ -0,0 +1,12 @@
proftpd_path=/usr/sbin/proftpd
proftpd_conf=/etc/proftpd.conf
ftpusers=/etc/ftpusers
test_config=1
test_always=0
test_manual=0
stop_cmd=systemctl stop proftpd
start_cmd=systemctl start proftpd
defines_file=/etc/sysconfig/proftpd
defines_name=PROFTPD_OPTIONS
pid_file=/run/proftpd/proftpd.pid
show_list=0
+11
View File
@@ -0,0 +1,11 @@
proftpd_path=/usr/sbin/proftpd
proftpd_conf=/etc/proftpd.conf
ftpusers=/etc/ftpusers
test_config=1
test_always=0
test_manual=0
stop_cmd=systemctl stop proftpd
start_cmd=systemctl start proftpd
defines_file=/etc/sysconfig/proftpd
defines_name=PROFTPD_OPTIONS
show_list=0
+12
View File
@@ -0,0 +1,12 @@
proftpd_path=/usr/sbin/proftpd
proftpd_conf=/etc/proftpd.conf
ftpusers=/etc/ftpusers
test_config=1
test_always=0
test_manual=0
stop_cmd=systemctl stop proftpd
start_cmd=systemctl start proftpd
defines_file=/etc/sysconfig/proftpd
defines_name=PROFTPD_OPTIONS
pid_file=/run/proftpd/proftpd.pid
show_list=0
@@ -0,0 +1,12 @@
proftpd_path=/usr/sbin/proftpd
proftpd_conf=/etc/proftpd.conf
ftpusers=/etc/ftpusers
test_config=1
test_always=0
test_manual=0
stop_cmd=systemctl stop proftpd
start_cmd=systemctl start proftpd
defines_file=/etc/sysconfig/proftpd
defines_name=PROFTPD_OPTIONS
pid_file=/run/proftpd/proftpd.pid
show_list=0
+12
View File
@@ -0,0 +1,12 @@
proftpd_path=/usr/sbin/proftpd
proftpd_conf=/etc/proftpd.conf
ftpusers=/etc/ftpusers
test_config=1
test_always=0
test_manual=0
stop_cmd=systemctl stop proftpd
start_cmd=systemctl start proftpd
defines_file=/etc/sysconfig/proftpd
defines_name=PROFTPD_OPTIONS
pid_file=/run/proftpd/proftpd.pid
show_list=0
+12
View File
@@ -0,0 +1,12 @@
proftpd_path=/usr/sbin/proftpd
proftpd_conf=/etc/proftpd.conf
ftpusers=/etc/ftpusers
test_config=1
test_always=0
test_manual=0
stop_cmd=systemctl stop proftpd
start_cmd=systemctl start proftpd
defines_file=/etc/sysconfig/proftpd
defines_name=PROFTPD_OPTIONS
pid_file=/run/proftpd/proftpd.pid
show_list=0
@@ -0,0 +1,11 @@
proftpd_path=/usr/sbin/proftpd
proftpd_conf=/etc/proftpd.conf
ftpusers=/etc/ftpusers
test_config=1
test_always=0
test_manual=0
stop_cmd=systemctl stop proftpd
start_cmd=systemctl start proftpd
defines_file=/etc/sysconfig/proftpd
defines_name=PROFTPD_OPTIONS
show_list=0
+12
View File
@@ -0,0 +1,12 @@
proftpd_path=/usr/sbin/proftpd
proftpd_conf=/etc/proftpd.conf
ftpusers=/etc/ftpusers
test_config=1
test_always=0
test_manual=0
stop_cmd=systemctl stop proftpd
start_cmd=systemctl start proftpd
defines_file=/etc/sysconfig/proftpd
defines_name=PROFTPD_OPTIONS
pid_file=/run/proftpd/proftpd.pid
show_list=0
+11
View File
@@ -0,0 +1,11 @@
proftpd_path=/usr/sbin/proftpd
proftpd_conf=/etc/proftpd.conf
ftpusers=/etc/ftpusers
test_config=1
test_always=0
test_manual=0
stop_cmd=systemctl stop proftpd
start_cmd=systemctl start proftpd
defines_file=/etc/sysconfig/proftpd
defines_name=PROFTPD_OPTIONS
show_list=0
+10
View File
@@ -0,0 +1,10 @@
proftpd_path=/usr/sbin/proftpd
proftpd_conf=/etc/proftpd/proftpd.conf
pid_file=/var/run/proftpd.pid
start_cmd=systemctl start proftpd
stop_cmd=systemctl stop proftpd
ftpusers=/etc/ftpusers
test_config=1
test_always=0
test_manual=0
show_list=0
+8
View File
@@ -0,0 +1,8 @@
proftpd_path=/usr/sbin/proftpd
proftpd_conf=/etc/proftpd.conf
pid_file=/var/run/proftpd.pid
ftpusers=/etc/ftpusers
test_config=1
test_always=0
test_manual=0
show_list=0
+8
View File
@@ -0,0 +1,8 @@
proftpd_path=/usr/sbin/proftpd
proftpd_conf=/etc/proftpd.conf
pid_file=/var/run/proftpd.pid
ftpusers=/etc/ftpusers
test_config=1
test_always=0
test_manual=0
show_list=0
+10
View File
@@ -0,0 +1,10 @@
proftpd_path=/usr/sbin/proftpd
proftpd_conf=/etc/proftpd.conf
pid_file=/var/run/proftpd.pid
start_cmd=/etc/init.d/proftpd start
stop_cmd=/etc/init.d/proftpd stop
ftpusers=/etc/ftpusers
test_config=1
test_always=0
test_manual=0
show_list=0
+10
View File
@@ -0,0 +1,10 @@
proftpd_path=/usr/sbin/proftpd
proftpd_conf=/etc/proftpd/proftpd.conf
pid_file=/var/run/proftpd.pid
start_cmd=systemctl start proftpd
stop_cmd=systemctl stop proftpd
ftpusers=/etc/ftpusers
test_config=1
test_always=0
test_manual=0
show_list=0
+10
View File
@@ -0,0 +1,10 @@
proftpd_path=/usr/sbin/proftpd
proftpd_conf=/etc/proftpd/proftpd.conf
pid_file=/var/run/proftpd.pid
start_cmd=/etc/init.d/proftpd start
stop_cmd=/etc/init.d/proftpd stop
ftpusers=/etc/ftpusers
test_config=1
test_always=0
test_manual=0
show_list=0
+8
View File
@@ -0,0 +1,8 @@
proftpd_path=/usr/local/sbin/proftpd
proftpd_conf=/usr/local/etc/proftpd.conf
pid_file=/var/run/proftpd.pid
ftpusers=/etc/ftpusers
test_config=1
test_always=0
test_manual=0
show_list=0
+10
View File
@@ -0,0 +1,10 @@
proftpd_path=/usr/local/sbin/proftpd
proftpd_conf=/usr/local/etc/proftpd.conf
pid_file=/var/run/proftpd.pid
ftpusers=/etc/ftpusers
test_config=1
test_always=0
test_manual=0
start_cmd=/usr/local/etc/rc.d/proftpd forcestart
stop_cmd=/usr/local/etc/rc.d/proftpd forcestop
show_list=0
+8
View File
@@ -0,0 +1,8 @@
proftpd_path=/usr/sbin/proftpd
proftpd_conf=/etc/proftpd/proftpd.conf
pid_file=/var/run/proftpd.pid
ftpusers=/etc/ftpusers
test_config=1
test_always=0
test_manual=0
show_list=0
+10
View File
@@ -0,0 +1,10 @@
proftpd_path=/usr/sbin/proftpd
proftpd_conf=/etc/proftpd.conf
pid_file=/var/run/proftpd.pid
start_cmd=service proftpd start
stop_cmd=service proftpd stop
ftpusers=/etc/ftpusers
test_config=1
test_always=0
test_manual=0
show_list=0
+8
View File
@@ -0,0 +1,8 @@
proftpd_path=/usr/sbin/proftpd
proftpd_conf=/etc/proftpd.conf
pid_file=/var/run/proftpd.pid
ftpusers=/etc/ftpusers
test_config=1
test_always=0
test_manual=0
show_list=0
+8
View File
@@ -0,0 +1,8 @@
proftpd_path=/usr/sbin/proftpd
proftpd_conf=/etc/proftpd.conf
pid_file=/var/run/proftpd.pid
ftpusers=/etc/ftpusers
test_config=1
test_always=0
test_manual=0
show_list=0
+10
View File
@@ -0,0 +1,10 @@
proftpd_path=/usr/sbin/proftpd
proftpd_conf=/etc/proftpd/proftpd.conf
pid_file=/var/run/proftpd.pid
start_cmd=systemctl start proftpd
stop_cmd=systemctl stop proftpd
ftpusers=/etc/ftpusers
test_config=1
test_always=0
test_manual=0
show_list=0
+10
View File
@@ -0,0 +1,10 @@
proftpd_path=/usr/sbin/proftpd
proftpd_conf=/etc/proftpd.conf
pid_file=/var/run/proftpd.pid
ftpusers=/etc/ftpusers
test_config=1
test_always=0
test_manual=0
defines_file=/etc/sysconfig/proftpd
defines_name=PROFTPD_OPTIONS
show_list=0
+11
View File
@@ -0,0 +1,11 @@
proftpd_path=/usr/sbin/proftpd
proftpd_conf=/etc/proftpd.conf
ftpusers=/etc/ftpusers
test_config=1
test_always=0
test_manual=0
stop_cmd=/etc/init.d/proftpd stop
start_cmd=/etc/init.d/proftpd start
defines_file=/etc/sysconfig/proftpd
defines_name=PROFTPD_OPTIONS
show_list=0
+12
View File
@@ -0,0 +1,12 @@
proftpd_path=/usr/sbin/proftpd
proftpd_conf=/etc/proftpd.conf
ftpusers=/etc/ftpusers
test_config=1
test_always=0
test_manual=0
stop_cmd=systemctl stop proftpd.service
start_cmd=systemctl start proftpd.service
defines_file=/etc/sysconfig/proftpd
defines_name=PROFTPD_OPTIONS
pid_file=/run/proftpd/proftpd.pid
show_list=0
+8
View File
@@ -0,0 +1,8 @@
proftpd_path=/usr/sbin/proftpd
proftpd_conf=/etc/proftpd.conf
pid_file=/var/run/proftpd.pid
ftpusers=/etc/ftpusers
test_config=1
test_always=0
test_manual=0
show_list=0
+8
View File
@@ -0,0 +1,8 @@
proftpd_path=/server/proftpd/sbin/proftpd
proftpd_conf=/server/proftpd/etc/proftpd.conf
pid_file=/server/proftpd/var/proftpd.pid
#ftpusers=/etc/ftpusers
test_config=1
test_always=0
test_manual=0
show_list=0
+10
View File
@@ -0,0 +1,10 @@
proftpd_path=/usr/sbin/proftpd
proftpd_conf=/etc/proftpd.conf
pid_file=/var/run/proftpd.pid
start_cmd=/etc/init.d/proftpd start
stop_cmd=/etc/init.d/proftpd stop
ftpusers=/etc/ftpusers
test_config=1
test_always=0
test_manual=0
show_list=0
+8
View File
@@ -0,0 +1,8 @@
test_always=0
pid_file=/usr/local/var/proftpd.pid
ftpusers=/etc/ftpusers
proftpd_path=/usr/local/sbin/proftpd
test_config=1
test_manual=0
proftpd_conf=/usr/local/etc/proftpd.conf
show_list=0
+10
View File
@@ -0,0 +1,10 @@
proftpd_path=/usr/sbin/proftpd
proftpd_conf=/etc/proftpd.conf
pid_file=/var/run/proftpd.pid
ftpusers=/etc/ftpusers
start_cmd=/etc/init.d/proftpd start
stop_cmd=/etc/init.d/proftpd stop
test_config=1
test_always=0
test_manual=0
show_list=0
+10
View File
@@ -0,0 +1,10 @@
proftpd_path=/usr/sbin/proftpd
proftpd_conf=/etc/proftpd.conf
pid_file=/var/run/proftpd.pid
start_cmd=/etc/rc.d/init.d/proftpd start
stop_cmd=/etc/rc.d/init.d/proftpd stop
ftpusers=/etc/ftpusers
test_config=1
test_always=0
test_manual=0
show_list=0
+10
View File
@@ -0,0 +1,10 @@
proftpd_path=/usr/sbin/proftpd
proftpd_conf=/etc/proftpd.conf
pid_file=/var/run/proftpd.pid
start_cmd=/etc/init.d/proftpd start
stop_cmd=/etc/init.d/proftpd stop
ftpusers=/etc/ftpusers
test_config=1
test_always=0
test_manual=0
show_list=0
+17
View File
@@ -0,0 +1,17 @@
line1=Configurable options,11
show_list=Display virtual servers as,1,0-Icons,1-List
test_config=Test config file before applying changes?,1,1-Yes,0-No
test_manual=Test config file after manual changes?,1,1-Yes,0-No
test_always=Test config file after other change?,1,1-Yes,0-No
line2=System configuration,11
proftpd_conf=Path to ProFTPD config file,0
add_file=File to add new virtual hosts to,3,Last file in configuration
proftpd_path=Path to ProFTPD executable,0
pid_file=Path to ProFTPD PID file,3,None
ftpusers=Path to ftpusers file,0
start_cmd=Command to start ProFTPD,3,Automatic
stop_cmd=Command to stop ProFTPD,3,Just kill process
line3=ProFTPD variables,11
defines_file=Environment file defining ProFTPD variables,3,None
defines_name=Environment variable name in above file,0
defines_mods=Directories containing modules for HAVE_ variables,9,40,3,\t
+16
View File
@@ -0,0 +1,16 @@
line1=Opcions configurables,11
test_config=Prova el fitxer de configuració abans d'aplicar els canvis,1,1-Sí,0-No
test_manual=Prova el fitxer de configuració després de fer-hi canvis manuals,1,1-Sí,0-No
test_always=Prova el fitxer de configuració després d'altres canvis,1,1-Sí,0-No
line2=Configuració del sistema,11
proftpd_conf=Camí del fitxer de configuració de ProFTPD,0
add_file=Fitxer per afegir-hi els nous hosts virtuals,3,El darrer fitxer de la configuració
proftpd_path=Camí del fitxer executable de ProFTPD,0
pid_file=Camí del fitxer de PID de ProFTPD,3,Cap
ftpusers=Camí del fitxer ftpusers,0
start_cmd=Ordre per iniciar ProFTPD,3,Automàtic
stop_cmd=Ordre per aturar ProFTPD,3,Mata el procés
line3=Variables de ProFTPD,11
defines_file=Fitxer d'entorn que defineix les variables de ProFTPD,3,Cap
defines_name=Nom de la variable d'entorn en el fitxer anterior,0
defines_mods=Directoris que contenen mòduls per a les variables HAVE_,9,40,3,\t
+12
View File
@@ -0,0 +1,12 @@
line1=Konfigurovatelné volby,11
test_config=Otestovat konfigurační soubor před aplikováním každé změny?,1,1-Ano,0-Ne
test_manual=Otestovat konfigurační soubor po ruční změně?,1,1-Ano,0-Ne
test_always=Otestovat konfigurační soubor po každé změně?,1,1-Ano,0-Ne
line2=Konfigurace systému,11
proftpd_conf=Cesta ke konfiguračnímu souboru ProFTPD,0
add_file=Soubor&#44; do kterého se přidávají virtuální hosté,3,Poslední soubor v konfiguraci
proftpd_path=Cesta ke spouštěcímu souboru ProFTPD,0
pid_file=Cesta k ProFTPD PID souboru,0
ftpusers=Cesta k souboru ftp uživatelů,0
start_cmd=Příkaz spouštějící ProFTPD,3,Automaticky
stop_cmd=Příkaz pro zastavení ProFTP,3,Zabití procesu
+16
View File
@@ -0,0 +1,16 @@
line1=Konfigurierbare Optionen,11
test_config=Test-Konfigurationsdatei bevor Änderung angewandt wird?,1,1-Ja,0-Nein
test_manual=Test-Konfigurationsdatei nach manuellen Änderungen?,1,1-Ja,0-Nein
test_always=Test-Konfigurationsdatei nach der Änderung?,1,1-Ja,0-Nein
line2=Systemkonfiguration,11
proftpd_conf=Pfad zur ProFTPd-Konfigurationsdatei,0
add_file=Datei&#44; um neue virtuelle Hosts hinzuzufügen,3,Letzte Datei in der Konfiguration
proftpd_path=Pfad zur ausführbaren Datei ProFTPd,0
pid_file=Pfad zur ProFTPd-PID-Datei,3,Keine
ftpusers=Pfad zur ftpusers-Datei,0
start_cmd=Befehl zum Start des ProFTPd,3,Automatisch
stop_cmd=Befehl zum Stoppen von ProFTPD,3,Nur den Prozess töten
line3=ProFTPD Variablen,11
defines_file=Umgebungsdatei&#44; ProFTPD Variablen definiert,3,Keine
defines_name=Umgebungsvariablen Namen in oberer Datei,0
defines_mods=Verzeichnisse&#44; welche Modulen für have_ Variablen beinhalten, 9,40,3,\t
+5
View File
@@ -0,0 +1,5 @@
proftpd_conf=Ruta al archivo de configuración de ProFTPD,0
proftpd_path=Ruta al archivo ejecutable ProFTPD,0
pid_file=Ruta al archivo PID de ProFTPD,0
ftpusers=Ruta al archivo ftpusers,0
start_cmd=Comando para iniciar ProFTPD,3,Automático
+10
View File
@@ -0,0 +1,10 @@
line1=گزينه‌هاي قابل پيکربندي,11
test_config=آيا پرونده پيکربندي قبل از به‌کاربستن تغييرات آزمايش شود؟,1,1-بله,0-خير
test_manual=آيا پرونده پيکربندي بعد از انجام تغييرات دستي آزمايش شود؟,1,1-بله,0-خير
test_always=آيا پرونده پيکربندي بعد از انجام ديگر تغييرات آزمايش شود؟,1,1-بله,0-خير
line2=پيکربندي سيستم,11
proftpd_conf=مسير پرونده پيکربندي ProFTPD,0
proftpd_path=مسير ProFTPD اجرايي,0
pid_file=مسير پرونده PID ProFTPD,3,هيچ
ftpusers=مسير پرونده ftpusers,0
start_cmd=فرماني براي آغازکردن ProFTPD,3,خودکار
+16
View File
@@ -0,0 +1,16 @@
line1=Options configurables,11
test_config=Tester le fichier de configuration avant d'appliquer les modifications?,1,1-Oui,0-Non
test_manual=Tester le fichier de configuration après des modifications manuelles?,1,1-Oui,0-Non
test_always=Tester le fichier de configuration après une autre modification?,1,1-Oui,0-Non
line2=Configuration du système,11
proftpd_conf=Chemin vers le fichier de configuration ProFTPD,0
add_file=Fichier auquel ajouter de nouveaux hôtes virtuels,3,Dernier fichier en configuration
proftpd_path=Chemin vers l'exécutable ProFTPD,0
pid_file=Chemin vers le fichier PID ProFTPD,3,Aucun
ftpusers=Chemin vers le fichier ftpusers,0
start_cmd=Commande pour démarrer ProFTPD,3,Automatique
stop_cmd=Commande pour arrêter ProFTPD,3,Tuez simplement le processus
line3=Variables ProFTPD,11
defines_file=Fichier d'environnement définissant les variables ProFTPD,3,Aucun
defines_name=Nom de la variable d'environnement dans le fichier ci-dessus,0
defines_mods=Répertoires contenant des modules pour les variables HAVE_,9,40,3,\t
View File
+12
View File
@@ -0,0 +1,12 @@
line1=設定可能なオプション,11
test_config=変更を適用する前に設定ファイルをテストしますか?,1,1-はい,0-いいえ
test_manual=手動で変更した後に設定ファイルをテストしますか?,1,1-はい,0-いいえ
test_always=変更後に設定ファイルのテストしますか?,1,1-はい,0-いいえ
line2=システム設定,11
proftpd_conf=ProFTPDの設定ファイルへのパス,0
add_file=新しいバーチャルホストの設定を追加するファイル,3,設定ファイルの最後に
proftpd_path=ProFTPDの実行ファイルへのパス,0
pid_file=ProFTPDのPIDファイルへのパス,0
ftpusers=ftpusersファイルへのパス,0
start_cmd=ProFTPDの起動コマンド,3,自動
stop_cmd=ProFTPDの停止コマンド,3,通常停止
+12
View File
@@ -0,0 +1,12 @@
line1=설정 옵션,11
test_config=변경 적용전에 설정 파일 테스트를 하겠습니까?,1,1-예,0-아니오
test_manual=수동 변경 후에 설정 파일 테스트를 하겠습니까?,1,1-예,0-아니오
test_always=변경 사항이 있을 경우 설정 파일 테스트를 하겠습니까?,1,1-예,0-아니오
line2=시스템 설정,11
proftpd_conf=ProFTPD 설정 파일 경로,0
add_file=파일에 신규 가상 호스트 추가,3,설정파일 마지막
proftpd_path=ProFTPD 실행파일 경로,0
pid_file=ProFTPD PID 파일 경로,3,없음
ftpusers=ftpusers 파일 경로,0
start_cmd=ProFTPD 시작 명령,3,자동
stop_cmd=ProFTPD 정지 명령,3,프로세스 죽임만
+12
View File
@@ -0,0 +1,12 @@
line1=Configureerbare opties,11
test_config=Test de config file voordat veranderingen worden toegevoegd?,1,1-Ja,0-Nee
test_manual=Test de config file na handmatige veranderingen?,1,1-Ja,0-Nee
test_always=Test de config file na veranderingen?,1,1-Ja,0-Nee
line2=Systeem configuratie,11
proftpd_conf=Pad naar de ProFTPD config file,0
add_file=File om een nieuwe virtuele hosts aan toe te voegen,3,Laatste file in configuratie
proftpd_path=Pad naar het ProFTPD programma,0
pid_file=Pad naar de ProFTPD PID file,3,Geen
ftpusers=Pad naar de ftpusers file,0
start_cmd=Opdracht om ProFTPD te starten,3,Automatisch
stop_cmd=Opdracht om ProFTPD te stoppen,3,Kill proces
+12
View File
@@ -0,0 +1,12 @@
line1=Konfigurerbare innstillinger,11
test_config=Test konfig-fil før endringer tas i bruk?,1,1-Ja,0-Nei
test_manual=Test konfig-fil etter manuelle endringer?,1,1-Ja,0-Nei
test_always=Test konfig-fil etter annen endring?,1,1-Ja,0-Nei
line2=System konfigurasjon,11
proftpd_conf=Sti til ProFTPD konfig-fil,0
add_file=Fil som nye virtuelle verter skal legges inn i,3,Siste fil i konfigurasjonen
proftpd_path=Sti til ProFTPD program,0
pid_file=Sti til ProFTPD PID filen,3,Ingen
ftpusers=Sti til ftpusers filen,0
start_cmd=Kommando for å starte ProFTPD,3,Automatisk
stop_cmd=Kommando for å stoppe ProFTPD,3,Bare stopp prosessen
+12
View File
@@ -0,0 +1,12 @@
line1=Opcje konfigurowalne,11
test_config=Testować plik konfiguracyjny przed zastosowaniem zmian?,1,1-Yes,0-No
test_manual=Testować plik konfiguracyjny po ręcznej edycji?,1,1-Yes,0-No
test_always=Testować plik konfiguracyjny po zmianach innych?,1,1-Yes,0-No
line2=Konfiguracja systemu,11
proftpd_conf=Ścieżka do pliku konfiguracyjnego ProFTPD,0
add_file=Plik do dodawania nowych hostów wirtualnych,3,Ostatni plik w konfiguracji
proftpd_path=Ścieżka do programu ProFTPD,0
pid_file=Ścieżka do pliku z numerem PID ProFTPD,0
ftpusers=Ścieżka do pliku <tt>ftpusers</tt>,0
start_cmd=Polecenie uruchamiające ProFTPD,3,Automatycznie
stop_cmd=Polecenie do zatrzymania ProFTPd,3,Zabij proces
+12
View File
@@ -0,0 +1,12 @@
line1=Opções configuráveis,11
test_config=Testar configurações do arquivo antes de aplicar alterações?,1,1-Sim,0-Não
test_manual=Testar configurações do arquivo após de aplicar alterações?,1,1-Sim,0-Não
test_always=Testar configurações do arquivo após outras alterações?,1,1-Sim,0-Não
line2=Configuração do sistema,11
proftpd_conf=Caminho para o arquivo de configuração do ProFTPD,0
add_file=Arquivo para adicionar novos hosts virtuais,3,Último arquivo na configuração
proftpd_path=Caminho para o executável do ProFTPD,0
pid_file=Caminho para o arquivo PID do ProFTPD,0
ftpusers=Caminho para o arquivo ftpusers,0
start_cmd=Comando para iniciar o ProFTPD,3,Automático
stop_cmd=Comando para parar o ProFTPD,3,Só matar o processo
+6
View File
@@ -0,0 +1,6 @@
line2=Системные параметры,11
proftpd_conf=Путь к файлу настройки ProFTPD,0
proftpd_path=Путь к исполняемому файлу ProFTPD,0
pid_file=Путь к файлу PID ProFTPD,0
ftpusers=Путь к файлу ftpusers,0
start_cmd=Команда запуска ProFTPD,3,Автоматически
+6
View File
@@ -0,0 +1,6 @@
line2=Системні параметри,11
proftpd_conf=Шлях до файлу настроювання ProFTPD,0
proftpd_path=Шлях до файлу&#44; що виконується&#44; ProFTPD,0
pid_file=Шлях до файлу PID ProFTPD,0
ftpusers=Шлях до файлу ftpusers,0
start_cmd=Команда запуску ProFTPD,3,Автоматично
+10
View File
@@ -0,0 +1,10 @@
line1=組態選項,11
test_config=套用變更前測試組態檔?,1,1-是,0-否
test_manual=手動變更後測試組態檔?,1,1-是,0-否
test_always=其它變更後測試組態檔?,1,1-是,0-否
line2=系統組態,11
proftpd_conf=ProFTPD組態檔案路徑,0
proftpd_path=ProFTPD 執行檔案路徑
pid_file=ProFTPD PID 檔案路徑,0
ftpusers=ftp使用者檔案路徑,0
start_cmd=啟動ProFTPD指令,3,自動
+38
View File
@@ -0,0 +1,38 @@
#!/usr/local/bin/perl
# create_dir.cgi
# Add a new <Directory> section to a virtual server
require './proftpd-lib.pl';
&ReadParse();
if ($in{'global'}) {
$conf = &get_config();
$conf = &get_or_create_global($conf);
}
else {
($conf, $v) = &get_virtual_config($in{'virt'});
}
if ($in{'anon'}) {
$anon = &find_directive_struct("Anonymous", $conf);
$conf = $anon->{'members'};
}
&error_setup($text{'dserv_err'});
# Validate inputs
$in{'dir'} =~ /^\S+$/ || &error($text{'dserv_edir'});
!$anon || $in{'dir'} !~ /^\// || $anon->{'value'} =~ /^\~/ ||
&is_under_directory($anon->{'value'}, $in{'dir'}) ||
&error($text{'dserv_eanondir'});
# Add the directory
$l = $conf->[@$conf - 1];
&lock_file($l->{'file'});
&before_changing();
$lref = &read_file_lines($l->{'file'});
@lines = ( "<Directory $in{'dir'}>", "</Directory>" );
splice(@$lref, $l->{'eline'}+1, 0, @lines);
&flush_file_lines();
&after_changing();
&unlock_file($l->{'file'});
&webmin_log("dir", "create", "$v->{'value'}:$in{'dir'}", \%in);
&redirect("dir_index.cgi?virt=$in{'virt'}&anon=$in{'anon'}&global=$in{'global'}&idx=".scalar(@$conf));
+16
View File
@@ -0,0 +1,16 @@
#!/usr/local/bin/perl
# Redirect to either create_dir or create_limit
require './proftpd-lib.pl';
&ReadParse();
$args = "global=".&urlize($in{'global'})."&".
"virt=".&urlize($in{'virt'})."&".
"anon=".&urlize($in{'anon'});
if ($in{'mode'} == 0) {
&redirect("create_dir.cgi?$args".
"&dir=".&urlize($in{'dir'}));
}
else {
&redirect("create_limit.cgi?$args".
"&cmd=".&urlize($in{'cmd'}));
}
+29
View File
@@ -0,0 +1,29 @@
#!/usr/local/bin/perl
# create_ftpaccess.cgi
# Creates a new .ftpaccess file for some directory
require './proftpd-lib.pl';
&ReadParse();
$conf = &get_config();
if (-d $in{'file'}) {
# user entered a directory.. create a file in that directory
$file = "$in{'file'}/.ftpaccess";
}
else { $file = $in{'file'}; }
# create the file (if needed), and add to the known list
&lock_file($file);
if (!(-r $file)) {
&open_lock_tempfile(FTPACCESS, ">$file") || &error($!);
&close_tempfile(FTPACCESS);
chmod(0755, $file);
}
$site{'ftpaccess'} = join(' ', &unique(@ftpaccess_files, $file));
&write_file("$module_config_directory/site", \%site);
&unlock_file($file);
&webmin_log("ftpaccess", "create", $file);
# redirect to editing index
&redirect("ftpaccess_index.cgi?file=".&urlize($file));
+48
View File
@@ -0,0 +1,48 @@
#!/usr/local/bin/perl
# create_limit.cgi
# Create a new <Limit> section
require './proftpd-lib.pl';
&ReadParse();
if ($in{'file'}) {
$conf = &get_ftpaccess_config($in{'file'});
}
else {
if ($in{'global'}) {
$conf = &get_config();
$conf = &get_or_create_global($conf);
}
else {
($conf, $v) = &get_virtual_config($in{'virt'});
}
if ($in{'anon'}) {
$anon = &find_directive_struct("Anonymous", $conf);
$conf = $anon->{'members'};
}
if ($in{'idx'} ne '') {
$conf = $conf->[$in{'idx'}]->{'members'};
}
}
&error_setup($text{'lserv_err'});
# Validate inputs
$in{'cmd'} =~ /\S/ || &error($text{'lserv_ecmd'});
# Add the limit
$l = $conf->[@$conf - 1];
&lock_file($l->{'file'});
&before_changing();
$lref = &read_file_lines($l->{'file'});
@lines = ( "<Limit $in{'cmd'}>", "</Limit>" );
splice(@$lref, $l->{'eline'}+1, 0, @lines);
&flush_file_lines();
&after_changing();
&unlock_file($l->{'file'});
&webmin_log("limit", "create", $in{'cmd'}, \%in);
if ($in{'file'}) {
&redirect("limit_index.cgi?file=$in{'file'}&limit=".scalar(@$conf));
}
else {
&redirect("limit_index.cgi?virt=$in{'virt'}&idx=$in{'idx'}&anon=$in{'anon'}&global=$in{'global'}&limit=".scalar(@$conf));
}
+36
View File
@@ -0,0 +1,36 @@
#!/usr/local/bin/perl
# create_virt.cgi
# Create a new virtual server
require './proftpd-lib.pl';
&ReadParse();
$conf = &get_config();
&error_setup($text{'vserv_err'});
# Validate inputs
$in{'addr_def'} || &to_ipaddress($in{'addr'}) ||
&to_ip6address($in{'addr'}) ||
&error($text{'vserv_eaddr'});
$in{'Port_def'} || $in{'Port'} =~ /^\d+$/ ||
&error($text{'vserv_eport'});
$in{'ServerName_def'} || $in{'ServerName'} =~ /\S/ ||
&error($text{'vserv_ename'});
# Add the virtual host
$l = $conf->[@$conf - 1];
$addfile = $config{'add_file'} || $l->{'file'};
&lock_file($addfile);
&before_changing();
$lref = &read_file_lines($addfile);
@lines = ( "<VirtualHost $in{'addr'}>" );
push(@lines, "Port $in{'Port'}") if (!$in{'Port_def'});
push(@lines, "ServerName \"$in{'ServerName'}\"") if (!$in{'ServerName_def'});
push(@lines, "</VirtualHost>");
push(@$lref, @lines);
&flush_file_lines($addfile);
&after_changing();
&unlock_file($addfile);
&webmin_log("virt", "create", $in{'addr'}, \%in);
&redirect("virt_index.cgi?virt=".scalar(@$conf));
+15
View File
@@ -0,0 +1,15 @@
#!/usr/local/bin/perl
# delete_ftpaccess.cgi
# Delete some .ftpaccess or similar file
require './proftpd-lib.pl';
&ReadParse();
&lock_file($in{'file'});
unlink($in{'file'});
&unlock_file($in{'file'});
$site{'ftpaccess'} = join(' ', (grep { $_ ne $in{'file'} } @ftpaccess_files));
&write_file("$module_config_directory/site", \%site);
&webmin_log("ftpaccess", "delete", $in{'file'});
&redirect("ftpaccess.cgi");
+74
View File
@@ -0,0 +1,74 @@
#!/usr/local/bin/perl
# dir_index.cgi
# Display a menu of icons for per-directory options
require './proftpd-lib.pl';
&ReadParse();
if ($in{'global'}) {
$conf = &get_config();
$conf = &get_or_create_global($conf);
}
else {
($conf, $v) = &get_virtual_config($in{'virt'});
}
if ($in{'anon'}) {
$anon = &find_directive_struct("Anonymous", $conf);
$conf = $anon->{'members'};
}
$d = $conf->[$in{'idx'}];
$dn = $d->{'words'}->[0];
$dconf = $d->{'members'};
$desc = $in{'global'} ? &text('dir_header5', $dn) :
$in{'anon'} ? &text('dir_header4', $dn) :
$in{'virt'} ? &text('dir_header1', $dn, $v->{'words'}->[0]) :
&text('dir_header2', $dn);
&ui_print_header($desc, $text{'dir_title'}, "",
undef, undef, undef, undef, &restart_button());
$dir_icon = { "icon" => "images/dir.gif",
"name" => $text{'dir_dir'},
"link" => "edit_dserv.cgi?virt=$in{'virt'}&idx=$in{'idx'}&anon=$in{'anon'}&global=$in{'global'}" };
$ed_icon = { "icon" => "images/edit.gif",
"name" => $text{'dir_edit'},
"link" => "manual_form.cgi?virt=$in{'virt'}&idx=$in{'idx'}&anon=$in{'anon'}&global=$in{'global'}" };
&config_icons("directory", "edit_dir.cgi?virt=$in{'virt'}&idx=$in{'idx'}&anon=$in{'anon'}&global=$in{'global'}&", $dir_icon, $ed_icon);
# Display limit options
@lim = &find_directive_struct("Limit", $dconf);
if (@lim) {
print &ui_hr();
print "<h3>$text{'dir_header'}</h3>\n";
foreach $l (@lim) {
push(@links, "limit_index.cgi?limit=".&indexof($l, @$dconf).
"&virt=$in{'virt'}&anon=$in{'anon'}".
"&global=$in{'global'}&idx=$in{'idx'}");
push(@titles, &text('virt_limit', $l->{'value'}));
push(@icons, "images/limit.gif");
}
&icons_table(\@links, \@titles, \@icons, 3);
}
print &ui_form_start("create_limit.cgi");
print &ui_hidden("virt", $in{'virt'});
print &ui_hidden("idx", $in{'idx'});
print &ui_hidden("anon", $in{'anon'});
print &ui_hidden("global", $in{'global'});
print &ui_table_start($text{'virt_addlimit'}, undef, 2);
print &ui_table_row($text{'virt_cmds'},
&ui_textbox("cmd", undef, 30));
print &ui_table_end();
print &ui_form_end([ [ undef, $text{'create'} ] ]);
if ($in{'global'}) {
&ui_print_footer("", $text{'index_return'});
}
elsif ($in{'anon'}) {
&ui_print_footer("anon_index.cgi?virt=$in{'virt'}", $text{'anon_return'},
"virt_index.cgi?virt=$in{'virt'}", $text{'virt_return'},
"", $text{'index_return'});
}
else {
&ui_print_footer("virt_index.cgi?virt=$in{'virt'}", $text{'virt_return'},
"", $text{'index_return'});
}
+28
View File
@@ -0,0 +1,28 @@
#!/usr/local/bin/perl
# edit_anon.cgi
# Display a form for editing some kind of anonymous option
require './proftpd-lib.pl';
&ReadParse();
($vconf, $v) = &get_virtual_config($in{'virt'});
$anon = &find_directive_struct("Anonymous", $vconf);
$conf = $anon->{'members'};
@dirs = &editable_directives($in{'type'}, 'anon');
$desc = $in{'virt'} eq '' ? $text{'anon_header4'} :
&text('anon_header3', $v->{'value'});
&ui_print_header($desc, $text{"type_$in{'type'}"}, "",
undef, undef, undef, undef, &restart_button());
print &ui_form_start("save_anon.cgi", "post");
print &ui_hidden("type", $in{'type'});
print &ui_hidden("virt", $in{'virt'});
print &ui_table_start(&text('virt_header3', $text{"type_$in{'type'}"}),
"width=100%", 4);
&generate_inputs(\@dirs, $conf);
print &ui_table_end();
print &ui_form_end([ [ undef, $text{'save'} ] ]);
&ui_print_footer("anon_index.cgi?virt=$in{'virt'}", $text{'anon_return'},
"virt_index.cgi?virt=$in{'virt'}", $text{'virt_return'},
"", $text{'index_return'});
+55
View File
@@ -0,0 +1,55 @@
#!/usr/local/bin/perl
# edit_aserv.cgi
# Edit <Anonymous> section details
require './proftpd-lib.pl';
&ReadParse();
($conf, $v) = &get_virtual_config($in{'virt'});
$desc = $in{'virt'} eq '' ? $text{'anon_header2'} :
&text('anon_header1', $v->{'value'});
if (!$in{'init'}) {
$anon = &find_directive_struct("Anonymous", $conf);
&ui_print_header($desc, $text{'aserv_title'}, "",
undef, undef, undef, undef, &restart_button());
}
else {
&ui_print_header($desc, $text{'aserv_create'}, "",
undef, undef, undef, undef, &restart_button());
}
print $text{'aserv_desc'},"<br>\n" if ($in{'init'});
$user = &find_directive("User", $anon->{'members'});
$user ||= "ftp" if ($in{'init'});
$group = &find_directive("Group", $anon->{'members'});
$group ||= "ftp" if ($in{'init'});
print &ui_form_start("save_aserv.cgi", "post");
print &ui_hidden("virt", $in{'virt'});
print &ui_hidden("init", $in{'init'});
print &ui_table_start($text{'aserv_title'}, undef, 2);
print &ui_table_row($text{'aserv_root'},
&ui_filebox("root", $anon->{'value'}, 60, 0, undef, undef, 1));
print &ui_table_row($text{'aserv_user'},
&opt_input($user, "User", $text{'default'}, 13));
print &ui_table_row($text{'aserv_group'},
&opt_input($group, "Group", $text{'default'}, 13));
print &ui_table_end();
print &ui_form_end([ [ undef, $in{'init'} ? $text{'create'} : $text{'save'} ]]);
if ($in{'init'}) {
&ui_print_footer(
"virt_index.cgi?virt=$in{'virt'}", $text{'virt_return'},
"", $text{'index_return'});
}
else {
&ui_print_footer(
"anon_index.cgi?virt=$in{'virt'}", $text{'anon_return'},
"virt_index.cgi?virt=$in{'virt'}", $text{'virt_return'},
"", $text{'index_return'});
}
+60
View File
@@ -0,0 +1,60 @@
#!/usr/local/bin/perl
# edit_virt.cgi
# Display a form for editing some kind of per-directory options
require './proftpd-lib.pl';
&ReadParse();
if ($in{'global'}) {
$conf = &get_config();
$vconf = &get_or_create_global($conf);
}
else {
($vconf, $v) = &get_virtual_config($in{'virt'});
}
if ($in{'anon'}) {
$anon = &find_directive_struct("Anonymous", $vconf);
$vconf = $anon->{'members'};
}
$d = $vconf->[$in{'idx'}];
$conf = $d->{'members'};
@dirs = &editable_directives($in{'type'}, 'directory');
$dn = $d->{'words'}->[0];
$desc = $in{'global'} ? &text('dir_header5', $dn) :
$in{'anon'} ? &text('dir_header4', $dn) :
$in{'virt'} ? &text('dir_header1', $dn, $v->{'words'}->[0]) :
&text('dir_header2', $dn);
&ui_print_header($desc, $text{"type_$in{'type'}"}, "",
undef, undef, undef, undef, &restart_button());
print &ui_form_start("save_dir.cgi", "post");
print &ui_hidden("type", $in{'type'});
print &ui_hidden("idx", $in{'idx'});
print &ui_hidden("virt", $in{'virt'});
print &ui_hidden("anon", $in{'anon'});
print &ui_hidden("global", $in{'global'});
print &ui_table_start(&text('dir_header3', $text{"type_$in{'type'}"},
$d->{'words'}->[0]), "width=100%", 4);
&generate_inputs(\@dirs, $conf);
print &ui_table_end();
print &ui_form_end([ [ undef, $text{'save'} ] ]);
if ($in{'global'}) {
&ui_print_footer("dir_index.cgi?idx=$in{'idx'}&global=$in{'global'}",
$text{'dir_return'},
"", $text{'index_return'});
}
elsif ($in{'anon'}) {
&ui_print_footer("dir_index.cgi?virt=$in{'virt'}&idx=$in{'idx'}&anon=$in{anon}",
$text{'dir_return'},
"anon_index.cgi?virt=$in{'virt'}", $text{'anon_return'},
"virt_index.cgi?virt=$in{'virt'}", $text{'virt_return'},
"", $text{'index_return'});
}
else {
&ui_print_footer("dir_index.cgi?virt=$in{'virt'}&idx=$in{'idx'}",
$text{'dir_return'},
"virt_index.cgi?virt=$in{'virt'}", $text{'virt_return'},
"", $text{'index_return'});
}
+60
View File
@@ -0,0 +1,60 @@
#!/usr/local/bin/perl
# edit_dserv.cgi
# Edit <Directory> section details
require './proftpd-lib.pl';
&ReadParse();
if ($in{'global'}) {
$conf = &get_config();
$conf = &get_or_create_global($conf);
}
else {
($conf, $v) = &get_virtual_config($in{'virt'});
}
if ($in{'anon'}) {
$anon = &find_directive_struct("Anonymous", $conf);
$conf = $anon->{'members'};
}
$d = $conf->[$in{'idx'}];
$dn = $d->{'words'}->[0];
$dconf = $d->{'members'};
$desc = $in{'global'} ? &text('dir_header5', $dn) :
$in{'anon'} ? &text('dir_header4', $dn) :
$in{'virt'} ? &text('dir_header1', $dn, $v->{'words'}->[0]) :
&text('dir_header2', $dn);
&ui_print_header($desc, $text{'dserv_title'}, "",
undef, undef, undef, undef, &restart_button());
print &ui_form_start("save_dserv.cgi", "post");
print &ui_hidden("virt", $in{'virt'});
print &ui_hidden("idx", $in{'idx'});
print &ui_hidden("anon", $in{'anon'});
print &ui_hidden("global", $in{'global'});
print &ui_table_start($text{'dserv_title'}, undef, 2);
print &ui_table_row($text{'dserv_dir'},
&ui_filebox("dir", $d->{'value'}, 60, 0, undef, undef, 1));
print &ui_table_end();
print &ui_form_end([ [ undef, $text{'save'} ],
[ 'delete', $text{'dserv_delete'} ] ]);
if ($in{'global'}) {
&ui_print_footer("dir_index.cgi?global=$in{'global'}&idx=$in{'idx'}",
$text{'dir_return'},
"", $text{'index_return'});
}
elsif ($in{'anon'}) {
&ui_print_footer("dir_index.cgi?virt=$in{'virt'}&idx=$in{'idx'}&anon=$in{anon}",
$text{'dir_return'},
"anon_index.cgi?virt=$in{'virt'}", $text{'anon_return'},
"virt_index.cgi?virt=$in{'virt'}", $text{'virt_return'},
"", $text{'index_return'});
}
else {
&ui_print_footer("dir_index.cgi?virt=$in{'virt'}&idx=$in{'idx'}",
$text{'dir_return'},
"virt_index.cgi?virt=$in{'virt'}", $text{'virt_return'},
"", $text{'index_return'});
}
+27
View File
@@ -0,0 +1,27 @@
#!/usr/local/bin/perl
# edit_ftpaccess.cgi
# Display a form for editing some kind of per-directory options file
require './proftpd-lib.pl';
&ReadParse();
$conf = &get_ftpaccess_config($in{'file'});
@dirs = &editable_directives($in{'type'}, 'ftpaccess');
$desc = &text('ftpindex_header', "<tt>".&html_escape($in{'file'})."</tt>");
&ui_print_header($desc, $text{"type_$in{'type'}"}, "",
undef, undef, undef, undef, &restart_button());
print &ui_form_start("save_ftpaccess.cgi", "post");
print &ui_hidden("type", $in{'type'});
print &ui_hidden("file", $in{'file'});
print &ui_table_start(&text('ftpindex_header2', $text{"type_$in{'type'}"},
"<tt>".&html_escape($in{'file'})."</tt>"),
"width=100%", 4);
&generate_inputs(\@dirs, $conf);
print &ui_table_end();
print &ui_form_end([ [ undef, $text{'save'} ] ]);
&ui_print_footer("ftpaccess_index.cgi?file=$in{'file'}", $text{'ftpindex_return'},
"ftpaccess.cgi", $text{'ftpaccess_return'},
"", $text{'index_return'});
+19
View File
@@ -0,0 +1,19 @@
#!/usr/local/bin/perl
# edit_ftpusers.cgi
# Lists users to be denied access
require './proftpd-lib.pl';
&ui_print_header(undef, $text{'ftpusers_title'}, "",
undef, undef, undef, undef, &restart_button());
print &text('ftpusers_desc', "<tt>$config{'ftpusers'}</tt>"),"<p>\n";
print &ui_form_start("save_ftpusers.cgi", "post");
print &ui_table_start(undef, undef, 2);
print &ui_table_row(undef,
&ui_textarea("users", &read_file_contents($config{'ftpusers'}), 10, 80),
2);
print &ui_table_end();
print &ui_form_end([ [ undef, $text{'save'} ] ]);
&ui_print_footer("", $text{'index_return'});
+32
View File
@@ -0,0 +1,32 @@
#!/usr/local/bin/perl
# edit_global.cgi
# Display a form for editing some kind of global options
require './proftpd-lib.pl';
&ReadParse();
$conf = &get_config();
$global = &find_directive_struct("Global", $conf);
if ($global) {
$gconf = $global->{'members'};
}
&ui_print_header(undef, $text{"type_$in{'type'}"}, "",
undef, undef, undef, undef, &restart_button());
print &ui_form_start("save_global.cgi", "post");
print &ui_hidden("type", $in{'type'});
print &ui_table_start($text{"type_$in{'type'}"}, "width=100%", 4);
@dirs = &editable_directives($in{'type'}, 'root');
&generate_inputs(\@dirs, $conf);
@gdirs = &editable_directives($in{'type'}, 'global');
if (@dirs && @gdirs) {
print &ui_table_hr();
}
&generate_inputs(\@gdirs, $gconf);
print &ui_table_end();
print &ui_form_end([ [ undef, $text{'save'} ] ]);
&ui_print_footer("", $text{'index_return'});
+106
View File
@@ -0,0 +1,106 @@
#!/usr/local/bin/perl
# edit_limit.cgi
# Display a form for editing some kind of limit section options
require './proftpd-lib.pl';
&ReadParse();
if ($in{'file'}) {
$conf = &get_ftpaccess_config($in{'file'});
}
else {
if ($in{'global'}) {
$conf = &get_config();
$conf = &get_or_create_global($conf);
}
else {
($conf, $v) = &get_virtual_config($in{'virt'});
}
if ($in{'anon'}) {
$anon = &find_directive_struct("Anonymous", $conf);
$conf = $anon->{'members'};
}
if ($in{'idx'} ne '') {
$dir = $conf->[$in{'idx'}];
$conf = $dir->{'members'};
}
}
$l = $conf->[$in{'limit'}];
$conf = $l->{'members'};
$ln = $l->{'value'};
@dirs = &editable_directives($in{'type'}, 'limit');
$desc = $in{'file'} ? &text('limit_header6', $ln, &html_escape($in{'file'})) :
$dir ? &text('limit_header4', $ln, $dir->{'words'}->[0]) :
$in{'global'} ? &text('limit_header7', $ln) :
$in{'anon'} ? &text('limit_header5', $ln) :
$in{'virt'} ? &text('limit_header1', $ln, $v->{'words'}->[0]) :
&text('limit_header2', $ln);
&ui_print_header($desc, $text{"type_$in{'type'}"}, "",
undef, undef, undef, undef, &restart_button());
print &ui_form_start("save_limit.cgi", "post");
print &ui_hidden("type", $in{'type'});
print &ui_hidden("idx", $in{'idx'});
print &ui_hidden("limit", $in{'limit'});
print &ui_hidden("virt", $in{'virt'});
print &ui_hidden("anon", $in{'anon'});
print &ui_hidden("global", $in{'global'});
print &ui_hidden("file", $in{'file'});
print &ui_table_start(&text('limit_header3', $text{"type_$in{'type'}"},
$l->{'value'}), "width=100%", 4);
&generate_inputs(\@dirs, $conf);
print &ui_table_end();
print &ui_form_end([ [ undef, $text{'save'} ] ]);
if ($in{'file'}) {
&ui_print_footer("limit_index.cgi?file=$in{'file'}&limit=$in{'limit'}",
$text{'limit_return'},
"ftpaccess_index.cgi?file=$in{'file'}",$text{'ftpindex_return'},
"ftpaccess.cgi", $text{'ftpaccess_return'},
"", $text{'index_return'});
}
elsif ($in{'idx'} eq '') {
if ($in{'global'}) {
&ui_print_footer("limit_index.cgi?limit=$in{'limit'}&global=$in{'global'}",
$text{'limit_return'},
"", $text{'index_return'});
}
elsif ($in{'anon'}) {
&ui_print_footer("limit_index.cgi?virt=$in{'virt'}&limit=$in{'limit'}&anon=$in{'anon'}",
$text{'limit_return'},
"anon_index.cgi?virt=$in{'virt'}",$text{'anon_return'},
"virt_index.cgi?virt=$in{'virt'}",$text{'virt_return'},
"", $text{'index_return'});
}
else {
&ui_print_footer("limit_index.cgi?virt=$in{'virt'}&limit=$in{'limit'}",
$text{'limit_return'},
"virt_index.cgi?virt=$in{'virt'}",$text{'virt_return'},
"", $text{'index_return'});
}
}
else {
if ($in{'global'}) {
&ui_print_footer("limit_index.cgi?limit=$in{'limit'}&idx=$in{'idx'}&global=$in{'global'}",
$text{'limit_return'},
"dir_index.cgi?idx=$in{'idx'}&global=$in{'global'}",
$text{'dir_return'},
"", $text{'index_return'});
}
elsif ($in{'anon'}) {
&ui_print_footer("limit_index.cgi?virt=$in{'virt'}&limit=$in{'limit'}&idx=$in{'idx'}&anon=$in{'anon'}",
$text{'limit_return'},
"dir_index.cgi?virt=$in{'virt'}&idx=$in{'idx'}&anon=$in{'anon'}", $text{'dir_return'},
"anon_index.cgi?virt=$in{'virt'}",$text{'anon_return'},
"virt_index.cgi?virt=$in{'virt'}",$text{'virt_return'},
"", $text{'index_return'});
}
else {
&ui_print_footer("limit_index.cgi?virt=$in{'virt'}&limit=$in{'limit'}&idx=$in{'idx'}",
$text{'limit_return'},
"dir_index.cgi?virt=$in{'virt'}&idx=$in{'idx'}&anon=$in{'anon'}", $text{'dir_return'},
"virt_index.cgi?virt=$in{'virt'}",$text{'virt_return'},
"", $text{'index_return'});
}
}
+111
View File
@@ -0,0 +1,111 @@
#!/usr/local/bin/perl
# edit_dserv.cgi
# Edit <Limit> section details
require './proftpd-lib.pl';
&ReadParse();
if ($in{'file'}) {
$conf = &get_ftpaccess_config($in{'file'});
}
else {
if ($in{'global'}) {
$conf = &get_config();
$conf = &get_or_create_global($conf);
}
else {
($conf, $v) = &get_virtual_config($in{'virt'});
}
if ($in{'anon'}) {
$anon = &find_directive_struct("Anonymous", $conf);
$conf = $anon->{'members'};
}
if ($in{'idx'} ne '') {
$dir = $conf->[$in{'idx'}];
$conf = $dir->{'members'};
}
}
$l = $conf->[$in{'limit'}];
$ln = $l->{'value'};
$desc = $in{'file'} ? &text('limit_header6', $ln, &html_escape($in{'file'})) :
$dir ? &text('limit_header4', $ln, $dir->{'words'}->[0]) :
$in{'global'} ? &text('limit_header7', $ln) :
$in{'anon'} ? &text('limit_header5', $ln) :
$in{'virt'} ? &text('limit_header1', $ln, $v->{'words'}->[0]) :
&text('limit_header2', $ln);
&ui_print_header($desc, $text{'lserv_title'}, "",
undef, undef, undef, undef, &restart_button());
print &ui_form_start("save_lserv.cgi", "post");
print &ui_hidden("virt", $in{'virt'});
print &ui_hidden("idx", $in{'idx'});
print &ui_hidden("limit", $in{'limit'});
print &ui_hidden("anon", $in{'anon'});
print &ui_hidden("global", $in{'global'});
print &ui_hidden("file", $in{'file'});
print &ui_table_start($text{'lserv_title'}, undef, 2);
print &ui_table_row($text{'lserv_cmd'},
&ui_select("cmd",
[ map { uc($_) } @{$l->{'words'}} ],
[ map { uc($_) } ('cwd', 'mkd', 'rnfr', 'dele', 'rmd', 'retr', 'stor') ],
7, 1)."\n".
&ui_select("cmd",
[ map { uc($_) } @{$l->{'words'}} ],
[ map { uc($_) } ('site_chmod', 'read', 'write', 'dirs', 'login', 'all') ],
7, 1));
print &ui_table_end();
print &ui_form_end([ [ undef, $text{'save'} ],
[ 'delete', $text{'lserv_delete'} ] ]);
if ($in{'file'}) {
&ui_print_footer("limit_index.cgi?file=$in{'file'}&limit=$in{'limit'}",
$text{'limit_return'},
"ftpaccess_index.cgi?file=$in{'file'}",$text{'ftpindex_return'},
"ftpaccess.cgi", $text{'ftpaccess_return'},
"", $text{'index_return'});
}
elsif ($in{'idx'} eq '') {
if ($in{'global'}) {
&ui_print_footer("limit_index.cgi?limit=$in{'limit'}&global=$in{'global'}",
$text{'limit_return'},
"", $text{'index_return'});
}
elsif ($in{'anon'}) {
&ui_print_footer("limit_index.cgi?virt=$in{'virt'}&limit=$in{'limit'}&anon=$in{'anon'}",
$text{'limit_return'},
"anon_index.cgi?virt=$in{'virt'}",$text{'anon_return'},
"virt_index.cgi?virt=$in{'virt'}",$text{'virt_return'},
"", $text{'index_return'});
}
else {
&ui_print_footer("limit_index.cgi?virt=$in{'virt'}&limit=$in{'limit'}",
$text{'limit_return'},
"virt_index.cgi?virt=$in{'virt'}",$text{'virt_return'},
"", $text{'index_return'});
}
}
else {
if ($in{'global'}) {
&ui_print_footer("limit_index.cgi?limit=$in{'limit'}&idx=$in{'idx'}&global=$in{'global'}",
$text{'limit_return'},
"dir_index.cgi?idx=$in{'idx'}&global=$in{'global'}",
$text{'dir_return'},
"", $text{'index_return'});
}
elsif ($in{'anon'}) {
&ui_print_footer("limit_index.cgi?virt=$in{'virt'}&limit=$in{'limit'}&idx=$in{'idx'}&anon=$in{'anon'}",
$text{'limit_return'},
"dir_index.cgi?virt=$in{'virt'}&idx=$in{'idx'}&anon=$in{'anon'}", $text{'dir_return'},
"anon_index.cgi?virt=$in{'virt'}",$text{'anon_return'},
"virt_index.cgi?virt=$in{'virt'}",$text{'virt_return'},
"", $text{'index_return'});
}
else {
&ui_print_footer("limit_index.cgi?virt=$in{'virt'}&limit=$in{'limit'}&idx=$in{'idx'}",
$text{'limit_return'},
"dir_index.cgi?virt=$in{'virt'}&idx=$in{'idx'}&anon=$in{'anon'}", $text{'dir_return'},
"virt_index.cgi?virt=$in{'virt'}",$text{'virt_return'},
"", $text{'index_return'});
}
}
+22
View File
@@ -0,0 +1,22 @@
#!/usr/local/bin/perl
# edit_net.cgi
# Display networking options
require './proftpd-lib.pl';
&ui_print_header(undef, $text{'net_title'}, "",
undef, undef, undef, undef, &restart_button());
$conf = &get_config();
print &ui_form_start("save_net.cgi", "post");
print &ui_table_start($text{'net_header'}, undef, 2);
print &choice_input($text{'net_type'}, 'ServerType', $conf, 'inetd',
$text{'net_inetd'}, 'inetd',
$text{'net_stand'}, 'standalone');
print &text_input($text{'net_port'}, 'Port', $conf, '21', 6);
print &ui_table_end();
print &ui_form_end([ [ undef, $text{'save'} ] ]);
&ui_print_footer("", $text{'index_return'});
+26
View File
@@ -0,0 +1,26 @@
#!/usr/local/bin/perl
# edit_virt.cgi
# Display a form for editing some kind of per-server options
require './proftpd-lib.pl';
&ReadParse();
($conf, $v) = &get_virtual_config($in{'virt'});
@dirs = &editable_directives($in{'type'}, 'virtual');
$desc = $in{'virt'} eq '' ? $text{'virt_header2'} :
&text('virt_header1', $v->{'value'});
&ui_print_header($desc, $text{"type_$in{'type'}"}, "",
undef, undef, undef, undef, &restart_button());
print &ui_form_start("save_virt.cgi", "post");
print &ui_hidden("type", $in{'type'});
print &ui_hidden("virt", $in{'virt'});
print &ui_table_start(&text('virt_header3', $text{"type_$in{'type'}"}),
"width=100%", 4);
&generate_inputs(\@dirs, $conf);
print &ui_table_end();
print &ui_form_end([ [ undef, $text{'save'} ] ]);
&ui_print_footer("virt_index.cgi?virt=$in{'virt'}", $text{'virt_return'},
"", $text{'index_return'});
+34
View File
@@ -0,0 +1,34 @@
#!/usr/local/bin/perl
# edit_vserv.cgi
# Edit <VirtualHost> section details
require './proftpd-lib.pl';
&ReadParse();
$vconf = &get_config()->[$in{'virt'}];
$desc = &text('virt_header1', $vconf->{'value'});
&ui_print_header($desc, $text{'vserv_title'}, "",
undef, undef, undef, undef, &restart_button());
$name = &find_directive("ServerName", $vconf->{'members'});
$port = &find_directive("Port", $vconf->{'members'});
print &ui_form_start("save_vserv.cgi", "post");
print &ui_hidden("virt", $in{'virt'});
print &ui_table_start($text{'vserv_title'}, undef, 2);
print &ui_table_row($text{'vserv_addr'},
&ui_textbox("addr", $vconf->{'value'}, 30));
print &ui_table_row($text{'vserv_name'},
&opt_input($name, "ServerName", $text{'default'}, 30));
print &ui_table_row($text{'vserv_port'},
&opt_input($port, "Port", $text{'default'}, 6));
print &ui_table_end();
print &ui_form_end([ [ undef, $text{'save'} ],
[ 'delete', $text{'vserv_delete'} ] ]);
&ui_print_footer("virt_index.cgi?virt=$in{'virt'}", $text{'virt_return'},
"", $text{'index_return'});
+12
View File
@@ -0,0 +1,12 @@
do 'proftpd-lib.pl';
sub feedback_files
{
local $conf = &get_config();
return &unique(map { $_->{'file'} } @$conf);
}
1;
+44
View File
@@ -0,0 +1,44 @@
#!/usr/local/bin/perl
# find_ftpaccess.cgi
# Finds all per-directory options files under the all the document roots
require './proftpd-lib.pl';
&ReadParse();
@rv = grep { -r $_ } @ftpaccess_files;
&error_setup($text{'find_err'});
if ($in{'from'}) {
# Look under the given directory
@dirs = ( $in{'dir'} );
}
else {
# Look in Anonymous sections
$conf = &get_config();
$anon = &find_directive("Anonymous", $conf);
push(@dirs, $anon) if ($anon);
foreach $v (&find_directive_struct("VirtualHost", $conf)) {
$anon = &find_directive("Anonymous", $v->{'members'});
push(@dirs, $anon) if ($anon);
}
&error($text{'find_eanon'}) if (!@dirs);
}
foreach $d (@dirs) {
if ($d =~ /^~(\S+)$/) {
local @u = getpwnam($1);
$d = $u[7];
next if (!$u[7]);
}
open(FIND, "find ".quotemeta($d)." -name .ftpaccess -print |");
while(<FIND>) {
s/\r|\n//g;
push(@rv, $_);
}
close(FIND);
}
# save results
$site{'ftpaccess'} = join(' ', &unique(@rv));
&write_file("$module_config_directory/site", \%site);
&redirect("ftpaccess.cgi");
+31
View File
@@ -0,0 +1,31 @@
#!/usr/local/bin/perl
# ftpaccess.cgi
# Display a list of per-directory config files
require './proftpd-lib.pl';
&ui_print_header(undef, $text{'ftpaccess_title'}, "",
undef, undef, undef, undef, &restart_button());
print "$text{'ftpaccess_desc'} <p>\n";
if (@ftpaccess_files) {
foreach my $f (@ftpaccess_files) {
push(@grid, &ui_link("ftpaccess_index.cgi?file=".&urlize($f),
&html_escape($f)));
}
print &ui_grid_table(\@grid, 4, "100%"),"<p>\n";
}
print &ui_form_start("create_ftpaccess.cgi");
print &ui_submit($text{'ftpaccess_create'}),"\n";
print &ui_filebox("file", undef, 60);
print &ui_form_end(),"<p>\n";
print &ui_form_start("find_ftpaccess.cgi");
print &ui_submit($text{'ftpaccess_find'}),"\n";
print &ui_radio("from", 0, [ [ 0, $text{'ftpaccess_auto'} ],
[ 1, $text{'ftpaccess_from'} ] ]),"\n";
print &ui_filebox("dir", undef, 60, 0, undef, undef, 1);
print &ui_form_end(),"<p>\n";
&ui_print_footer("", $text{'index_return'});
+51
View File
@@ -0,0 +1,51 @@
#!/usr/local/bin/perl
# ftpaccess_index.cgi
# Display a menu of icons for a per-directory options file
require './proftpd-lib.pl';
&ReadParse();
$conf = &get_ftpaccess_config($in{'file'});
$desc = "<tt>".&html_escape($in{'file'})."</tt>";
&ui_print_header($desc, $text{'ftpindex_title'}, "",
undef, undef, undef, undef, "<a href=\"delete_ftpaccess.cgi?file=".
&urlize($in{'file'})."\">$text{'ftpindex_delete'}</a>".
"<br>".&restart_button());
print "<h3>$text{'ftpindex_opts'}</h3>\n";
# Add user permissions icon/link
$userperms_icon = { "icon" => "images/type_icon_3.gif",
"name" => "User Permissions",
"link" => "userpermissions_form.cgi?file=$in{'file'}" };
# Add 'edit as text' icon/link
$ed_icon = { "icon" => "images/edit.gif",
"name" => $text{'ftpindex_edit'},
"link" => "manual_form.cgi?file=$in{'file'}" };
&config_icons("ftpaccess", "edit_ftpaccess.cgi?file=$in{'file'}&", $ed_icon, $userperms_icon);
@limit = ( &find_directive_struct("Limit", $conf) );
if (@limit) {
# Limit sub-directives
print &ui_hr();
print "<h3>$text{'ftpindex_limit'}</h3>\n";
foreach $l (@limit) {
push(@links, "limit_index.cgi?limit=".&indexof($l, @$conf).
"&file=$in{'file'}");
push(@titles, $l->{'value'});
push(@icons, "images/limit.gif");
}
&icons_table(\@links, \@titles, \@icons, 3);
}
print &ui_form_start("create_limit.cgi");
print &ui_table_start($text{'ftpindex_addlimit'}, undef, 2);
print &ui_table_row($text{'ftpindex_cmds'},
&ui_textbox("cmd", undef, 40));
print &ui_table_end();
print &ui_form_end([ [ undef, $text{'create'} ] ]);
&ui_print_footer("ftpaccess.cgi", $text{'ftpaccess_return'},
"", $text{'index_return'});
Binary file not shown.

After

Width:  |  Height:  |  Size: 237 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 266 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 266 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 478 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 390 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 296 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 470 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 460 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 478 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 470 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 373 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 275 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 460 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 390 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 304 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 364 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

+211
View File
@@ -0,0 +1,211 @@
#!/usr/local/bin/perl
# index.cgi
# Display the icons for various types of proftpd config options
require './proftpd-lib.pl';
# Check if proftpd is installed
if (!&has_command($config{'proftpd_path'})) {
&ui_print_header(undef, $text{'index_title'}, "", undef, 1, 1, 0,
&help_search_link("proftpd", "man", "doc", "google"));
print &text('index_eproftpd', "<tt>$config{'proftpd_path'}</tt>",
"@{[&get_webprefix()]}/config.cgi?$module_name"),"<p>\n";
&foreign_require("software", "software-lib.pl");
$lnk = &software::missing_install_link("proftpd",$text{'index_proftpd'},
"../$module_name/", $text{'index_title'});
print $lnk,"<p>\n" if ($lnk);
&ui_print_footer("/", $text{'index'});
return;
}
# Check that the command is actually proftpd
if (!$site{'version'}) {
&ui_print_header(undef, $text{'index_title'}, "", undef, 1, 1, 0,
&help_search_link("proftpd", "man", "doc", "google"));
print &text('index_eproftpd2',
"<tt>$config{'proftpd_path'}</tt>",
"@{[&get_webprefix()]}/config.cgi?$module_name",
"<tt>$config{'proftpd_path'} -v</tt>",
"<pre>$out</pre>"),"<p>\n";
&ui_print_footer("/", $text{'index'});
return;
}
# Check if the config file exists
$conf = &get_config();
if (!@$conf) {
&ui_print_header(undef, $text{'index_title'}, "", undef, 1, 1, 0,
&help_search_link("proftpd", "man", "doc", "google"));
print &text('index_econf', "<tt>$config{'proftpd_conf'}</tt>",
"@{[&get_webprefix()]}/config.cgi?$module_name"),"<p>\n";
&ui_print_footer("/", $text{'index'});
return;
}
&ui_print_header(undef, $text{'index_title'}, "", undef, 1, 1, 0,
&help_search_link("proftpd", "man", "doc", "google"),
undef, undef, &text('index_version', $site{'fullversion'}));
$conf = &get_config();
# Display global category icons
print &ui_subheading($text{'index_global'});
$ft_icon = { "icon" => "images/dir.gif",
"name" => $text{'ftpaccess_title'},
"link" => "ftpaccess.cgi" };
$us_icon = { "icon" => "images/ftpusers.gif",
"name" => $text{'ftpusers_title'},
"link" => "edit_ftpusers.cgi" };
$ed_icon = { "icon" => "images/edit.gif",
"name" => $text{'manual_configs'},
"link" => "allmanual_form.cgi" };
&config_icons("root global", "edit_global.cgi?", $ft_icon, $us_icon, $ed_icon);
# Display global per-directory/limit options
$global = &find_directive_struct("Global", $conf);
$gconf = $global->{'members'} if ($global);
@dir = ( &find_directive_struct("Directory", $gconf) ,
&find_directive_struct("Limit", $gconf) );
if (@dir) {
print &ui_hr();
print &ui_subheading($text{'virt_header'});
foreach $d (@dir) {
if ($d->{'name'} eq 'Limit') {
push(@links, "limit_index.cgi?limit=".
&indexof($d, @$gconf)."&global=1");
push(@titles, &text('virt_limit', $d->{'value'}));
push(@icons, "images/limit.gif");
}
else {
push(@links, "dir_index.cgi?idx=".
&indexof($d, @$gconf)."&global=1");
push(@titles, &text('virt_dir', $d->{'value'}));
push(@icons, "images/dir.gif");
}
}
&icons_table(\@links, \@titles, \@icons, 3);
}
print "<p>\n";
print &ui_form_start("create_dirlimit.cgi", "post");
print &ui_hidden("global", 1);
print &ui_table_start($text{'index_dlheader'}, undef, 2);
print &ui_table_row($text{'index_dlmode'},
&ui_radio_table("mode", 0,
[ [ 0, $text{'virt_path'},
&ui_textbox("dir", undef, 50) ],
[ 1, $text{'virt_cmds'},
&ui_textbox("cmd", undef, 30) ] ]));
print &ui_table_end();
print &ui_form_end([ [ undef, $text{'create'} ] ]);
# Start virtual server list with default
push(@vname, $text{'index_defserv'});
push(@vlink, "virt_index.cgi");
push(@vdesc, $text{'index_defdesc'});
push(@vaddr, $text{'index_any'});
push(@vserv, &def(&find_directive("ServerName", $conf), $text{'default'}));
# Add other virtual servers
@virt = &find_directive_struct("VirtualHost", $conf);
foreach $v (@virt) {
$vm = $v->{'members'};
push(@vname, $text{'index_virt'});
push(@vlink, "virt_index.cgi?virt=".&indexof($v, @$conf));
push(@vaddr, $v->{'value'});
$sname = &find_directive("ServerName", $vm);
local $ip = &to_ipaddress($v->{'value'});
push(@vdesc, &text('index_vdesc', $ip ? $ip : $text{'index_eip'}));
push(@vserv, &def(&find_vdirective("ServerName", $vm, $conf),
$text{'index_auto'}));
}
# Show virtual servers
print &ui_hr();
print &ui_subheading($text{'index_virts'});
if ($config{'show_list'} && scalar(@vname)) {
# as list for people with lots of servers
print &ui_columns_start([ $text{'index_type'},
$text{'index_addr'},
$text{'index_name'} ], 100, 0);
for($i=0; $i<@vname; $i++) {
print &ui_columns_row([
&ui_link($vlink[$i], &html_escape($vname[$i])),
&html_escape($vaddr[$i]),
&html_escape($vserv[$i]),
]);
}
print &ui_columns_end();
}
else {
# as icons for niceness
# XXX fix this
print "<table width=100% cellpadding=5>\n";
for($i=0; $i<@vname; $i++) {
print "<tr> <td valign=top align=center nowrap>";
print '<div class="row icons-row inline-row">';
&generate_icon("images/virt.gif", &html_escape($vname[$i]),
$vlink[$i]);
print "</div>\n";
print "</td> <td valign=top>\n";
print &html_escape($vdesc[$i]),"<br>\n";
print "<table width=100%><tr>\n";
print "<td width=30%><b>$text{'index_addr'}</b> ",
&html_escape($vaddr[$i]),"</td>\n";
print "<td width=70%><b>$text{'index_name'}</b> ",
&html_escape($vserv[$i]),"</td></tr>\n";
print "</table></td> </tr>\n";
}
print "</table>\n";
}
print "<p>\n";
# Form to create a virtual FTP server
print &ui_form_start("create_virt.cgi", "post");
print &ui_table_start($text{'index_create'}, undef, 2);
print &ui_table_row($text{'index_addr'},
&ui_textbox("addr", undef, 25));
print &ui_table_row($text{'index_port'},
&opt_input(undef, "Port", $text{'default'}, 6));
print &ui_table_row($text{'index_name'},
&opt_input(undef, "ServerName", $text{'default'}, 25));
print &ui_table_end();
print &ui_form_end([ [ undef, $text{'create'} ] ]);
# Find out how ProFTPd is running
($inet, $inet_mod) = &running_under_inetd();
if (!$inet) {
# Get the FTP server pid
$pid = &get_proftpd_pid();
print &ui_hr();
print &ui_buttons_start();
}
if (!$inet && $pid) {
print &ui_buttons_row("apply.cgi",
$text{'index_apply'},
$site{'version'} > 1.22 ?
$text{'index_applymsg2'} :
$text{'index_applymsg'});
print &ui_buttons_row("stop.cgi",
$text{'index_stop'}, $text{'index_stopmsg'});
}
elsif (!$inet && !$pid) {
print &ui_buttons_row("start.cgi",
$text{'index_start'},
$inet_mod ? &text('index_startmsg', "/$inet_mod/")
: $text{'index_startmsg2'});
}
if (!$inet) {
print &ui_buttons_end();
}
&ui_print_footer("/", $text{'index'});
+18
View File
@@ -0,0 +1,18 @@
# install_check.pl
do 'proftpd-lib.pl';
# is_installed(mode)
# For mode 1, returns 2 if the server is installed and configured for use by
# Webmin, 1 if installed but not configured, or 0 otherwise.
# For mode 0, returns 1 if installed, 0 if not
sub is_installed
{
my ($mode) = @_;
return 0 if (!-x $config{'proftpd_path'} || !-r $config{'proftpd_conf'});
if ($mode) {
return 2 if ($site{'version'} || &get_proftpd_version());
}
return 1;
}
+471
View File
@@ -0,0 +1,471 @@
index_title=خادم ProFTPD
index_eproftpd=تعذر العثور على خادم ProFTPD $1 على نظامك. ربما لم يتم تثبيته أو أن <a href='$2'>تهيئة الوحدة النمطية</a> غير صحيحة.
index_eproftpd2=لا يبدو أن البرنامج$1 هو خادم ProFTPD. ربما لم يتم تثبيته أو أن <a href='$2'>تهيئة الوحدة النمطية</a> غير صحيحة. الإخراج من الأمر$3 كان :$4
index_eversion=لا يدعم Webmin الإصدار$1 من خادم ProFTPD.
index_econf=ملف تكوين ProFTPD $1 غير موجود أو غير صالح. ربما <a href='$2'>تهيئة الوحدة النمطية</a> غير صحيحة.
index_apply=تطبيق التغييرات
index_applymsg=انقر فوق هذا الزر لتطبيق التكوين الحالي عن طريق إرسال إشارة SIGHUP إلى عملية ProFTPD قيد التشغيل.
index_applymsg2=انقر فوق هذا الزر لتطبيق التكوين الحالي عن طريق إيقاف ProFTPD وإعادة تشغيله.
index_start=ابدأ الخادم
index_startmsg=انقر فوق هذا الزر لبدء تشغيل خادم FTP بالتكوين الحالي.
index_startmsg2=انقر فوق هذا الزر لبدء تشغيل خادم FTP بالتكوين الحالي.
index_stop=إيقاف السيرفر
index_stopmsg=انقر فوق هذا الزر لإيقاف خادم FTP ، والذي سيمنع أي عملاء FTP جدد من الاتصال.
index_return=القائمة الرئيسية
index_virts=الخوادم الافتراضية
index_virt=خادم إفتراضي
index_type=نوع الخادم
index_addr=عنوان
index_name=اسم الخادم
index_port=منفذ FTP
index_defserv=الخادم الافتراضي
index_defdesc=يعالج أي اتصالات FTP لا تتم معالجتها بواسطة الخوادم الافتراضية.
index_any=أي
index_vdesc=يعالج كافة الاتصالات بـ$1
index_eip=&lt;غير معروف&gt;
index_global=التكوين العام
index_create=إنشاء خادم افتراضي
index_version=إصدار ProFTPd$1
index_proftpd=ProFTPd
index_dlheader=إضافة خيارات
index_dlmode=إضافة خيارات لـ
efailed=فشل في حفظ$1
type_0=خيارات الشبكات
type_1=خيارات التسجيل
type_2=الملفات والدلائل
type_3=صلاحية التحكم صلاحية الدخول
type_4=متنوع
type_5=المستخدم والمجموعة
type_6=المصادقة
type_7=خيارات SSL
virt_title=خيارات الخادم الظاهري
virt_header1=ل 1
virt_header2=للخادم الافتراضي
virt_header3=خيارات$1
virt_anon=FTP مجهول
virt_header=خيارات لكل دليل ولكل أمر
virt_dir=دليل$1
virt_limit=أوامر$1
virt_adddir=إضافة خيارات لكل دليل لـ ..
virt_addlimit=إضافة خيارات لكل أمر لـ ..
virt_path=مسار الدليل
virt_cmds=أوامر FTP
virt_return=خادم إفتراضي
virt_virt=تكوين الخادم الظاهري
virt_edit=تحرير التوجيهات
vserv_title=تكوين الخادم الظاهري
vserv_addr=عنوان
vserv_name=اسم الخادم
vserv_port=منفذ FTP
vserv_delete=حذف الخادم الظاهري
vserv_eaddr=العنوان مفقود أو غير صالح
vserv_eport=رقم منفذ مفقود أو غير صالح
vserv_ename=اسم الخادم مفقود
anon_title=خيارات FTP مجهولة
anon_header1=في الخادم الظاهري$1
anon_header2=في الخادم الافتراضي
anon_anon=تكوين FTP مجهول
anon_return=خيارات FTP مجهولة
anon_header3=من أجل FTP مجهول في الملقم الظاهري$1
anon_header4=لبروتوكول نقل الملفات المجهول في الخادم الافتراضي
aserv_title=تكوين FTP مجهول
aserv_create=إعداد FTP مجهول
aserv_root=تقتصر على الدليل
aserv_user=الوصول إلى الملفات كمستخدم
aserv_group=الوصول إلى الملفات كمجموعة
aserv_err=فشل في حفظ FTP مجهول
aserv_eroot=دليل chroot مفقود أو غير صالح
aserv_euser=مستخدم Unix مفقود أو غير صالح
aserv_egroup=مجموعة Unix مفقودة أو غير صالحة
aserv_desc=لم يتم إعداد FTP المجهول لهذا الخادم الظاهري بعد. استخدم هذا النموذج لتعيين خيارات التكوين الأولية.
dir_title=خيارات لكل دليل
dir_header2=للدليل$1 في الخادم الافتراضي
dir_header1=للدليل$1 في الخادم الظاهري$2
dir_edit=تحرير التوجيهات
dir_return=خيارات لكل دليل
dir_header3=خيارات $1 في$2
dir_header=خيارات لكل أمر
dir_dir=تكوين الدليل
dir_header4=للدليل$1 في FTP مجهول
dir_header5=للدليل$1 بشكل عام
manual_title=تحرير التوجيهات
manual_header=استخدم مربع النص أدناه لتحرير توجيهات ProFTPD يدويًا في$1 التي تنطبق على هذا الخادم أو الدليل أو الأوامر الافتراضية.
manual_configs=تحرير ملفات التكوين
manual_ecannot=لا يسمح لك بتحرير التوجيهات يدويًا
manual_file=تحرير التوجيهات في الملف:
manual_efile=ملف تكوين ProFTPd غير صالح
manual_etest=تم الكشف عن خطأ في ملف التكوين :$1
limit_title=خيارات لكل أمر
limit_header4=للأوامر$1 في الدليل$2
limit_header2=للأوامر$1 في الخادم الافتراضي
limit_header1=للأوامر$1 في الخادم الظاهري$2
limit_edit=تحرير التوجيهات
limit_limit=تكوين الأوامر
limit_header3=خيارات $1 للأوامر$2
limit_return=خيارات لكل أمر
limit_header5=للأوامر$1 في FTP مجهول
limit_header6=للأوامر$1 في الملف$2
limit_header7=للأوامر$1 على مستوى العالم
lserv_title=تكوين الأوامر
lserv_cmd=أوامر FTP
lserv_delete=حذف تكوين الأوامر
lserv_err=فشل حفظ الأوامر
lserv_ecmd=لم يتم تحديد أوامر
dserv_title=تكوين الدليل
dserv_dir=مسار الدليل
dserv_err=فشل في حفظ الدليل
dserv_edir=مسار الدليل مفقود
dserv_delete=حذف تكوين الدليل
dserv_eanondir=يجب أن يكون الدليل تحت دليل FTP المجهول
mod_core_type=نوع الخادم
mod_core_inetd=اركض من Inetd
mod_core_stand=شيطان مستقل
mod_core_port=استمع على المنفذ
mod_core_eport=رقم منفذ مفقود أو غير صالح
mod_core_servername=عرض اسم الخادم للمستخدمين
mod_core_eservername=اسم الخادم مفقود
mod_core_defaultserver=هل تستخدم هذا الخادم الافتراضي افتراضيًا؟
mod_core_instances=الجلسات المتزامنة القصوى
mod_core_einstances=عدد جلسات مفقود أو غير صالح
mod_core_umask=umask ملف جديد
mod_core_octal=قناع ثماني
mod_core_umask_d=قناع دليل جديد
mod_core_eumask=umask مفقود أو غير صالح
mod_core_user=تشغيل كمستخدم Unix
mod_core_uname=اسم المستخدم
mod_core_uid=UID
mod_core_group=تشغيل كمجموعة Unix
mod_core_gname=أسم المجموعة
mod_core_gid=GID
mod_core_tlog=ملف سجل نقل FTP
mod_core_nowhere=تم تعطيل التسجيل
mod_core_etlog=ملف سجل عمليات النقل مفقود أو غير صالح
mod_core_accessdeny=رسالة تسجيل الدخول الفاشلة
mod_core_accessgrant=رسالة تسجيل دخول ناجحة
mod_core_adall=سياسة التحكم في الوصول
mod_core_addefault=نفس الوالد
mod_core_allowall=السماح لجميع العملاء
mod_core_denyall=رفض جميع العملاء
mod_core_filter=أوامر FTP المسموح بها regexp
mod_core_foreign=السماح بنقل البيانات الأجنبية؟
mod_core_overwrite=السماح بالكتابة فوق الملفات؟
mod_core_restart=هل تسمح بإعادة التنزيلات؟
mod_core_restart2=هل تريد السماح بإعادة التحميل؟
mod_core_require=تتطلب كلمة مرور لتسجيل الدخول المجهول؟
mod_core_anongroup=مجموعات للتعامل مع الأعضاء كمجهولين
mod_core_eanongroup=لم يتم إدخال مجموعة مجهولة
mod_core_authalias=هل تسمح فقط للمستخدمين المستعدين بتسجيل الدخول؟
mod_core_authusingalias=استخدام كلمة مرور الاسم المستعار لتسجيل الدخول المجهول؟
mod_core_bind=ربط عنوان
mod_core_bind_all=جميع العناوين
mod_core_ebind=عنوان ربط مفقود أو غير صالح
mod_core_cdpath=الدلائل CD الاختصار
mod_core_classes=تمكين الطبقات للتحكم في الوصول؟
mod_core_cls=فئات التحكم في الوصول
mod_core_cname=اسم الفصل
mod_core_ctype=النوع والقيمة
mod_core_climit=اتصالات ماكس
mod_core_cregex=مطابقة اسم مضيف العميل
mod_core_cip=شبكة IP العميل/CIDR
mod_core_eclimit=اتصالات قصوى مفقودة أو غير صالحة
mod_core_ecregex=مطابقة اسم مضيف العميل مفقودة
mod_core_ecip=شبكة IP العميل/CIDR مفقودة أو غير صالحة
mod_core_buffer=طول أمر FTP الأقصى
mod_core_ebuffer=الطول الأقصى مفقود أو غير صالح
mod_core_transfer=وضع النقل الافتراضي
mod_core_binary=الثنائية
mod_core_ascii=ASCII
mod_core_defer=تأجيل رسالة الترحيب حتى بعد تسجيل الدخول؟
mod_core_aborted=حذف التحميلات المحذوفة؟
mod_core_dfilter=أوامر FTP المرفوضة regexp
mod_core_display=ملف رسالة تسجيل الدخول المسبق
mod_core_none=لا يوجد
mod_core_edisplay=ملف رسالة تسجيل الدخول المسبق مفقود
mod_core_firstcd=README اسم ملف الدليل
mod_core_firstcdt=اعرض دائما
mod_core_efirstcd=اسم ملف دليل README مفقود
mod_core_goaway=ملف رسائل اتصالات كثيرة جداً
mod_core_egoaway=ملف اتصالات مفقود جدًا
mod_core_login=ملف رسالة ما بعد تسجيل الدخول
mod_core_elogin=ملف رسالة ما بعد تسجيل الدخول مفقود
mod_core_quit=ملف رسالة تسجيل الخروج
mod_core_equit=ملف رسالة تسجيل الخروج مفقود
mod_core_gowner=مالك المجموعة للملفات التي تم تحميلها
mod_core_egowner=مجموعة مفقودة أو غير صالحة للملفات التي تم تحميلها
mod_core_grouppassword=كلمات مرور المجموعة
mod_core_gpname=مجموعة يونكس
mod_core_gppass=كلمه السر
mod_core_gpdef=اتركه دون تغيير
mod_core_egpname=اسم مجموعة Unix غير صالح
mod_core_hstor=إخفاء الملفات أثناء التحميل؟
mod_core_hgroup=إخفاء الملفات المملوكة للمجموعات
mod_core_ehgroup=اسم مجموعة غير صالح لإخفاء ملفات
mod_core_hnoaccess=إخفاء الملفات التي لا يمكن الوصول إليها؟
mod_core_huser=إخفاء الملفات المملوكة للمستخدمين
mod_core_ehuser=اسم مستخدم غير صالح لإخفاء ملفات
mod_core_ident=البحث عن اسم مستخدم معرف البعيد؟
mod_core_ihidden=جعل الملفات المخفية يتعذر الوصول إليها؟
mod_core_masq=حفلة تنكرية كعنوان
mod_core_masq_def=استخدم العنوان الحقيقي
mod_core_emasq=عنوان حفلة تنكرية مفقود أو غير صالح
mod_core_maxc=أقصى تسجيلات دخول متزامنة
mod_core_maxc1=غير محدود
mod_core_maxcmsg=رسالة خطأ تسجيل الدخول
mod_core_emaxc=الحد الأقصى لعدد عمليات تسجيل الدخول مفقود أو غير صالح
mod_core_maxch=أقصى تسجيلات متزامنة لكل مضيف
mod_core_maxcu=أقصى تسجيلات متزامنة لكل مستخدم
mod_core_logins=أقصى تسجيلات فاشلة لكل جلسة
mod_core_elogins=عدد مفقود أو غير صالح لتسجيلات الدخول الفاشلة
mod_core_rfc2228=إرسال استجابات على غرار RFC2228؟
mod_core_pasv=نطاق منفذ PASV
mod_core_pasvr=الحد الأدنى - الحد الأقصى
mod_core_epasv=رقم منفذ PASV مفقود أو غير صالح
mod_core_pathallow=مسموح باسم regex لاسم الملف الذي تم تحميله
mod_core_any=أي
mod_core_pathdeny=تم رفض regex لاسم الملف الذي تم تحميله
mod_core_pidfile=اكتب PID لملف
mod_core_epidfile=ملف PID مفقود أو غير صالح
mod_core_shell=السماح فقط بتسجيل الدخول من قبل المستخدمين مع shell صالح؟
mod_core_cpulimit=حدود موارد وحدة المعالجة المركزية
mod_core_ecpulimit=حد موارد وحدة المعالجة المركزية
mod_core_memlimit=حدود موارد الذاكرة
mod_core_ememlimit=حد موارد الذاكرة
mod_core_filelimit=حدود الملفات المفتوحة
mod_core_efilelimit=حد الملفات المفتوحة
mod_core_soft=الحد الأدنى:
mod_core_hard=الحد الصعب:
mod_core_max=أقصى
mod_core_esoft=ملف$1 مفقود أو غير صالح
mod_core_ehard=القرص الصلب مفقود أو غير صالح$1
mod_core_score=المسار إلى دليل لوحة النتائج
mod_core_escore=دليل لوحة النتائج مفقود أو غير صالح
mod_core_admin=عنوان البريد الإلكتروني لمسؤول الخادم
mod_core_eadmin=عنوان البريد الإلكتروني مفقود أو غير صالح
mod_core_identmsg=رسالة اتصال العميل
mod_core_identmsg_def=إظهار الرسالة الافتراضية
mod_core_links=إظهار الروابط الرمزية؟
mod_core_tight=ربط فقط بالموانئ المطلوبة؟
mod_core_facility=مرفق سجل النظام
mod_core_level=مستوى سجل النظام
mod_core_backlog=طول قائمة انتظار TCP المتراكمة
mod_core_ebacklog=طول قائمة انتظار التراكم مفقود أو غير صالح
mod_core_nodelay=هل تريد استخدام خيار مقبس TCP_NODELAY؟
mod_core_rwindow=حجم نافذة استقبال TCP
mod_core_erwindow=حجم نافذة الاستلام مفقود أو غير صالح
mod_core_swindow=إرسال TCP حجم النافذة
mod_core_eswindow=حجم نافذة الإرسال مفقود أو غير صالح
mod_core_gmt=عرض الأوقات بتوقيت جرينتش؟
mod_core_tidle=خمول الوقت قبل قطع الاتصال
mod_core_etidle=وقت خمول مفقود أو غير صالح
mod_core_secs=ثواني
mod_core_tlogin=حان وقت الانتظار للمصادقة
mod_core_etlogin=وقت المصادقة مفقود أو غير صالح
mod_core_ttransfer=حان وقت الانتظار للنقل الأول
mod_core_ettransfer=وقت النقل الأول مفقود أو غير صالح
mod_core_tstalled=حان وقت الانتظار لنقل البيانات المتوقفة
mod_core_etstalled=وقت النقل المتوقف مفقود أو غير صالح
mod_core_ftpusers=هل تريد رفض المستخدمين في ملف/etc/ftpusers؟
mod_core_hostsallow=تستضيف للسماح للملف
mod_core_ehostsallow=المضيفات التي تسمح للملف غير موجودة
mod_core_hostsdeny=تستضيف لرفض الملف
mod_core_ehostsdeny=المضيفون لرفض الملف غير موجود
mod_core_revdns=هل عمليات بحث DNS العكسية عن عناوين العملاء؟
mod_core_userdir=Chroot لاسم المستخدم الفرعي؟
mod_core_ualias=الأسماء المستعارة لاسم المستخدم
mod_core_afrom=ادخل اسم المستخدم
mod_core_ato=اسم المستخدم الحقيقي
mod_core_eafrom=اسم مستخدم تسجيل الدخول غير صالح في الاسم المستعار
mod_core_eato=اسم المستخدم الحقيقي مفقود أو غير صالح في الاسم المستعار
mod_core_uowner=مالك الملفات التي تم تحميلها
mod_core_euowner=مالك مفقود أو غير صالح للملفات التي تم تحميلها
mod_core_userpassword=تجاوز كلمات مرور المستخدم
mod_core_upname=مستخدم يونكس
mod_core_uppass=كلمه السر
mod_core_updef=اتركه دون تغيير
mod_core_eupname=اسم مستخدم Unix غير صالح
mod_core_wtmp=تسجيلات تسجيل الدخول في wtmp؟
mod_core_allow_deny=الحد من الوصول
mod_core_allowdeny=السماح ثم الرفض
mod_core_denyallow=رفض ثم السماح
mod_core_allow=السماح
mod_core_deny=أنكر
mod_core_mode_0=الكل
mod_core_mode_1=لا يوجد
mod_core_mode_2=عنوان IP
mod_core_mode_3=شبكة الاتصال
mod_core_mode_4=اسم المضيف
mod_core_cond=شرط
mod_core_action=عمل
mod_core_agroup=السماح للمجموعات فقط
mod_core_auser=السماح للمستخدمين فقط
mod_core_all=الكل
mod_core_dgroup=إنكار المجموعات
mod_core_duser=رفض المستخدمين
mod_core_eip=إن '$1' ليس عنوان IP صالحًا
mod_core_enet=إن '$1' ليس عنوان شبكة صالحًا
mod_core_ehost=إن '$1' ليس اسم مضيف صالح
mod_ls_fakegroup=مجموعة وهمية في قوائم الدليل؟
mod_ls_fakeuser=مستخدم مزيف في قوائم الدليل؟
mod_ls_fakemode=أذونات وهمية في قوائم الدليل
mod_ls_nofake=أذونات حقيقية
mod_ls_efakemode=يجب أن تكون الأذونات المزيفة مثمنة
mod_ls_dotfiles=عرض الملفات التي تبدأ بـ. في القوائم؟
mod_ls_ls=خيارات ls إضافية
mod_ls_els=خيارات ls إضافية مفقودة
mod_ls_fakeasuser=نعم ، كمستخدم ..
mod_ls_fakesameuser=مستخدم متصل
mod_ls_fakeasgroup=نعم ، كمجموعة ..
mod_ls_fakesamegroup=مجموعة متصلة
mod_ls_efakeuser=مستخدم مزيف مفقود أو غير صالح
mod_ls_efakegroup=مجموعة مزيفة مفقودة أو غير صالحة
mod_ls_options=خيارات قائمة الدليل
mod_ls_strict=هل تريد تجاوز خيارات المستخدم؟
mod_auth_chdir=دليل تسجيل الدخول الأولي
mod_auth_echdir=الدليل الأولي مفقود أو غير صالح
mod_auth_chroot=قصر المستخدمين على الدلائل
mod_auth_home=الدليل الرئيسي
mod_auth_none=لا يوجد
mod_auth_dir=الدليل
mod_auth_groups=مجموعات يونكس
mod_auth_all=كل واحد
mod_auth_edir=دليل chroot غير صالح
mod_auth_egroups=لم يتم إدخال أي مجموعات Unix لـ chroot
mod_auth_echroot=دليل chroot مفقود أو غير صالح
mod_auth_login=لا تسأل عن كلمة المرور إذا تم رفض تسجيل الدخول؟
mod_auth_root=السماح بتسجيل الدخول بالجذر؟
mod_site_chmod=السماح لأمر chmod؟
mod_unixpw_ufile=ملف كلمة مرور Unix البديل
mod_unixpw_eufile=ملف كلمة مرور Unix مفقود أو غير صالح
mod_unixpw_gfile=ملف مجموعة Unix البديل
mod_unixpw_egfile=ملف مجموعة Unix مفقود أو غير صالح
mod_unixpw_none=لا يوجد
mod_unixpw_pam=هل تعامل PAM دائمًا كمرجع؟
mod_unixpw_persist=إبقاء ملف كلمة المرور مفتوحًا باستمرار؟
mod_log_syslog=تسجيل أخطاء الملف
mod_log_sysdef=سجل النظام
mod_log_esyslog=ملف سجل مفقود أو غير صالح
mod_log_extended=ملفات تعريف مخصصة
mod_log_file=ملف تسجيل
mod_log_cmd=لأوامر FTP
mod_log_nick=تنسيق السجل
mod_log_all=الكل
mod_log_ecmd=أوامر FTP مفقودة
mod_log_enick=اسم تنسيق السجل مفقود أو غير صالح
mod_log_ecmdnick=يجب إدخال تنسيق سجل عند تحديد أوامر للتسجيل
mod_log_nickname=اسم التنسيق
mod_log_fmt=تنسيق السلسلة
mod_log_format=تنسيقات السجل المخصصة
mod_log_enickname=اسم تنسيق مفقود أو غير صالح
mod_log_efmt=سلسلة تنسيق مفقودة
mod_pam_pam=هل تريد استخدام PAM للمصادقة؟
mod_pam_config=المصادقة باستخدام خدمة PAM
mod_pam_econfig=خدمة PAM مفقودة أو غير صالحة
mod_readme_display=إعلام المستخدم بملفات التمهيدي المطابقة
mod_readme_none=لا يوجد
mod_readme_edisplay=نمط ملفات المستند التمهيدي مفقود
mod_tls_engine=تمكين تشفير SSL؟
mod_tls_required=هل مطلوب SSL؟
mod_tls_ctrl=لقناة التحكم
mod_tls_auth=للمصادقة
mod_tls_authdata=للمصادقة والبيانات
mod_tls_file=ملف شهادة SSL
mod_tls_efile=ملف شهادة SSL غير موجود!
mod_tls_key=ملف مفتاح SSL
mod_tls_ekey=ملف مفتاح SSL غير موجود!
mod_tls_ca=ملف شهادة SSL CA
mod_tls_eca=ملف شهادة SSL CA غير موجود!
mod_tls_none=لم يتم تحديد أي شيء
start_err=فشل بدء تشغيل خادم FTP
start_einetd=لا يمكنك بدء البرنامج الخفي للخادم عندما تكون في وضع inetd.
stop_err=فشل إيقاف خادم FTP
stop_einetd=لا يمكنك إيقاف البرنامج الخفي للخادم عندما تكون في وضع inetd.
stop_erun=لا يعمل
apply_err=فشل في تطبيق تكوين FTP
apply_egone=لم يعد يعمل
ftpaccess_title=ملفات خيارات لكل دليل
ftpaccess_desc=يمكن تحديد خيارات إضافية لكل دليل في ملف (يسمى عادة <tt>.ftpaccess</tt>) في كل دليل. تنطبق الخيارات على جميع الملفات في هذا الدليل وأي أدلة فرعية ، ما لم يتم تجاوزها بواسطة ملف خيارات آخر.
ftpaccess_create=إنشاء ملف خيارات
ftpaccess_find=البحث عن ملفات الخيارات
ftpaccess_auto=تحت مجهول
ftpaccess_from=من الدليل
ftpaccess_return=قائمة ملف الخيارات
ftpusers_title=تم رفض مستخدمي FTP
ftpusers_desc=إذا تم تمكينه تحت رمز <tt>المصادقة</tt> ، فسيتم رفض وصول المستخدمين المدرجين أدناه من الملف$1 إلى تسجيل الدخول إلى مستخدم FTP.
ftpindex_title=ملف خيارات لكل دليل
ftpindex_delete=حذف ملف
ftpindex_opts=خيارات لكل دليل
ftpindex_edit=تحرير التوجيهات
ftpindex_limit=خيارات لكل أمر
ftpindex_addlimit=إضافة خيارات لكل أمر لـ ..
ftpindex_header2=$1 في$2
ftpindex_return=ملف خيارات لكل دليل
ftpindex_header=ل 1
ftpindex_cmds=أوامر FTP
find_err=فشل في العثور على ملفات الخيارات
find_eanon=لم يتم إعداد FTP المجهول في أي خادم ظاهري
log_global=تم تغيير خيارات $1 العمومية
log_ftpusers=تم تغيير مستخدمي FTP المرفوضين
log_virtc=تم إنشاء الخادم$1
log_virts=إعادة تكوين الخادم$1
log_virtd=الخادم المحذوف$1
log_virtm=خادم تم تحريره يدويًا$1
log_virt=تم تغيير$1 في الخادم$2
log_dirc=تم إنشاء الدليل$1
log_dirc_l=تم إنشاء الدليل$1 في الخادم$2
log_dirs=تم تغيير الدليل$1
log_dirs_l=تم تغيير الدليل$1 في الخادم$2
log_dird=الدليل المحذوف$1
log_dird_l=الدليل المحذوف$1 في الخادم$2
log_dirm=دليل تم تحريره يدويًا$1
log_dirm_l=تم تحرير الدليل$1 يدويًا في الخادم$2
log_dir=تم تغيير$1 في الدليل$2
log_dir_l=تم تغيير$1 في الدليل$2 في الخادم$3
log_limitc=خيارات إنشاء لكل أمر لـ$1
log_limits=إعادة تكوين خيارات لكل أمر لـ$1
log_limitd=خيارات المحذوفة لكل أمر لـ$1
log_limitm=تم تحرير خيارات لكل أمر يدويًا لـ$1
log_limit=تم تغيير$1 في خيارات كل أمر لـ$2
log_ftpaccessc=ملف خيارات تم إنشاؤه$1
log_ftpaccessd=ملف الخيارات المحذوف$1
log_ftpaccessm=ملف الخيارات المحرر يدويًا$1
log_ftpaccess=تم تغيير$1 في ملف الخيارات$2
log_anonc=قم بإعداد FTP مجهول للملقم$1
log_anons=إعادة تكوين FTP مجهول للملقم$1
log_anond=تم حذف FTP مجهول للملقم$1
log_anonm=تحرير FTP مجهول يدويًا للملقم$1
log_anon=تم تغيير$1 في FTP مجهول للملقم$2
log_start=بدأت proftpd
log_apply=التغييرات التطبيقية
eafter=فشل التحقق من التكوين:$1 لم يتم حفظ التغييرات.
proftpd_apply=تطبيق التغييرات
proftpd_stop=إيقاف ProFTPd
proftpd_start=قم بتشغيل ProFTPd

Some files were not shown because too many files have changed in this diff Show More