mirror of
https://github.com/webmin/webmin.git
synced 2026-02-05 15:12:15 +00:00
Compare commits
191 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fecfdb2f2b | ||
|
|
b091ba221c | ||
|
|
1fd2f398ad | ||
|
|
ad381d1447 | ||
|
|
1004cedd4e | ||
|
|
837d98d6bc | ||
|
|
f16522157d | ||
|
|
ca071daec2 | ||
|
|
90fa9332e9 | ||
|
|
b6984eb5fd | ||
|
|
dc5a5fb4e7 | ||
|
|
05ebd304fe | ||
|
|
dc69277ab3 | ||
|
|
7fd09d1a95 | ||
|
|
7dae254be4 | ||
|
|
ce6b5fed71 | ||
|
|
62049ffa47 | ||
|
|
2e6308372d | ||
|
|
e87f8ef1f5 | ||
|
|
12b3e98bec | ||
|
|
319c3c1f42 | ||
|
|
6a7c775d83 | ||
|
|
e43ec7e4c0 | ||
|
|
3bee204db2 | ||
|
|
96c6793301 | ||
|
|
f786638c29 | ||
|
|
bb2f90ee5b | ||
|
|
6676f6c660 | ||
|
|
0e38b9e7a0 | ||
|
|
afa7f0d82b | ||
|
|
bf7873b3e0 | ||
|
|
e1fa75f314 | ||
|
|
8aa6cc1c08 | ||
|
|
f06acc1a92 | ||
|
|
675e0f032a | ||
|
|
917ff95a90 | ||
|
|
c415c46b37 | ||
|
|
e5760f78ac | ||
|
|
88907f3079 | ||
|
|
f700928156 | ||
|
|
149c4aad4f | ||
|
|
9bc5766fa1 | ||
|
|
c36f4e2af1 | ||
|
|
3b66f444f8 | ||
|
|
75700873ff | ||
|
|
86dfb7f686 | ||
|
|
47b26ce53e | ||
|
|
28c5b02c4a | ||
|
|
5c8540a832 | ||
|
|
5835afd971 | ||
|
|
ff0ba4822d | ||
|
|
df1334f3af | ||
|
|
7621053e6c | ||
|
|
21b431f59b | ||
|
|
5a47843eb6 | ||
|
|
cde06ff828 | ||
|
|
d438f002a9 | ||
|
|
aa0f31c93d | ||
|
|
0e52919e83 | ||
|
|
fdb811e1a6 | ||
|
|
d653841a1d | ||
|
|
1957217e75 | ||
|
|
cca0d50a6b | ||
|
|
dffc6c10b2 | ||
|
|
043690aee8 | ||
|
|
c03e3a5c97 | ||
|
|
2c94d548f2 | ||
|
|
0df9e25be2 | ||
|
|
ed66605896 | ||
|
|
70b534ef3c | ||
|
|
b085b2142f | ||
|
|
c51b7ca4fd | ||
|
|
3e592861d4 | ||
|
|
f505abccd5 | ||
|
|
592d47067a | ||
|
|
37c7f1aaa7 | ||
|
|
2b7688d445 | ||
|
|
a508348cca | ||
|
|
84de87f7ed | ||
|
|
c8ef4468c3 | ||
|
|
79cc63c016 | ||
|
|
c0a72633e8 | ||
|
|
f3c063644d | ||
|
|
cda820a418 | ||
|
|
c38725d371 | ||
|
|
9af0e28e02 | ||
|
|
d8a2a373e4 | ||
|
|
d03f6fdc67 | ||
|
|
1e3b845bf1 | ||
|
|
eab1118184 | ||
|
|
a19b85d570 | ||
|
|
0a08ee52ea | ||
|
|
f34ca656a5 | ||
|
|
0ca5b18938 | ||
|
|
a85db57cdd | ||
|
|
f8f13738a1 | ||
|
|
85ce8657f7 | ||
|
|
07abd58e8b | ||
|
|
475cc4fbdf | ||
|
|
bb0312469e | ||
|
|
095879911f | ||
|
|
99afee45aa | ||
|
|
cf956129cb | ||
|
|
078131f4f6 | ||
|
|
04f2b51bab | ||
|
|
2a65b999ca | ||
|
|
5486730fd6 | ||
|
|
f7f3e3b5ac | ||
|
|
c3f86c7f39 | ||
|
|
ac7f52d6d1 | ||
|
|
15e2f4a114 | ||
|
|
338f801be4 | ||
|
|
b6189c6a43 | ||
|
|
c9345028d7 | ||
|
|
56270624d1 | ||
|
|
ab561465ba | ||
|
|
b2511a047c | ||
|
|
5e89e16f06 | ||
|
|
0bf336d761 | ||
|
|
42157fdfed | ||
|
|
7ee7ed19f4 | ||
|
|
a04eb85879 | ||
|
|
0353111336 | ||
|
|
b35b58cb94 | ||
|
|
f7337c7f27 | ||
|
|
d2b43d2eaa | ||
|
|
7ff9e6501a | ||
|
|
18bae5be08 | ||
|
|
b6bc89aa31 | ||
|
|
8c8afc0cbb | ||
|
|
e8120afc9e | ||
|
|
ce3074ad47 | ||
|
|
27ea3f50c0 | ||
|
|
ac77da0e75 | ||
|
|
8ab998b123 | ||
|
|
a40052a3f0 | ||
|
|
c6cd892f15 | ||
|
|
12b0364e62 | ||
|
|
0883226098 | ||
|
|
7208412de2 | ||
|
|
ceae4b5228 | ||
|
|
f308101805 | ||
|
|
371d2b008f | ||
|
|
5f39cfdd39 | ||
|
|
53f087cafa | ||
|
|
481d2b6d4b | ||
|
|
e3192f2f19 | ||
|
|
186d49c1a0 | ||
|
|
003424a60e | ||
|
|
c2657aab8a | ||
|
|
3cceb09daa | ||
|
|
9e57a7df51 | ||
|
|
4cfb984694 | ||
|
|
220897472f | ||
|
|
dc69374aaa | ||
|
|
ac4d68f2ce | ||
|
|
202d672855 | ||
|
|
2f5ee3eb33 | ||
|
|
b2d4380577 | ||
|
|
d93ae142f2 | ||
|
|
c8cebbb4b9 | ||
|
|
db8407ab09 | ||
|
|
ebfcf159c7 | ||
|
|
8748d785b4 | ||
|
|
25d31738ec | ||
|
|
499fba0b8c | ||
|
|
00bd87ae86 | ||
|
|
2bf3dcbf38 | ||
|
|
6586126d6b | ||
|
|
8b358c438d | ||
|
|
cb481287ac | ||
|
|
7e6982a0cf | ||
|
|
700afdb0cc | ||
|
|
000405b749 | ||
|
|
a14864e932 | ||
|
|
36048fe4cd | ||
|
|
e461576cd9 | ||
|
|
7188abc556 | ||
|
|
55fb44f34c | ||
|
|
b7bbeb457b | ||
|
|
e1e6fd43e0 | ||
|
|
46239c247f | ||
|
|
22c8d8d041 | ||
|
|
792b4d2bd7 | ||
|
|
031dd76538 | ||
|
|
74efe3465e | ||
|
|
b08445e9c4 | ||
|
|
959adc098f | ||
|
|
54c7f75bf9 | ||
|
|
4dfaaaff09 | ||
|
|
52180cea58 |
4
README
4
README
@@ -1,4 +1,4 @@
|
||||
Webmin Version 1.810
|
||||
Webmin Version 1.830
|
||||
--------------------
|
||||
Webmin is a web-based interface for system administration for Unix.
|
||||
Using any browser that supports tables and forms, you can setup user
|
||||
@@ -49,6 +49,8 @@ commmand, the sc.exe command and the Win32::Daemon Perl module.
|
||||
|
||||
For more information, see http://www.webmin.com/
|
||||
|
||||
For documentation, see http://doxfer.webmin.com/
|
||||
|
||||
Jamie Cameron
|
||||
jcameron@webmin.com
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ push(@EXPORT, qw(&unique));
|
||||
push(@EXPORT, qw($config_directory $var_directory $remote_error_handler %month_to_number_map %number_to_month_map $webmin_feedback_address $default_lang $default_charset $module_index_name $module_index_link %in $in @in $progress_callback_prefix $progress_callback_url $wait_for_debug $wait_for_input @matches $theme_no_table $webmin_logfile $pragma_no_cache));
|
||||
|
||||
# Functions defined in themes
|
||||
push(@EXPORT, qw(&theme_post_save_domain &theme_post_save_domains &theme_post_save_server &theme_select_server &theme_select_domain &theme_post_save_folder &theme_post_change_modules &theme_address_button &theme_virtualmin_ui_rating_selector &theme_virtualmin_ui_show_cron_time &theme_virtualmin_ui_parse_cron_time &theme_virtualmin_ui_html_editor_bodytags &theme_virtualmin_ui_show_html_editor));
|
||||
push(@EXPORT, qw(&theme_post_save_domain &theme_post_save_domains &theme_post_save_server &theme_select_server &theme_select_domain &theme_post_save_folder &theme_post_change_modules &theme_address_button &theme_virtualmin_ui_rating_selector &theme_virtualmin_ui_show_cron_time &theme_virtualmin_ui_parse_cron_time &theme_virtualmin_ui_html_editor_bodytags &theme_virtualmin_ui_show_html_editor &theme_post_change_theme &theme_pre_change_theme));
|
||||
|
||||
$called_from_webmin_core = 1;
|
||||
do "web-lib.pl";
|
||||
|
||||
11
acl/lang/ca
11
acl/lang/ca
@@ -146,6 +146,7 @@ delete_err=No s'ha pogut suprimir l'usuari
|
||||
delete_eself=No et pots esborrar a tu mateix
|
||||
delete_ecannot=No tens permís per suprimir usuaris
|
||||
delete_euser=No tens permís per suprimir aquest usuari
|
||||
delete_eanonuser=Aquest usuari s'està utilitzant per a l'accés del mòdul anònim
|
||||
|
||||
cert_title=Petició de Certificat
|
||||
cert_issue=Emissió de Certificat
|
||||
@@ -337,12 +338,20 @@ unix_header=Par
|
||||
unix_utable=Usuaris Unix permesos
|
||||
|
||||
sessions_title=Sessions d'Entrada Actuals
|
||||
sessions_desc=Les sessions d'entrada actuals de Webmin es llisten a sota. Per cancel·lar una sessió existent i forçar l'usuari a tornar a entrar, fes clic sobre l'ID de la sessió.
|
||||
sessions_id=ID de sessió
|
||||
sessions_user=Usuari Webmin
|
||||
sessions_login=Ha entrat a
|
||||
sessions_host=Adreça IP
|
||||
sessions_lview=Visualitza els registres...
|
||||
sessions_actions=Accions...
|
||||
sessions_logouts=Mostra també les sessións desconnectades...
|
||||
sessions_state=Estat
|
||||
sessions_this=Aquesta entrada
|
||||
sessions_in=Connectat
|
||||
sessions_out=Desconnectat
|
||||
sessions_kill=Desconnecta...
|
||||
|
||||
logins_title=Entrades recents a Webmin
|
||||
|
||||
hide_title=Amaga els Mòduls No Utilitzats
|
||||
hide_desc=Els mòduls següents es trauran de la llista d'accés de mòduls de $1, ja que els seus corresponents servidors no estan instal·lats al sistema...
|
||||
|
||||
@@ -41,3 +41,4 @@ desc_ms_MY=Pengguna Webmin
|
||||
longdesc_de=Erstellt Webmin-Benutzer und konfiguriert, auf welche Module und Funktionen diese berechtigt sind, zugreifen.
|
||||
longdesc_es=Crear usuarios de webmin y configurar a que modulos y caracteristicas pueden acceder.
|
||||
longdesc_pl=Twórz u¿ytkowników Webmina i kontroluj, które modu³y i funkcje s± dla nich dostêpne.
|
||||
longdesc_ca=Crea usuaris Webmin i configura quins mòduls i característiques tenen permès d'accedir.
|
||||
|
||||
@@ -25,3 +25,4 @@ desc_no=ADSL klient
|
||||
longdesc_ms_MY=Sediakan klien PPP dengan pakej RP-PPPoE.
|
||||
desc_ms_MY=Klien ADSL
|
||||
longdesc_pl=Konfigurowanie klienta PPTP z pakietem RP-PPPoE.
|
||||
longdesc_ca=Configura un client PPP amb el paquet RP-PPPoE.
|
||||
|
||||
@@ -9,3 +9,4 @@ desc_hu=Shell hozz
|
||||
desc_ms_MY=Log masuk Teks
|
||||
longdesc_ms_MY=Akses shell pada sistem anda tanpa menggunakan klien SSH secara berasingan dengan menggunaka Ajaxterm
|
||||
longdesc_pl=Dostêp do pow³oki systemowej bez konieczno¶ci u¿ywania oddzielnego klienta SSH, u¿ywaj±c Ajaxterm
|
||||
longdesc_ca=Accedeix a la shell del sistema sense necessitat d'un client SSH separat utilitzant Ajaxterm
|
||||
|
||||
@@ -10,7 +10,7 @@ $access{'types'} eq '*' && $access{'virts'} eq '*' ||
|
||||
|
||||
$conf = &get_config();
|
||||
@files = grep { -f $_ } &unique(map { $_->{'file'} } @$conf);
|
||||
$in{'file'} = $files[0] if (!$in{'file'});
|
||||
$in{'file'} = $files[0] if ($in{'file'} eq '');
|
||||
print "<form action=allmanual_form.cgi>\n";
|
||||
print "<input type=submit value='$text{'manual_file'}'>\n";
|
||||
print "<select name=file>\n";
|
||||
|
||||
@@ -1393,7 +1393,7 @@ if ($httpd_modules{'core'} >= 1.301) {
|
||||
}
|
||||
}
|
||||
local $out = &backquote_command("$cmd 2>&1");
|
||||
if ($out && $out !~ /syntax\s+ok/i) {
|
||||
if ($out && $out !~ /(syntax|Checking).*\s+ok/i) {
|
||||
return $out;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ httpd_version=Versi
|
||||
apachectl_path=Camí de l'ordre apachectl,3,Cap
|
||||
start_cmd=Ordre per iniciar Apache,3,Utilitza apachectl o inicia manualment
|
||||
stop_cmd=Ordre per aturar Apache,3,Utilitza apachectl o mata el procés
|
||||
,restart-Executa les ordres d'inici i aturada.
|
||||
apply_cmd=Ordre per aplicar la configuració,10,-Utilitza apachectl o senyal HUP,restart-Executa els ordres d'inici i aturada
|
||||
graceful_cmd=Ordre per rellegir la configuració,3,La mateixa que per aplicar-la
|
||||
httpd_conf=Camí de httpd.conf o apache2.conf,3,Automàtic
|
||||
srm_conf=Camí de srm.conf,3,Automàtic
|
||||
|
||||
@@ -40,3 +40,4 @@ longdesc_ms_MY=Mengkonfigurasi hampir kesemua arahan Apache dan ciri-ciri yang a
|
||||
desc_ms_MY=Pelayan Web Apache
|
||||
longdesc_de=Konfiguriert fast alle Apache-Direktiven und Features.
|
||||
longdesc_pl=Konfiguracja niemal wszystkich opcji i dyrektyw Apache.
|
||||
longdesc_ca=Configura gairebé totes les directives característiques d'Apache.
|
||||
|
||||
@@ -31,3 +31,4 @@ desc_no=Tidsplanlagte kommandoer
|
||||
longdesc_ms_MY=Jadual pelaksanaan arahan one-off atau skrip.
|
||||
desc_ms_MY=Perintah Berjadual
|
||||
longdesc_pl=Harmonogram wykonywania poleceñ lub skryptów.
|
||||
longdesc_ca=Planifica l'execució d'una ordre o script.
|
||||
|
||||
@@ -29,3 +29,4 @@ desc_no=Sikkerhetskopier konfig.filer
|
||||
longdesc_ms_MY=Lakukan salinan secara manual atau berjadual dan mengembalikan fail konfigurasi yang diuruskan oleh modul Webmin.
|
||||
desc_ms_MY=Backup Fail konfigurasi
|
||||
longdesc_pl=Rêczne lub zaplanowane tworzenie i przywracanie kopii zapasowych plików konfiguracyjnych modu³ów zarz±dzanych przez Webmina.
|
||||
longdesc_ca=Porta a terme còpies de seguretat i restauracions manuals o planificades dels fitxers de configuració gestionats pels mòduls de Webmin.
|
||||
|
||||
@@ -948,9 +948,11 @@ foreach my $l (split(/\r?\n/, $status)) {
|
||||
elsif ($l =~ /^Running\s+Jobs/i) { $sect = 2; }
|
||||
elsif ($l =~ /^Terminated\s+Jobs/i) { $sect = 3; }
|
||||
|
||||
if ($sect == 1 && $l =~ /^\s*(\S+)\s+(\S+)\s+(\d+)\s+(\S+\s+\S+(\s+\d+:\d+)?)\s+(\S+)\s+(\S+)\s*$/) {
|
||||
if ($sect == 1 && $l =~ /^\s*(\S+)\s+(\S+)\s+(\d+)\s+(\S+\s+\S+(\s+\d+:\d+)?)\s+(\S+)\s+(\S+)?\s*$/) {
|
||||
# Scheduled job, like
|
||||
# Full Backup 10 27-Jun-14 17:30 ykfdc1-BackupJob wkly_1736
|
||||
# copy jobs do not have any destination tape (=> ? on the latest field)
|
||||
# Full Backup 11 19-Aug-16 17:50 ykfdc1-Copyjob
|
||||
push(@sched, { 'level' => &full_level("$1"),
|
||||
'type' => $2,
|
||||
'pri' => $3,
|
||||
|
||||
@@ -13,3 +13,4 @@ longdesc_ms_MY=Konfigurasi Bacula untuk melaksanakan salinan dan mengembalikan s
|
||||
longdesc_de=Konfiguriert Bacula um Sicherungen zu erstellen und manuell oder nach Plan wiederherzustellen, für eine oder viele Systeme.
|
||||
longdesc_pl=Skonfiguruj Bacula do przeprowadzania kopii zapasowej i przywracania rêcznie lub wed³ug harmonogramu na jednym lub wielu systemach.
|
||||
desc_no=Bacula backupsystem
|
||||
longdesc_ca=Configura Bacula per portar a terme còpies de seguretat i restauracions manualment o de forma planificada, per a un o més sistemes.
|
||||
|
||||
@@ -19,3 +19,4 @@ desc_no=Overvåking av båndbredde
|
||||
longdesc_ms_MY=Lihat laporan mengenai penggunaan jalur lebar oleh host, port, protokol dan masa pada sistem Linux.
|
||||
desc_ms_MY=Pemantauan jalur lebar
|
||||
longdesc_pl=Raporty na temat wykorzystania transferu przez host, port, protokó³ w okre¶lonym czasie.
|
||||
longdesc_ca=Visualitza els informes de l'ús d'amplada de banda per host, port, protocol i hores en un sistema Linux.
|
||||
|
||||
@@ -146,3 +146,5 @@ Added support for NSEC3PARAM records.
|
||||
Added support for editing DMARC records, which are specially encoded TXT records for defining the response to SPF and DKIM violations.
|
||||
---- Changes since 1.770 ----
|
||||
Automatic creation and deletion of reverse records in partial delegation zones now works the same as in full reverse zones.
|
||||
---- Changes since 1.810 ----
|
||||
Added support for editing TLSA (SSL Certificate) records.
|
||||
|
||||
@@ -49,10 +49,8 @@ if (open(my $VERSION, "<", "$module_config_directory/version")) {
|
||||
chop($bind_version = <$VERSION>);
|
||||
close($VERSION);
|
||||
}
|
||||
else {
|
||||
$bind_version = &get_bind_version();
|
||||
}
|
||||
if ($bind_version =~ /^(\d+\.\d+)\./) {
|
||||
$bind_version ||= &get_bind_version();
|
||||
if ($bind_version && $bind_version =~ /^(\d+\.\d+)\./) {
|
||||
# Convery to properly formatted number
|
||||
$bind_version = $1;
|
||||
}
|
||||
@@ -92,9 +90,11 @@ sub have_dnssec_tools_support
|
||||
# Returns the BIND verison number, or undef if unknown
|
||||
sub get_bind_version
|
||||
{
|
||||
my $out = &backquote_command("$config{'named_path'} -v 2>&1");
|
||||
if ($out =~ /(bind|named)\s+([0-9\.]+)/i) {
|
||||
return $2;
|
||||
if (&has_command($config{'named_path'})) {
|
||||
my $out = &backquote_command("$config{'named_path'} -v 2>&1");
|
||||
if ($out =~ /(bind|named)\s+([0-9\.]+)/i) {
|
||||
return $2;
|
||||
}
|
||||
}
|
||||
return undef;
|
||||
}
|
||||
@@ -577,7 +577,7 @@ sub addr_match_input
|
||||
{
|
||||
my @av;
|
||||
my $v = &find($_[1], $_[2]);
|
||||
if ($v) {
|
||||
if ($v && $v->{'members'}) {
|
||||
foreach my $av (@{$v->{'members'}}) {
|
||||
push(@av, join(" ", $av->{'name'}, @{$av->{'values'}}));
|
||||
}
|
||||
@@ -614,10 +614,12 @@ sub address_port_input
|
||||
my $v = &find($_[4], $_[6]);
|
||||
|
||||
my $port;
|
||||
for (my $i = 0; $i < @{$v->{'values'}}; $i++) {
|
||||
if ($v->{'values'}->[$i] eq $_[5]) {
|
||||
$port = $v->{'values'}->[$i+1];
|
||||
last;
|
||||
if ($v && $v->{'values'}) {
|
||||
for (my $i = 0; $i < @{$v->{'values'}}; $i++) {
|
||||
if ($v->{'values'}->[$i] eq $_[5]) {
|
||||
$port = $v->{'values'}->[$i+1];
|
||||
last;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -634,8 +636,10 @@ sub address_input
|
||||
{
|
||||
my ($v, @av);
|
||||
$v = &find($_[1], $_[2]);
|
||||
foreach my $av (@{$v->{'members'}}) {
|
||||
push(@av, join(" ", $av->{'name'}, @{$av->{'values'}}));
|
||||
if ($v && $v->{'members'}) {
|
||||
foreach my $av (@{$v->{'members'}}) {
|
||||
push(@av, join(" ", $av->{'name'}, @{$av->{'values'}}));
|
||||
}
|
||||
}
|
||||
if ($_[3] == 0) {
|
||||
# text area
|
||||
@@ -687,13 +691,15 @@ sub forwarders_input
|
||||
{
|
||||
my $v = &find($_[1], $_[2]);
|
||||
my (@ips, @prs);
|
||||
foreach my $av (@{$v->{'members'}}) {
|
||||
push(@ips, $av->{'name'});
|
||||
if ($av->{'values'}->[0] eq 'port') {
|
||||
push(@prs, $av->{'values'}->[1]);
|
||||
}
|
||||
else {
|
||||
push(@prs, undef);
|
||||
if ($v && $v->{'members'}) {
|
||||
foreach my $av (@{$v->{'members'}}) {
|
||||
push(@ips, $av->{'name'});
|
||||
if ($av->{'values'}->[0] eq 'port') {
|
||||
push(@prs, $av->{'values'}->[1]);
|
||||
}
|
||||
else {
|
||||
push(@prs, undef);
|
||||
}
|
||||
}
|
||||
}
|
||||
my @table;
|
||||
@@ -906,7 +912,8 @@ if ($_[0]->{'members'}) {
|
||||
else {
|
||||
# A cached zone object
|
||||
$zn = $_[0]->{'name'};
|
||||
$vn = $_[0]->{'view'} eq '*' ? undef : $_[0]->{'view'};
|
||||
$vn = !defined($_[0]->{'view'}) ||
|
||||
$_[0]->{'view'} eq '*' ? undef : $_[0]->{'view'};
|
||||
$file = $_[0]->{'file'};
|
||||
}
|
||||
|
||||
@@ -996,7 +1003,7 @@ elsif ($type eq "NS") {
|
||||
print &ui_table_row($text{'edit_zonename'},
|
||||
&ui_textbox("name", $rec{'name'}, 30));
|
||||
}
|
||||
elsif ($type eq "SRV") {
|
||||
elsif ($type eq "SRV" || $type eq "TLSA") {
|
||||
my ($serv, $proto, $name) =
|
||||
$rec{'name'} =~ /^([^\.]+)\.([^\.]+)\.(\S+)/ ? ($1, $2, $3) :
|
||||
(undef, undef, undef);
|
||||
@@ -1006,7 +1013,7 @@ elsif ($type eq "SRV") {
|
||||
&ui_textbox("name", $name, 30));
|
||||
|
||||
print &ui_table_row($text{'edit_proto'},
|
||||
&ui_select("proto", $proto,
|
||||
&ui_select("proto", $proto || "tcp",
|
||||
[ [ "tcp", "TCP" ],
|
||||
[ "udp", "UDP" ],
|
||||
[ "tls", "TLS" ] ], undef, undef, 1));
|
||||
@@ -1119,6 +1126,28 @@ elsif ($type eq "SRV") {
|
||||
print &ui_table_row($text{'value_SRV4'},
|
||||
&ui_textbox("value3", $v[3], 30));
|
||||
}
|
||||
elsif ($type eq "TLSA") {
|
||||
print &ui_table_row($text{'value_TLSA1'},
|
||||
&ui_select("value0", $v[0],
|
||||
[ [ 0, $text{'tlsa_usage0'}." (0)" ],
|
||||
[ 1, $text{'tlsa_usage1'}." (1)" ],
|
||||
[ 2, $text{'tlsa_usage2'}." (2)" ],
|
||||
[ 3, $text{'tlsa_usage3'}." (3)" ] ]));
|
||||
|
||||
print &ui_table_row($text{'value_TLSA2'},
|
||||
&ui_select("value1", $v[1],
|
||||
[ [ 0, $text{'tlsa_selector0'}." (0)" ],
|
||||
[ 1, $text{'tlsa_selector1'}." (1)" ] ]));
|
||||
|
||||
print &ui_table_row($text{'value_TLSA3'},
|
||||
&ui_select("value2", $v[2],
|
||||
[ [ 0, $text{'tlsa_match0'}." (0)" ],
|
||||
[ 1, $text{'tlsa_match1'}." (1)" ],
|
||||
[ 2, $text{'tlsa_match2'}." (2)" ] ]));
|
||||
|
||||
print &ui_table_row($text{'value_TLSA4'},
|
||||
&ui_textbox("value3", $v[3], 70));
|
||||
}
|
||||
elsif ($type eq "LOC") {
|
||||
print &ui_table_row($text{'value_LOC1'},
|
||||
&ui_textbox("value0", join(" ", @v), 40), 3);
|
||||
@@ -1151,23 +1180,23 @@ elsif ($type eq "SPF") {
|
||||
&ui_yesno_radio("spfptr", $spf->{'ptr'} ? 1 : 0), 3);
|
||||
|
||||
print &ui_table_row($text{'value_spfas'},
|
||||
&ui_textarea("spfas", join("\n", @{$spf->{'a:'}}), 3, 40), 3);
|
||||
&ui_textarea("spfas", join("\n", @{$spf->{'a:'} || []}), 3, 40), 3);
|
||||
|
||||
print &ui_table_row($text{'value_spfmxs'},
|
||||
&ui_textarea("spfmxs", join("\n", @{$spf->{'mx:'}}), 3, 40), 3);
|
||||
&ui_textarea("spfmxs", join("\n", @{$spf->{'mx:'} || []}), 3, 40), 3);
|
||||
|
||||
print &ui_table_row($text{'value_spfip4s'},
|
||||
&ui_textarea("spfip4s", join("\n", @{$spf->{'ip4:'}}),
|
||||
&ui_textarea("spfip4s", join("\n", @{$spf->{'ip4:'} || []}),
|
||||
3, 40), 3);
|
||||
|
||||
if (&supports_ipv6()) {
|
||||
print &ui_table_row($text{'value_spfip6s'},
|
||||
&ui_textarea("spfip6s", join("\n", @{$spf->{'ip6:'}}),
|
||||
&ui_textarea("spfip6s", join("\n", @{$spf->{'ip6:'} || []}),
|
||||
3, 40), 3);
|
||||
}
|
||||
|
||||
print &ui_table_row($text{'value_spfincludes'},
|
||||
&ui_textarea("spfincludes", join("\n", @{$spf->{'include:'}}),
|
||||
&ui_textarea("spfincludes", join("\n", @{$spf->{'include:'} || []}),
|
||||
3, 40), 3);
|
||||
|
||||
print &ui_table_row($text{'value_spfall'},
|
||||
@@ -1434,7 +1463,7 @@ if ($config{'file_perms'}) {
|
||||
}
|
||||
|
||||
my @cat_list;
|
||||
if ($bind_version >= 9) {
|
||||
if ($bind_version && $bind_version >= 9) {
|
||||
@cat_list = ( 'default', 'general', 'database', 'security', 'config',
|
||||
'resolver', 'xfer-in', 'xfer-out', 'notify', 'client',
|
||||
'unmatched', 'network', 'update', 'queries', 'dispatch',
|
||||
@@ -1567,6 +1596,7 @@ sub make_chroot
|
||||
{
|
||||
my $chroot = &get_chroot();
|
||||
return $_[0] if (!$chroot);
|
||||
return $_[0] if ($chroot eq "/");
|
||||
return $_[0] if ($_[0] eq $config{'named_conf'} && $config{'no_chroot'});
|
||||
return $_[0] if ($_[0] eq $config{'rndc_conf'}); # don't chroot rndc.conf
|
||||
if ($config{'no_pid_chroot'} && $_[1]) {
|
||||
@@ -2043,7 +2073,7 @@ return 0;
|
||||
# an error message on failure.
|
||||
sub restart_bind
|
||||
{
|
||||
if ($config{'restart_cmd'} eq 'restart') {
|
||||
if ($config{'restart_cmd'} && $config{'restart_cmd'} eq 'restart') {
|
||||
# Stop and start again
|
||||
&stop_bind();
|
||||
sleep(1); # Systemd doesn't like rapid stops and starts
|
||||
@@ -2667,7 +2697,13 @@ return $base."/".$format;
|
||||
sub create_on_slaves
|
||||
{
|
||||
my ($zone, $master, $file, $hosts, $localview, $moreslaves) = @_;
|
||||
my %on = map { $_, 1 } @$hosts;
|
||||
my %on;
|
||||
if ($hosts && !ref($hosts)) {
|
||||
$hosts = [ split(/\s+/, $hosts) ];
|
||||
}
|
||||
if ($hosts) {
|
||||
%on = map { $_, 1 } @$hosts;
|
||||
}
|
||||
&remote_error_setup(\&slave_error_handler);
|
||||
my @slaveerrs;
|
||||
my @slaves = &list_slave_servers();
|
||||
@@ -2863,7 +2899,7 @@ $slave_error = $_[0];
|
||||
|
||||
sub get_forward_record_types
|
||||
{
|
||||
return ("A", "NS", "CNAME", "MX", "HINFO", "TXT", "SPF", "DMARC", "WKS", "RP", "PTR", "LOC", "SRV", "KEY", "NSEC3PARAM", $config{'support_aaaa'} ? ( "AAAA" ) : ( ), @extra_forward);
|
||||
return ("A", "NS", "CNAME", "MX", "HINFO", "TXT", "SPF", "DMARC", "WKS", "RP", "PTR", "LOC", "SRV", "KEY", "TLSA", "NSEC3PARAM", $config{'support_aaaa'} ? ( "AAAA" ) : ( ), @extra_forward);
|
||||
}
|
||||
|
||||
sub get_reverse_record_types
|
||||
@@ -3078,8 +3114,10 @@ return &has_command($config{'signzone'}) &&
|
||||
# dnssec-validation directive is not supported, 0 otherwise
|
||||
sub supports_dnssec_client
|
||||
{
|
||||
return $bind_version >= 9.4 ? 2 :
|
||||
$bind_version >= 9 ? 1 : 0;
|
||||
my ($bind_major, $bind_minor) = split(/\./, $bind_version);
|
||||
|
||||
return $bind_major > 9 ? 2 :
|
||||
$bind_major == 9 ? ($bind_minor >= 4 ? 2 : 1) : 0;
|
||||
}
|
||||
|
||||
# dnssec_size_range(algorithm)
|
||||
@@ -3292,7 +3330,7 @@ my $dom = $z->{'members'} ? $z->{'values'}->[0] : $z->{'name'};
|
||||
my @keys = &get_dnssec_key($z);
|
||||
foreach my $key (@keys) {
|
||||
foreach my $f ('publicfile', 'privatefile') {
|
||||
&unlink_file($key->{$f}) if ($key->{$f});
|
||||
&unlink_file($key->{$f}) if (ref($key) && $key->{$f});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3430,7 +3468,7 @@ if ($keyrec) {
|
||||
}
|
||||
|
||||
# get_dnssec_key(&zone|&zone-name)
|
||||
# Returns a list of hash containing details of a zone's keys, or an error
|
||||
# Returns a list of hashes containing details of a zone's keys, or an error
|
||||
# message. The KSK is always returned first.
|
||||
sub get_dnssec_key
|
||||
{
|
||||
@@ -3460,6 +3498,7 @@ foreach my $f (readdir(ZONEDIR)) {
|
||||
$rv->{'public'} = $pub->{'values'}->[3];
|
||||
$rv->{'values'} = $pub->{'values'};
|
||||
$rv->{'publictext'} = &read_file_contents("$dir/$f");
|
||||
while($rv->{'publictext'} =~ s/^;.*\r?\n//) { }
|
||||
}
|
||||
elsif ($f =~ /^K\Q$dom\E\.\+(\d+)\+(\d+)\.private$/) {
|
||||
# Found the private key file
|
||||
@@ -3477,6 +3516,7 @@ foreach my $f (readdir(ZONEDIR)) {
|
||||
}
|
||||
$rv->{'algorithm'} =~ s/^\d+\s+\((\S+)\)$/$1/;
|
||||
$rv->{'privatetext'} = join("\n", @$lref)."\n";
|
||||
while($rv->{'privatetext'} =~ s/^;.*\r?\n//) { }
|
||||
}
|
||||
}
|
||||
closedir(ZONEDIR);
|
||||
|
||||
@@ -67,7 +67,7 @@ print &ui_table_row($text{'trusted_dlvs'},
|
||||
# Trusted keys
|
||||
my @ktable = ( );
|
||||
$i = 0;
|
||||
foreach my $k (@{$tkeys->{'members'}}, { }) {
|
||||
foreach my $k (@{$tkeys->{'members'}}, { 'values' => [ ] }) {
|
||||
my @v = @{$k->{'values'}};
|
||||
my @wrapped = ( );
|
||||
while(length($v[3]) > 30) {
|
||||
|
||||
@@ -124,7 +124,7 @@ print &ui_table_start($text{'zonedef_msg2'}, "width=100%", 4);
|
||||
|
||||
print &addr_match_input($text{'zonedef_transfer'}, "allow-transfer", $mems);
|
||||
print &addr_match_input($text{'zonedef_query'}, "allow-query", $mems);
|
||||
print &addr_match_input($text{'master_notify2'}, "allow-notify", $mems);
|
||||
print &addr_match_input($text{'master_notify2'}, "also-notify", $mems);
|
||||
|
||||
print &ignore_warn_fail($text{'zonedef_cmaster'}, 'master', $check{'master'});
|
||||
print &ignore_warn_fail($text{'zonedef_cslave'}, 'slave', $check{'slave'});
|
||||
|
||||
@@ -13,7 +13,7 @@ require './bind8-lib.pl';
|
||||
|
||||
my $zone = &get_zone_name_or_error($in{'zone'}, $in{'view'});
|
||||
my ($zconf, $conf, $parent) = &zone_to_config($zone);
|
||||
&can_edit_zone($zconf) ||
|
||||
&can_edit_zone($zone) ||
|
||||
&error($text{'master_edelete'});
|
||||
|
||||
$access{'ro'} && &error($text{'master_ero'});
|
||||
|
||||
@@ -146,7 +146,7 @@ if (!$access{'ro'} && $type eq 'master') {
|
||||
push(@hcols, &ui_link("edit_recs.cgi?zone=$in{'zone'}&view=$in{'view'}&type=$in{'type'}&sort=1", ($in{'type'} eq "PTR" ? $text{'recs_addr'} : $text{'recs_name'}) ) );
|
||||
push(@hcols, &ui_link("edit_recs.cgi?zone=$in{'zone'}&view=$in{'view'}&type=$in{'type'}&sort=5", $text{'recs_type'}) ) if ($in{'type'} eq "ALL");
|
||||
push(@hcols, $text{'recs_ttl'});
|
||||
my @hmap = @{$hmap{$in{'type'}}};
|
||||
my @hmap = $hmap{$in{'type'}} ? @{$hmap{$in{'type'}}} : ( );
|
||||
foreach my $h (@hmap) {
|
||||
push(@hcols, &ui_link("edit_recs.cgi?zone=$in{'zone'}&view=$in{'view'}&type=$in{'type'}&sort=2",$h) );
|
||||
}
|
||||
@@ -207,6 +207,20 @@ for(my $i=0; $i<@_; $i++) {
|
||||
}
|
||||
else {
|
||||
$v = $r->{'values'}->[$j];
|
||||
if ($in{'type'} eq "TLSA") {
|
||||
# Display TLSA codes nicely
|
||||
if ($j == 0) {
|
||||
$v = $text{'tlsa_usage'.$v};
|
||||
}
|
||||
elsif ($j == 1) {
|
||||
$v = $text{'tlsa_selector'.$v};
|
||||
}
|
||||
elsif ($j == 2) {
|
||||
$v = $text{'tlsa_match'.$v};
|
||||
}
|
||||
$v = $v ? $v." (".$r->{'values'}->[$j].")"
|
||||
: $r->{'values'}->[$j];
|
||||
}
|
||||
}
|
||||
if (length($v) > 80) {
|
||||
$v = substr($v, 0, 80)." ...";
|
||||
|
||||
@@ -28,7 +28,7 @@ if ($zone->{'file'}) {
|
||||
undef, undef, $lasttrans);
|
||||
|
||||
my (@rcodes, @rtitles, @rlinks, @ricons, %rnum, $done_recs);
|
||||
if ($zone->{'file'}) {
|
||||
if ($zone->{'file'} && -r $zone->{'file'}) {
|
||||
print "<p>\n";
|
||||
my @recs = &read_zone_file($zone->{'file'}, $dom);
|
||||
if ($dom =~ /in-addr\.arpa/i || $dom =~ /\.$ipv6revzone/i) {
|
||||
|
||||
@@ -44,6 +44,10 @@ if (my $out = &check_bind_8()) {
|
||||
|
||||
# Try to get the version number, and save for later calls
|
||||
my $bind_version = &get_bind_version();
|
||||
if ($bind_version && $bind_version =~ /^(\d+\.\d+)\./) {
|
||||
# Convery to properly formatted number
|
||||
$bind_version = $1;
|
||||
}
|
||||
my $VERSION;
|
||||
&open_tempfile($VERSION, ">$module_config_directory/version");
|
||||
&print_tempfile($VERSION, "$bind_version\n");
|
||||
@@ -345,6 +349,8 @@ elsif (@zones) {
|
||||
next if (!@zv);
|
||||
print "<b>",&text('index_inview',
|
||||
"<tt>$vw->{'name'}</tt>"),"</b><br>\n";
|
||||
my (@zlinks, @ztitles, @zsort, @zicons, @ztypes, @zdels);
|
||||
my $len = 0;
|
||||
foreach my $z (@zv) {
|
||||
my $v = $z->{'name'};
|
||||
my $t = $z->{'type'};
|
||||
@@ -452,7 +458,8 @@ if ($access{'views'} && $bind_version >= 9) {
|
||||
print &ui_subheading($text{'index_views'});
|
||||
|
||||
# Show a warning if any zones are not in a view
|
||||
my @notinview = grep { $_->{'viewindex'} eq '' } @zones;
|
||||
my @notinview = grep { !defined($_->{'viewindex'}) ||
|
||||
$_->{'viewindex'} eq '' } @zones;
|
||||
if (@notinview && @views) {
|
||||
print "<b>",&text('index_viewwarn',
|
||||
join(" , ", map { "<tt>".&ip6int_to_net(
|
||||
|
||||
@@ -286,6 +286,7 @@ edit_rusure=Segur que vols suprimir el registre $1 del domini $2, i possiblement
|
||||
edit_dok=Sí, Suprimeix-lo
|
||||
edit_eptr='$1' no és un nom de host de registre d'adreça inversa vàlid
|
||||
edit_espfa='$1' no és un host destinació vàlid
|
||||
edit_espfa2='$1' ha de ser un nom de host, no una adreça IP
|
||||
edit_espfmx='$1' no és un nom de domini destinació vàlid
|
||||
edit_espfmxmax=No tens permís per tenir més de 10 dominis des dels quals enviar MX
|
||||
edit_espfip='$1' no és una adreça IP o IP/prefix destinació vàlida
|
||||
@@ -1097,6 +1098,7 @@ dnssec_header=Opcions de re-signatura de la clau
|
||||
dnssec_enabled=Activació automàtica de la re-signatura de la clau
|
||||
dnssec_period=Període entre re-signatures
|
||||
dnssec_days=dies
|
||||
dnssec_secs=segons
|
||||
dnssec_desc=Les zones signades amb DNSSEC tenen típicament dues claus - una clau de zona que s'ha de regenerar i signar regularment, i una clau de signatura que roman constant. Aquesta pàgina permet configurar Webmin per dur a terme aquesta re-signatura automàticament.
|
||||
dnssec_err=No s'ha pogut desar la re-signatura de la clau DNSSEC
|
||||
dnssec_eperiod=Hi falta el nombre de dies entre re-signatures o bé és invàlid
|
||||
|
||||
@@ -271,6 +271,10 @@ edit_eloc=Missing latitude and longitude
|
||||
edit_eweight='$1' is not a valid service weight
|
||||
edit_eport='$1' is not a valid port number
|
||||
edit_etarget='$1' is not a valid server name or address
|
||||
edit_eusage='$1' is not a valid TLSA usage number
|
||||
edit_eselector='$1' is not a valid TLSA selector number
|
||||
edit_ematch='$1' is not a valid TLSA match number
|
||||
edit_etlsa=Invalid TLSA encoded certificate - must contain only 2-digit hex bytes
|
||||
edit_return=records
|
||||
edit_ecname1=You cannot create a name alias record with the same name as an existing record.
|
||||
edit_ecname2=You cannot create a record with the same name as an existing name alias record.
|
||||
@@ -378,6 +382,7 @@ type_HINFO=Host Information
|
||||
type_NSEC3PARAM=DNSSEC Parameters
|
||||
type_TXT=Text
|
||||
type_SPF=Sender Permitted From
|
||||
type_TLSA=SSL Certificate
|
||||
type_DMARC=DMARC
|
||||
type_WKS=Well Known Service
|
||||
type_RP=Responsible Person
|
||||
@@ -444,6 +449,10 @@ value_SRV1=Priority
|
||||
value_SRV2=Weight
|
||||
value_SRV3=Port
|
||||
value_SRV4=Server
|
||||
value_TLSA1=Certificate usage
|
||||
value_TLSA2=Certificate selector
|
||||
value_TLSA3=Certificate match
|
||||
value_TLSA4=Certificate data
|
||||
value_KEY1=Flags
|
||||
value_KEY2=Protocol
|
||||
value_KEY3=Algorithm
|
||||
@@ -489,6 +498,16 @@ value_dmarcaspf=Require strict SPF alignment
|
||||
value_dmarcadkim=Require strict DKIM alignment
|
||||
value_dmarcnor=Don't send
|
||||
|
||||
tlsa_usage0=Certificate authority
|
||||
tlsa_usage1=End entity
|
||||
tlsa_usage2=Trust anchor
|
||||
tlsa_usage3=Domain issued
|
||||
tlsa_selector0=Full certificate
|
||||
tlsa_selector1=Public key info
|
||||
tlsa_match0=Unhashed contents
|
||||
tlsa_match1=SHA-256 hashed
|
||||
tlsa_match2=SHA-512 hashed
|
||||
|
||||
warn=Warn
|
||||
fail=Fail
|
||||
ignore=Ignore
|
||||
|
||||
@@ -20,15 +20,15 @@ if ($type eq 'record') {
|
||||
$p->{'newvalues'}) {
|
||||
return &text("log_${action}_record_v",
|
||||
$text{"type_$p->{'type'}"},
|
||||
"<tt>$p->{'name'}</tt>",
|
||||
"<tt>$object</tt>",
|
||||
"<tt>$p->{'newvalues'}</tt>");
|
||||
"<tt>".&html_escape($p->{'name'})."</tt>",
|
||||
"<tt>".&html_escape($object)."</tt>",
|
||||
"<tt>".&html_escape($p->{'newvalues'})."</tt>");
|
||||
}
|
||||
else {
|
||||
return &text("log_${action}_record",
|
||||
$text{"type_$p->{'type'}"},
|
||||
"<tt>$p->{'name'}</tt>",
|
||||
"<tt>$object</tt>");
|
||||
"<tt>".&html_escape($p->{'name'})."</tt>",
|
||||
"<tt>".&html_escape($object)."</tt>");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,7 +38,7 @@ foreach my $d (split(/\0/, $in{'d'})) {
|
||||
else {
|
||||
$zconf = $conf->[$zone->{'index'}];
|
||||
}
|
||||
&can_edit_zone($zconf, $view) ||
|
||||
&can_edit_zone($zone) ||
|
||||
&error($text{'master_edelete'});
|
||||
push(@zones, [ $zconf, $view ]);
|
||||
push(@znames, $zconf->{'value'});
|
||||
|
||||
@@ -70,7 +70,7 @@ foreach my $zi (@zones) {
|
||||
my @recs = &read_zone_file($zi->{'file'}, $zi->{'name'});
|
||||
my $realfile = &make_chroot(&absolute_path($zi->{'file'}));
|
||||
foreach my $r (@recs) {
|
||||
my $v = join(" ", @{$r->{'values'}});
|
||||
my $v = join(" ", @{$r->{'values'} || []});
|
||||
if ($r->{'type'} eq $in{'type'} &&
|
||||
($v eq $in{'old'} || $in{'old_def'})) {
|
||||
# Found a regular record to fix
|
||||
|
||||
@@ -38,3 +38,4 @@ longdesc_ms_MY=Membuat dan mengubah domain, rekod DNS, 'options' dan 'views' pad
|
||||
desc_ms_MY=Pelayan DNS BIND
|
||||
longdesc_de=Erstellt und bearbeitet Domains, DNS-Einträge, BIND-Optionen und Ansichten.
|
||||
longdesc_pl=Twórz i edytuj domeny, rekordy DNS, opcje BIND i widoki.
|
||||
longdesc_ca=Crea i edita dominis, registres DNS records, opcions BIND i vistes.
|
||||
|
||||
@@ -29,7 +29,7 @@ if (&is_raw_format_records($rootfile)) {
|
||||
&has_command("named-compilezone") ||
|
||||
&error("Zone file $rootfile is in raw format, but the ".
|
||||
"named-compilezone command is not installed");
|
||||
&open_execute_command($FILE, "named-compilezone -f raw -F text -o - $origin $rootfile", 1, 1);
|
||||
open($FILE, "named-compilezone -f raw -F text -o - $origin $rootfile |");
|
||||
}
|
||||
else {
|
||||
# Can read text format records directly
|
||||
@@ -827,7 +827,7 @@ if ($dmarc->{'other'}) {
|
||||
push(@rv, @{$dmarc->{'other'}});
|
||||
}
|
||||
my @rvwords;
|
||||
my $rvword;
|
||||
my $rvword = "";
|
||||
while(@rv) {
|
||||
my $w = shift(@rv);
|
||||
if (length($rvword)+length($w)+1 >= 255) {
|
||||
@@ -969,7 +969,8 @@ sub record_id
|
||||
{
|
||||
my ($r) = @_;
|
||||
return $r->{'name'}."/".$r->{'type'}.
|
||||
(uc($r->{'type'}) eq 'SOA' ? '' : '/'.join('/', @{$r->{'values'}}));
|
||||
(uc($r->{'type'}) eq 'SOA' || !$r->{'values'} ? '' :
|
||||
'/'.join('/', @{$r->{'values'}}));
|
||||
}
|
||||
|
||||
# find_record_by_id(&recs, id, index)
|
||||
@@ -1018,7 +1019,7 @@ sub get_dnskey_rrset
|
||||
sub is_raw_format_records
|
||||
{
|
||||
my ($file) = @_;
|
||||
open(my $RAW, "<", $file);
|
||||
open(my $RAW, "<", $file) || return 0;
|
||||
my $buf;
|
||||
read($RAW, $buf, 3);
|
||||
close($RAW);
|
||||
|
||||
@@ -13,7 +13,7 @@ my $dom;
|
||||
my $err;
|
||||
|
||||
my $debug;
|
||||
if ($ARGV[0] eq "--debug") {
|
||||
if (@ARGV && $ARGV[0] eq "--debug") {
|
||||
$debug = 1;
|
||||
}
|
||||
my $period = $config{'dnssec_period'} || 21;
|
||||
|
||||
@@ -281,6 +281,21 @@ else {
|
||||
&valname($in{'value3'}) ||
|
||||
&error(&text('edit_etarget', $in{'value3'}));
|
||||
}
|
||||
elsif ($in{'type'} eq 'TLSA') {
|
||||
$in{'serv'} =~ /^[A-Za-z0-9\-\_]+$/ ||
|
||||
&error(&text('edit_eserv2', $in{'serv'}));
|
||||
$in{'name'} = join(".", "_".$in{'serv'}, "_".$in{'proto'},
|
||||
$in{'name'} ? ( $in{'name'} ) : ( ));
|
||||
$in{'value0'} =~ /^\d+$/ ||
|
||||
&error(text('edit_eusage', $in{'value0'}));
|
||||
$in{'value1'} =~ /^\d+$/ ||
|
||||
&error(text('edit_eselector', $in{'value1'}));
|
||||
$in{'value2'} =~ /^\d+$/ ||
|
||||
&error(text('edit_ematch', $in{'value2'}));
|
||||
$in{'value3'} =~ /^[a-f0-9]+$/ &&
|
||||
length($in{'value3'}) % 2 == 0 ||
|
||||
&error(&text('edit_etlsa', $in{'value3'}));
|
||||
}
|
||||
elsif ($in{'type'} eq 'KEY') {
|
||||
$in{'value0'} =~ /^(\d+|0x[0-9a-f]+={0,2})$/i ||
|
||||
&error(text('edit_eflags', $in{'value0'}));
|
||||
|
||||
@@ -155,7 +155,7 @@ foreach my $s (@add) {
|
||||
push(@{$n->{'members'}}, { 'name' => $sip });
|
||||
&lock_file($z->{'file'});
|
||||
&save_directive($z, $d, [ $n ], 1);
|
||||
&flush_file_lines($z->{'file'});
|
||||
&flush_file_lines();
|
||||
$dchanged++;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,3 +27,4 @@ desc_pl.UTF-8=Udostępnianie po NFS
|
||||
desc_hu.UTF-8=NFS exprotálás
|
||||
desc_nl=NFS Exports
|
||||
longdesc_de=Bearbeitet Datei-Freigaben aus der FreeBSD-Datei /etc/exports.
|
||||
longdesc_ca=Edita les unitats compartides del fitxer /etc/exports de FreeBSD.
|
||||
|
||||
299
bsdfdisk/lang/de
299
bsdfdisk/lang/de
@@ -1,161 +1,160 @@
|
||||
disk_add=Füge ein neues Slice hinzu.
|
||||
disk_blocks=<b>Blöcke:</b> $1
|
||||
disk_cylinders=<b>Zylinder:</b> $1
|
||||
disk_device=<b>Geräte-Datei:</b> $1
|
||||
disk_dsize=<b>Festplattengröße:</b> $1
|
||||
disk_egone=Festplatte existiert nicht länger!
|
||||
disk_end=Endblock
|
||||
disk_extent=Extent
|
||||
disk_free=Freier Speicher
|
||||
disk_iscsi=iSCSI geteiltes Gerät $1
|
||||
disk_model=<b>Marke und Modell:</b> $1
|
||||
disk_no=Slice
|
||||
disk_none=Dieses Laufwerk hat bisher keine Slices.
|
||||
disk_parts=Partitionen
|
||||
disk_return=Festplattendetails und Liste an Slices
|
||||
disk_scount=$1 Partitionen
|
||||
disk_size=Größe
|
||||
disk_smart=Zeige SMART Status
|
||||
disk_smartdesc=Zeigt den aktuellen Status dieses Laufwerk wie von SMART erkannt, und überprüft auf Festplattenfehler.
|
||||
disk_start=Startblock
|
||||
disk_table=<b>Partitionsformat:</b> $1
|
||||
disk_title=Editiere Festplatte
|
||||
disk_type=Typ
|
||||
disk_use=Benutzt von
|
||||
disk_vm=Virtueller Speicher
|
||||
dpart_confirm=Lösche Jetzt
|
||||
dpart_deleting=Lösche Partition $1 ..
|
||||
dpart_done=.. fertig
|
||||
dpart_failed=.. Löschen fehlgeschlagen : $1
|
||||
dpart_rusure=Sind Sie sicher, dass Sie die Partition $1 löschen möchten? Alle Dateisysteme in ihr werden ebenfalls gelöscht.
|
||||
dpart_title=Lösche Partition
|
||||
dpart_warn=Warnung - diese Partition ist aktuell in Benutzung von $1
|
||||
dslice_confirm=Jetzt löschen
|
||||
dslice_deleting=Lösche Slice $1 ..
|
||||
dslice_done=.. fertig
|
||||
dslice_failed=.. löschen fehlgeschlagen : $1
|
||||
dslice_rusure=Sind Sie sicher, dass Sie den Slice $1 löschen möchten? Alle Partitionen und Dateisysteme in ihm werden ebenfalls gelöscht.
|
||||
dslice_title=Lösche Slice
|
||||
dslice_warn=Warnung - Dieses Slice ist derzeit in Verwendung : $1
|
||||
fsck_checking=Prüfe Dateisystem auf $1 ..
|
||||
fsck_done=.. Prüfung abgeschlossen ohne Fehler zu finden
|
||||
fsck_err=Fehlgeschlagen Dateisystem zu prüfen
|
||||
fsck_failed=.. Prüfung fehlgeschlagen!
|
||||
fsck_title=Prüfe Dateisystem
|
||||
index_dmodel=Marke und Modell
|
||||
index_dname=Festplattenname
|
||||
index_dparts=Slices
|
||||
index_dsize=Gesamtgröße
|
||||
index_ecmd=Der erforderliche Befehl $1 fehlt
|
||||
index_none=Keine Festplatten wurden auf diesem System gefunden!
|
||||
index_problem=Dieses Modul kann nicht verwendet werden : $1
|
||||
index_return=Liste an Festplatten
|
||||
index_title=Partitionen auf lokalen Festplatten
|
||||
log_create_part=Partition $1 erstellt
|
||||
log_create_slice=Slice $1 erstellt
|
||||
log_delete_part=Partition $1 gelöscht
|
||||
log_delete_slice=Slice $1 gelöscht
|
||||
log_fsck_part=Dateisystem auf der Partition $1 überprüft
|
||||
log_modify_part=Partition $1 modifiziert
|
||||
log_modify_slice=Slice $1 modifiziert
|
||||
log_newfs_part=Dateisystem auf Partition $1 erstellt
|
||||
newfs_create=Erstelle jetzt
|
||||
newfs_creating=Erstelle Dateisystem auf $1 ..
|
||||
newfs_deffree=Standard (8%)
|
||||
newfs_done=.. erstellen erfolgreich
|
||||
newfs_efree=Speicherplatz zum Reservieren für root muss Prozent sein
|
||||
newfs_elabel=Fehlendes oder ungültiges Label
|
||||
newfs_err=Fehlgeschlagen Dateisystem zu erstellen
|
||||
newfs_failed=.. erstellen fehlgeschlagen!
|
||||
newfs_free=Speicherplatz zum Reservieren für root
|
||||
newfs_header=Neues Dateisystem Details
|
||||
newfs_label=Dateisystem Label
|
||||
newfs_none=Keines
|
||||
newfs_title=Erstelle Dateisystem
|
||||
newfs_trim=Aktiviere TRIM-Modus für SSDs
|
||||
npart_creating=Erstelle Partition $1 auf $2
|
||||
npart_diskblocks=Slice Größe in Blöcken
|
||||
npart_done=.. Partition erstellt
|
||||
npart_eclash=Eine Partition mit Buchstaben $1 existiert bereits
|
||||
npart_eletter=Partition Nummer muss ein Buchstabe von A bis D sein
|
||||
npart_emax=Endblock kann nicht größer als die Slice Größe von $1 Blöcken sein
|
||||
npart_err=Fehlgeschlagen Partition zu erstellen
|
||||
npart_failed=.. Partition Erstellung fehlgeschlagen : $1
|
||||
npart_header=Neue Partition Details
|
||||
npart_letter=Partition Buchstabe
|
||||
npart_title=Erstelle Partition
|
||||
npart_type=Partitionstyp
|
||||
nslice_creating=Erstelle Slice $1 auf $2 ..
|
||||
nslice_diskblocks=Festplattengröße in Blöcken
|
||||
nslice_done=.. Slice hinzugefügt
|
||||
nslice_eclash=Ein Slice mit Nummer $1 existiert bereits
|
||||
nslice_eend=Endblock muss eine Nummer sein
|
||||
nslice_emax=Endblock kann nicht größer sein als Festplattengröße von $1 Blöcken
|
||||
nslice_end=Endblock
|
||||
nslice_enumber=Fehlende oder nicht-numerische Slice-Nummer
|
||||
nslice_erange=Startblock muss kleiner als der Endblock sein
|
||||
nslice_err=Fehlgeschlagen Slice zu erstellen
|
||||
nslice_estart=Startblock muss eine Nummer sein
|
||||
nslice_failed=.. Slice Erstellung fehlgeschlagen : $1
|
||||
nslice_header=Neues Slice Details
|
||||
nslice_makepart=Erstelle eine Standard-Partition?
|
||||
nslice_number=Slice Nummer
|
||||
nslice_parting=Erstelle Standard-Partitionen in Slice $1 auf $2 ..
|
||||
nslice_pdone=.. Partition erstellt
|
||||
nslice_pfailed=.. Partition Erstellung fehlgeschlagen : $1
|
||||
nslice_start=Startblock
|
||||
nslice_title=Erstelle Slice
|
||||
nslice_type=Neuer Slice Typ
|
||||
part_cannotedit=Diese Partition kann nicht verändert werden, da diese derzeit in Gebrauch ist.
|
||||
part_delete=Lösche Partition
|
||||
part_deletedesc=Klicke auf diese Taste, um diese Partition aus dem Slice zu entfernen. Alle Daten auf der Partition werden für immer verloren sein.
|
||||
part_device=Gerätedatei
|
||||
part_egone=Partition existiert nicht länger!
|
||||
part_end=Endblock
|
||||
part_err=Fehlgeschlagen Partition zu speichern
|
||||
part_esave=Aktuell benutzt von $1
|
||||
part_foruse=Für den Einsatz von $1
|
||||
part_fsck=Prüfe Dateisystem
|
||||
part_fsckdesc=Klicke auf diese Taste, um das UFS-Dateisystem auf diesem Gerät zu überprüfen und gefundene Fehler zu reparieren.
|
||||
part_header=Partitionsdetails
|
||||
part_inuse=In Benutzung von $1
|
||||
part_mountmsg=Mount dieses Gerät auf neues Verzeichnis auf Ihrem System, so dass es verwendet werden kann, um Dateien zu speichern. Ein Dateisystem muss bereits auf der Partition erstellt worden sein.
|
||||
part_mountmsg2=Mount dieses Gerät als virtuellen Speicher auf Ihrem System, um die Menge des verfügbaren Speichers zu erhöhen.
|
||||
npart_eclash=Eine Partition mit Buchstaben $1 existiert bereits
|
||||
disk_scount=$1 Partitionen
|
||||
index_ecmd=Der erforderliche Befehl $1 fehlt
|
||||
disk_parts=Partitionen
|
||||
npart_type=Partitionstyp
|
||||
newfs_create=Erstelle jetzt
|
||||
part_newfs=Erstelle Dateisystem
|
||||
part_newfsdesc=Klicke auf diese Schaltfläche, um ein neues UFS-Dateisystem auf diesem Gerät zu erstellen. Alle Daten, die zuvor auf der Partition waren, werden gelöscht.
|
||||
log_newfs_part=Dateisystem auf Partition $1 erstellt
|
||||
part_mountmsg=Mount dieses Gerät auf neues Verzeichnis auf Ihrem System, so dass es verwendet werden kann, um Dateien zu speichern. Ein Dateisystem muss bereits auf der Partition erstellt worden sein.
|
||||
slice_ssize=Slice Größe
|
||||
slice_none=Dieses Slice hat bisher keine Partitionen.
|
||||
index_dname=Festplattenname
|
||||
slice_err=Fehlgeschlagen Slice zu modifizieren
|
||||
nslice_enumber=Fehlende oder nicht-numerische Slice-Nummer
|
||||
part_cannotedit=Diese Partition kann nicht verändert werden, da diese derzeit in Gebrauch ist.
|
||||
nslice_erange=Startblock muss kleiner als der Endblock sein
|
||||
dpart_deleting=Lösche Partition $1 ..
|
||||
part_fsckdesc=Klicke auf diese Taste, um das UFS-Dateisystem auf diesem Gerät zu überprüfen und gefundene Fehler zu reparieren.
|
||||
part_deletedesc=Klicke auf diese Taste, um diese Partition aus dem Slice zu entfernen. Alle Daten auf der Partition werden für immer verloren sein.
|
||||
fsck_done=.. Prüfung abgeschlossen ohne Fehler zu finden
|
||||
npart_header=Neue Partition Details
|
||||
nslice_header=Neues Slice Details
|
||||
newfs_failed=.. erstellen fehlgeschlagen!
|
||||
slice_letter=Partition
|
||||
fsck_checking=Prüfe Dateisystem auf $1 ..
|
||||
index_dmodel=Marke und Modell
|
||||
disk_start=Startblock
|
||||
part_end=Endblock
|
||||
part_inuse=In Benutzung von $1
|
||||
log_fsck_part=Dateisystem auf der Partition $1 überprüft
|
||||
slice_use=Benutzt von
|
||||
newfs_free=Speicherplatz zum Reservieren für root
|
||||
dpart_failed=.. Löschen fehlgeschlagen : $1
|
||||
disk_blocks=<b>Blöcke:</b> $1
|
||||
npart_creating=Erstelle Partition $1 auf $2
|
||||
npart_err=Fehlgeschlagen Partition zu erstellen
|
||||
nslice_eend=Endblock muss eine Nummer sein
|
||||
part_foruse=Für den Einsatz von $1
|
||||
newfs_none=Keines
|
||||
newfs_elabel=Fehlendes oder ungültiges Label
|
||||
disk_title=Editiere Festplatte
|
||||
index_none=Keine Festplatten wurden auf diesem System gefunden!
|
||||
part_newmount=Mount Partition auf:
|
||||
log_delete_slice=Slice $1 gelöscht
|
||||
nslice_eclash=Ein Slice mit Nummer $1 existiert bereits
|
||||
dslice_title=Lösche Slice
|
||||
slice_type=Typ
|
||||
nslice_emax=Endblock kann nicht größer sein als Festplattengröße von $1 Blöcken
|
||||
dpart_warn=Warnung - diese Partition ist aktuell in Benutzung von $1
|
||||
slice_title=Editiere Slice
|
||||
npart_failed=.. Partition Erstellung fehlgeschlagen : $1
|
||||
newfs_trim=Aktiviere TRIM-Modus für SSDs
|
||||
disk_type=Typ
|
||||
newfs_label=Dateisystem Label
|
||||
part_type=Partitionstyp
|
||||
newfs_title=Erstelle Dateisystem
|
||||
disk_device=<b>Geräte-Datei:</b> $1
|
||||
nslice_parting=Erstelle Standard-Partitionen in Slice $1 auf $2 ..
|
||||
disk_dsize=<b>Festplattengröße:</b> $1
|
||||
newfs_efree=Speicherplatz zum Reservieren für root muss Prozent sein
|
||||
slice_sstart=Startender Block
|
||||
npart_diskblocks=Slice Größe in Blöcken
|
||||
index_dparts=Slices
|
||||
slice_egone=Ausgewähltes Slice existiert nicht!
|
||||
disk_model=<b>Marke und Modell:</b> $1
|
||||
nslice_makepart=Erstelle eine Standard-Partition?
|
||||
nslice_title=Erstelle Slice
|
||||
disk_none=Dieses Laufwerk hat bisher keine Slices.
|
||||
part_newfsdesc=Klicke auf diese Schaltfläche, um ein neues UFS-Dateisystem auf diesem Gerät zu erstellen. Alle Daten, die zuvor auf der Partition waren, werden gelöscht.
|
||||
nslice_pfailed=.. Partition Erstellung fehlgeschlagen : $1
|
||||
dpart_title=Lösche Partition
|
||||
nslice_creating=Erstelle Slice $1 auf $2 ..
|
||||
part_header=Partitionsdetails
|
||||
newfs_deffree=Standard (8%)
|
||||
newfs_creating=Erstelle Dateisystem auf $1 ..
|
||||
part_newmount2=Mount Partition
|
||||
part_nouse=Nichts
|
||||
newfs_header=Neues Dateisystem Details
|
||||
part_err=Fehlgeschlagen Partition zu speichern
|
||||
fsck_failed=.. Prüfung fehlgeschlagen!
|
||||
dpart_rusure=Sind Sie sicher, dass Sie die Partition $1 löschen möchten? Alle Dateisysteme in ihr werden ebenfalls gelöscht.
|
||||
dslice_warn=Warnung - Dieses Slice ist derzeit in Verwendung : $1
|
||||
slice_end=Endblock
|
||||
slice_send=Endblock
|
||||
log_create_slice=Slice $1 erstellt
|
||||
dslice_failed=.. löschen fehlgeschlagen : $1
|
||||
slice_none2=Dieses Slice hat keine Partitionen, und keines kann erstellt werden, solange es in Verwendung als Dateisystem ist.
|
||||
npart_done=.. Partition erstellt
|
||||
log_modify_slice=Slice $1 modifiziert
|
||||
index_dsize=Gesamtgröße
|
||||
part_delete=Lösche Partition
|
||||
slice_add=Eine neue Partition hinzufügen.
|
||||
dslice_deleting=Lösche Slice $1 ..
|
||||
npart_emax=Endblock kann nicht größer als die Slice Größe von $1 Blöcken sein
|
||||
fsck_err=Fehlgeschlagen Dateisystem zu prüfen
|
||||
disk_size=Größe
|
||||
slice_extent=Extent
|
||||
disk_smart=Zeige SMART Status
|
||||
nslice_err=Fehlgeschlagen Slice zu erstellen
|
||||
newfs_err=Fehlgeschlagen Dateisystem zu erstellen
|
||||
dslice_rusure=Sind Sie sicher, dass Sie den Slice $1 löschen möchten? Alle Partitionen und Dateisysteme in ihm werden ebenfalls gelöscht.
|
||||
slice_start=Startblock
|
||||
disk_use=Benutzt von
|
||||
part_return=Partitionsdetails
|
||||
part_size=Partitionsgröße
|
||||
part_start=Startblock
|
||||
part_title=Editiere Partition
|
||||
part_type=Partitionstyp
|
||||
part_use=Aktuell benutzt von
|
||||
select_device=$1 Gerät $2
|
||||
disk_iscsi=iSCSI geteiltes Gerät $1
|
||||
nslice_done=.. Slice hinzugefügt
|
||||
disk_no=Slice
|
||||
index_return=Liste an Festplatten
|
||||
nslice_number=Slice Nummer
|
||||
select_part=$1 Gerät $2 Slice $3 Partition $4
|
||||
select_slice=$1 Gerät $2 Slice $3
|
||||
slice_add=Eine neue Partition hinzufügen.
|
||||
slice_delete=Lösche Slice
|
||||
log_delete_part=Partition $1 gelöscht
|
||||
part_nouse=Nichts
|
||||
disk_free=Freier Speicher
|
||||
slice_deletedesc=Lösche diesen Slice und alle Partitionen und Dateisysteme innerhalb. Alle Daten auf diesem Dateisystem werden mit ziemlicher Sicherheit nicht wiederhergestellt werden können.
|
||||
slice_egone=Ausgewähltes Slice existiert nicht!
|
||||
slice_end=Endblock
|
||||
slice_err=Fehlgeschlagen Slice zu modifizieren
|
||||
slice_extent=Extent
|
||||
slice_header=Slice Details
|
||||
slice_letter=Partition
|
||||
slice_none=Dieses Slice hat bisher keine Partitionen.
|
||||
slice_none2=Dieses Slice hat keine Partitionen, und keines kann erstellt werden, solange es in Verwendung als Dateisystem ist.
|
||||
slice_return=Slice Details und Liste an Partitionen
|
||||
part_esave=Aktuell benutzt von $1
|
||||
part_start=Startblock
|
||||
fsck_title=Prüfe Dateisystem
|
||||
part_mountmsg2=Mount dieses Gerät als virtuellen Speicher auf Ihrem System, um die Menge des verfügbaren Speichers zu erhöhen.
|
||||
disk_smartdesc=Zeigt den aktuellen Status dieses Laufwerk wie von SMART erkannt, und überprüft auf Festplattenfehler.
|
||||
slice_sactive=Aktiv Slice?
|
||||
slice_sblocks=Anzahl an Blöcken
|
||||
slice_send=Endblock
|
||||
slice_size=Größe
|
||||
slice_ssize=Slice Größe
|
||||
slice_sstart=Startender Block
|
||||
slice_start=Startblock
|
||||
slice_stype=Slice Typ
|
||||
npart_letter=Partition Buchstabe
|
||||
slice_suse=Direkt benutzt von
|
||||
slice_title=Editiere Slice
|
||||
slice_type=Typ
|
||||
slice_use=Benutzt von
|
||||
select_slice=$1 Gerät $2 Slice $3
|
||||
nslice_failed=.. Slice Erstellung fehlgeschlagen : $1
|
||||
disk_egone=Festplatte existiert nicht länger!
|
||||
part_use=Aktuell benutzt von
|
||||
slice_header=Slice Details
|
||||
disk_extent=Extent
|
||||
log_modify_part=Partition $1 modifiziert
|
||||
slice_return=Slice Details und Liste an Partitionen
|
||||
nslice_pdone=.. Partition erstellt
|
||||
nslice_start=Startblock
|
||||
newfs_done=.. erstellen erfolgreich
|
||||
nslice_end=Endblock
|
||||
part_title=Editiere Partition
|
||||
disk_return=Festplattendetails und Liste an Slices
|
||||
part_fsck=Prüfe Dateisystem
|
||||
slice_stype=Slice Typ
|
||||
npart_eletter=Partition Nummer muss ein Buchstabe von A bis D sein
|
||||
nslice_type=Neuer Slice Typ
|
||||
index_title=Partitionen auf lokalen Festplatten
|
||||
slice_delete=Lösche Slice
|
||||
slice_size=Größe
|
||||
dslice_confirm=Jetzt löschen
|
||||
log_create_part=Partition $1 erstellt
|
||||
dslice_done=.. fertig
|
||||
disk_end=Endblock
|
||||
part_egone=Partition existiert nicht länger!
|
||||
npart_title=Erstelle Partition
|
||||
slice_sblocks=Anzahl an Blöcken
|
||||
nslice_diskblocks=Festplattengröße in Blöcken
|
||||
disk_add=Füge ein neues Slice hinzu.
|
||||
index_problem=Dieses Modul kann nicht verwendet werden : $1
|
||||
disk_vm=Virtueller Speicher
|
||||
select_device=$1 Gerät $2
|
||||
dpart_confirm=Lösche Jetzt
|
||||
nslice_estart=Startblock muss eine Nummer sein
|
||||
dpart_done=.. fertig
|
||||
|
||||
@@ -6,3 +6,4 @@ desc_de=Partitionen auf lokalen Festplatten
|
||||
longdesc=Create and edit paritions on local SCSI and IDE disks on FreeBSD.
|
||||
longdesc_de=Erstellt und bearbeitet Partitionen auf lokalen SCSI- und IDE-Festplatten auf FreeBSD.
|
||||
desc_ca=Particions dels Discs Locals
|
||||
longdesc_ca=Crea i edita les particions de discs locals SCSI i IDE a FreeBSD.
|
||||
|
||||
@@ -28,3 +28,4 @@ longdesc_ms_MY=Burn data CD dari imej ISO atau direktori yang dipilih.
|
||||
desc_ms_MY=CD Burner
|
||||
longdesc_de=Brennt Daten-CD von ISO-images oder ausgewählten Verzeichnissen.
|
||||
longdesc_pl=Nagrywaj dane na CD z obrazów ISO lub wybranych katalogów.
|
||||
longdesc_ca=Torra CDs de dades a partir d'imatges ISO o directoris seleccionats.
|
||||
|
||||
@@ -8,6 +8,8 @@ require './change-user-lib.pl';
|
||||
our (%text, %in, %gconfig, $base_remote_user, %access);
|
||||
&ReadParse();
|
||||
|
||||
&ui_print_unbuffered_header(undef, $text{'change_title'}, "");
|
||||
|
||||
my @users = &acl::list_users();
|
||||
my ($user) = grep { $_->{'name'} eq $base_remote_user } @users;
|
||||
my $oldtheme = $user->{'theme'};
|
||||
@@ -74,7 +76,12 @@ if ($access{'pass'} && &can_change_pass($user) && !$in{'pass_def'}) {
|
||||
$user->{'temppass'} = 0;
|
||||
}
|
||||
|
||||
&ui_print_unbuffered_header(undef, $text{'change_title'}, "");
|
||||
if ($access{'theme'} &&
|
||||
($newtheme ne $oldtheme || $newoverlay ne $oldoverlay)) {
|
||||
if (defined(&theme_pre_change_theme)) {
|
||||
&theme_pre_change_theme();
|
||||
}
|
||||
}
|
||||
|
||||
print "$text{'change_user'}<br>\n";
|
||||
&acl::modify_user($user->{'name'}, $user);
|
||||
@@ -86,6 +93,9 @@ print "$text{'change_done'}<p>\n";
|
||||
|
||||
if ($access{'theme'} &&
|
||||
($newtheme ne $oldtheme || $newoverlay ne $oldoverlay)) {
|
||||
if (defined(&theme_post_change_theme)) {
|
||||
&theme_post_change_theme();
|
||||
}
|
||||
print "$text{'change_redirect'}<br>\n";
|
||||
print &js_redirect("/", "top");
|
||||
print "$text{'change_done'}<p>\n";
|
||||
|
||||
@@ -36,3 +36,4 @@ longdesc_hu=Webmin nyelvezet
|
||||
longdesc_ms_MY=Membolehkan pengguna Webmin untuk menukar bahasa, tema dan mungkin kata laluan.
|
||||
desc_ms_MY=Tukar Bahasa dan Tema
|
||||
longdesc_pl=Pozwala aktualnemu u¿ytkownikowi Webimina na zmianê jêzyka, motywu i has³a (o ile to mo¿liwe).
|
||||
longdesc_ca=Permet que l'usuari actual de Webmin es canviï el seu idioma, tema i, possiblement, contrasenya.
|
||||
|
||||
@@ -15,3 +15,4 @@ desc_hu=Cluster f
|
||||
longdesc_ms_MY=Jadualkan pemindahan fail dari pelayan ini ke pelayan yang lain dalam kluster Webmin.
|
||||
desc_ms_MY=Kluster Fail Salinan
|
||||
longdesc_pl=Zaplanowany transfer plików z tego serwera do innych serwerów w klastrze.
|
||||
longdesc_ca=Planifica la transferència de fitxers des d'aquest servidor a múltiples servidors d'un cluster Webmin.
|
||||
|
||||
@@ -16,3 +16,4 @@ desc_hu=Cluster id
|
||||
longdesc_ms_MY=Mencipta tugas Cron yang berjalan pada pelayan berganda secara serentak.
|
||||
desc_ms_MY=Kluster Tugas Cron
|
||||
longdesc_pl=Twórz zaplanowane zadania Cron, które zosatan± uruchomione na wielu serwerach równocze¶nie.
|
||||
longdesc_ca=Crea treballs Cron planificats que s'executen en múltiples servidors simultàniament.
|
||||
|
||||
@@ -18,3 +18,4 @@ longdesc_ms_MY=Menukar kata laluan serentak pada pelbagai sistem dalam kluster W
|
||||
desc_ms_MY=Kluster Tukar Kata laluan
|
||||
longdesc_de=Ändert Passwörter auf multiplen Server gleichzeitig.
|
||||
longdesc_pl=Zmieñ has³a na wielu serwerach w klastrze Webmina równocze¶nie.
|
||||
longdesc_ca=Canvia contrasenyes en múltiples sistemes alhora d'un cluster Webmin.
|
||||
|
||||
@@ -15,3 +15,4 @@ desc_ms_MY=Kluster arahan Shell
|
||||
longdesc_ms_MY=Menjalankan arahan pada pelbagai pelayan serentak.
|
||||
longdesc_de=Führt Befehle auf multiplen Server gleichzeitig aus.
|
||||
longdesc_pl=Uruchamiaj polecenia na wielu serwerach równocze¶nie.
|
||||
longdesc_ca=Executa ordres alhora en múltiples sistemes.
|
||||
|
||||
@@ -19,3 +19,4 @@ longdesc_ms_MY=Pasang RPMs, debian dan pakej Solaris ke pelbagai pelayan dari sa
|
||||
desc_ms_MY=Kluster Pakej Software
|
||||
longdesc_de=Installiert RPMs, Debian- und Solaris-Pakete über mehrere Server aus einer Quelle.
|
||||
longdesc_pl=Instaluj pakiety RPM, debian i Solaris na wielu serwerach z jednego ¼ród³a.
|
||||
longdesc_ca=Instal·la paquets RPM, debian i solaris a través de múltiples servidors a partir d'un sol origen.
|
||||
|
||||
@@ -17,3 +17,4 @@ desc_hu=Cluster felhaszn
|
||||
longdesc_ms_MY=Mencipta, mengemaskini dan memadam pengguna dan grup di seluruh pelbagai pelayan. Tidak seperti NIS, setiap pelayan mempunyai fail passwd dan group sendiri yang dikemaskini secara jauh oleh modul ini.
|
||||
desc_ms_MY=Kluster Pengguna dan Grup
|
||||
longdesc_pl=Twórz, aktualizuj i usuwaj u¿ytkowników i grupy na wielu serwerach. Inaczej ni¿ w NIS, ka¿dy serwer ma w³asny plik has³a i grupy, który jest zdalnie aktualizowany przez ten modu³.
|
||||
longdesc_ca=Crea, actualitza i suprimeix usuaris i grups a través de múltiples servidors. Contràriament a NIS, cada servidor té els seus propis fitxers de contrasenyes i grups, que s'actualitzen remotament amb aquest mòdul.
|
||||
|
||||
@@ -17,3 +17,4 @@ desc_hu=Cluster Usermin szerverek
|
||||
longdesc_ms_MY=Memasang dan menguruskan modul dan tema di seluruh pelayan Usermin.
|
||||
desc_ms_MY=Kluster Pelayan Usermin
|
||||
longdesc_pl=Instaluj i zarz±dzaj modu³ami oraz motywami na wszystkich serwerach Usermin.
|
||||
longdesc_ca=Instal·la i gestiona mòduls i temes a través de múltiples servidors Usermin.
|
||||
|
||||
@@ -16,3 +16,4 @@ desc_hu=Cluster Webmin szerverek
|
||||
longdesc_ms_MY=Memasang dan menguruskan modul, tema, pengguna, grup dan tetapan kawalan capaian di seluruh pelayan Webmin.
|
||||
desc_ms_MY=Kluster Pelayan Webmin
|
||||
longdesc_pl=Instaluj i zarz±dzaj modu³ami, szablonami, u¿ytkownikami, grupami i kontrol± dostêpu na wszystkich serwerach Webmina.
|
||||
longdesc_ca=Instal·la i gestiona mòduls, temes, usuaris, grups i paràmetres de control d'accés a través de múltiples servidors Webmin.
|
||||
|
||||
@@ -32,3 +32,4 @@ longdesc_ms_MY=Pasang modul Perl baharu pada sistem anda, dan lihat apa yang sud
|
||||
desc_ms_MY=Modul Perl
|
||||
longdesc_de=Installiert neue Perl-Module auf Ihrem System, und zeigt die bereits Installierten an.
|
||||
longdesc_pl=Instaluj nowe modu³y Perla i sprawd¼ jakie ju¿ s± zainstalowane.
|
||||
longdesc_ca=Instal·la nous mòduls Perl al sistema i visualitza els que ja estan instal·lats.
|
||||
|
||||
@@ -40,3 +40,4 @@ longdesc_ms_MY=Cipta, Ubah dan padam Tugas Cron.
|
||||
desc_ms_MY=Tugas Cron Berjadual
|
||||
longdesc_de=Erstellt, editiert und löscht Cron-Aufträge.
|
||||
longdesc_pl=Twórz, edytuj i usuwaj zadania Cron.
|
||||
longdesc_ca=Crea, edita i suprimeix treballs Cron.
|
||||
|
||||
@@ -297,6 +297,7 @@ else {
|
||||
}
|
||||
|
||||
# read_opts_file(file)
|
||||
# Read the file containing possible menu options for a command
|
||||
sub read_opts_file
|
||||
{
|
||||
local @rv;
|
||||
@@ -371,6 +372,12 @@ $cmd->{'args'} = [ ];
|
||||
my ($i, $name);
|
||||
for($i=0; defined($name = $in{"name_$i"}); $i++) {
|
||||
if ($name) {
|
||||
if ($in{"type_$i"} == 9 || $in{"type_$i"} == 12 ||
|
||||
$in{"type_$i"} == 13 || $in{"type_$i"} == 14) {
|
||||
$in{"opts_$i"} =~ /\|$/ || -r $in{"opts_$i"} ||
|
||||
&error(&text('save_eopts', $i+1));
|
||||
}
|
||||
$in{"opts_$i"} =~ /:/ && &error(&text('save_eopts2', $i+1));
|
||||
push(@{$cmd->{'args'}}, { 'name' => $name,
|
||||
'desc' => $in{"desc_$i"},
|
||||
'type' => $in{"type_$i"},
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# Display commands available for execution
|
||||
|
||||
require './custom-lib.pl';
|
||||
&ui_print_header(undef, $text{'index_title'}, "", "intro", 1, 1);
|
||||
&ui_print_header(undef, $module_info{'desc'}, "", "intro", 1, 1);
|
||||
|
||||
@cust = grep { &can_run_command($_) } &list_commands();
|
||||
@cust = &sort_commands(@cust);
|
||||
|
||||
@@ -77,6 +77,7 @@ save_eorder=L'ordenaci
|
||||
save_etimeout=Hi falta el temps màxim d'espera o bé és invàlid
|
||||
save_eusermin=Les ordres que s'executen en altres servidors no es poden executar des d'Usermin
|
||||
save_eformat=El tipus MIME de sortida és invàlid
|
||||
save_eopts=Hi falta el fitxer d'opcions per al paràmetre $1
|
||||
|
||||
run_err=No s'ha pogut executar l'ordre
|
||||
run_ecannot=No tens permís per executar aquesta ordre
|
||||
|
||||
@@ -126,6 +126,7 @@ save_ecmd=Kein Befehl angegeben
|
||||
save_edesc=Keine Beschreibung angegeben
|
||||
save_edir=Fehlendes oder ungültiges Verzeichnis
|
||||
save_eformat=Ungültiger MIME-Typ Output
|
||||
save_eopts=Fehlende Optionsdatei für den Parameter $1
|
||||
save_eorder=Die Auflistung auf der Hauptseite muß eine Nummer sein
|
||||
save_err=Fehler beim Speichern des Befehls
|
||||
save_etimeout=Fehlende oder ungültige maximale Zeit, die auf Ausführung gewartet wird
|
||||
|
||||
@@ -78,6 +78,7 @@ save_etimeout=Missing or invalid maximum time to wait
|
||||
save_eusermin=Commands that run on other servers cannot be run from Usermin
|
||||
save_eformat=Invalid output MIME type
|
||||
save_eopts=Missing options file for parameter $1
|
||||
save_eopts2=Options file or default value for parameter $1 cannot contain :
|
||||
|
||||
run_err=Failed to execute command
|
||||
run_ecannot=You are not allowed to run this command
|
||||
|
||||
@@ -37,3 +37,4 @@ longdesc_ms_MY=Buat butang untuk melaksanakan arahan yang biasa digunakan atau m
|
||||
desc_ms_MY=Arahan suai langgan
|
||||
longdesc_de=Erstellt Schaltflächen zum Ausführen von häufig verwendeten Befehle oder bearbeitet Dateien auf Ihrem System.
|
||||
longdesc_pl=Twórz przyciski do wykonywania czêsto u¿ywanych poleceñ lub edytowania plików w twoim systemie.
|
||||
longdesc_ca=Crea botons per executar ordres utilitzades habitualment o editar fitxers del sistema.
|
||||
|
||||
@@ -24,3 +24,4 @@ desc_ko_KR.UTF-8=NFS 공유
|
||||
library=dfs-lib.pl
|
||||
desc_hu.UTF-8=NFS Megosztások
|
||||
desc_nl=NFS Files Delen
|
||||
longdesc_ca=Edita les unitats compartides definides al fitxer /etc/dfs/dfstab.
|
||||
|
||||
@@ -11,6 +11,15 @@ $in{'host'} || &error($text{'lookup_ehostname'});
|
||||
$conf = &get_config();
|
||||
@hosts = &find_recursive("host", $conf);
|
||||
|
||||
# Check to see if the host contains 6 hex bytes for a Mac address
|
||||
if ($in{'host'} =~ /:|\-|\./) {
|
||||
(my $justbytes = $in{'host'}) =~ s/[^A-Fa-f0-9]//g;
|
||||
if ($justbytes =~ /^[0-9a-f]{12}$/i) {
|
||||
# Treat this host as a mac address with arbitrary formatting
|
||||
$in{'host'} = join(':', unpack("(A2)*", $justbytes) );
|
||||
}
|
||||
}
|
||||
|
||||
# Look for a match
|
||||
%access = &get_module_acl();
|
||||
foreach $h (@hosts) {
|
||||
|
||||
@@ -34,3 +34,4 @@ longdesc_ms_MY=Mengurus perkongsian rangkaian, subnet, dan grup untuk ISC DHCPD.
|
||||
desc_ms_MY=Pelayan DHCP
|
||||
longdesc_de=Verwaltet freigegebene Netzwerke, Subnetze, Hosts und Gruppen für ISC DHCPD.
|
||||
longdesc_pl=Zarz±dzaj udostêpnianiem sieci, podsieci, hostów i grup dla ISC DHCPD.
|
||||
longdesc_ca=Gestiona xarxes, subxarxes, hosts i grups compartits per DHCPD ISC.
|
||||
|
||||
@@ -19,3 +19,4 @@ longdesc_ms_MY=Mengkonfigurasi Dovecot IMAP dan POP3 sebagai pelayan menarik mel
|
||||
desc_ms_MY=Pelayan Dovecot IMAP/POP3
|
||||
longdesc_de=Konfiguriert den Dovecot IMAP und POP3 Mail Abrufserver.
|
||||
longdesc_pl=Konfiguracja Dovecot - serwera pobierania e-maili przez IMAP i POP3.
|
||||
longdesc_ca=Configura el servidorde recuperació de correu IMAP i POP3 Dovecot.
|
||||
|
||||
@@ -1,22 +1,22 @@
|
||||
<header>amb o sense Autenticació</header>
|
||||
<header>amb o sense Autenticació</header>
|
||||
|
||||
La primera columna d'aquest camp et permet seleccionar el tipus d'autenticació
|
||||
d'aquesta exportació. Les opcions són:
|
||||
La primera columna d'aquest camp et permet seleccionar el tipus d'autenticació
|
||||
d'aquesta exportació. Les opcions són:
|
||||
|
||||
<dl>
|
||||
<dt><b>sys</b>
|
||||
<dd>Seguretat basada en NFS d'IP o xarxa al vell estil, que es fa complir
|
||||
per a l'adreça IP client.<p>
|
||||
per a l'adreça IP client.<p>
|
||||
|
||||
<dt><b>krb5</b>
|
||||
<dd>Autenticació Kerberos (requereix que atnt el sistema client com el servidor
|
||||
<dd>Autenticació Kerberos (requereix que atnt el sistema client com el servidor
|
||||
tinguin Kerberos configurat).<p>
|
||||
|
||||
<dt><b>libkey</b>
|
||||
<dd>El mecanisme de seguretat LIBKEY. <p>
|
||||
|
||||
<dt><b>spkm-3</b>
|
||||
<dd>Mecanisme d'autenticació SPKM3. <p>
|
||||
<dd>Mecanisme d'autenticació SPKM3. <p>
|
||||
</dl>
|
||||
|
||||
<footer>
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
<header>Pseudosistema de fitxers NFSv4 a exportar</header>
|
||||
|
||||
Per a les exportacions NFS versió 4, es pot utilitzar aquest camp per a introduir
|
||||
un camí sota el qual apareixeran múltiples exportacions en ser visualitzades des del client.<p>
|
||||
|
||||
<footer>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<header>Nivells de seguretat</header>
|
||||
|
||||
Aquest camp determina quins nivells de seguretat han d'utilitzar els clients. Es poden seleccionar múltiples nivells, i els preferits es provaran primer. <p>
|
||||
Aquest camp determina quins nivells de seguretat han d'utilitzar els clients. Es poden seleccionar múltiples nivells, i els preferits es provaran primer. <p>
|
||||
|
||||
<footer>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<header>Versió NFS</header>
|
||||
<header>Versió NFS</header>
|
||||
|
||||
Aquest camp controla la versió del protocol NFS utilitzada per aquesta
|
||||
exportació. Algunes característiques només estan disponibles per a exportacions
|
||||
NFSv4, però això pot no estar suportat per sistemes clients més antics. <p>
|
||||
Aquest camp controla la versió del protocol NFS utilitzada per aquesta
|
||||
exportació. Algunes característiques només estan disponibles per a exportacions
|
||||
NFSv4, però això pot no estar suportat per sistemes clients més antics. <p>
|
||||
|
||||
<footer>
|
||||
|
||||
@@ -36,3 +36,4 @@ longdesc_ms_MY=Sunting fail perkongsian NFS yang dinyatakan dalam /etc/eksport
|
||||
desc_ms_MY=NFS Eksport
|
||||
longdesc_de=Bearbeitet NFS-Dateifreigaben, welche in /etc/exports definiert sind.
|
||||
longdesc_pl=Edytuj udostêpnione pliki NFS zdefinowane w /etc/exports.
|
||||
longdesc_ca=Edita les unitats compartides NFS definides a /etc/exports.
|
||||
|
||||
@@ -36,3 +36,4 @@ desc_hu=Lemezpartici
|
||||
longdesc_ms_MY=Mencipta dan mengubah partisyen SCSI setempat dan disk IDE pada Linux.
|
||||
desc_ms_MY=Partisyen pada disk setempat
|
||||
longdesc_de=Erstellt und Editiert Partitionen auf lokalen SCSI, IDE und SATA Laufwerken auf Linux.
|
||||
longdesc_ca=Crea i edita les particions de discs locals SCSI, IDE i SATA a Linux.
|
||||
|
||||
@@ -27,3 +27,4 @@ desc_hu=Levelek lek
|
||||
longdesc_ms_MY=Konfigurasi program fetchmail yang popular secara automatik menarik mel dari pelayan yang lain.
|
||||
desc_ms_MY=Fetchmail Menarik Mel
|
||||
longdesc_pl=Konfiguracja popularnego programu fetchmail do automatycznego pobierania e-maili z innych serwerów
|
||||
longdesc_ca=Configura el popular programa fetchmail per a recuperar automàticament el correu d'altres servidors.
|
||||
|
||||
@@ -36,3 +36,4 @@ longdesc_ms_MY=Lihat, ubah dan ubah kebenaran pada fail dan direktori pada siste
|
||||
desc_ms_MY=Java Pengurus Fail
|
||||
longdesc_de=Zeigt, bearbeitet und ändert Berechtigungen für Dateien und Verzeichnisse auf Ihrem System mit einem Windows-ähnliche Dateimanager.
|
||||
longdesc_pl=Wy秝ietlaj, edytuj i zmieniaj uprawnienia plik體 i katalog體 w menad縠rze wygl眃aj眂ym podobnie jak z systemu Windows
|
||||
longdesc_ca=Visualitza, edita i canvia permisos de fitxers i directoris del sistema amb un gestor de fitxers tipus Windows.
|
||||
|
||||
48
filemin/chattr.cgi
Normal file
48
filemin/chattr.cgi
Normal file
@@ -0,0 +1,48 @@
|
||||
#!/usr/local/bin/perl
|
||||
|
||||
require './filemin-lib.pl';
|
||||
|
||||
&ReadParse();
|
||||
|
||||
get_paths();
|
||||
|
||||
my $recursive;
|
||||
|
||||
if ( $in{'recursive'} eq 'true' ) { $recursive = '-R'; }
|
||||
else { $recursive = ''; }
|
||||
|
||||
my @errors;
|
||||
if ( !$in{'label'} ) {
|
||||
push @errors, "$text{'attr_label_error'}";
|
||||
}
|
||||
|
||||
my $label = quotemeta("$in{'label'}");
|
||||
$label =~ s/\\-/-/g;
|
||||
$label =~ s/\\+//g;
|
||||
$label =~ tr/a-zA-Z\-\+ //dc;
|
||||
|
||||
if ( scalar(@errors) > 0 ) {
|
||||
print_errors(@errors);
|
||||
}
|
||||
else {
|
||||
foreach my $file ( split( /\0/, $in{'name'} ) ) {
|
||||
$file =~ s/\.\.//g;
|
||||
&simplify_path($file);
|
||||
if (
|
||||
system_logged(
|
||||
"chattr $recursive " . $label . " " . quotemeta("$cwd/$file")
|
||||
) != 0
|
||||
)
|
||||
{
|
||||
push @errors,
|
||||
( html_escape($file) . " - $text{'attr_label_error_proc'}: $?" );
|
||||
}
|
||||
}
|
||||
|
||||
if ( scalar(@errors) > 0 ) {
|
||||
print_errors(@errors);
|
||||
}
|
||||
else {
|
||||
&redirect("index.cgi?path=$path");
|
||||
}
|
||||
}
|
||||
47
filemin/chcon.cgi
Normal file
47
filemin/chcon.cgi
Normal file
@@ -0,0 +1,47 @@
|
||||
#!/usr/local/bin/perl
|
||||
|
||||
require './filemin-lib.pl';
|
||||
|
||||
&ReadParse();
|
||||
|
||||
get_paths();
|
||||
|
||||
my $recursive;
|
||||
|
||||
if ( $in{'recursive'} eq 'true' ) { $recursive = '-R'; }
|
||||
else { $recursive = ''; }
|
||||
|
||||
my @errors;
|
||||
|
||||
if ( !$in{'label'} ) {
|
||||
push @errors, "$text{'context_label_error'}";
|
||||
}
|
||||
|
||||
if ( scalar(@errors) > 0 ) {
|
||||
print_errors(@errors);
|
||||
}
|
||||
else {
|
||||
foreach my $file ( split( /\0/, $in{'name'} ) ) {
|
||||
$file =~ s/\.\.//g;
|
||||
&simplify_path($file);
|
||||
if (
|
||||
system_logged(
|
||||
"chcon $recursive "
|
||||
. quotemeta( $in{'label'} ) . " "
|
||||
. quotemeta("$cwd/$file")
|
||||
) != 0
|
||||
)
|
||||
{
|
||||
push @errors,
|
||||
( html_escape($file)
|
||||
. " - $text{'context_label_error_proc'}: $?" );
|
||||
}
|
||||
}
|
||||
|
||||
if ( scalar(@errors) > 0 ) {
|
||||
print_errors(@errors);
|
||||
}
|
||||
else {
|
||||
&redirect("index.cgi?path=$path");
|
||||
}
|
||||
}
|
||||
@@ -29,8 +29,10 @@ print &ui_table_start($text{'module_config'}, undef, 2);
|
||||
print &ui_table_row($text{'config_columns_to_display'},
|
||||
&ui_checkbox('columns', 'type', $text{'type'}, $config{'columns'} =~ /type/).
|
||||
&ui_checkbox('columns', 'size', $text{'size'}, $config{'columns'} =~ /size/).
|
||||
&ui_checkbox('columns', 'owner_user', $text{'owner_user'}, $config{'columns'} =~ /owner_user/).
|
||||
&ui_checkbox('columns', 'owner_user', $text{'ownership'}, $config{'columns'} =~ /owner_user/).
|
||||
&ui_checkbox('columns', 'permissions', $text{'permissions'}, $config{'columns'} =~ /permissions/).
|
||||
(get_attr_status() ? &ui_checkbox('columns', 'attributes', $text{'attributes'}, $config{'columns'} =~ /attributes/) : undef).
|
||||
(get_selinux_status() ? &ui_checkbox('columns', 'selinux', $text{'selinux'}, $config{'columns'} =~ /selinux/) : undef).
|
||||
&ui_checkbox('columns', 'last_mod_time', $text{'last_mod_time'}, $config{'columns'} =~ /last_mod_time/)
|
||||
);
|
||||
print &ui_table_row($text{'config_per_page'}, ui_textbox("per_page", $config{'per_page'}, 80));
|
||||
|
||||
@@ -7,6 +7,27 @@ use Encode qw(decode encode);
|
||||
use File::Basename;
|
||||
use POSIX;
|
||||
|
||||
sub get_attr_status {
|
||||
return has_command('lsattr');
|
||||
}
|
||||
|
||||
sub get_attr_command {
|
||||
return 'lsattr -d ';
|
||||
}
|
||||
|
||||
sub get_selinux_status {
|
||||
# return 1;
|
||||
return is_selinux_enabled();
|
||||
}
|
||||
sub get_selinux_command_type {
|
||||
my $out = backquote_command("ls --help 2>&1 </dev/null");
|
||||
return $out =~ /--scontext/ ? 1 : 0;
|
||||
}
|
||||
|
||||
sub get_selinux_command {
|
||||
return get_selinux_command_type() ? 'ls -d --scontext ' : 'ls -dmZ ';
|
||||
}
|
||||
|
||||
sub get_paths {
|
||||
%access = &get_module_acl();
|
||||
|
||||
@@ -124,28 +145,27 @@ sub print_interface {
|
||||
|
||||
# Set things up according to currently used theme
|
||||
if ($current_theme eq 'authentic-theme' or $current_theme eq 'bootstrap') {
|
||||
|
||||
# Interface for Bootstrap 3 powered themes
|
||||
# Set icons variables
|
||||
$edit_icon = "<i class='fa fa-edit' alt='$text{'edit'}'></i>";
|
||||
$rename_icon = "<i class='fa fa-font' title='$text{'rename'}'></i>";
|
||||
$extract_icon = "<i class='fa fa-external-link' alt='$text{'extract_archive'}'></i>";
|
||||
$goto_icon = "<i class='fa fa-arrow-right' alt='$text{'goto_folder'}'></i>";
|
||||
|
||||
# Add static files
|
||||
print "<link rel=\"stylesheet\" type=\"text/css\" href=\"unauthenticated/css/style.css\" />";
|
||||
print "<script type=\"text/javascript\" src=\"unauthenticated/js/main.js\"></script>";
|
||||
print "<script type=\"text/javascript\" src=\"unauthenticated/js/chmod-calculator.js\"></script>";
|
||||
print "<script type=\"text/javascript\" src=\"unauthenticated/js/dataTables.bootstrap.js\"></script>";
|
||||
print "<script type=\"text/javascript\" src=\"unauthenticated/js/bootstrap-hover-dropdown.min.js\"></script>";
|
||||
print "<link rel=\"stylesheet\" type=\"text/css\" href=\"unauthenticated/css/style.css\" />";
|
||||
print "<link rel=\"stylesheet\" type=\"text/css\" href=\"unauthenticated/css/dataTables.bootstrap.css\" />";
|
||||
if ($current_theme eq 'bootstrap') {
|
||||
init_datatables();
|
||||
}
|
||||
|
||||
# Set "root" icon
|
||||
if($base eq '/') {
|
||||
$root_icon = "<i class='fa fa-hdd-o'></i>";
|
||||
} else {
|
||||
$root_icon = "~";
|
||||
}
|
||||
|
||||
# Breadcrumbs
|
||||
print "<ol class='breadcrumb pull-left'><li><a href='index.cgi?path='>$root_icon</a></li>";
|
||||
my @breadcr = split('/', $path);
|
||||
@@ -157,6 +177,7 @@ sub print_interface {
|
||||
&html_escape($breadcr[$i])."</a></li>";
|
||||
}
|
||||
print "</ol>";
|
||||
|
||||
# And toolbar
|
||||
if($userconfig{'menu_style'}) {
|
||||
print_template("unauthenticated/templates/menu.html");
|
||||
@@ -173,6 +194,7 @@ sub print_interface {
|
||||
$rename_icon = "<img src='images/icons/quick/rename.png' alt='$text{'rename'}' />";
|
||||
$extract_icon = "<img src='images/icons/quick/extract.png' alt='$text{'extract_archive'}' />";
|
||||
$goto_icon = "<img src='images/icons/quick/go-next.png' alt='$text{'goto_folder'}'";
|
||||
|
||||
# Add static files
|
||||
$head = "<link rel=\"stylesheet\" type=\"text/css\" href=\"unauthenticated/css/style.css\" />";
|
||||
$head.= "<script type=\"text/javascript\" src=\"unauthenticated/jquery/jquery.min.js\"></script>";
|
||||
@@ -183,6 +205,7 @@ sub print_interface {
|
||||
$head.= "<link rel=\"stylesheet\" type=\"text/css\" href=\"unauthenticated/dropdown/fg.menu.css\" />";
|
||||
$head.= "<script type=\"text/javascript\" src=\"unauthenticated/dropdown/fg.menu.js\"></script>";
|
||||
print $head;
|
||||
|
||||
# Set "root" icon
|
||||
if($base eq '/') {
|
||||
$root_icon = "<img src=\"images/icons/quick/drive-harddisk.png\" class=\"hdd-icon\" />";
|
||||
@@ -221,6 +244,7 @@ sub print_interface {
|
||||
}
|
||||
}
|
||||
print "</div>";
|
||||
|
||||
# And toolbar
|
||||
print_template("unauthenticated/templates/legacy_quicks.html");
|
||||
print_template("unauthenticated/templates/legacy_dialogs.html");
|
||||
@@ -240,8 +264,6 @@ sub print_interface {
|
||||
}
|
||||
|
||||
print "<div class='total'>" . &text($info_total, scalar @files, scalar @folders) . "</div>";
|
||||
# use Data::Dumper;
|
||||
# print Dumper(\%allowed_for_edit);
|
||||
|
||||
# Render current directory entries
|
||||
print &ui_form_start("", "post", undef, "id='list_form'");
|
||||
@@ -249,13 +271,15 @@ sub print_interface {
|
||||
'<input id="select-unselect" type="checkbox" onclick="selectUnselect(this)" />',
|
||||
''
|
||||
);
|
||||
push @ui_columns, $text{'name'};
|
||||
push @ui_columns, $text{'type'} if($userconfig{'columns'} =~ /type/);
|
||||
push @ui_columns, $text{'actions'};
|
||||
push @ui_columns, $text{'size'} if($userconfig{'columns'} =~ /size/);
|
||||
push @ui_columns, $text{'owner_user'} if($userconfig{'columns'} =~ /owner_user/);
|
||||
push @ui_columns, $text{'permissions'} if($userconfig{'columns'} =~ /permissions/);
|
||||
push @ui_columns, $text{'last_mod_time'} if($userconfig{'columns'} =~ /last_mod_time/);
|
||||
push @ui_columns, ('<span data-head-name>' . $text{'name'} . '</span>');
|
||||
push @ui_columns, ('<span data-head-type>' . $text{'type'} . '</span>') if($userconfig{'columns'} =~ /type/);
|
||||
push @ui_columns, ('<span data-head-actions>' . $text{'actions'} . '</span>');
|
||||
push @ui_columns, ('<span data-head-size>' . $text{'size'} . '</span>') if($userconfig{'columns'} =~ /size/);
|
||||
push @ui_columns, ('<span data-head-owner_user>' . $text{'ownership'} . '</span>') if($userconfig{'columns'} =~ /owner_user/);
|
||||
push @ui_columns, ('<span data-head-permissions>' . $text{'permissions'} . '</span>') if($userconfig{'columns'} =~ /permissions/);
|
||||
push @ui_columns, ('<span data-head-attributes>' . $text{'attributes'} . '</span>') if(get_attr_status() && $userconfig{'columns'} =~ /attributes/);
|
||||
push @ui_columns, ('<span data-head-selinux>' . $text{'selinux'} . '</span>') if(get_selinux_status() && $userconfig{'columns'} =~ /selinux/);
|
||||
push @ui_columns, ('<span data-head-last_mod_time>' . $text{'last_mod_time'} . '</span>') if($userconfig{'columns'} =~ /last_mod_time/);
|
||||
|
||||
print &ui_columns_start(\@ui_columns);
|
||||
#foreach $link (@list) {
|
||||
@@ -263,6 +287,8 @@ sub print_interface {
|
||||
if ($count > scalar(@list)) { last; }
|
||||
my $class = $count & 1 ? "odd" : "even";
|
||||
my $link = $list[$count - 1][0];
|
||||
my $selinux;
|
||||
my $attributes;
|
||||
$link =~ s/\Q$cwd\E\///;
|
||||
$link =~ s/^\///g;
|
||||
$vlink = html_escape($link);
|
||||
@@ -274,12 +300,22 @@ sub print_interface {
|
||||
|
||||
my $type = $list[$count - 1][14];
|
||||
$type =~ s/\//\-/g;
|
||||
|
||||
my $img = "images/icons/mime/$type.png";
|
||||
unless (-e $img) { $img = "images/icons/mime/unknown.png"; }
|
||||
$size = &nice_size($list[$count - 1][8]);
|
||||
$user = getpwuid($list[$count - 1][5]) ? getpwuid($list[$count - 1][5]) : $list[$count - 1][5];
|
||||
$group = getgrgid($list[$count - 1][6]) ? getgrgid($list[$count - 1][6]) : $list[$count - 1][6];
|
||||
$permissions = sprintf("%04o", $list[$count - 1][3] & 07777);
|
||||
|
||||
if(get_selinux_status() && $userconfig{'columns'} =~ /selinux/) {
|
||||
$selinux = $list[$count - 1][17];
|
||||
}
|
||||
|
||||
if(get_attr_status() && $userconfig{'columns'} =~ /attributes/) {
|
||||
$attributes = $list[$count - 1][18];
|
||||
}
|
||||
|
||||
$mod_time = POSIX::strftime('%Y/%m/%d - %T', localtime($list[$count - 1][10]));
|
||||
|
||||
$actions = "<a class='action-link' href='javascript:void(0)' onclick='renameDialog(\"$vlink\")' title='$text{'rename'}' data-container='body'>$rename_icon</a>";
|
||||
@@ -339,6 +375,8 @@ sub print_interface {
|
||||
push @row_data, $size if($userconfig{'columns'} =~ /size/);
|
||||
push @row_data, $user.':'.$group if($userconfig{'columns'} =~ /owner_user/);
|
||||
push @row_data, $permissions if($userconfig{'columns'} =~ /permissions/);
|
||||
push @row_data, $attributes if(get_attr_status() && $userconfig{'columns'} =~ /attributes/);
|
||||
push @row_data, $selinux if(get_selinux_status() && $userconfig{'columns'} =~ /selinux/);
|
||||
push @row_data, $mod_time if($userconfig{'columns'} =~ /last_mod_time/);
|
||||
|
||||
print &ui_checked_columns_row(\@row_data, "", "name", $vlink);
|
||||
@@ -348,70 +386,6 @@ sub print_interface {
|
||||
print &ui_form_end();
|
||||
}
|
||||
|
||||
sub init_datatables {
|
||||
my ($a, $b, $c);
|
||||
$a = '0, 1, 3';
|
||||
$b = '4';
|
||||
$c = '';
|
||||
if ($userconfig{'columns'} =~ /type/) {
|
||||
$a = '0, 1, 4';
|
||||
$b = '5';
|
||||
}
|
||||
if ($userconfig{'columns'} =~ /size/) {
|
||||
$c = '{ "type": "file-size", "targets": [' . $b . '] },';
|
||||
}
|
||||
|
||||
if($userconfig{'disable_pagination'}) {
|
||||
$bPaginate = 'false';
|
||||
} else {
|
||||
$bPaginate = 'true';
|
||||
}
|
||||
print "<script>";
|
||||
print "\$( document ).ready(function() {";
|
||||
print "\$.fn.dataTableExt.sErrMode = 'throw';";
|
||||
print "\$('#list_form > table').dataTable({";
|
||||
print "\"order\": [],";
|
||||
print "\"aaSorting\": [],";
|
||||
print "\"bDestroy\": true,";
|
||||
print "\"bPaginate\": $bPaginate,";
|
||||
print " \"fnDrawCallback\": function(oSettings) {
|
||||
if (oSettings.fnRecordsTotal() <= oSettings._iDisplayLength) {
|
||||
\$('.dataTables_paginate').hide();
|
||||
} else {
|
||||
\$('.dataTables_paginate').show();
|
||||
}
|
||||
},";
|
||||
print " \"initComplete\": function() {
|
||||
\$('div.dataTables_filter input').val('').trigger('keyup');
|
||||
\$('div.dataTables_filter input').focus();
|
||||
\$(document).on('keydown', function (event) {
|
||||
var keycode = event.keyCode ? event.keyCode : event.which;
|
||||
if (!\$('input').is(':focus') && !\$('select').is(':focus') && !\$('textarea').is(':focus')) {
|
||||
if (keycode === 39) {
|
||||
\$('.paginate_button.next').trigger('click');
|
||||
}
|
||||
if (keycode === 37) {
|
||||
\$('.paginate_button.previous').trigger('click');
|
||||
}
|
||||
}
|
||||
});
|
||||
},";
|
||||
print "\"bInfo\": false,";
|
||||
print "\"destroy\": true,";
|
||||
print "\"oLanguage\": {";
|
||||
print "\"sSearch\": \" \"";
|
||||
print "},";
|
||||
print "\"columnDefs\": [ { \"orderable\": false, \"targets\": [$a] }, $c ],";
|
||||
print "\"bStateSave\": true,";
|
||||
print "\"iDisplayLength\": 50,";
|
||||
print "});";
|
||||
print "\$(\"form\").on('click', 'div.popover', function() {";
|
||||
print "\$(this).prev('input').popover('hide');";
|
||||
print "});";
|
||||
print "});";
|
||||
print "</script>";
|
||||
}
|
||||
|
||||
sub get_bookmarks {
|
||||
$confdir = "$remote_user_info[7]/.filemin";
|
||||
if(!-e "$confdir/.bookmarks") {
|
||||
@@ -441,4 +415,3 @@ sub get_paste_buffer_file
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
|
||||
BIN
filemin/images/icons/quick/chattr.png
Normal file
BIN
filemin/images/icons/quick/chattr.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 734 B |
BIN
filemin/images/icons/quick/chcon.png
Normal file
BIN
filemin/images/icons/quick/chcon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 631 B |
@@ -1,14 +1,12 @@
|
||||
#!/usr/local/bin/perl
|
||||
# File manager written in perl
|
||||
|
||||
#$unsafe_index_cgi = 1;
|
||||
require './filemin-lib.pl';
|
||||
use lib './lib';
|
||||
#use File::Basename;
|
||||
|
||||
use File::MimeInfo;
|
||||
|
||||
&ReadParse();
|
||||
|
||||
get_paths();
|
||||
|
||||
unless (opendir ( DIR, $cwd )) {
|
||||
@@ -17,8 +15,10 @@ unless (opendir ( DIR, $cwd )) {
|
||||
} else {
|
||||
&ui_print_header(undef, $module_info{'name'}, "", undef, 0 , 0, 0, "<a href='config.cgi?path=$path' data-config-pagination='$userconfig{'per_page'}'>$text{'module_config'}</a>");
|
||||
|
||||
##########################################
|
||||
#---------LET DA BRAINF###ING BEGIN----------
|
||||
my $setype = get_selinux_command_type();
|
||||
my %secontext;
|
||||
my %attributes;
|
||||
|
||||
# Push file names with full paths to array, filtering out "." and ".."
|
||||
@list = map { &simplify_path("$cwd/$_") } grep { $_ ne '.' && $_ ne '..' } readdir(DIR);
|
||||
closedir(DIR);
|
||||
@@ -36,8 +36,29 @@ unless (opendir ( DIR, $cwd )) {
|
||||
my %hash = map { $_, 1 } @tmp_list;
|
||||
@list = keys %hash;
|
||||
}
|
||||
|
||||
# List attributes
|
||||
if ( $userconfig{'columns'} =~ /attributes/ && get_attr_status() ) {
|
||||
my $command = get_attr_command() . join( ' ', map { quotemeta("$_") } @list );
|
||||
my $output = `$command`;
|
||||
my @attributesArr =
|
||||
map { [ split( /\s+/, $_, 2 ) ] } split( /\n/, $output );
|
||||
%attributes = map { $_->[1] => ('<span data-attributes="x">' . $_->[0] . '</span>') } @attributesArr;
|
||||
}
|
||||
|
||||
# List security context
|
||||
if ( $userconfig{'columns'} =~ /selinux/ && get_selinux_status() ) {
|
||||
my $command = get_selinux_command() . join( ' ', map { quotemeta("$_") } @list );
|
||||
my $output = `$command`;
|
||||
( !$setype && ( $output =~ s/\n//g, $output =~ s/,\s/,/g ) );
|
||||
my $delimiter = ( $setype ? '\n' : ',' );
|
||||
my @searray =
|
||||
map { [ split( /\s+/, $_, 2 ) ] } split( /$delimiter/, $output );
|
||||
%secontext = map { $_->[1] => ($_->[0] eq "?" ? undef : ('<span data-attributes="x">' . $_->[0] . '</span>') ) } @searray;
|
||||
}
|
||||
|
||||
# Get info about directory entries
|
||||
@info = map { [ $_, stat($_), &mimetype($_), -d $_ ] } @list;
|
||||
@info = map { [ $_, lstat($_), &mimetype($_), -d, -l $_, $secontext{$_}, $attributes{$_} ] } @list;
|
||||
|
||||
# Filter out folders
|
||||
@folders = map {$_} grep {$_->[15] == 1 } @info;
|
||||
@@ -53,9 +74,6 @@ unless (opendir ( DIR, $cwd )) {
|
||||
undef(@list);
|
||||
push @list, @folders, @files;
|
||||
|
||||
#########################################
|
||||
|
||||
print_interface();
|
||||
|
||||
&ui_print_footer("/", $text{'index'});
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
index=Índex
|
||||
index=a l'índex
|
||||
error_opendir=Error en obrir el directori
|
||||
error_creating_conf=Error en crear el directori de contiguració
|
||||
select_all=Selecciona-ho Tot
|
||||
@@ -6,7 +6,7 @@ invert_selection=Inverteix la Selecci
|
||||
copy_selected=Copia la Selecció
|
||||
cut_selected=Retalla la Selecció
|
||||
paste=Enganxa
|
||||
create_folder=Crea una Carpeta
|
||||
create_folder=Crea un Directori
|
||||
create_file=Crea un Fitxer
|
||||
compress_selected=Comprimeix la Selecció
|
||||
chmod_selected=Executa <tt>chmod</tt> sobre la Selecció
|
||||
@@ -15,7 +15,7 @@ remove_selected=Elimina la Selecci
|
||||
browse_for_upload=Explora per a Pujar
|
||||
upload_files=Puja Fitxers
|
||||
get_from_url=Obtingues d'un URL
|
||||
bookmark_folder=Marca la carpeta actual com a preferida
|
||||
bookmark_folder=Marca el directori actual com a preferit
|
||||
name=Nom
|
||||
type=Tipus
|
||||
actions=Accions
|
||||
@@ -32,21 +32,21 @@ save=Desa
|
||||
save_close=Desa i tanca
|
||||
delete=Suprimeix
|
||||
save_file=Desa el fitxer
|
||||
previous_page=pàgina anterior
|
||||
previous_page=a la pàgina anterior
|
||||
count_uploads=fixer(s) selecccionats per pujar
|
||||
error_title=Error!!!
|
||||
warning_title=Atenció!!!
|
||||
nothing_selected=No hi ha res seleccionat
|
||||
error_load_template=Error en carregar el fitxer de plantilla
|
||||
create=Crea
|
||||
new_folder_name=Nom de la nomva carpeta
|
||||
new_folder_name=Nom del nou directori
|
||||
new_file_name=Nom del nou fitxer
|
||||
new_name=Nou nom
|
||||
dialog_ok=Bé
|
||||
dialog_cancel=Cancel·la
|
||||
archive_name=Nom de l'arxiu
|
||||
dialog_compress=Comprimeix
|
||||
about_to_delete=Estàs a punt de suprimir els fitxers següent:
|
||||
about_to_delete=Estàs a punt de suprimir els següents elements:
|
||||
are_you_sure=Segur que ho vols fer?
|
||||
user_name=Usuari
|
||||
group_name=Grup
|
||||
@@ -90,18 +90,18 @@ error_opening_file_for_writing=No s'ha pogut obrir el fitxer per escriure-hi:
|
||||
error_writing_file=Error en gravar el fitxer:
|
||||
error_numeric=ha de ser numèric!
|
||||
error_saving_file=Error en desar el fitxer
|
||||
hint_copy=Copia els fitxers i les carpetes seleccionades al buffer
|
||||
hint_cut=Retalla els fitxers i les carpetes seleccionades al buffer
|
||||
hint_paste=Enganxa els fitxers i carpetes del buffer al directori actual
|
||||
hint_create_folder=Crea una nova carpeta al directori actual
|
||||
hint_copy=Copia els fitxers i directoris seleccionats al buffer
|
||||
hint_cut=Retalla els fitxers i directoris seleccionats al buffer
|
||||
hint_paste=Enganxa els fitxers i directoris del buffer al directori actual
|
||||
hint_create_folder=Crea un nou directori al directori actual
|
||||
hint_create_file=Crea un nou fitxer al directori actual
|
||||
hint_compress=Comprimeix els fitxers i carpetes seleccionats a un arxiu tar.gz
|
||||
hint_chmod=Canvia els permisos dels fitxers i carpetes seleccionats
|
||||
hint_chown=Canvia el propietari dels fitxers i carpetes seleccionats
|
||||
hint_remove=Elimina els fitxers i carpetes seleccionats
|
||||
hint_compress=Comprimeix els fitxers i directoris seleccionats a un arxiu tar.gz
|
||||
hint_chmod=Canvia els permisos dels fitxers i directoris seleccionats
|
||||
hint_chown=Canvia el propietari dels fitxers i directoris seleccionats
|
||||
hint_remove=Elimina els fitxers i directoris seleccionats
|
||||
hint_upload=Puja els fitxers al directori actual
|
||||
hint_from_url=Obté el fitxer d'un URL remot
|
||||
provide_folder_name=Proporciona el nom de la carpeta
|
||||
provide_folder_name=Proporciona el nom del directori
|
||||
provide_file_name=Proporciona el nom del fitxer
|
||||
provide_user_name=Proporciona el nom de l'usuari
|
||||
provide_group_name=Proporciona el nom del grup
|
||||
@@ -128,7 +128,7 @@ search_label=Consulta de cerca
|
||||
search_go=Cerca
|
||||
search_results=Resultats de la cerca per a
|
||||
search_insensitive=Cerca insensitiva a caixa
|
||||
goto_folder=Ves a la carpeta contenidora
|
||||
goto_folder=Ves al directori contenidor
|
||||
module_config=Configuració del mòdul
|
||||
config_columns_to_display=Columnes a mostrar
|
||||
config_per_page=Ítems a mostrar per pàgina (només per a temes antics)
|
||||
@@ -142,4 +142,8 @@ menu_tools=Eines
|
||||
menu_bookmarks=Preferits
|
||||
notallowed=No tens permís per accedir a $1. Els directoris permesos són: $2
|
||||
error_upload_emax=El fitxer pujat és més gran que el límit de $1
|
||||
info_total=Total: $1 fitxers i $2 carpetes
|
||||
|
||||
info_total1=Total: $1 fitxer i $2 directori
|
||||
info_total2=Total: $1 fitxers i $2 directori
|
||||
info_total3=Total: $1 fitxer i $2 directoris
|
||||
info_total4=Total: $1 fitxers i $2 directoris
|
||||
|
||||
@@ -141,3 +141,19 @@ info_total1=Total: $1 file and $2 folder
|
||||
info_total2=Total: $1 files and $2 folder
|
||||
info_total3=Total: $1 file and $2 folders
|
||||
info_total4=Total: $1 files and $2 folders
|
||||
|
||||
|
||||
chcon_selected=Chcon Selected
|
||||
chattr_selected=Chattr Selected
|
||||
|
||||
selinux=Security context
|
||||
attributes=Attributes
|
||||
|
||||
context_label=Context to apply
|
||||
context_label_error=Security context can not be blank
|
||||
context_label_error_proc=Failed to change security context
|
||||
attr_label=Attributes to apply
|
||||
attr_label_error=Attributes must be specified
|
||||
attr_label_error_proc=Failed to change attributes
|
||||
|
||||
ownership=Ownership
|
||||
|
||||
@@ -1,12 +1,23 @@
|
||||
about_to_delete=Sie sind dabei folgende Elemente zu löschen:
|
||||
acl_allowed_paths=Erlaube Zugriff auf Verzeichnisse
|
||||
acl_bytes=bytes
|
||||
acl_epath=Pfad $1 existiert nicht
|
||||
acl_euser=Ausgewähter Unix Benutzer existiert nicht!
|
||||
acl_max=Die maximale Größe für hochgeladene Dateien
|
||||
acl_same=Gleiche wie Webmin Login
|
||||
acl_unlimited=Unlimitiert
|
||||
acl_user=Spezifischer Unix Benutzer
|
||||
acl_work_as=Erlaube Dateien als Unix Benutzer
|
||||
actions=Aktionen
|
||||
archive_name=Archiv-Name
|
||||
are_you_sure=Sind Sie sich sicher?
|
||||
bookmark_folder=Lesezeichen des aktuellen Verzeichnisses setzen
|
||||
chmod_additional=Zusätzlich
|
||||
chmod_all=Alle (rekursiv)
|
||||
chmod_apply_to=Anwenden an
|
||||
chmod_dir_and_its_files=Ausgewählte Dateien und Verzeichnisse und Dateien in ausgewählten Verzeichnissen
|
||||
chmod_dir_and_subs=Ausgewählte Verzeichnisse und Unterverzeichnisse
|
||||
chmod_dir_only=Nur ausgewählte Verzeichnisse und Dateien
|
||||
chmod_execute=Ausführen
|
||||
chmod_group=Gruppe
|
||||
chmod_others=Andere
|
||||
@@ -19,25 +30,70 @@ chown_selected=Chmod wählen
|
||||
compress_selected=Komprimiere ausgewählte
|
||||
config_bookmarks=Bookmarks
|
||||
config_columns_to_display=Spalten zu angezeigen
|
||||
config_disable_pagination=Deaktiviert Paginierung (nur für Authentic Theme-Benutzer)
|
||||
config_per_page=Artikel pro Seite zum anzeigen (nur für alte Themes)
|
||||
copy_selected=Kopiere Ausgewähltes
|
||||
count_uploads=Datei(en) ausgewählt zum hochladen
|
||||
create=Erstellen
|
||||
create_file=Erstelle Datei
|
||||
create_folder=Erstelle Ordner
|
||||
cut_selected=Schneide Ausgewähltes aus
|
||||
delete=Lösche
|
||||
dialog_cancel=Abbrechen
|
||||
dialog_change=Ändern
|
||||
dialog_compress=Komprimieren
|
||||
dialog_download=Download
|
||||
dialog_file_url=URL der Datei zum Download
|
||||
dialog_ok=OK
|
||||
dialog_recursive=Rekursiv
|
||||
dialog_user_name=Entferne Server Benutzername (falls einer benötigt wird)
|
||||
dialog_user_pass=Entferne Server Passwort (falls eins benötigt wird)
|
||||
edit=Editieren
|
||||
edit_file=Editiere Datei
|
||||
error_archive_type_not_supported=Archivtyp wird bisher nicht unterstützt
|
||||
error_chmod=Fehlgeschlagen Rechte zu ändern
|
||||
error_chown=Fehlgeschlagen Eigentümer zu wechseln
|
||||
error_copy=Kopieren fehlgeschlagen mit Fehler:
|
||||
error_create=fehlgeschlagen zu erstellen:
|
||||
error_creating_conf=Fehler beim Erstellen des Konfigurations-Verzeichnis
|
||||
error_cut=Verschieben fehlgeschlagen mit Fehler:
|
||||
error_delete=nicht möglich zu löschen
|
||||
error_exists=existiert bereits, überspringe
|
||||
error_group_not_found=Gruppe existiert nicht auf diesem System
|
||||
error_invalid_uri=Fehler: keine gültige URL zur Verfügung gestellt
|
||||
error_load_template=Fehler laden Template Datei
|
||||
error_numeric=Muss numerisch sein!
|
||||
error_opendir=Fehler beim Öffnen des Verzeichnis
|
||||
error_opening_file_for_writing=Kann Datei nicht zum schreiben öffnen
|
||||
error_pasting_nonsence=Einfügen in das selbe Verzeichnis macht keinen Sinn
|
||||
error_rename=Fehlgeschlagen das Umbenennen
|
||||
error_saving_file=Fehler beim Speichern der Datei
|
||||
error_title=Fehler!!!
|
||||
error_upload_emax=Hochzuladende Datei ist größer als das Limit von $1
|
||||
error_user_not_found=Benutzer nicht auf diesem System gefunden
|
||||
error_writing_file=Fehler beim Schreiben von Datei:
|
||||
extract_archive=Archive extrahieren
|
||||
file_already_exists=existiert bereits in
|
||||
files_ready_for_upload=Zeige ausgewählte Dateien an
|
||||
get_from_url=Erhalte von URL
|
||||
goto_folder=Gehe zu beinhaltetes Verzeichnis
|
||||
group_name=Gruppen-Name
|
||||
hint_compress=Komprimiere ausgewählte Dateien und Verzeichnisse in tar.gz-Archiv
|
||||
hint_copy=Kopiere ausgewählte Dateien und Verzeichnisse zum Puffer
|
||||
hint_create_file=Erstelle neue Datei im aktuellem Pfad
|
||||
hint_create_folder=Erzeuge neues Verzeichnis im aktuellem Pfad
|
||||
hint_from_url=Erhalte Datei von entfernter URL
|
||||
hint_paste=Füge Dateien und Verzeichnisse vom Puffer ein
|
||||
hint_remove=Entferne ausgewählte Dateien und Verzeichnisse
|
||||
hint_upload=Hochladen von Dateien in das aktuelle Verzeichnis
|
||||
http_downloading=Herunterladen
|
||||
index=Index
|
||||
info_total=Gesamt: $1 Dateien und $2 Ordner
|
||||
info_total1=Total: $1 Datei und $2 Verzeichnis
|
||||
info_total2=Total: $1 Dateien und $2 Verzeichnis
|
||||
info_total3=Total: $1 Datei und $2 Verzeichnisse
|
||||
info_total4=Total: $1 Dateien und $2 Verzeichnisse
|
||||
invert_selection=Auswahl umkehren
|
||||
last_mod_time=Zeitpunkt der letzten Änderung
|
||||
menu_bookmarks=Bookmarks
|
||||
menu_edit=Editieren
|
||||
menu_file=Datei
|
||||
@@ -47,20 +103,36 @@ name=Name
|
||||
new_file_name=Neuer Datei-Name
|
||||
new_folder_name=Neuer Ordner-Name
|
||||
new_name=Neuer Name
|
||||
no_bookmarks=Keine Bookmarks bisher
|
||||
notallowed=Sie sind nicht berechtigt auf $1 zuzugreifen. Erlaubte Verzeichnisse sind : $2
|
||||
nothing_selected=Nichts ausgewählt
|
||||
owner_group=Eigentümer-Gruppe
|
||||
owner_user=Eigentümer-Benutzer
|
||||
paste=Einfügen
|
||||
permissions=Rechte
|
||||
previous_page=vorherige Seite
|
||||
provide_file_name=Vergebe Dateiname
|
||||
provide_folder_name=Vergebe Verzeichnisname
|
||||
provide_group_name=Vergebe Gruppenname
|
||||
provide_new_file_name=Vergebe neuen Dateiname
|
||||
provide_search_query=Gebe Suchanfrage
|
||||
provide_url=Gebe URL der entfernten Datei an
|
||||
provide_user_name=Provider Benutzername
|
||||
refresh=Aktualisieren
|
||||
remove_selected=Lösche Ausgewähltes
|
||||
rename=Umbenennen
|
||||
save=Speichern
|
||||
save_close=Speichern und schließen
|
||||
save_file=Speichere Datei
|
||||
search=Suche
|
||||
search_go=Finden
|
||||
search_insensitive=Groß- und Kleinschreibung Suche
|
||||
search_label=Suchanfrage
|
||||
search_results=Suchresultate für
|
||||
select_all=Alle wählen
|
||||
size=Größe
|
||||
type=Typ
|
||||
upload_files=Dateien hochladen
|
||||
uploading=Hochladen, bitte warten...
|
||||
user_name=Benutzername
|
||||
warning_title=Warnung!!!
|
||||
|
||||
@@ -135,4 +135,20 @@ menu_file=Datei
|
||||
menu_edit=Bearbeite
|
||||
menu_tools=Werkzeuge
|
||||
menu_bookmarks=Lesezeichen
|
||||
notallowed=Sie haben keine Erlaubnis, auf $1 zuzugreifen. Die erlaubten Verzeichnisse sind: $2
|
||||
notallowed=Sie haben keine Erlaubnis, auf $1 zuzugreifen. Die erlaubten Verzeichnisse sind: $2
|
||||
|
||||
|
||||
chcon_selected=Chcon Selected
|
||||
chattr_selected=Chattr Selected
|
||||
|
||||
selinux=Security context
|
||||
attributes=Attributes
|
||||
|
||||
context_label=Context to apply
|
||||
context_label_error=Security context can not be blank
|
||||
context_label_error_proc=Failed to change security context
|
||||
attr_label=Attributes to apply
|
||||
attr_label_error=Attributes must be specified
|
||||
attr_label_error_proc=Failed to change attributes
|
||||
|
||||
ownership=Ownership
|
||||
|
||||
@@ -70,7 +70,7 @@ dialog_file_url=URL of file to download
|
||||
dialog_user_name=Remote server username(if any required)
|
||||
dialog_user_pass=Remote server password(if any required)
|
||||
dialog_download=Download
|
||||
error_invalid_uri=Error: No valid URL supllied!!!
|
||||
error_invalid_uri=Error: No valid URL supplied!!!
|
||||
file_already_exists=already exists in
|
||||
files_ready_for_upload=View selected files
|
||||
errors_occured=Following errors occured while performing operation
|
||||
@@ -131,7 +131,7 @@ search_insensitive=Case insensitive search
|
||||
goto_folder=Go to containing directory
|
||||
module_config=Module configuration
|
||||
config_columns_to_display=Columns to display
|
||||
config_per_page=Items to display per page(for old themes only)
|
||||
config_per_page=Items to display per page (for old themes only)
|
||||
config_disable_pagination=Disable pagination (for Authentic Theme users only)
|
||||
config_toolbar_style=Set toolbar style to menu-like view,<br>with dropdowns ... and cookies (for Authentic Theme users only)
|
||||
config_bookmarks=Bookmarks
|
||||
|
||||
@@ -6,24 +6,28 @@ invert_selection=Invert Selection
|
||||
copy_selected=Copy Selected
|
||||
cut_selected=Cut Selected
|
||||
paste=Paste
|
||||
create_folder=Create Folder
|
||||
create_folder=Create Directory
|
||||
create_file=Create File
|
||||
compress_selected=Compress Selected
|
||||
chmod_selected=Chmod Selected
|
||||
chown_selected=Chown Selected
|
||||
chcon_selected=Chcon Selected
|
||||
chattr_selected=Chattr Selected
|
||||
remove_selected=Remove Selected
|
||||
browse_for_upload=Browse for Upload
|
||||
upload_files=Upload Files
|
||||
get_from_url=Get from URL
|
||||
bookmark_folder=Bookmark current folder
|
||||
bookmark_folder=Bookmark current directory
|
||||
name=Name
|
||||
type=Type
|
||||
actions=Actions
|
||||
size=Size
|
||||
owner_user=Owner User
|
||||
owner_group=Owner Group
|
||||
owner_user=Owner user
|
||||
owner_group=Owner group
|
||||
permissions=Permissions
|
||||
last_mod_time=Last Modification Time
|
||||
selinux=Security context
|
||||
attributes=Attributes
|
||||
last_mod_time=Last modification time
|
||||
rename=Rename
|
||||
edit=Edit
|
||||
extract_archive=Extract Archive
|
||||
@@ -34,20 +38,26 @@ delete=Delete
|
||||
save_file=Save file
|
||||
previous_page=previous page
|
||||
count_uploads=file(s) selected for upload
|
||||
error_title=Error!!!
|
||||
warning_title=Warning!!!
|
||||
error_title=Error!
|
||||
warning_title=Warning!
|
||||
nothing_selected=Nothing selected
|
||||
error_load_template=Error loading template file
|
||||
create=Create
|
||||
new_folder_name=New folder name
|
||||
new_folder_name=New directory name
|
||||
new_file_name=New file name
|
||||
new_name=New name
|
||||
dialog_ok=OK
|
||||
dialog_cancel=Cancel
|
||||
archive_name=Archive name
|
||||
dialog_compress=Compress
|
||||
about_to_delete=You`re about to delete following items:
|
||||
about_to_delete=You're about to delete following items:
|
||||
are_you_sure=Are you sure?
|
||||
context_label=Context to apply
|
||||
context_label_error=Security context can not be blank
|
||||
context_label_error_proc=Failed to change security context
|
||||
attr_label=Attributes to apply
|
||||
attr_label_error=Attributes must be specified
|
||||
attr_label_error_proc=Failed to change attributes
|
||||
user_name=User name
|
||||
group_name=Group name
|
||||
dialog_change=Change
|
||||
@@ -70,7 +80,7 @@ dialog_file_url=URL of file to download
|
||||
dialog_user_name=Remote server username(if any required)
|
||||
dialog_user_pass=Remote server password(if any required)
|
||||
dialog_download=Download
|
||||
error_invalid_uri=Error: No valid URL supllied!!!
|
||||
error_invalid_uri=Error: No valid URL supplied!
|
||||
file_already_exists=already exists in
|
||||
files_ready_for_upload=View selected files
|
||||
errors_occured=Following errors occured while performing operation
|
||||
@@ -87,21 +97,21 @@ error_user_not_found=user not found on this system
|
||||
error_group_not_found=group does not exist on this system
|
||||
error_archive_type_not_supported= archive type not supported yet
|
||||
error_opening_file_for_writing=Could not open file for writing:
|
||||
error_writing_file=Error writing file:
|
||||
error_writing_file=Error writing file:
|
||||
error_numeric=must be numeric!
|
||||
error_saving_file=Error saving file
|
||||
hint_copy=Copy selected files and folders to buffer
|
||||
hint_cut=Cut selected files and folders to buffer
|
||||
hint_paste=Paste files and folders from buffer to current directory
|
||||
hint_create_folder=Create new folder in the current directory
|
||||
hint_copy=Copy selected files and directories to buffer
|
||||
hint_cut=Cut selected files and directories to buffer
|
||||
hint_paste=Paste files and directories from buffer
|
||||
hint_create_folder=Create new directory in the current path
|
||||
hint_create_file=Create new file in the current directory
|
||||
hint_compress=Compress selected files and folders to tar.gz archive
|
||||
hint_chmod=Change permissions for selected files and folders
|
||||
hint_chown=Change owner of selected files and folders
|
||||
hint_remove=Remove selected files and folders
|
||||
hint_compress=Compress selected files and directories to tar.gz archive
|
||||
hint_chmod=Change permissions for selected files and directories
|
||||
hint_chown=Change owner of selected files and directories
|
||||
hint_remove=Remove selected files and directories
|
||||
hint_upload=Upload files to the current directory
|
||||
hint_from_url=Get file from remote URL
|
||||
provide_folder_name=Provide folder name
|
||||
provide_folder_name=Provide directory name
|
||||
provide_file_name=Provide file name
|
||||
provide_user_name=Provide user name
|
||||
provide_group_name=Provide group name
|
||||
@@ -128,10 +138,10 @@ search_label=Search query
|
||||
search_go=Find
|
||||
search_results=Search results for
|
||||
search_insensitive=Case insensitive search
|
||||
goto_folder=Go to containing folder
|
||||
goto_folder=Go to containing directory
|
||||
module_config=Module configuration
|
||||
config_columns_to_display=Columns to display
|
||||
config_per_page=Items to display per page(for old themes only)
|
||||
config_per_page=Items to display per page (for old themes only)
|
||||
config_disable_pagination=Disable pagination (for Authentic Theme users only)
|
||||
config_toolbar_style=Set toolbar style to menu-like view,<br>with dropdowns ... and cookies (for Authentic Theme users only)
|
||||
config_bookmarks=Bookmarks
|
||||
@@ -142,4 +152,10 @@ menu_tools=Tools
|
||||
menu_bookmarks=Bookmarks
|
||||
notallowed=You are not allowed to access $1. The allowed directories are : $2
|
||||
error_upload_emax=Uploaded file is larger than the limit of $1
|
||||
info_total=Total: $1 files and $2 folders
|
||||
|
||||
info_total1=Total: $1 file and $2 directory
|
||||
info_total2=Total: $1 files and $2 directory
|
||||
info_total3=Total: $1 file and $2 directories
|
||||
info_total4=Total: $1 files and $2 directories
|
||||
|
||||
ownership=Ownership
|
||||
|
||||
@@ -143,3 +143,19 @@ upload_files=Last opp filer
|
||||
uploading=Laster opp, vennligst vent...
|
||||
user_name=Brukernavn
|
||||
warning_title=Advarsel!!!
|
||||
|
||||
|
||||
chcon_selected=Chcon Selected
|
||||
chattr_selected=Chattr Selected
|
||||
|
||||
selinux=Security context
|
||||
attributes=Attributes
|
||||
|
||||
context_label=Context to apply
|
||||
context_label_error=Security context can not be blank
|
||||
context_label_error_proc=Failed to change security context
|
||||
attr_label=Attributes to apply
|
||||
attr_label_error=Attributes must be specified
|
||||
attr_label_error_proc=Failed to change attributes
|
||||
|
||||
ownership=Ownership
|
||||
|
||||
@@ -133,3 +133,19 @@ uploading=Загрузка, пожалуйста подождите...
|
||||
user_name=Имя пользователя
|
||||
warning_title=Внимание!!!
|
||||
info_total=Всего: $1 файлов и $2 папок
|
||||
|
||||
|
||||
chcon_selected=Chcon Selected
|
||||
chattr_selected=Chattr Selected
|
||||
|
||||
selinux=Security context
|
||||
attributes=Attributes
|
||||
|
||||
context_label=Context to apply
|
||||
context_label_error=Security context can not be blank
|
||||
context_label_error_proc=Failed to change security context
|
||||
attr_label=Attributes to apply
|
||||
attr_label_error=Attributes must be specified
|
||||
attr_label_error_proc=Failed to change attributes
|
||||
|
||||
ownership=Ownership
|
||||
|
||||
@@ -4,3 +4,5 @@ name=File Manager
|
||||
usermin=1
|
||||
desc_no=Filbehandling
|
||||
desc=File Manager
|
||||
desc_ca=Gestor de Fitxers
|
||||
longdesc_ca=Gestor de fitxers lleuger i ràpid escrit en perl.
|
||||
|
||||
@@ -1,372 +0,0 @@
|
||||
div.dataTables_length label {
|
||||
font-weight: normal;
|
||||
text-align: left;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
div.dataTables_length select {
|
||||
width: 75px;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
div.dataTables_filter {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
div.dataTables_filter label {
|
||||
font-weight: normal;
|
||||
white-space: nowrap;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
div.dataTables_filter input {
|
||||
margin-left: 0.5em;
|
||||
display: inline-block;
|
||||
width: auto;
|
||||
}
|
||||
|
||||
div.dataTables_info {
|
||||
padding-top: 8px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
div.dataTables_paginate {
|
||||
margin: 0;
|
||||
white-space: nowrap;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
div.dataTables_paginate ul.pagination {
|
||||
margin: 2px 0;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 767px) {
|
||||
div.dataTables_wrapper > div.row > div,
|
||||
div.dataTables_length,
|
||||
div.dataTables_filter,
|
||||
div.dataTables_info,
|
||||
div.dataTables_paginate {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
div.DTTT {
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
table.dataTable td,
|
||||
table.dataTable th {
|
||||
-webkit-box-sizing: content-box;
|
||||
-moz-box-sizing: content-box;
|
||||
box-sizing: content-box;
|
||||
}
|
||||
|
||||
|
||||
table.dataTable {
|
||||
clear: both;
|
||||
margin-top: 6px !important;
|
||||
margin-bottom: 6px !important;
|
||||
max-width: none !important;
|
||||
}
|
||||
|
||||
table.dataTable thead .sorting,
|
||||
table.dataTable thead .sorting_asc,
|
||||
table.dataTable thead .sorting_desc,
|
||||
table.dataTable thead .sorting_asc_disabled,
|
||||
table.dataTable thead .sorting_desc_disabled {
|
||||
cursor: pointer;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
table.dataTable thead .sorting:after,
|
||||
table.dataTable thead .sorting_asc:after,
|
||||
table.dataTable thead .sorting_desc:after {
|
||||
position: absolute;
|
||||
top: 8px;
|
||||
right: 8px;
|
||||
display: block;
|
||||
font-family: 'Glyphicons Halflings';
|
||||
opacity: 0.5;
|
||||
}
|
||||
table.dataTable thead .sorting:after {
|
||||
opacity: 0.2;
|
||||
content: "\e150"; /* sort */
|
||||
}
|
||||
table.dataTable thead .sorting_asc:after {
|
||||
content: "\e155"; /* sort-by-attributes */
|
||||
}
|
||||
table.dataTable thead .sorting_desc:after {
|
||||
content: "\e156"; /* sort-by-attributes-alt */
|
||||
}
|
||||
div.dataTables_scrollBody table.dataTable thead .sorting:after,
|
||||
div.dataTables_scrollBody table.dataTable thead .sorting_asc:after,
|
||||
div.dataTables_scrollBody table.dataTable thead .sorting_desc:after {
|
||||
display: none;
|
||||
}
|
||||
|
||||
table.dataTable thead .sorting_asc_disabled:after,
|
||||
table.dataTable thead .sorting_desc_disabled:after {
|
||||
color: #eee;
|
||||
}
|
||||
|
||||
table.dataTable thead > tr > th {
|
||||
padding-right: 30px;
|
||||
}
|
||||
|
||||
table.dataTable th:active {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
|
||||
/* Condensed */
|
||||
table.dataTable.table-condensed thead > tr > th {
|
||||
padding-right: 20px;
|
||||
}
|
||||
|
||||
table.dataTable.table-condensed thead .sorting:after,
|
||||
table.dataTable.table-condensed thead .sorting_asc:after,
|
||||
table.dataTable.table-condensed thead .sorting_desc:after {
|
||||
top: 6px;
|
||||
right: 6px;
|
||||
}
|
||||
|
||||
/* Scrolling */
|
||||
div.dataTables_scrollHead table {
|
||||
margin-bottom: 0 !important;
|
||||
border-bottom-left-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
}
|
||||
|
||||
div.dataTables_scrollHead table thead tr:last-child th:first-child,
|
||||
div.dataTables_scrollHead table thead tr:last-child td:first-child {
|
||||
border-bottom-left-radius: 0 !important;
|
||||
border-bottom-right-radius: 0 !important;
|
||||
}
|
||||
|
||||
div.dataTables_scrollBody table {
|
||||
border-top: none;
|
||||
margin-top: 0 !important;
|
||||
margin-bottom: 0 !important;
|
||||
}
|
||||
|
||||
div.dataTables_scrollBody tbody tr:first-child th,
|
||||
div.dataTables_scrollBody tbody tr:first-child td {
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
div.dataTables_scrollFoot table {
|
||||
margin-top: 0 !important;
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
/* Frustratingly the border-collapse:collapse used by Bootstrap makes the column
|
||||
width calculations when using scrolling impossible to align columns. We have
|
||||
to use separate
|
||||
*/
|
||||
table.table-bordered.dataTable {
|
||||
border-collapse: separate !important;
|
||||
}
|
||||
table.table-bordered thead th,
|
||||
table.table-bordered thead td {
|
||||
border-left-width: 0;
|
||||
border-top-width: 0;
|
||||
}
|
||||
table.table-bordered tbody th,
|
||||
table.table-bordered tbody td {
|
||||
border-left-width: 0;
|
||||
border-bottom-width: 0;
|
||||
}
|
||||
table.table-bordered tfoot th,
|
||||
table.table-bordered tfoot td {
|
||||
border-left-width: 0;
|
||||
border-bottom-width: 0;
|
||||
}
|
||||
table.table-bordered th:last-child,
|
||||
table.table-bordered td:last-child {
|
||||
border-right-width: 0;
|
||||
}
|
||||
div.dataTables_scrollHead table.table-bordered {
|
||||
border-bottom-width: 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* TableTools styles
|
||||
*/
|
||||
.table.dataTable tbody tr.active td,
|
||||
.table.dataTable tbody tr.active th {
|
||||
background-color: #08C;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.table.dataTable tbody tr.active:hover td,
|
||||
.table.dataTable tbody tr.active:hover th {
|
||||
background-color: #0075b0 !important;
|
||||
}
|
||||
|
||||
.table.dataTable tbody tr.active th > a,
|
||||
.table.dataTable tbody tr.active td > a {
|
||||
color: white;
|
||||
}
|
||||
|
||||
.table-striped.dataTable tbody tr.active:nth-child(odd) td,
|
||||
.table-striped.dataTable tbody tr.active:nth-child(odd) th {
|
||||
background-color: #017ebc;
|
||||
}
|
||||
|
||||
table.DTTT_selectable tbody tr {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
div.DTTT .btn:hover {
|
||||
text-decoration: none !important;
|
||||
}
|
||||
|
||||
ul.DTTT_dropdown.dropdown-menu {
|
||||
z-index: 2003;
|
||||
}
|
||||
|
||||
ul.DTTT_dropdown.dropdown-menu a {
|
||||
color: #333 !important; /* needed only when demo_page.css is included */
|
||||
}
|
||||
|
||||
ul.DTTT_dropdown.dropdown-menu li {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
ul.DTTT_dropdown.dropdown-menu li:hover a {
|
||||
background-color: #0088cc;
|
||||
color: white !important;
|
||||
}
|
||||
|
||||
div.DTTT_collection_background {
|
||||
z-index: 2002;
|
||||
}
|
||||
|
||||
/* TableTools information display */
|
||||
div.DTTT_print_info {
|
||||
position: fixed;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
width: 400px;
|
||||
height: 150px;
|
||||
margin-left: -200px;
|
||||
margin-top: -75px;
|
||||
text-align: center;
|
||||
color: #333;
|
||||
padding: 10px 30px;
|
||||
opacity: 0.95;
|
||||
|
||||
background-color: white;
|
||||
border: 1px solid rgba(0, 0, 0, 0.2);
|
||||
border-radius: 6px;
|
||||
|
||||
-webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5);
|
||||
box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5);
|
||||
}
|
||||
|
||||
div.DTTT_print_info h6 {
|
||||
font-weight: normal;
|
||||
font-size: 28px;
|
||||
line-height: 28px;
|
||||
margin: 1em;
|
||||
}
|
||||
|
||||
div.DTTT_print_info p {
|
||||
font-size: 14px;
|
||||
line-height: 20px;
|
||||
}
|
||||
|
||||
div.dataTables_processing {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
width: 100%;
|
||||
height: 60px;
|
||||
margin-left: -50%;
|
||||
margin-top: -25px;
|
||||
padding-top: 20px;
|
||||
padding-bottom: 20px;
|
||||
text-align: center;
|
||||
font-size: 1.2em;
|
||||
background-color: white;
|
||||
background: -webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255,255,255,0)), color-stop(25%, rgba(255,255,255,0.9)), color-stop(75%, rgba(255,255,255,0.9)), color-stop(100%, rgba(255,255,255,0)));
|
||||
background: -webkit-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);
|
||||
background: -moz-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);
|
||||
background: -ms-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);
|
||||
background: -o-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);
|
||||
background: linear-gradient(to right, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* FixedColumns styles
|
||||
*/
|
||||
div.DTFC_LeftHeadWrapper table,
|
||||
div.DTFC_LeftFootWrapper table,
|
||||
div.DTFC_RightHeadWrapper table,
|
||||
div.DTFC_RightFootWrapper table,
|
||||
table.DTFC_Cloned tr.even {
|
||||
background-color: white;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
div.DTFC_RightHeadWrapper table ,
|
||||
div.DTFC_LeftHeadWrapper table {
|
||||
border-bottom: none !important;
|
||||
margin-bottom: 0 !important;
|
||||
border-top-right-radius: 0 !important;
|
||||
border-bottom-left-radius: 0 !important;
|
||||
border-bottom-right-radius: 0 !important;
|
||||
}
|
||||
|
||||
div.DTFC_RightHeadWrapper table thead tr:last-child th:first-child,
|
||||
div.DTFC_RightHeadWrapper table thead tr:last-child td:first-child,
|
||||
div.DTFC_LeftHeadWrapper table thead tr:last-child th:first-child,
|
||||
div.DTFC_LeftHeadWrapper table thead tr:last-child td:first-child {
|
||||
border-bottom-left-radius: 0 !important;
|
||||
border-bottom-right-radius: 0 !important;
|
||||
}
|
||||
|
||||
div.DTFC_RightBodyWrapper table,
|
||||
div.DTFC_LeftBodyWrapper table {
|
||||
border-top: none;
|
||||
margin: 0 !important;
|
||||
}
|
||||
|
||||
div.DTFC_RightBodyWrapper tbody tr:first-child th,
|
||||
div.DTFC_RightBodyWrapper tbody tr:first-child td,
|
||||
div.DTFC_LeftBodyWrapper tbody tr:first-child th,
|
||||
div.DTFC_LeftBodyWrapper tbody tr:first-child td {
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
div.DTFC_RightFootWrapper table,
|
||||
div.DTFC_LeftFootWrapper table {
|
||||
border-top: none;
|
||||
margin-top: 0 !important;
|
||||
}
|
||||
|
||||
|
||||
div.DTFC_LeftBodyWrapper table.dataTable thead .sorting:after,
|
||||
div.DTFC_LeftBodyWrapper table.dataTable thead .sorting_asc:after,
|
||||
div.DTFC_LeftBodyWrapper table.dataTable thead .sorting_desc:after,
|
||||
div.DTFC_RightBodyWrapper table.dataTable thead .sorting:after,
|
||||
div.DTFC_RightBodyWrapper table.dataTable thead .sorting_asc:after,
|
||||
div.DTFC_RightBodyWrapper table.dataTable thead .sorting_desc:after {
|
||||
display: none;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* FixedHeader styles
|
||||
*/
|
||||
div.FixedHeader_Cloned table {
|
||||
margin: 0 !important
|
||||
}
|
||||
|
||||
@@ -103,6 +103,8 @@ table.dataTable thead .sorting_desc::after {
|
||||
top: 6px;
|
||||
}
|
||||
|
||||
#chattrForm input,
|
||||
#chconForm input,
|
||||
#chownForm input {
|
||||
width: 200px;
|
||||
}
|
||||
@@ -151,4 +153,10 @@ a.pages {
|
||||
.total {
|
||||
clear: both;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
span[data-attributes="s"],
|
||||
span[data-attributes="x"] {
|
||||
font-family: monospace;
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
@@ -1,206 +0,0 @@
|
||||
/*! DataTables Bootstrap 3 integration
|
||||
* ©2011-2014 SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
|
||||
/**
|
||||
* DataTables integration for Bootstrap 3. This requires Bootstrap 3 and
|
||||
* DataTables 1.10 or newer.
|
||||
*
|
||||
* This file sets the defaults and adds options to DataTables to style its
|
||||
* controls using Bootstrap. See http://datatables.net/manual/styling/bootstrap
|
||||
* for further information.
|
||||
*/
|
||||
(function(window, document, undefined){
|
||||
|
||||
var factory = function( $, DataTable ) {
|
||||
"use strict";
|
||||
|
||||
|
||||
/* Set the defaults for DataTables initialisation */
|
||||
$.extend( true, DataTable.defaults, {
|
||||
dom:
|
||||
"<'row'<'col-sm-6'l><'col-sm-6'f>>" +
|
||||
"<'row'<'col-sm-12'tr>>" +
|
||||
"<'row'<'col-sm-5'i><'col-sm-7'p>>",
|
||||
renderer: 'bootstrap'
|
||||
} );
|
||||
|
||||
|
||||
/* Default class modification */
|
||||
$.extend( DataTable.ext.classes, {
|
||||
sWrapper: "dataTables_wrapper form-inline dt-bootstrap",
|
||||
sFilterInput: "form-control input-sm",
|
||||
sLengthSelect: "form-control input-sm"
|
||||
} );
|
||||
|
||||
|
||||
/* Bootstrap paging button renderer */
|
||||
DataTable.ext.renderer.pageButton.bootstrap = function ( settings, host, idx, buttons, page, pages ) {
|
||||
var api = new DataTable.Api( settings );
|
||||
var classes = settings.oClasses;
|
||||
var lang = settings.oLanguage.oPaginate;
|
||||
var btnDisplay, btnClass, counter=0;
|
||||
|
||||
var attach = function( container, buttons ) {
|
||||
var i, ien, node, button;
|
||||
var clickHandler = function ( e ) {
|
||||
e.preventDefault();
|
||||
if ( !$(e.currentTarget).hasClass('disabled') ) {
|
||||
api.page( e.data.action ).draw( false );
|
||||
}
|
||||
};
|
||||
|
||||
for ( i=0, ien=buttons.length ; i<ien ; i++ ) {
|
||||
button = buttons[i];
|
||||
|
||||
if ( $.isArray( button ) ) {
|
||||
attach( container, button );
|
||||
}
|
||||
else {
|
||||
btnDisplay = '';
|
||||
btnClass = '';
|
||||
|
||||
switch ( button ) {
|
||||
case 'ellipsis':
|
||||
btnDisplay = '…';
|
||||
btnClass = 'disabled';
|
||||
break;
|
||||
|
||||
case 'first':
|
||||
btnDisplay = lang.sFirst;
|
||||
btnClass = button + (page > 0 ?
|
||||
'' : ' disabled');
|
||||
break;
|
||||
|
||||
case 'previous':
|
||||
btnDisplay = lang.sPrevious;
|
||||
btnClass = button + (page > 0 ?
|
||||
'' : ' disabled');
|
||||
break;
|
||||
|
||||
case 'next':
|
||||
btnDisplay = lang.sNext;
|
||||
btnClass = button + (page < pages-1 ?
|
||||
'' : ' disabled');
|
||||
break;
|
||||
|
||||
case 'last':
|
||||
btnDisplay = lang.sLast;
|
||||
btnClass = button + (page < pages-1 ?
|
||||
'' : ' disabled');
|
||||
break;
|
||||
|
||||
default:
|
||||
btnDisplay = button + 1;
|
||||
btnClass = page === button ?
|
||||
'active' : '';
|
||||
break;
|
||||
}
|
||||
|
||||
if ( btnDisplay ) {
|
||||
node = $('<li>', {
|
||||
'class': classes.sPageButton+' '+btnClass,
|
||||
'id': idx === 0 && typeof button === 'string' ?
|
||||
settings.sTableId +'_'+ button :
|
||||
null
|
||||
} )
|
||||
.append( $('<a>', {
|
||||
'href': '#',
|
||||
'aria-controls': settings.sTableId,
|
||||
'data-dt-idx': counter,
|
||||
'tabindex': settings.iTabIndex
|
||||
} )
|
||||
.html( btnDisplay )
|
||||
)
|
||||
.appendTo( container );
|
||||
|
||||
settings.oApi._fnBindAction(
|
||||
node, {action: button}, clickHandler
|
||||
);
|
||||
|
||||
counter++;
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// IE9 throws an 'unknown error' if document.activeElement is used
|
||||
// inside an iframe or frame.
|
||||
var activeEl;
|
||||
|
||||
try {
|
||||
// Because this approach is destroying and recreating the paging
|
||||
// elements, focus is lost on the select button which is bad for
|
||||
// accessibility. So we want to restore focus once the draw has
|
||||
// completed
|
||||
activeEl = $(document.activeElement).data('dt-idx');
|
||||
}
|
||||
catch (e) {}
|
||||
|
||||
attach(
|
||||
$(host).empty().html('<ul class="pagination"/>').children('ul'),
|
||||
buttons
|
||||
);
|
||||
|
||||
if ( activeEl ) {
|
||||
$(host).find( '[data-dt-idx='+activeEl+']' ).focus();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* TableTools Bootstrap compatibility
|
||||
* Required TableTools 2.1+
|
||||
*/
|
||||
if ( DataTable.TableTools ) {
|
||||
// Set the classes that TableTools uses to something suitable for Bootstrap
|
||||
$.extend( true, DataTable.TableTools.classes, {
|
||||
"container": "DTTT btn-group",
|
||||
"buttons": {
|
||||
"normal": "btn btn-default",
|
||||
"disabled": "disabled"
|
||||
},
|
||||
"collection": {
|
||||
"container": "DTTT_dropdown dropdown-menu",
|
||||
"buttons": {
|
||||
"normal": "",
|
||||
"disabled": "disabled"
|
||||
}
|
||||
},
|
||||
"print": {
|
||||
"info": "DTTT_print_info"
|
||||
},
|
||||
"select": {
|
||||
"row": "active"
|
||||
}
|
||||
} );
|
||||
|
||||
// Have the collection use a bootstrap compatible drop down
|
||||
$.extend( true, DataTable.TableTools.DEFAULTS.oTags, {
|
||||
"collection": {
|
||||
"container": "ul",
|
||||
"button": "li",
|
||||
"liner": "a"
|
||||
}
|
||||
} );
|
||||
}
|
||||
|
||||
}; // /factory
|
||||
|
||||
|
||||
// Define as an AMD module if possible
|
||||
if ( typeof define === 'function' && define.amd ) {
|
||||
define( ['jquery', 'datatables'], factory );
|
||||
}
|
||||
else if ( typeof exports === 'object' ) {
|
||||
// Node/CommonJS
|
||||
factory( require('jquery'), require('datatables') );
|
||||
}
|
||||
else if ( jQuery ) {
|
||||
// Otherwise simply initialise as normal, stopping multiple evaluation
|
||||
factory( jQuery, jQuery.fn.dataTable );
|
||||
}
|
||||
|
||||
|
||||
})(window, document);
|
||||
|
||||
@@ -25,7 +25,7 @@ $( document ).ready(function() {
|
||||
);
|
||||
|
||||
// MENUS
|
||||
$('#flat').menu({
|
||||
$('#flat').menu({
|
||||
content: $('#flat').next().html(), // grab content from this page
|
||||
showSpeed: 100
|
||||
});
|
||||
@@ -163,6 +163,7 @@ function chownDialog() {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function chownSelected() {
|
||||
var owner = $('#chownForm input[name=owner]').val();
|
||||
var group = $('#chownForm input[name=group]').val();
|
||||
@@ -174,6 +175,59 @@ function chownSelected() {
|
||||
}
|
||||
}
|
||||
|
||||
function chattrDialog() {
|
||||
if(checkSelected()) {
|
||||
$( "#chattrDialog" ).dialog({
|
||||
modal: true,
|
||||
buttons: {
|
||||
"Change": function() {
|
||||
chattrSelected();
|
||||
},
|
||||
"Cancel": function() {
|
||||
$( this ).dialog( "close" );
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function chattrSelected() {
|
||||
var label = $('#chattrForm input[name=label]').val(),
|
||||
recursive = $('#chattr-recursive').prop('checked');
|
||||
|
||||
if (label != null && label != "") {
|
||||
$('#list_form').attr('action', "chattr.cgi?label=" + encodeURIComponent(label) + "&recursive=" + recursive);
|
||||
$('#list_form').submit();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function chconDialog() {
|
||||
if(checkSelected()) {
|
||||
$( "#chconDialog" ).dialog({
|
||||
modal: true,
|
||||
buttons: {
|
||||
"Change": function() {
|
||||
chconSelected();
|
||||
},
|
||||
"Cancel": function() {
|
||||
$( this ).dialog( "close" );
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function chconSelected() {
|
||||
var label = $('#chconForm input[name=label]').val(),
|
||||
recursive = $('#chcon-recursive').prop('checked');
|
||||
|
||||
if (label != null && label != "") {
|
||||
$('#list_form').attr('action', "chcon.cgi?label=" + label + "&recursive=" + recursive);
|
||||
$('#list_form').submit();
|
||||
}
|
||||
}
|
||||
|
||||
function renameDialog(file) {
|
||||
$("#renameForm input[name=name]").val(file);
|
||||
$("#renameForm input[name=file]").val(file);
|
||||
@@ -396,4 +450,4 @@ function checkSelected() {
|
||||
alert('Nothing selected');
|
||||
return false;
|
||||
}
|
||||
*/
|
||||
*/
|
||||
|
||||
@@ -1,24 +1,4 @@
|
||||
/*$( document ).ready(function() {
|
||||
/* $.fn.dataTableExt.sErrMode = 'throw';
|
||||
$('#list_form > table').dataTable({
|
||||
"order": [],
|
||||
"aaSorting": [],
|
||||
"bDestroy": true,
|
||||
"bPaginate": false,
|
||||
"sScrollY": "600px",
|
||||
"bInfo": false,
|
||||
"destroy": true,
|
||||
"oLanguage": {
|
||||
"sSearch": " "
|
||||
},
|
||||
"columnDefs": [ { "orderable": false, "targets": [0, 1, 4] }, ],
|
||||
"iDisplayLength": 50,
|
||||
});
|
||||
$("form").on('click', 'div.popover', function() {
|
||||
$(this).prev('input').popover('hide');
|
||||
});
|
||||
});
|
||||
*/
|
||||
|
||||
function countUploads(files) {
|
||||
if(files.files.length = 0) return;
|
||||
var info = '';
|
||||
@@ -58,7 +38,7 @@ function compressDialog() {
|
||||
"backdrop" : "static",
|
||||
"keyboard" : true,
|
||||
"show" : true
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function compressSelected() {
|
||||
@@ -100,7 +80,7 @@ function chmodDialog() {
|
||||
"backdrop" : "static",
|
||||
"keyboard" : true,
|
||||
"show" : true
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function chmodSelected() {
|
||||
@@ -119,7 +99,7 @@ function chownDialog() {
|
||||
"backdrop" : "static",
|
||||
"keyboard" : true,
|
||||
"show" : true
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function chownSelected() {
|
||||
@@ -141,6 +121,48 @@ function chownSelected() {
|
||||
}
|
||||
}
|
||||
|
||||
function chattrDialog() {
|
||||
if(checkSelected())
|
||||
$("#chattrDialog").modal({
|
||||
"backdrop" : "static",
|
||||
"keyboard" : true,
|
||||
"show" : true
|
||||
});
|
||||
}
|
||||
|
||||
function chattrSelected() {
|
||||
var label = $('#chattrForm input[name=label]').val();
|
||||
|
||||
var recursive = $('#chattr-recursive').prop('checked');
|
||||
if (label == null || label == "") {
|
||||
$('#chattrForm input[name=label]').focus();
|
||||
} else if (label != null && label != "" ) {
|
||||
$('#list_form').attr('action', "chattr.cgi?label=" + encodeURIComponent(label) + "&recursive=" + recursive);
|
||||
$('#list_form').submit();
|
||||
}
|
||||
}
|
||||
|
||||
function chconDialog() {
|
||||
if(checkSelected())
|
||||
$("#chconDialog").modal({
|
||||
"backdrop" : "static",
|
||||
"keyboard" : true,
|
||||
"show" : true
|
||||
});
|
||||
}
|
||||
|
||||
function chconSelected() {
|
||||
var label = $('#chconForm input[name=label]').val();
|
||||
|
||||
var recursive = $('#chcon-recursive').prop('checked');
|
||||
if (label == null || label == "") {
|
||||
$('#chconForm input[name=label]').focus();
|
||||
} else if (label != null && label != "" ) {
|
||||
$('#list_form').attr('action', "chcon.cgi?label=" + label + "&recursive=" + recursive);
|
||||
$('#list_form').submit();
|
||||
}
|
||||
}
|
||||
|
||||
function renameDialog(file) {
|
||||
$("#renameForm input[name=name]").val(file);
|
||||
$("#renameForm input[name=file]").val(file);
|
||||
@@ -290,7 +312,7 @@ function viewReadyForUpload() {
|
||||
"backdrop" : "static",
|
||||
"keyboard" : true,
|
||||
"show" : true
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function checkSelected() {
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
<select name="method">
|
||||
<option value="tar">.tar.gz</option>
|
||||
<option value="zip">.zip</option>
|
||||
</select>
|
||||
</select>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
@@ -66,6 +66,28 @@
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div id="chattrDialog" class="modal">
|
||||
<form id="chattrForm">
|
||||
<div class="form-group">
|
||||
<label>$text{'attr_label'}</label><br>
|
||||
<input name="label" type="text"><br>
|
||||
<label>$text{'dialog_recursive'}</label>
|
||||
<input id="chattr-recursive" type="checkbox" name="recursive">
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div id="chconDialog" class="modal">
|
||||
<form id="chconForm">
|
||||
<div class="form-group">
|
||||
<label>$text{'context_label'}</label><br>
|
||||
<input name="label" type="text"><br>
|
||||
<label>$text{'dialog_recursive'}</label>
|
||||
<input id="chcon-recursive" type="checkbox" name="recursive">
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div id="downFromUrlDialog" class="modal">
|
||||
<form id="downFromUrlForm" action="http_download.cgi" method="post">
|
||||
<div class="form-group">
|
||||
@@ -109,7 +131,7 @@
|
||||
<td><input type="checkbox" name="group4" value="4" onchange="calc_chmod()"></td>
|
||||
<td><input type="checkbox" name="other4" value="4" onchange="calc_chmod()"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<tr>
|
||||
<td>$text{'chmod_write'}</td>
|
||||
<td><input type="checkbox" name="owner2" value="2" onchange="calc_chmod()"></td>
|
||||
<td><input type="checkbox" name="group2" value="2" onchange="calc_chmod()"></td>
|
||||
|
||||
@@ -19,6 +19,8 @@
|
||||
<a href="javascript:void(0)" onclick='compressDialog()' title="$text{'compress_selected'}"><img src='images/icons/quick/compress.png' alt="$text{'compress_selected'}" /></a>
|
||||
<a href="javascript:void(0)" onclick='chmodDialog()' title="$text{'chmod_selected'}"><img src='images/icons/quick/chmod.png' alt="$text{'chmod_selected'}" /></a>
|
||||
<a href="javascript:void(0)" onclick='chownDialog()' title="$text{'chown_selected'}"><img src='images/icons/quick/chown.png' alt="$text{'chown_selected'}" /></a>
|
||||
<a href="javascript:void(0)" onclick='chattrDialog()' title="$text{'chattr_selected'}"><img src='images/icons/quick/chattr.png' alt="$text{'chattr_selected'}" /></a>
|
||||
<a href="javascript:void(0)" onclick='chconDialog()' title="$text{'chcon_selected'}"><img src='images/icons/quick/chcon.png' alt="$text{'chcon_selected'}" /></a>
|
||||
<a href="javascript:void(0)" onclick='removeSelected()' title="$text{'remove_selected'}"><img src='images/icons/quick/remove.png' alt="$text{'remove_selected'}" /></a>
|
||||
<a href="javascript:void(0)" onclick='viewReadyForUpload()' title="$text{'upload_files'}"><img src='images/icons/quick/upload.png' alt="$text{'upload_files'}" /></a>
|
||||
<a href="javascript:void(0)" onclick='downFromUrlDialog()' title="$text{'get_from_url'}"><img src='images/icons/quick/from-url.png' alt="$text{'get_from_url'}" /></a>
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
<a onclick='downFromUrlDialog()'>
|
||||
<i class="fa fa-globe" aria-hidden="true"></i> $text{'get_from_url'}
|
||||
</a>
|
||||
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -75,6 +75,16 @@
|
||||
<i class="fa fa-users" aria-hidden="true"></i> $text{'chown_selected'}
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a onclick='chattrDialog()'>
|
||||
<i class="fa fa-tags" aria-hidden="true"></i> $text{'chattr_selected'}
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a onclick='chconDialog()'>
|
||||
<i class="fa fa-shield" aria-hidden="true"></i> $text{'chcon_selected'}
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a onclick='compressDialog()'>
|
||||
<i class="fa fa-file-archive-o" aria-hidden="true"></i> $text{'compress_selected'}
|
||||
|
||||
@@ -46,6 +46,12 @@
|
||||
<button class="btn btn-inverse" onclick='chownDialog()' title="$text{'chown_selected'}" data-toggle="tooltip" data-placement="bottom" data-container="body">
|
||||
<i class="fa fa-users" aria-hidden="true"></i>
|
||||
</button>
|
||||
<button class="btn btn-inverse" onclick='chattrDialog()' title="$text{'chattr_selected'}" data-toggle="tooltip" data-placement="bottom" data-container="body">
|
||||
<i class="fa fa-tags" aria-hidden="true"></i>
|
||||
</button>
|
||||
<button class="btn btn-inverse" onclick='chconDialog()' title="$text{'chcon_selected'}" data-toggle="tooltip" data-placement="bottom" data-container="body">
|
||||
<i class="fa fa-shield" aria-hidden="true"></i>
|
||||
</button>
|
||||
<button class="btn btn-inverse" onclick='removeDialog()' title="$text{'remove_selected'}" data-toggle="tooltip" data-placement="bottom" data-container="body">
|
||||
<i class="fa fa-trash-o" aria-hidden="true"></i>
|
||||
</button>
|
||||
|
||||
@@ -40,6 +40,8 @@ index_noperiod=No hi ha m
|
||||
index_mins=minuts
|
||||
index_astart=No enviïs autorespostes abans de
|
||||
index_aend=No enviïs autorespostes després de
|
||||
index_forever=Sempre
|
||||
index_ondate=Data
|
||||
index_charset=Joc de caràcters del missatge d'autoresposta
|
||||
index_subject=Assumpte del missatge d'autoresposta
|
||||
index_nowebmin=Aquest mòdul és per utilitzar només a Usermin. Si està visible a Webmin, el tema que estàs utilitzant és incomplet.
|
||||
|
||||
@@ -20,3 +20,4 @@ desc_ms_MY=Tapis dan Mengirim Mel
|
||||
longdesc_de=Erstellt Regeln, Filtern und Weiterleiten von eingehende E-Mail.
|
||||
desc_pl=Filtry i przekierowanie e-maili
|
||||
longdesc_pl=Twórz regu³y filtrów i przekierowania przychodz±cych e-maili.
|
||||
longdesc_ca=Crea regles per filtrar i reenviar el correu d'entrada.
|
||||
|
||||
@@ -58,7 +58,7 @@ index_bootup=Activa'l en engegar
|
||||
index_bootupdesc=Canvia aquesta opció per controlar si el tallafocs s'ha d'activar en engegar el sistema o no.
|
||||
index_return=a la llista de regles
|
||||
index_setup=Encara no s'ha configurat cap tallafocs IPtables al sistema. Webmin te'n pot configurar un i desar-lo al fitxer $1, amb uns valors inicials basats en el tipus de tallafocs seleccionat més avall...
|
||||
/
|
||||
index_rsetup=La configuració del tallafocs IPtables del sistema està a punt de ser reiniciada. Webmin configurarà noves regles per defecteew default rules per a ser desade al fitxer $1, amb els paràmetres inicials basats en la teva selecció de tipus de tallafocs de sota...
|
||||
index_auto0=Permet tot el trànsit
|
||||
index_auto1=Executa traducció d'adreces de xarxa sobre la interfície externa:
|
||||
index_auto2=Bloqueja totes les connexions d'entrada sobre la interfície externa:
|
||||
|
||||
@@ -24,3 +24,4 @@ desc_ms_MY=Firewall Linux
|
||||
longdesc_de=Konfiguriert eine Linux-Firewall mit iptables. Ermöglicht die Bearbeitung aller Tabellen, Ketten, Regeln und Optionen.
|
||||
desc_pl=Firewall Linuksa
|
||||
longdesc_pl=Konfiguracja firewall linuksa u¿ywaj±c iptables. Pozwala na edycjê wszystkich tabel, regu³ i opcji.
|
||||
longdesc_ca=Configura un tallafocs Linux utilitzant iptables. Permet l'edició de totes les taules, cadenes, regles i opcions.
|
||||
|
||||
@@ -4,3 +4,4 @@ view_condition=1
|
||||
cluster_mode=1
|
||||
comment_mod=0
|
||||
force_init=0
|
||||
perpage=50
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
line0=Configurable options,11
|
||||
perpage=Number of rules to display per page,3,50
|
||||
view_condition=Display condition in rules list?,1,1-Yes,0-No
|
||||
view_comment=Display comment in rules list?,1,1-Yes,0-No
|
||||
comment_mod=Store comments as,1,0-# comments in save file,1---comment option
|
||||
|
||||
@@ -9,5 +9,5 @@ after_cmd=Ordre a executar despr
|
||||
before_apply_cmd=Ordre a executar abans d'aplicar la configuració,3,Cap
|
||||
after_apply_cmd=Ordre a executar després d'aplicar la configuració,3,Cap
|
||||
line1=Configuració del sistema,11
|
||||
save_file=Fitxer de desat ip6tables a editar,3,Utilitza el valor per defecte del sistema o de Webmin
|
||||
save_file=Fitxer de desat IPtables a editar,3,Utilitza el valor per defecte del sistema o de Webmin
|
||||
direct=Edita directament les regles del tallafocs enlloc del fitxer,1,1-Sí,0-No
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
line0=Konfigurierbare Optionen,11
|
||||
perpage=Anzahl der Regeln pro Seite zum anzeigen,3,50
|
||||
view_condition=Zeige Zustand in Regelliste?,1,1-Ja,0-Nein
|
||||
view_comment=Zeige Kommentare in Regelliste an?,1,1-Ja,0-Nein
|
||||
comment_mod=Speichere Kommentare als,1,0-# Kommentar in Datei speichern,1--- Kommentaroption
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user