mirror of
https://github.com/webmin/webmin.git
synced 2026-02-06 15:32:20 +00:00
Compare commits
91 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a6901947c2 | ||
|
|
8912154c0b | ||
|
|
6b34d179bb | ||
|
|
bb2f091a17 | ||
|
|
dfd337009f | ||
|
|
554cba6eba | ||
|
|
9d3e0e85ba | ||
|
|
7d670cc449 | ||
|
|
0cc0a893a2 | ||
|
|
b7190b1927 | ||
|
|
68890d8f2b | ||
|
|
03f4c9fd56 | ||
|
|
c813b1c068 | ||
|
|
aafb66e45c | ||
|
|
8f0d32b764 | ||
|
|
62bf3b6cd4 | ||
|
|
58a454dc23 | ||
|
|
5a74498b87 | ||
|
|
ac238e37d1 | ||
|
|
9e4269ebae | ||
|
|
dfb0db593d | ||
|
|
79e2bf69b4 | ||
|
|
c153fae3d8 | ||
|
|
c1105d0ac5 | ||
|
|
fdffa9ee42 | ||
|
|
cb008888bf | ||
|
|
86ce05ec3b | ||
|
|
a42fbc5bd0 | ||
|
|
441b9f1502 | ||
|
|
1e0100b424 | ||
|
|
288a377e71 | ||
|
|
12e2aecbda | ||
|
|
2d83ca6cdf | ||
|
|
f498f36bef | ||
|
|
2eb957fc04 | ||
|
|
9cff0de208 | ||
|
|
4b2ba48e58 | ||
|
|
d47ee41c32 | ||
|
|
22f3d49e5c | ||
|
|
a10dd02a49 | ||
|
|
52196635a3 | ||
|
|
59efd239ea | ||
|
|
1a1deef64a | ||
|
|
132ea695bc | ||
|
|
743d0d59ad | ||
|
|
7162dbaa8e | ||
|
|
c378e60ec7 | ||
|
|
9612e05536 | ||
|
|
f38442bbae | ||
|
|
cf0ddafbe0 | ||
|
|
1727c9917d | ||
|
|
18d16d7639 | ||
|
|
3d20f8c56e | ||
|
|
d4264be5fd | ||
|
|
6d553a10ad | ||
|
|
5f4180cf13 | ||
|
|
4aedfdb006 | ||
|
|
a3658ff653 | ||
|
|
d040242a7e | ||
|
|
019e5e15e6 | ||
|
|
2a8797c49c | ||
|
|
ab1095e529 | ||
|
|
30168f57bb | ||
|
|
0a2eb1d520 | ||
|
|
ec4f05ec5f | ||
|
|
7a9b4d0b2b | ||
|
|
b7b6624ee8 | ||
|
|
f455c24054 | ||
|
|
ee94c220da | ||
|
|
615f97f47e | ||
|
|
1ef26769b6 | ||
|
|
04ed6406e7 | ||
|
|
882dcb7384 | ||
|
|
f29f13f817 | ||
|
|
0a8abc529b | ||
|
|
72e2faa5b6 | ||
|
|
8291e1c98d | ||
|
|
df3fa20d6f | ||
|
|
4f532659b3 | ||
|
|
e1f086944d | ||
|
|
a13bce59e3 | ||
|
|
ad46361cb0 | ||
|
|
fd5f09a816 | ||
|
|
c38570cb9d | ||
|
|
324732d948 | ||
|
|
78c5892c6a | ||
|
|
a1e74e6659 | ||
|
|
4caa56aa80 | ||
|
|
95c494d9fc | ||
|
|
2dd92dc2b7 | ||
|
|
f5580c4046 |
@@ -217,3 +217,7 @@ More German translation updates, thanks to Raymond Vetter.
|
||||
Norwegian updates, thanks to Stein-Aksel Basma.
|
||||
The awesome new Authentic Theme by Ilia Rostovtsev is now included in the Webmin package.
|
||||
Catalan translation updates from Jaume Badiella.
|
||||
---- Changes since 1.740 ----
|
||||
Norwegian updates, thanks to Stein-Aksel Basma.
|
||||
Catalan translation updates from Jaume Badiella.
|
||||
More German translation updates, thanks to Raymond Vetter.
|
||||
|
||||
2
README
2
README
@@ -1,4 +1,4 @@
|
||||
Webmin Version 1.740
|
||||
Webmin Version 1.750
|
||||
--------------------
|
||||
Webmin is a web-based interface for system administration for Unix.
|
||||
Using any browser that supports tables and forms, you can setup user
|
||||
|
||||
@@ -35,6 +35,7 @@ edit_schedyes=S
|
||||
edit_mods=Mòduls a copiar
|
||||
edit_dest=Destinació de la còpia
|
||||
edit_mods2=Mòduls a restaurar
|
||||
edit_other2=Altres fitxers a restaurar
|
||||
edit_dest2=Restaura de
|
||||
edit_what=Inclou en la còpia
|
||||
edit_webmin=Fitxers de configuració dels mòduls Webmin
|
||||
@@ -83,6 +84,7 @@ backup_failed=... ha fallat! $1
|
||||
backup_done=... completa. La mida final de la còpia és de $1 i conté $2 fitxers.
|
||||
|
||||
restore_err=La restauració ha fallat
|
||||
restore_emods=No has seleccionat cap mòdul ni cap altre fitxer
|
||||
restore_title=Configuració de Restauració
|
||||
restore_doing=S'està començant la restauració dels fitxers de configuració de mòduls de $1...
|
||||
restore_testing=S'està extraient el contingut de la còpia de $1...
|
||||
|
||||
@@ -43,6 +43,7 @@ edit_mods=Moduler som skal sikkerhetskopieres
|
||||
edit_mods2=Moduler som skal gjenopprettes
|
||||
edit_nofiles=Tjener konfigurasjonsfiler
|
||||
edit_other=Andre listede filer ..
|
||||
edit_other2=Andre filer å gjenopprette
|
||||
edit_post=Post-sikkerhetskopi kommando
|
||||
edit_pre=Pre-sikkerhetskopi kommando
|
||||
edit_return=backup skjema
|
||||
@@ -99,6 +100,7 @@ nice_upload=lastet opp fil
|
||||
restore_doing=Starter gjenoppretting av modulkonfigurasjonsfiler fra $1 ..
|
||||
restore_done=.. fullført. $1 filer ble gjenopprettet.
|
||||
restore_done2=.. filer i sikkerhetskopien er :
|
||||
restore_emods=Ingen moduler eller andre filer valgt
|
||||
restore_err=Gjenoppretting feilet
|
||||
restore_failed=.. feilet! $1
|
||||
restore_testing=Pakker ut innhold av sikkerhetskopi fra $1 ..
|
||||
|
||||
@@ -294,7 +294,10 @@ edit_espfinclude='$1' no
|
||||
edit_espfredirect='$1' no és un nom de domini alternatiu vàlid
|
||||
edit_espfexp='$1' és un nom de registre vàlid per a un missatge de rebuig
|
||||
edit_ensec3value2=Hi falfa el nombre d'iteracions o bé no és numèric
|
||||
edit_ensec3value2=Hi falta la sal o bé no és base64
|
||||
edit_ensec3value3=Hi falta la sal no base64 o bé és incorrecta
|
||||
edit_edmarcpct=El percentatge de missatges ha de ser un enter entre 0 i 100
|
||||
edit_edmarcrua=Hi falta l'adreça de la informació agregada
|
||||
edit_edmarcruf=Hi falta l'adreça de la informació forense
|
||||
|
||||
text_title=Edició del Fitxer de Registres
|
||||
text_title2=Visualització del Fitxer de Registres
|
||||
@@ -374,6 +377,7 @@ type_HINFO=Informaci
|
||||
type_NSEC3PARAM=Paràmetres DNSSEC
|
||||
type_TXT=Text
|
||||
type_SPF=Remitent Permès des de
|
||||
type_DMARC=DMARC
|
||||
type_WKS=Servei Conegut (WKS)
|
||||
type_RP=Persona Responsable
|
||||
type_PTR=Adreça Inversa
|
||||
@@ -390,6 +394,7 @@ edit_MX=Servidor de Correu
|
||||
edit_HINFO=Informació del Host
|
||||
edit_TXT=Text
|
||||
edit_SPF=Remitent Permès des de
|
||||
edit_DMARC=DMARC
|
||||
edit_WKS=Servei Conegut (WKS)
|
||||
edit_RP=Persona Responsable
|
||||
edit_PTR=Adreça Inversa
|
||||
@@ -407,6 +412,7 @@ recs_MX=Servidor de Correu
|
||||
recs_HINFO=Informació del Host
|
||||
recs_TXT=Text
|
||||
recs_SPF=Remitent Permès des de
|
||||
recs_DMARC=DMARC
|
||||
recs_WKS=Servei Conegut (WKS)
|
||||
recs_RP=Persona Responsable
|
||||
recs_PTR=Adreça Inversa
|
||||
@@ -442,6 +448,7 @@ value_KEY2=Protocol
|
||||
value_KEY3=Algoritme
|
||||
value_KEY4=Dades de la clau
|
||||
value_SPF1=Especificació SPF
|
||||
value_DMARC1=Especificació DMARC
|
||||
value_NSEC3PARAM1=Algoritme de hash
|
||||
value_NSEC3PARAM2=Banderes NSEC3
|
||||
value_NSEC3PARAM3=Nombre d'iteracions del hash
|
||||
@@ -468,6 +475,18 @@ value_spfredirect=Utilitza un registre SPF d'un domini alternatiu
|
||||
value_spfnoredirect=Utilitza el registre d'aquest domini
|
||||
value_spfexp=Registre TXT pel al motiu del rebuig
|
||||
value_spfnoexp=Cap
|
||||
value_dmarcnone=No prenguis cap acció
|
||||
value_dmarcquar=Posa el coreu en quarantena
|
||||
value_dmarcreject=Rebutja el correu
|
||||
value_dmarcp=Política per als correus que no passen SPF o DKIM
|
||||
value_dmarcpct=Percentatge de missatges a aplicar-hi la política
|
||||
value_dmarcrua=Envia la informació agregada a
|
||||
value_dmarcruf=Envia la informació forense a
|
||||
value_dmarcsp=Política dels subdominis
|
||||
value_dmarcnop=Igual que aquest domini
|
||||
value_dmarcaspf=Requereix alineació SPF estricta
|
||||
value_dmarcadkim=Requereix alineació DKIM estricta
|
||||
value_dmarcnor=No ho enviïs
|
||||
|
||||
warn=Avisa
|
||||
fail=Falla
|
||||
@@ -805,6 +824,9 @@ log_dnssec=S'ha canviat la resignatura de la clau
|
||||
|
||||
convert_err=No s'ha pogut convertir la zona
|
||||
convert_efile=Cal especificar un fitxer de registres abans de poder convertir una zona esclava a una de mestra.
|
||||
convert_efilesize=El fitxer de resistres $1 no existeix o bé està buit
|
||||
convert_ebinary=L'ordre necessària per convertir una zona esclava binària a format text mestre no està instal·lada
|
||||
convert_ecompile=La conversió de format binari a text ha fallat: $1
|
||||
|
||||
whois_title=Informació WHOIS
|
||||
whois_header=Resultat de l'ordre $1...
|
||||
@@ -864,9 +886,9 @@ vdelete_move=Despla
|
||||
gen_title=Generadors de Registres
|
||||
gen_desc=Aquesta pàgina permet definir generadors, cadascun dels quals crearà múltiples registres en aquesta zona utilitzant un comptador incremental. Això pot ser útil per a delegar parts de la zona inversa a un altre servidor.
|
||||
gen_range=Abast
|
||||
gen_name=Patró d'adreça
|
||||
gen_name=Patró del nom de registre
|
||||
gen_type=Tipus
|
||||
gen_value=Patró de nom de host
|
||||
gen_value=Patró del valor de registre
|
||||
gen_cmt=Comentari
|
||||
gen_skip=cada
|
||||
gen_show=Mostra els registres generats
|
||||
|
||||
@@ -749,6 +749,7 @@ local $rvword;
|
||||
while(@rv) {
|
||||
my $w = shift(@rv);
|
||||
if (length($rvword)+length($w)+1 >= 255) {
|
||||
$rvword .= " ";
|
||||
push(@rvwords, $rvword);
|
||||
$rvword = "";
|
||||
}
|
||||
|
||||
@@ -4,7 +4,6 @@ category=cluster
|
||||
desc_ca=Motor de Configuració
|
||||
desc_es=Motor de Configuración
|
||||
desc_de=Konfigurations-Automat
|
||||
longdesc=Configure the CFengine program, for checking and maintaining various system-administration settings.
|
||||
desc_fr=Moteur de configuration
|
||||
os_support=!windows
|
||||
desc_sv=Konfigurations Motor
|
||||
@@ -12,6 +11,5 @@ desc_cz=Konfigura
|
||||
desc_nl=Configuratie Engine
|
||||
desc_cz.UTF-8=KonfiguraÄ<61>nà stroj
|
||||
desc_pl=Konfiguracja silnika
|
||||
longdesc_ms_MY=Konfigurasi program CFengine, untuk memeriksa dan mengekalkan tetapan sistem pentadbiran pelbagai
|
||||
desc_ms_MY=Enjin Konfigurasi
|
||||
desc_no=Konfigurasjonsmotor
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
index_title=Canvi d'Idioma i Tema
|
||||
index_lang=Idioma de la interfície d'usuari de Webmin
|
||||
index_langglobal=Idioma global ($1)
|
||||
index_langglobal=Idioma global ... $1 ($2)
|
||||
index_langset=Tria personal...
|
||||
index_theme=Tema de la interfície d'usuari de Webmin
|
||||
index_overlay=Capa del tema
|
||||
|
||||
@@ -20,7 +20,7 @@ index_dlang=språket modulene vises i
|
||||
index_dpass=passordet brukt til å logge inn på
|
||||
index_dtheme=temaet som kontrollerer Webmins utseende
|
||||
index_lang=Webmin UI språk
|
||||
index_langglobal=Globalt språk ($1)
|
||||
index_langglobal2=Globalt språk .. $1 ($2)
|
||||
index_langset=Personlig valg
|
||||
index_ok=Lagre endringer
|
||||
index_overlay=Tema overstyring
|
||||
|
||||
@@ -65,6 +65,7 @@ foreach $m (@ARGV) {
|
||||
$flags = !-r $file ? "chf" : "rhf";
|
||||
system("cd /tmp/create-module && find . -name .svn | xargs rm -rf");
|
||||
system("cd /tmp/create-module && find . -name '*~' -o -name '*.rej' -o -name '*.orig' -o -name '.*.swp' | xargs rm -rf");
|
||||
system("cd /tmp/create-module && find . -name RELEASE -o -name RELEASE.sh | xargs rm -rf");
|
||||
unlink("/tmp/create-module/$subdir/IDEAS");
|
||||
system("cd /tmp/create-module && find . -name \\*.svn-work | xargs rm -rf");
|
||||
system("cd /tmp/create-module && find . -name \\*.svn-base | xargs rm -rf");
|
||||
|
||||
@@ -1407,8 +1407,8 @@ sub extract_input
|
||||
local ($cmd) = @_;
|
||||
$cmd =~ s/\\%/\0/g;
|
||||
local ($cmd, $input) = split(/\%/, $cmd, 2);
|
||||
$cmd =~ s/\0/%/g;
|
||||
$input =~ s/\0/%/g;
|
||||
$cmd =~ s/\0/\\%/g;
|
||||
$input =~ s/\0/\\%/g;
|
||||
return ($cmd, $input);
|
||||
}
|
||||
|
||||
|
||||
@@ -79,6 +79,8 @@ else {
|
||||
&convert_range($job);
|
||||
$rangeable = 1;
|
||||
($command, $input) = &extract_input($job->{'command'});
|
||||
$command =~ s/\\%/%/g;
|
||||
$input =~ s/\\%/%/g;
|
||||
@lines = split(/%/, $input);
|
||||
print &ui_table_row($text{'edit_command'},
|
||||
&ui_textbox("cmd", $command, 60));
|
||||
|
||||
@@ -122,6 +122,8 @@ foreach $u (@ulist) {
|
||||
local $max = $config{'max_len'} || 10000;
|
||||
local ($cmd, $input) =
|
||||
&extract_input($job->{'command'});
|
||||
$cmd =~ s/\\%/%/g;
|
||||
$input =~ s/\\%/%/g;
|
||||
$cmd = length($cmd) > $max ?
|
||||
&html_escape(substr($cmd, 0, $max))." ..." :
|
||||
$cmd !~ /\S/ ? "BLANK" : &html_escape($cmd);
|
||||
|
||||
@@ -72,9 +72,10 @@ if ($st[7] != $config{'dhcpd_size'} || $st[9] != $config{'dhcpd_mtime'}) {
|
||||
|
||||
# Create lookup type HTML
|
||||
# XXX change text, add to lookup_*
|
||||
$matches = ui_select("match", undef, [ [0,$text{'index_match0'},"selected"],
|
||||
[1,$text{'index_match1'},""],
|
||||
[2,$text{'index_match2'},""] ]);
|
||||
$matches = ui_select("match", $config{'match_default'} || 0,
|
||||
[ [0, $text{'index_match0'} ],
|
||||
[1, $text{'index_match1'} ],
|
||||
[2, $text{'index_match2'} ] ]);
|
||||
|
||||
# get top-level hosts
|
||||
foreach $h (&find("host", $conf)) {
|
||||
|
||||
@@ -80,6 +80,10 @@ else {
|
||||
if ($in{'hardware'} =~ /^([0-9a-f]{2})([0-9a-f]{2}).([0-9a-f]{2})([0-9a-f]{2}).([0-9a-f]{2})([0-9a-f]{2}).([0-9a-f]{2})([0-9a-f]{2})$/i) {
|
||||
$in{'hardware'} = "$1:$2:$3:$4:$5:$6";
|
||||
}
|
||||
# Handle an Ethernet address with no formatting at all
|
||||
if ($in{'hardware'} =~ /^([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i) {
|
||||
$in{'hardware'} = "$1:$2:$3:$4:$5:$6";
|
||||
}
|
||||
$in{'hardware'} =~ /^([0-9a-f]{1,2}:)*[0-9a-f]{1,2}$/i ||
|
||||
&error(&text('shost_invalidhwa', $in{'hardware'},
|
||||
$in{'hardware_type'}) );
|
||||
|
||||
@@ -18,7 +18,6 @@ desc_ja_JP.euc=BIND 4 DNS
|
||||
depends=bind8
|
||||
desc_ru_RU=BIND 4 DNS Ñåðâåð
|
||||
desc_ca=Servidor DNS BIND 4
|
||||
longdesc=Create and edit domains and DNS records.
|
||||
desc_zh_TW.UTF-8=BIND 4 DNS 伺æœ<C3A6>器
|
||||
desc_zh_CN.UTF-8=BIND 4 DNS æœ<C3A6>务器
|
||||
desc_ja_JP.UTF-8=BIND 4 DNS サーãƒ<C3A3>
|
||||
|
||||
@@ -42,13 +42,13 @@ else {
|
||||
# Regexp to match
|
||||
my $fail = &find_value("failregex", $def);
|
||||
print &ui_table_row($text{'filter_fail'},
|
||||
&ui_textarea("fail", $fail, 5, 80, "hard")."<br>\n".
|
||||
&ui_textarea("fail", $fail, 5, 80, "off")."<br>\n".
|
||||
$text{'filter_desc'});
|
||||
|
||||
# Regexp to not match
|
||||
my $ignore = &find_value("ignoreregex", $def);
|
||||
print &ui_table_row($text{'filter_ignore'},
|
||||
&ui_textarea("ignore", $ignore, 5, 80, "hard"));
|
||||
&ui_textarea("ignore", $ignore, 5, 80, "off"));
|
||||
|
||||
print &ui_table_end();
|
||||
if ($in{'new'}) {
|
||||
|
||||
@@ -116,6 +116,7 @@ my @rv;
|
||||
while(<$fh>) {
|
||||
s/\r|\n//g;
|
||||
s/^\s*#.*$//;
|
||||
s/^\s;.*$//;
|
||||
if (/^\[([^\]]+)\]/) {
|
||||
# Start of a section
|
||||
$sect = { 'name' => $1,
|
||||
|
||||
@@ -74,7 +74,6 @@ else {
|
||||
push(@opts, split(/\s+/, $in{"others_$i"}));
|
||||
push(@actions, $in{"action_$i"}."[".join(", ", @opts)."]");
|
||||
}
|
||||
@actions || &error($text{'jail_eactions'});
|
||||
|
||||
# Split and validate log file paths
|
||||
my @logpaths = split(/\r?\n/, $in{'logpath'});
|
||||
@@ -110,7 +109,8 @@ else {
|
||||
# Save directives within the section
|
||||
&save_directive("enabled", $in{'enabled'} ? 'true' : 'false', $jail);
|
||||
&save_directive("filter", $in{'filter'}, $jail);
|
||||
&save_directive("action", join("\n", @actions), $jail);
|
||||
&save_directive("action", @actions ? join("\n", @actions)
|
||||
: undef, $jail);
|
||||
&save_directive("logpath", join("\n", @logpaths), $jail);
|
||||
foreach my $f ("maxretry", "findtime", "bantime") {
|
||||
&save_directive($f, $in{$f."_def"} ? undef : $in{$f}, $jail);
|
||||
|
||||
@@ -87,6 +87,7 @@ else {
|
||||
$ucount > $config{'max_users'});
|
||||
}
|
||||
endpwent() if ($gconfig{'os_type'} ne 'hpux');
|
||||
@users = sort { $a->[1]->[0] cmp $b->[1]->[0] } @users;
|
||||
if (!@users) {
|
||||
# None found
|
||||
print "<br><b>$text{'index_none'}</b><p>\n";
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
virtualmin_spam=Camí complet del programa de consulta de spam d'usuaris de Virtualmin,3,No està instal·lat,40
|
||||
virtualmin_config=Camí complet del directori de configuració de Virtualmin,3,No instal·lat
|
||||
virtualmin_config=Camí complet del directori de configuracio de Virtualmin,3,No instal·lat
|
||||
virtualmin_spam=Camí complet del programa de consulta d'usuaris de spam de Virtualmin,3,No instal·lat,40
|
||||
warn_procmail=Mostra un avís si Procmail no està instal·lat,1,1-Sí,0-No
|
||||
forward_procmail=Crea fitxer .forward per executar procmail,1,1-Sí,0-No
|
||||
alias_files=Camí complet dels fitxers d'àlies globals,9,40,3,\t
|
||||
|
||||
@@ -155,7 +155,7 @@ if (($table->{'name'} eq 'nat' && $rule->{'chain'} ne 'PREROUTING' &&
|
||||
&can_jump("SNAT")) {
|
||||
if ($rule->{'j'}->[1] eq 'SNAT') {
|
||||
if ($rule->{'to-source'}->[1] =~
|
||||
/^([0-9\.]+)(\-([0-9\.]+))?(:(\d+)(\-(\d+))?)?$/) {
|
||||
/^([0-9\.]+)?(\-([0-9\.]+))?(:(\d+)(\-(\d+))?)?$/) {
|
||||
$sipfrom = $1;
|
||||
$sipto = $3;
|
||||
$spfrom = $5;
|
||||
|
||||
@@ -23,6 +23,7 @@ apply_err=Fehlgeschlagen die Konfiguration anzuwenden
|
||||
apply_remote=Fehler von $1 : $2
|
||||
bootup_ecannot=Es ist Ihnen nicht erlaubt die Firewall beim Booten zu aktivieren oder zu deaktivieren
|
||||
clear_ecannot=Es ist Ihnen nicht erlaubt die Regeln zu leeren
|
||||
clear_rusure=Sind Sie sicher, dass Sie alle $2 Regeln von Kette $1 löschen möchten?
|
||||
clear_title=Regeln leeren
|
||||
cluster_add=Füge Server hinzu
|
||||
cluster_delete=Ausgewähltes löschen
|
||||
@@ -36,6 +37,7 @@ cluster_return=Cluster Server
|
||||
cluster_title=Cluster Firewall Server
|
||||
delete_ecannot=Es ist Ihnen nicht erlaubt die Regeln zu löschen
|
||||
delete_ok=Lösche jetzt
|
||||
delete_rusure=Sind Sie sicher, dass Sie die Kette $1 löschen möchten? $2 Regeln werden in ihr gelöscht.
|
||||
delete_title=Lösche Regel
|
||||
desc_always=Immer
|
||||
desc_and=und
|
||||
@@ -170,6 +172,7 @@ index_auto5=Blockiere alles ausgenommen Ports die für virtuelles Hosting be
|
||||
index_bootup=Aktiviere beim Booten
|
||||
index_bootupdesc=Ändert die Option, um zu kontrollieren, ob Ihre Firewall beim Booten aktiviert ist oder nicht.
|
||||
index_cclear=Lösche alle Regeln
|
||||
index_cdelete=Lösche Kette
|
||||
index_cdeletesel=Lösches ausgewähltes
|
||||
index_chain=Regel $1
|
||||
index_chain_forward=Weitergeleitete Pakete (FORWARD) - Gilt nur für Pakete, die dieser Host weitergeleitet hat
|
||||
@@ -182,6 +185,7 @@ index_cluster=Cluster Server
|
||||
index_clusterdesc=Klicken Sie auf diese Schaltfläche, um zusätzliche Webmin-Server einzurichten, mit denen die Firewall-Konfiguration automatisch kopiert werden.
|
||||
index_cmovesel=Verschiebe ausgewählte
|
||||
index_comm=Kommentar
|
||||
index_crename=Benenne Kette um
|
||||
index_desc=Bedingung
|
||||
index_ecommand=Der Befehl $1 wurde nicht auf Ihrem System gefunden. Webmin benötigt diesen Befehl um IPtables zu konfigurieren.
|
||||
index_editing=Regel Datei $1
|
||||
@@ -199,6 +203,7 @@ index_jump_masquerade=Maskieren
|
||||
index_jump_queue=<font color=#0000ff>Userspace</font>
|
||||
index_jump_redirect=Leite um
|
||||
index_jump_reject=<font color=#ff4400>Zurückweisen</font>
|
||||
index_jump_return=Beende Kette
|
||||
index_jump_snat=Quell NAT
|
||||
index_move=Verschieben
|
||||
index_policy=Setze Standard-Aktion auf:
|
||||
@@ -227,17 +232,24 @@ log_bootdown=Firewall beim Booten deaktiviert
|
||||
log_bootup=Firewall beim Booten aktiviert
|
||||
log_convert=Bestehende Firewall konvertiert
|
||||
log_openports=Firewallports $1 geöffnet
|
||||
log_rename_chain=Kette $1 in Tabelle $2 umbenannt
|
||||
log_setup=Firewall eingerichtet
|
||||
log_unapply=Konfiguration zurückgesetzt
|
||||
move_chain=Aktuelle Änderung
|
||||
move_count=Regeln ausgewählt
|
||||
move_dest=Ziel-Kette
|
||||
move_header=Regel Verschiebe-Optionen
|
||||
move_ok=Verschiebe jetzt
|
||||
move_title=Verschiebe Regeln
|
||||
new_ecannot=Es ist Ihnen nicht erlaubt Ketten zu erstellen
|
||||
new_ename=Fehlender oder ungültiger Ketten-Name
|
||||
new_err=Fehlgeschlagen eine Regel zu erstellen
|
||||
new_etaken=Eine Regeln mit diesem Namen existiert bereits
|
||||
redhat_einstalled=Kein <tt>iptables</tt> Systemstart Aktion wurde festgestellt, was darauf hinweist, dass das IPtables-Paket nicht auf Ihrem System installiert ist.
|
||||
redhat_eoutput=Ein Fehler ist beim Abrufen des IPtables Status von dem Befehl $1 aufgetreten. Dies ist wahrscheinlich darauf zurückzuführen, dass Ihr System so konfiguriert wurde, IPchains anstelle von IPtables zu benutzen.
|
||||
rename_chain=Aktueller Name
|
||||
rename_count=Regel in Kette
|
||||
rename_ecannot=Es ist Ihnen nicht erlaubt Ketten umzubenennen
|
||||
rename_name=Neuer Name
|
||||
rename_none=Nichts
|
||||
rename_ok=Umbenenne jetzt
|
||||
|
||||
@@ -116,7 +116,8 @@ else {
|
||||
if ($table->{'name'} eq 'nat' && $rule->{'chain'} ne 'PREROUTING' &&
|
||||
$rule->{'chain'} ne 'OUTPUT') {
|
||||
if ($rule->{'j'}->[1] eq 'SNAT' && !$in{'snatdef'}) {
|
||||
&check_ipaddress($in{'sipfrom'}) ||
|
||||
(!$in{'sipfrom'} && !$in{'sipto'}) ||
|
||||
&check_ipaddress($in{'sipfrom'}) ||
|
||||
&error($text{'save_esipfrom'});
|
||||
!$in{'sipto'} || &check_ipaddress($in{'sipto'}) ||
|
||||
&error($text{'save_esipto'});
|
||||
@@ -406,9 +407,13 @@ else {
|
||||
|
||||
sub check_ipmask
|
||||
{
|
||||
return &to_ipaddress($_[0]) ||
|
||||
$_[0] =~ /^([0-9\.]+)\/([0-9\.]+)$/ &&
|
||||
&to_ipaddress("$1") &&
|
||||
(&check_ipaddress("$2") || ($2 =~ /^\d+$/ && $2 <= 32));
|
||||
foreach my $w (split(/,/, $_[0])) {
|
||||
my $ok = &to_ipaddress($w) ||
|
||||
$w =~ /^([0-9\.]+)\/([0-9\.]+)$/ &&
|
||||
&to_ipaddress("$1") &&
|
||||
(&check_ipaddress("$2") || ($2 =~ /^\d+$/ && $2 <= 32));
|
||||
return 0 if (!$ok);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
desc=Frox FTP Proxy
|
||||
category=servers
|
||||
os_support=*-linux freebsd
|
||||
longdesc=Configure Frox, a transparent proxy for FTP clients.
|
||||
desc_de=Frox FTP-Proxyserver
|
||||
desc_ca=Proxy FTP Frox
|
||||
desc_es=Frox - Proxy FTP
|
||||
@@ -10,4 +9,3 @@ desc_nl=Frox FTP Proxy-server
|
||||
desc_cz.UTF-8=Frox FTP-Proxy server
|
||||
desc_no=Frox FTP proxy tjener
|
||||
desc_ms_MY=Proksi FTP Frox
|
||||
longdesc_ms_MY=Mengkonfigurasi Frox, proksi telus untuk klien FTP.
|
||||
|
||||
@@ -2,9 +2,8 @@
|
||||
|
||||
This can either be the path to a file to which the backup will be written,
|
||||
the path to a tape drive device (like <tt>/dev/st0</tt>), or a file or device
|
||||
on a remote host. For backups to a remote host to work, it must support the
|
||||
<tt>rsh</tt> protocol, which is not usually turned on by default for security
|
||||
reasons. <p>
|
||||
on a remote host. Backups to a remote system are done via the SSH protocol,
|
||||
or optionally the older insecure RSH protocol. <p>
|
||||
|
||||
<hr>
|
||||
|
||||
|
||||
@@ -3,8 +3,7 @@
|
||||
By default, the <tt>dump</tt> command will use the <tt>rsh</tt> command and
|
||||
protocol to backup to other servers. However, this field can be used to select
|
||||
a different command such as <tt>ssh</tt>, which is more secure and more
|
||||
commonly used. SSH will only work if the <tt>root</tt> user's SSH configuration
|
||||
allows passwordless logins from this system to the remote server. <p>
|
||||
commonly used. <p>
|
||||
|
||||
On Linux and BSD systems, you can also select the <tt>FTP</tt> option, which will
|
||||
use Webmin's built-in FTP client program to transfer the backup to or from
|
||||
|
||||
@@ -117,7 +117,7 @@ edit_header=$1 Dateisystemsicherungsdetails
|
||||
edit_header2=Backup-Zeitplan
|
||||
edit_header3=Backup-Optionen
|
||||
edit_restore=Wiederherstellung
|
||||
edit_return=dump
|
||||
edit_return=Sicherung
|
||||
edit_savenow=Speichern und jetzt sichern
|
||||
edit_special=Backup-Zeitplan
|
||||
edit_subject=Betreff der E-Mail
|
||||
|
||||
@@ -123,7 +123,7 @@ edit_enabled_yes=Enabled, at times chosen below..
|
||||
edit_enabled_af=Enabled, after:
|
||||
edit_savenow=Save and Backup Now
|
||||
edit_createnow=Create and Backup Now
|
||||
edit_return=dump
|
||||
edit_return=backup
|
||||
edit_email=Email scheduled output to
|
||||
edit_subject=Email message subject
|
||||
edit_restore=Restore ..
|
||||
|
||||
@@ -22,3 +22,5 @@ Updated the API used by other modules to allow new actions to be created on MacO
|
||||
Converted commands in the module's API file to POD format, and added more details about each function.
|
||||
---- Changes since 1.540 ----
|
||||
Added support for the Upstart boot system, seen on Ubuntu 10 and later.
|
||||
---- Changes since 1.740 ----
|
||||
Added support for Launchd, as seen on newer MacOS X systems.
|
||||
|
||||
@@ -126,6 +126,11 @@ elsif ($init_mode eq "rc" || $init_mode eq "upstart" ||
|
||||
{ 'fork' => 1,
|
||||
'pidfile' => $var_directory."/miniserv.pid" });
|
||||
}
|
||||
elsif ($init_mode eq "launchd") {
|
||||
# Create launchd script
|
||||
&create_launchd_agent(&launchd_name($product),
|
||||
"$config_directory/start --nofork", 1);
|
||||
}
|
||||
|
||||
$config{'atboot_product'} = $product;
|
||||
&save_module_config();
|
||||
|
||||
77
init/edit_launchd.cgi
Executable file
77
init/edit_launchd.cgi
Executable file
@@ -0,0 +1,77 @@
|
||||
#!/usr/local/bin/perl
|
||||
# Show a form for creating or editing a launchd agent
|
||||
|
||||
require './init-lib.pl';
|
||||
$access{'bootup'} || &error($text{'edit_ecannot'});
|
||||
&ReadParse();
|
||||
|
||||
if ($in{'new'}) {
|
||||
&ui_print_header(undef, $text{'launchd_title1'}, "");
|
||||
$u = { };
|
||||
}
|
||||
else {
|
||||
&ui_print_header(undef, $text{'launchd_title2'}, "");
|
||||
@systemds = &list_launchd_agents();
|
||||
($u) = grep { $_->{'name'} eq $in{'name'} } @systemds;
|
||||
$u || &error($text{'launchd_egone'});
|
||||
}
|
||||
|
||||
print &ui_form_start("save_launchd.cgi", "post");
|
||||
print &ui_hidden("new", $in{'new'});
|
||||
print &ui_hidden("name", $in{'name'}) if (!$in{'new'});
|
||||
print &ui_table_start($text{'launchd_header'}, undef, 2);
|
||||
|
||||
if ($in{'new'}) {
|
||||
# Service name
|
||||
print &ui_table_row($text{'launchd_name'},
|
||||
&ui_textbox("name", undef, 30));
|
||||
|
||||
# Server command and args
|
||||
print &ui_table_row($text{'launchd_start'},
|
||||
&ui_textarea("atstart", undef, 5, 80));
|
||||
|
||||
# Start at boot?
|
||||
print &ui_table_row($text{'upstart_boot'},
|
||||
&ui_yesno_radio("boot", 1));
|
||||
}
|
||||
else {
|
||||
# Service name (non-editable)
|
||||
print &ui_table_row($text{'launchd_name'},
|
||||
"<tt>$in{'name'}</tt>");
|
||||
|
||||
# Config file location
|
||||
print &ui_table_row($text{'launchd_file'},
|
||||
$u->{'file'} ? "<tt>$u->{'file'}</tt>"
|
||||
: "<i>$text{'launchd_nofile'}</i>");
|
||||
|
||||
if ($u->{'file'}) {
|
||||
# Config file contents
|
||||
$conf = &read_file_contents($u->{'file'});
|
||||
print &ui_table_row($text{'launchd_conf'},
|
||||
&ui_textarea("conf", $conf, 20, 80));
|
||||
}
|
||||
|
||||
# Current status
|
||||
print &ui_table_row($text{'launchd_status'},
|
||||
$u->{'status'} && $u->{'pid'} ?
|
||||
&text('systemd_status1', $u->{'pid'}) :
|
||||
$u->{'status'} ?
|
||||
$text{'systemd_status2'} :
|
||||
$text{'systemd_status0'});
|
||||
}
|
||||
|
||||
print &ui_table_end();
|
||||
if ($in{'new'}) {
|
||||
print &ui_form_end([ [ undef, $text{'create'} ] ]);
|
||||
}
|
||||
else {
|
||||
print &ui_form_end([ [ undef, $text{'save'} ],
|
||||
[ 'start', $text{'edit_startnow'} ],
|
||||
[ 'restart', $text{'edit_restartnow'} ],
|
||||
[ 'stop', $text{'edit_stopnow'} ],
|
||||
[ 'reload', $text{'edit_reloadnow2'} ],
|
||||
[ 'delete', $text{'delete'} ] ]);
|
||||
}
|
||||
|
||||
&ui_print_footer("", $text{'index_return'});
|
||||
|
||||
@@ -379,6 +379,41 @@ elsif ($init_mode eq "systemd" && $access{'bootup'}) {
|
||||
]);
|
||||
|
||||
}
|
||||
elsif ($init_mode eq "launchd" && $access{'bootup'}) {
|
||||
# Show launchd agents
|
||||
print &ui_form_start("mass_launchd.cgi", "post");
|
||||
@links = ( &select_all_link("d"),
|
||||
&select_invert_link("d"),
|
||||
&ui_link("edit_launchd.cgi?new=1", $text{'index_ladd'}) );
|
||||
print &ui_links_row(\@links);
|
||||
print &ui_columns_start([ "", $text{'index_lname'},
|
||||
$text{'index_uboot'},
|
||||
$text{'index_ustatus'}, ]);
|
||||
foreach $u (&list_launchd_agents()) {
|
||||
$l = "edit_launchd.cgi?name=".&urlize($u->{'name'});
|
||||
print &ui_columns_row([
|
||||
&ui_checkbox("d", $u->{'name'}, undef),
|
||||
&ui_link($l, $u->{'name'}),
|
||||
$u->{'boot'} ? $text{'yes'} :
|
||||
"<font color=#ff0000>$text{'no'}</font>",
|
||||
$u->{'status'} ? $text{'yes'} :
|
||||
"<font color=#ff0000>$text{'no'}</font>",
|
||||
]);
|
||||
}
|
||||
print &ui_columns_end();
|
||||
print &ui_links_row(\@links);
|
||||
print &ui_form_end([ [ "start", $text{'index_start'} ],
|
||||
[ "stop", $text{'index_stop'} ],
|
||||
[ "restart", $text{'index_restart'} ],
|
||||
undef,
|
||||
[ "addboot", $text{'index_addboot'} ],
|
||||
[ "delboot", $text{'index_delboot'} ],
|
||||
undef,
|
||||
[ "addboot_start", $text{'index_addboot_start'} ],
|
||||
[ "delboot_stop", $text{'index_delboot_stop'} ],
|
||||
]);
|
||||
|
||||
}
|
||||
|
||||
# reboot/shutdown buttons
|
||||
print &ui_hr();
|
||||
|
||||
256
init/init-lib.pl
256
init/init-lib.pl
@@ -28,7 +28,9 @@ use WebminCore;
|
||||
|
||||
This variable is set based on the bootup system in use. Possible values are :
|
||||
|
||||
=item osx - MacOSX hostconfig files
|
||||
=item osx - MacOSX hostconfig files, for older versions
|
||||
|
||||
=item launchd - MacOS Launchd, for newer versions
|
||||
|
||||
=item rc - FreeBSD 6+ RC files
|
||||
|
||||
@@ -38,14 +40,17 @@ This variable is set based on the bootup system in use. Possible values are :
|
||||
|
||||
=item win32 - Windows services
|
||||
|
||||
=item upstart - Upstart, seend on Ubuntu 11
|
||||
=item upstart - Upstart, seen on Ubuntu 11
|
||||
|
||||
=item systemd - SystemD, as seen on Fedora 16
|
||||
=item systemd - SystemD, seen on Fedora 16
|
||||
|
||||
=cut
|
||||
if ($config{'init_mode'}) {
|
||||
$init_mode = $config{'init_mode'};
|
||||
}
|
||||
elsif (&has_command("launchd")) {
|
||||
$init_mode = "launchd";
|
||||
}
|
||||
elsif ($config{'hostconfig'}) {
|
||||
$init_mode = "osx";
|
||||
}
|
||||
@@ -507,12 +512,13 @@ such as init.d, OSX and FreeBSD.
|
||||
=cut
|
||||
sub action_status
|
||||
{
|
||||
my ($name) = @_;
|
||||
if ($init_mode eq "upstart") {
|
||||
# Check upstart service status
|
||||
local $out = &backquote_command("initctl status ".
|
||||
quotemeta($_[0])." 2>&1");
|
||||
quotemeta($name)." 2>&1");
|
||||
if (!$?) {
|
||||
my $cfile = "/etc/init/$_[0].conf";
|
||||
my $cfile = "/etc/init/$name.conf";
|
||||
open(CONF, $cfile);
|
||||
while(<CONF>) {
|
||||
if (/^(#*)\s*start/) {
|
||||
@@ -525,7 +531,7 @@ if ($init_mode eq "upstart") {
|
||||
}
|
||||
elsif ($init_mode eq "systemd") {
|
||||
# Check systemd service status
|
||||
local $unit = $_[0];
|
||||
local $unit = $name;
|
||||
$unit .= ".service" if ($unit !~ /\.service$/);
|
||||
local $out = &backquote_command("systemctl show ".
|
||||
quotemeta($unit)." 2>&1");
|
||||
@@ -541,7 +547,7 @@ if ($init_mode eq "init" || $init_mode eq "upstart" ||
|
||||
local ($a, $exists, $starting, %daemon);
|
||||
foreach $a (&list_actions()) {
|
||||
local @a = split(/\s+/, $a);
|
||||
if ($a[0] eq $_[0]) {
|
||||
if ($a[0] eq $name) {
|
||||
$exists++;
|
||||
local @boot = &get_inittab_runlevel();
|
||||
foreach $s (&action_levels("S", $a[0])) {
|
||||
@@ -551,14 +557,14 @@ if ($init_mode eq "init" || $init_mode eq "upstart" ||
|
||||
}
|
||||
}
|
||||
if ($starting && $config{'daemons_dir'} &&
|
||||
&read_env_file("$config{'daemons_dir'}/$_[0]", \%daemon)) {
|
||||
&read_env_file("$config{'daemons_dir'}/$name", \%daemon)) {
|
||||
$starting = lc($daemon{'ONBOOT'}) eq 'yes' ? 1 : 0;
|
||||
}
|
||||
return !$exists ? 0 : $starting ? 2 : 1;
|
||||
}
|
||||
elsif ($init_mode eq "local") {
|
||||
# Look for entry in rc.local
|
||||
local $fn = "$module_config_directory/$_[0].sh";
|
||||
local $fn = "$module_config_directory/$name.sh";
|
||||
local $cmd = "$fn start";
|
||||
open(LOCAL, $config{'local_script'});
|
||||
while(<LOCAL>) {
|
||||
@@ -570,25 +576,31 @@ elsif ($init_mode eq "local") {
|
||||
}
|
||||
elsif ($init_mode eq "win32") {
|
||||
# Look for a win32 service, enabled at boot
|
||||
local ($svc) = &list_win32_services($_[0]);
|
||||
local ($svc) = &list_win32_services($name);
|
||||
return !$svc ? 0 :
|
||||
$svc->{'boot'} == 2 ? 2 : 1;
|
||||
}
|
||||
elsif ($init_mode eq "rc") {
|
||||
# Look for an RC script
|
||||
local @rcs = &list_rc_scripts();
|
||||
local ($rc) = grep { $_->{'name'} eq $_[0] } @rcs;
|
||||
local ($rc) = grep { $_->{'name'} eq $name } @rcs;
|
||||
return !$rc ? 0 :
|
||||
$rc->{'enabled'} ? 2 : 1;
|
||||
}
|
||||
elsif ($init_mode eq "osx") {
|
||||
# Look for a hostconfig entry
|
||||
local $ucname = uc($_[0]);
|
||||
local $ucname = uc($name);
|
||||
local %hc;
|
||||
&read_env_file($config{'hostconfig'}, \%hc);
|
||||
return $hc{$ucname} eq '-YES-' ? 2 :
|
||||
$hc{$ucname} eq '-NO-' ? 1 : 0;
|
||||
}
|
||||
elsif ($init_mode eq "launchd") {
|
||||
local @agents = &list_launchd_agents();
|
||||
local ($agent) = grep { $_->{'name'} eq &launchd_name($name) } @agents;
|
||||
return !$agent ? 0 :
|
||||
$agent->{'boot'} ? 2 : 1;
|
||||
}
|
||||
}
|
||||
|
||||
=head2 enable_at_boot(action, description, startcode, stopcode, statuscode, &opts)
|
||||
@@ -970,6 +982,31 @@ elsif ($init_mode eq "osx") {
|
||||
&write_env_file($config{'hostconfig'}, \%hc);
|
||||
&unlock_file($config{'hostconfig'});
|
||||
}
|
||||
elsif ($init_mode eq "launchd") {
|
||||
# Create and if necessary enable a launchd agent
|
||||
my $name = &launchd_name($_[0]);
|
||||
my @agents = &list_launchd_agents();
|
||||
my ($agent) = grep { $_->{'name'} eq $name } @agents;
|
||||
if (!$agent) {
|
||||
# Need to create script
|
||||
&create_launchd_agent($name, $_[1], 1);
|
||||
}
|
||||
else {
|
||||
# Just enable at boot
|
||||
my $out = &read_file_contents($agent->{'file'});
|
||||
if ($out =~ /<key>RunAtLoad<\/key>/i) {
|
||||
# Just fix setting
|
||||
$out =~ s/<key>RunAtLoad<\/key>\s*<(true|false)\/>/<key>RunAtLoad<\/key>\n<true\/>/;
|
||||
}
|
||||
else {
|
||||
# Defaults to false, so need to add before </plist>
|
||||
$out =~ s/<\/plist>/<key>RunAtLoad<\/key>\n<true\/>\n<\/plist>/;
|
||||
}
|
||||
&open_lock_tempfile(PLIST, ">$agent->{'file'}");
|
||||
&print_tempfile(PLIST, $out);
|
||||
&close_tempfile(PLIST);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
=head2 disable_at_boot(action)
|
||||
@@ -981,6 +1018,7 @@ touched, so it can be re-enabled with the enable_at_boot function.
|
||||
=cut
|
||||
sub disable_at_boot
|
||||
{
|
||||
my ($name) = @_;
|
||||
local $st = &action_status($_[0]);
|
||||
return if ($st != 2); # not currently starting
|
||||
local $unit = $_[0];
|
||||
@@ -1102,6 +1140,18 @@ elsif ($init_mode eq "osx") {
|
||||
}
|
||||
&unlock_file($config{'hostconfig'});
|
||||
}
|
||||
elsif ($init_mode eq "launchd") {
|
||||
# Adjust plist file to not run at boot
|
||||
my @agents = &list_launchd_agents();
|
||||
my ($a) = grep { $_->{'name'} eq &launchd_name($name) } @agents;
|
||||
if ($a && $a->{'file'}) {
|
||||
my $out = &read_file_contents($a->{'file'});
|
||||
$out =~ s/<key>RunAtLoad<\/key>\s*<(true|false)\/>/<key>RunAtLoad<\/key>\n<false\/>/;
|
||||
&open_lock_tempfile(PLIST, ">$a->{'file'}");
|
||||
&print_tempfile(PLIST, $out);
|
||||
&close_tempfile(PLIST);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
=head2 delete_at_boot(name)
|
||||
@@ -1122,6 +1172,10 @@ elsif ($mode eq "upstart") {
|
||||
# Delete upstart service
|
||||
&delete_upstart_service($name);
|
||||
}
|
||||
elsif ($mode eq "launchd") {
|
||||
# Delete launchd service
|
||||
&delete_launchd_agent(&launchd_name($name));
|
||||
}
|
||||
elsif ($mode eq "init") {
|
||||
# Delete init script links and init.d file
|
||||
foreach my $a (&action_levels('S', $name)) {
|
||||
@@ -1204,6 +1258,10 @@ elsif ($action_mode eq "systemd") {
|
||||
# Start systemd service
|
||||
return &start_systemd_service($name);
|
||||
}
|
||||
elsif ($action_mode eq "launchd") {
|
||||
# Start launchd service
|
||||
return &start_launchd_agent(&launchd_name($name));
|
||||
}
|
||||
else {
|
||||
return (0, "Bootup mode $action_mode not supported");
|
||||
}
|
||||
@@ -1248,6 +1306,10 @@ elsif ($action_mode eq "systemd") {
|
||||
# Stop systemd service
|
||||
return &stop_systemd_service($name);
|
||||
}
|
||||
elsif ($action_mode eq "launchd") {
|
||||
# Stop launchd service
|
||||
return &stop_launchd_agent(&launchd_name($name));
|
||||
}
|
||||
else {
|
||||
return (0, "Bootup mode $action_mode not supported");
|
||||
}
|
||||
@@ -1302,7 +1364,13 @@ elsif ($action_mode eq "upstart") {
|
||||
elsif ($action_mode eq "systemd") {
|
||||
# Check with systemd if it is running
|
||||
my @systemds = &list_systemd_services();
|
||||
my ($u) = grep { $_->{'name'} eq $name } @systemds;
|
||||
my ($u) = grep { $_->{'name'} eq $name ||
|
||||
$_->{'name'} eq $name.".service" } @systemds;
|
||||
return !$u ? -1 : $u->{'status'} ? 1 : 0;
|
||||
}
|
||||
elsif ($action_mode eq "launchd") {
|
||||
my @agents = &list_launchd_agents();
|
||||
my ($a) = grep { $_->{'name'} eq &launchd_name($name) } @agents;
|
||||
return !$u ? -1 : $u->{'status'} ? 1 : 0;
|
||||
}
|
||||
else {
|
||||
@@ -1934,6 +2002,7 @@ sub list_systemd_services
|
||||
my $out = &backquote_command("systemctl list-units --full --all");
|
||||
&error("Failed to list systemd units : $out") if ($?);
|
||||
foreach my $l (split(/\r?\n/, $out)) {
|
||||
$l =~ s/^[^a-z0-9\-\_\.]+//i;
|
||||
my ($unit, $loaded, $active, $sub, $desc) = split(/\s+/, $l, 5);
|
||||
my $a = $unit;
|
||||
$a =~ s/\.service$//;
|
||||
@@ -2191,9 +2260,12 @@ sub shutdown_system
|
||||
&system_logged("$config{'shutdown_command'} >$null_file 2>$null_file");
|
||||
}
|
||||
|
||||
# get_action_args(filename)
|
||||
# Returns the args that this action script appears to support, like stop, start
|
||||
# and status.
|
||||
=head2 get_action_args(filename)
|
||||
|
||||
Returns the args that this action script appears to support, like stop, start
|
||||
and status.
|
||||
|
||||
=cut
|
||||
sub get_action_args
|
||||
{
|
||||
my ($file) = @_;
|
||||
@@ -2208,9 +2280,12 @@ close(FILE);
|
||||
return \%hasarg;
|
||||
}
|
||||
|
||||
# action_running(filename)
|
||||
# Assuming some init.d action supports the status parameter, returns a 1 if
|
||||
# running, 0 if not, or -1 if unknown
|
||||
=head2 action_running(filename)
|
||||
|
||||
Assuming some init.d action supports the status parameter, returns a 1 if
|
||||
running, 0 if not, or -1 if unknown
|
||||
|
||||
=cut
|
||||
sub action_running
|
||||
{
|
||||
my ($file) = @_;
|
||||
@@ -2233,4 +2308,147 @@ elsif ($out =~ /stopped/i) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
=head2 list_launchd_agents()
|
||||
|
||||
Returns an array of hash refs, each of which is a launchd daemon/agent
|
||||
|
||||
=cut
|
||||
sub list_launchd_agents
|
||||
{
|
||||
my @rv;
|
||||
|
||||
# Get the initial list of actions
|
||||
my $out = &backquote_command("launchctl list");
|
||||
&error("Failed to list launchd agents : $out") if ($?);
|
||||
foreach my $l (split(/\r?\n/, $out)) {
|
||||
next if ($l =~ /^PID/); # Header line
|
||||
my ($pid, $status, $label) = split(/\s+/, $l);
|
||||
next if ($label =~ /^0x/); # Not really a launchd job
|
||||
next if ($label =~ /\.peruser\./); # Skip user-owned actions
|
||||
push(@rv, { 'name' => $label,
|
||||
'status' => $pid eq "-" ? 0 : 1,
|
||||
'pid' => $pid eq "-" ? undef : $pid, });
|
||||
}
|
||||
|
||||
# Build map from plist files to agents
|
||||
my @dirs = ("/Library/LaunchAgents",
|
||||
"/Library/LaunchDaemons",
|
||||
"/System/Library/LaunchAgents",
|
||||
"/System/Library/LaunchDaemons");
|
||||
my (%pmap, %runatload);
|
||||
foreach my $dir (@dirs) {
|
||||
foreach my $file (glob("$dir/*.plist")) {
|
||||
my $plist = &read_file_contents($file);
|
||||
if ($plist =~ /<key>Label<\/key>\s*<string>([^<]+)/i) {
|
||||
$pmap{$1} = $file;
|
||||
}
|
||||
if ($plist =~ /<key>RunAtLoad<\/key>\s*<(true|false)\/>/i) {
|
||||
$runatload{$file} = $1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Get details on each one
|
||||
foreach my $a (@rv) {
|
||||
my $out = &backquote_command("launchctl list ".quotemeta($a->{'name'}));
|
||||
my %attrs;
|
||||
foreach my $l (split(/\r?\n/, $out)) {
|
||||
if ($l =~ /"(\S+)"\s*=\s*"([^"]*)";/ ||
|
||||
$l =~ /"(\S+)"\s*=\s*(\S+);/) {
|
||||
$attrs{lc($1)} = $2;
|
||||
}
|
||||
}
|
||||
$a->{'start'} = $attrs{'program'};
|
||||
$a->{'file'} = $pmap{$a->{'name'}};
|
||||
$a->{'boot'} = $runatload{$a->{'file'}} eq 'true';
|
||||
}
|
||||
|
||||
return @rv;
|
||||
}
|
||||
|
||||
=head2 create_launchd_agent(name, start-script, boot-flag)
|
||||
|
||||
Creates a new local launchd agent
|
||||
|
||||
=cut
|
||||
sub create_launchd_agent
|
||||
{
|
||||
my ($name, $start, $boot) = @_;
|
||||
my $file = "/Library/LaunchDaemons/".$name.".plist";
|
||||
my $plist = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n".
|
||||
"<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n".
|
||||
"<plist version=\"1.0\">\n".
|
||||
"<dict>\n".
|
||||
"<key>Label</key>\n";
|
||||
$plist .= "<string>$name</string>\n";
|
||||
$plist .= "<key>ProgramArguments</key>\n";
|
||||
$plist .= "<array>\n";
|
||||
foreach my $a (&split_quoted_string($start)) {
|
||||
$plist .= "<string>$a</string>\n";
|
||||
}
|
||||
$plist .= "</array>\n";
|
||||
$plist .= "<key>RunAtLoad</key>\n";
|
||||
$plist .= ($boot ? "<true/>\n" : "<false/>\n");
|
||||
$plist .= "<key>KeepAlive</key>\n";
|
||||
$plist .= "<false/>\n";
|
||||
$plist .= "</dict>\n";
|
||||
$plist .= "</plist>\n";
|
||||
&open_lock_tempfile(PLIST, ">$file");
|
||||
&print_tempfile(PLIST, $plist);
|
||||
&close_tempfile(PLIST);
|
||||
my $out = &backquote_logged("launchctl load ".quotemeta($file)." 2>&1");
|
||||
&error("Failed to load plist : $out") if ($?);
|
||||
}
|
||||
|
||||
=head2 delete_launchd_agent(name)
|
||||
|
||||
Stop and remove the agent with some name
|
||||
|
||||
=cut
|
||||
sub delete_launchd_agent
|
||||
{
|
||||
my ($name) = @_;
|
||||
&system_logged("launchctl stop ".quotemeta($name)." 2>&1");
|
||||
&system_logged("launchctl remove ".quotemeta($name)." 2>&1");
|
||||
my ($a) = grep { $_->{'name'} eq $name } &list_launchd_agents();
|
||||
if ($a && $a->{'file'} && -f $a->{'file'}) {
|
||||
&system_logged("launchctl unload ".quotemeta($a->{'file'})." 2>&1");
|
||||
&unlink_logged($a->{'file'});
|
||||
}
|
||||
}
|
||||
|
||||
=head2 stop_launchd_agent(name)
|
||||
|
||||
Kill the launchd daemon with some name
|
||||
|
||||
=cut
|
||||
sub stop_launchd_agent
|
||||
{
|
||||
my ($name) = @_;
|
||||
my $out = &backquote_logged(
|
||||
"launchctl stop ".quotemeta($name)." 2>&1 </dev/null");
|
||||
return (!$?, $out);
|
||||
}
|
||||
|
||||
=head2 start_launchd_agent(name)
|
||||
|
||||
Startup the launchd daemon with some name
|
||||
|
||||
=cut
|
||||
sub start_launchd_agent
|
||||
{
|
||||
my ($name) = @_;
|
||||
my $out = &backquote_logged(
|
||||
"launchctl start ".quotemeta($name)." 2>&1 </dev/null");
|
||||
return (!$?, $out);
|
||||
}
|
||||
|
||||
# launchd_name(name)
|
||||
# If an action name isn't fully qualified, prepend com.webmin to it
|
||||
sub launchd_name
|
||||
{
|
||||
my ($name) = @_;
|
||||
return $name =~ /\./ ? $name : "com.webmin.".$name;
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
@@ -62,7 +62,9 @@ index_delboot_stop=Jetzt stoppen & zur Bootzeit deaktivieren
|
||||
index_desc=Beschreibung
|
||||
index_downscript=Gleichfalls wird das Skript $1, welches unten aufgeführt ist, beim Herunterfahren des Rechners ausgeführt. Sie können hier eigene Kommandos einfügen um beispielsweise sicher zu stellen, daß bestimmte Daemons oder Server sauber gestoppt werden.
|
||||
index_editconfig=Bearbeite die $1 Datei manuell
|
||||
index_ladd=Erstelle einen neuen launchd Agenten.
|
||||
index_levels=Starte in Runlevels
|
||||
index_lname=Agentname
|
||||
index_mode=Boot-System : $1
|
||||
index_order=Reihenfolge
|
||||
index_provides=bietet
|
||||
@@ -143,6 +145,7 @@ mass_ustarting=Starte Dienst $1 ..
|
||||
mass_ustop=Stoppe Dienste
|
||||
mass_ustopping=Stoppe Dienst $1 ..
|
||||
mode_init=SysV init
|
||||
mode_launchd=LaunchD
|
||||
mode_local=Single Boot Skript
|
||||
mode_osx=Mac OS X
|
||||
mode_rc=FreeBSD RC Skripte
|
||||
|
||||
25
init/lang/en
25
init/lang/en
@@ -50,6 +50,8 @@ index_ustatus=Running now?
|
||||
index_uadd=Create a new upstart service.
|
||||
index_sadd=Create a new systemd service.
|
||||
index_always=Always
|
||||
index_ladd=Create a new launchd agent.
|
||||
index_lname=Agent name
|
||||
|
||||
edit_title=Edit Action
|
||||
create_title=Create Action
|
||||
@@ -77,6 +79,7 @@ edit_stopat=Stop at
|
||||
edit_startnow=Start Now
|
||||
edit_stopnow=Stop Now
|
||||
edit_restartnow=Restart Now
|
||||
edit_reloadnow2=Re-Read Config File
|
||||
edit_condrestartnow=Restart If Needed
|
||||
edit_reloadnow=Reload Now
|
||||
edit_statusnow=Show Status
|
||||
@@ -187,6 +190,7 @@ mode_win32=Windows services
|
||||
mode_rc=FreeBSD RC scripts
|
||||
mode_upstart=Upstart
|
||||
mode_systemd=Systemd
|
||||
mode_launchd=LaunchD
|
||||
|
||||
upstart_title1=Create Upstart Service
|
||||
upstart_title2=Edit Upstart Service
|
||||
@@ -236,4 +240,25 @@ systemd_return=systemd service
|
||||
systemd_econf=No systemd configuration entered
|
||||
systemd_estart=Missing commands to run on startup
|
||||
|
||||
launchd_title1=Create Launchd Agent
|
||||
launchd_title2=Edit Launchd Agent
|
||||
launchd_egone=Agent no longer exists!
|
||||
launchd_header=Launchd service details
|
||||
launchd_name=Agent name
|
||||
launchd_file=Configuration file
|
||||
launchd_nofile=Not found!
|
||||
launchd_start=Server command
|
||||
launchd_conf=Launchd configuration
|
||||
launchd_boot=Start at boot time?
|
||||
launchd_status=Current status
|
||||
launchd_status0=Not running
|
||||
launchd_status1=Running with PID $1
|
||||
launchd_status2=Running
|
||||
launchd_err=Failed to save launchd agent
|
||||
launchd_ename=Missing or invalid-lookup launchd agent name
|
||||
launchd_eclash=An agent with the same name already exists
|
||||
launchd_return=launchd agent
|
||||
launchd_econf=No launchd configuration entered
|
||||
launchd_estart=Missing server command
|
||||
|
||||
__norefs=1
|
||||
|
||||
69
init/mass_launchd.cgi
Executable file
69
init/mass_launchd.cgi
Executable file
@@ -0,0 +1,69 @@
|
||||
#!/usr/local/bin/perl
|
||||
# Start or stop a bunch of launchd services
|
||||
|
||||
require './init-lib.pl';
|
||||
&ReadParse();
|
||||
@sel = split(/\0/, $in{'d'});
|
||||
@sel || &error($text{'mass_enone'});
|
||||
|
||||
$start = 1 if ($in{'start'} || $in{'addboot_start'});
|
||||
$stop = 1 if ($in{'stop'} || $in{'delboot_stop'});
|
||||
$restart = 1 if ($in{'restart'} || $in{'delboot_restart'});
|
||||
$enable = 1 if ($in{'addboot'} || $in{'addboot_start'});
|
||||
$disable = 1 if ($in{'delboot'} || $in{'delboot_stop'});
|
||||
|
||||
&ui_print_unbuffered_header(undef, $start || $enable ? $text{'mass_ustart'}
|
||||
: $text{'mass_ustop'}, "");
|
||||
|
||||
if ($start || $stop || $restart) {
|
||||
# Starting or stopping a bunch of services
|
||||
$access{'bootup'} || &error($text{'ss_ecannot'});
|
||||
foreach $s (@sel) {
|
||||
if ($start) {
|
||||
print &text('mass_ustarting', "<tt>$s</tt>"),"<p>\n";
|
||||
($ok, $out) = &start_action($s);
|
||||
}
|
||||
elsif ($stop) {
|
||||
print &text('mass_ustopping', "<tt>$s</tt>"),"<p>\n";
|
||||
($ok, $out) = &stop_action($s);
|
||||
}
|
||||
elsif ($restart) {
|
||||
print &text('mass_urestarting', "<tt>$s</tt>"),"<p>\n";
|
||||
($ok, $out) = &restart_action($s);
|
||||
}
|
||||
print "<pre>$out</pre>";
|
||||
if (!$ok) {
|
||||
print $text{'mass_failed'},"<p>\n";
|
||||
}
|
||||
else {
|
||||
print $text{'mass_ok'},"<p>\n";
|
||||
}
|
||||
}
|
||||
&webmin_log($start ? 'massstart' : $stop ? 'massstop' : 'massrestart',
|
||||
'launchd', join(" ", @sel));
|
||||
}
|
||||
|
||||
if ($enable || $disable) {
|
||||
# Enable or disable at boot
|
||||
$access{'bootup'} == 1 || &error($text{'edit_ecannot'});
|
||||
foreach $b (@sel) {
|
||||
if ($enable) {
|
||||
print &text('mass_uenable', "<tt>$b</tt>"),"<p>\n";
|
||||
&enable_at_boot($b);
|
||||
}
|
||||
else {
|
||||
print &text('mass_udisable', "<tt>$b</tt>"),"<p>\n";
|
||||
&disable_at_boot($b);
|
||||
}
|
||||
}
|
||||
&webmin_log($enable ? 'massenable' : 'massdisable', 'launchd',
|
||||
join(" ", @sel));
|
||||
}
|
||||
|
||||
if ($in{'return'}) {
|
||||
&ui_print_footer("edit_launchd.cgi?name=".&urlize($in{'return'}),
|
||||
$text{'launchd_return'});
|
||||
}
|
||||
else {
|
||||
&ui_print_footer("", $text{'index_return'});
|
||||
}
|
||||
59
init/save_launchd.cgi
Executable file
59
init/save_launchd.cgi
Executable file
@@ -0,0 +1,59 @@
|
||||
#!/usr/local/bin/perl
|
||||
# Create, update or delete a launchd service
|
||||
|
||||
require './init-lib.pl';
|
||||
&error_setup($text{'launchd_err'});
|
||||
$access{'bootup'} || &error($text{'edit_ecannot'});
|
||||
&ReadParse();
|
||||
@launchds = &list_launchd_agents();
|
||||
|
||||
# Get the service
|
||||
if (!$in{'new'}) {
|
||||
($u) = grep { $_->{'name'} eq $in{'name'} } @launchds;
|
||||
$u || &error($text{'launchd_egone'});
|
||||
}
|
||||
|
||||
if ($in{'start'} || $in{'stop'} || $in{'restart'}) {
|
||||
# Just redirect to the start page
|
||||
&redirect("mass_launchd.cgi?d=".&urlize($in{'name'})."&".
|
||||
($in{'start'} ? "start=1" :
|
||||
$in{'restart'} ? "restart=1" : "stop=1").
|
||||
"&return=".&urlize($in{'name'}));
|
||||
exit;
|
||||
}
|
||||
|
||||
if ($in{'delete'}) {
|
||||
# Delete the service
|
||||
&delete_launchd_agent($in{'name'});
|
||||
&webmin_log("delete", "launchd", $in{'name'});
|
||||
}
|
||||
elsif ($in{'reload'}) {
|
||||
# Re-load the service from its config file
|
||||
&system_logged("launchctl unload ".quotemeta($u->{'file'})." 2>&1");
|
||||
&system_logged("launchctl load ".quotemeta($u->{'file'})." 2>&1");
|
||||
&webmin_log("reload", "launchd", $in{'name'});
|
||||
}
|
||||
elsif ($in{'new'}) {
|
||||
# Validate inputs and check for clash
|
||||
$in{'name'} =~ /^[a-z0-9\.\_\-]+$/i ||
|
||||
&error($text{'launchd_ename'});
|
||||
($clash) = grep { $_->{'name'} eq $in{'name'} } @launchds;
|
||||
$clash && &error($text{'launchd_eclash'});
|
||||
$in{'atstart'} =~ /\S/ || &error($text{'launchd_estart'});
|
||||
|
||||
# Create the config file
|
||||
&create_launchd_agent($in{'name'}, $in{'atstart'}, $in{'boot'});
|
||||
|
||||
&webmin_log("create", "launchd", $in{'name'});
|
||||
}
|
||||
else {
|
||||
# Just save the config file
|
||||
$in{'conf'} =~ /\S/ || &error($text{'launchd_econf'});
|
||||
$in{'conf'} =~ s/\r//g;
|
||||
&open_lock_tempfile(CONF, ">$u->{'file'}");
|
||||
&print_tempfile(CONF, $in{'conf'});
|
||||
&close_tempfile(CONF);
|
||||
&webmin_log("modify", "launchd", $in{'name'});
|
||||
}
|
||||
&redirect("");
|
||||
|
||||
@@ -186,6 +186,11 @@ while(<FILE>) {
|
||||
$rule->{'proto'} = shift(@w);
|
||||
}
|
||||
|
||||
# Skip inet keyword, which as far as I know does nothing
|
||||
if ($w[0] eq "inet") {
|
||||
shift(@w);
|
||||
}
|
||||
|
||||
# Parse from/to section
|
||||
if ($w[0] eq "all") {
|
||||
shift(@w);
|
||||
|
||||
@@ -284,7 +284,7 @@ sub get_ipsec_version
|
||||
{
|
||||
local $out = `$config{'ipsec'} --version 2>&1`;
|
||||
${$_[0]} = $out;
|
||||
return $out =~ /(FreeS\/WAN|Openswan|StrongSWAN)\s+([^ \n\(]+)/i ? ($2,$1) : (undef);
|
||||
return $out =~ /(FreeS\/WAN|Openswan|StrongSWAN|Libreswan)\s+([^ \n\(]+)/i ? ($2,$1) : (undef);
|
||||
}
|
||||
|
||||
# got_secret()
|
||||
|
||||
8
lang/ca
8
lang/ca
@@ -123,10 +123,10 @@ help_eexec=$1 ha fallat: $2
|
||||
referer_title=Avís de Seguretat
|
||||
referer_warn=<b>Atenció!</b> Webmin ha detectat que el programa $2 és un enllaç a l'URL $1, que sembla ser que queda fora del servidor Webmin. Això pot ser un intent d'enganyar el servidor per tal que executi una ordre perillosa.
|
||||
referer_warn_unknown=<b>Atenció!</b> Webmin ha detectat que el programa $1 és un enllaç a un URL desconegut, que sembla ser que queda fora del servidor Webmin. Això pot ser un intent d'enganyar el servidor per tal que executi una ordre perillosa.
|
||||
referer_ok=Continua executant el programa Webmin
|
||||
referer_again=No tornis a mostrar aquest avís
|
||||
referer_eurl=URL original invàlid!
|
||||
referer_eself=referer_save.cgi no es pot enllaçar directament!
|
||||
referer_fix1=Si això és un enllaç legítim, pots permetre els enllaços des d'aquest URL tal i com segueix:<ul><li>Entra a Webmin normalment.<li>Ves al mòdul de <b>Configuració de Webmin</b>.<li>Fes clic a la icona de Referenciadors Fiables.<li>Introdueix el nom de host $1 al camp <b>Llocs Web fiables</b>, i fes clic a <b>Desa</b>.</ul>
|
||||
referer_fix2=Alternativament, pots configurar Webmin per que permeti aquest enllaç des de la línia d'ordres:<ul><li>Entra com a <tt>root</tt> i edita el fitxer <tt>/etc/webmin/config</tt>.<li>Afegeix-hi la línia <tt>referers=$1</tt> al final o, si ja existeix una línia <tt>referers</tt>, afegeix-hi <tt>$1</tt>.<li>Desa el fitxer.</ul>
|
||||
referer_fix3u=Assegura't que el teu navegador està configurat per enviar la informació del referenciador per tal que Webmin ho pugui verificar.
|
||||
referer_fix2u=Alternativament, pots configurar Webmin per permetre enllaços des de referenciadors desconeguts:<ul><li>Entra com a <tt>root</tt> i edita el fitxer <tt>/etc/webmin/config</tt>.<li>Busca la línia <tt>referers_none=1</tt> i canvia-la per <tt>referers_none=0</tt>.<li>Desa el fitxer.</ul>
|
||||
|
||||
session_header=Entrada a Webmin
|
||||
session_mesg=Per entrar al servidor Webmin de $1, has d'introduir un nom d'usuari i una contrasenya.
|
||||
|
||||
2
lang/no
2
lang/no
@@ -214,9 +214,9 @@ readparse_cdheader=Manglende Content-Disposition header
|
||||
readparse_enc=Forventet form-data tegnkoding, men mottok normal tegnkoding
|
||||
readparse_max=Data overskred maksimumsstørrelse på $1 bytes
|
||||
referer_fix1=Dersom dette er en gyldig lenke, kan du tillate lenker fra denne URLen på følgende måte:<ul><li>Logg inn på Webmin på vanlig måte.<li>Gå til <b>Webmin konfigurasjon</b> modulen.<li>Klikk på ikonet Betrodde referenter.<li>Skriv inn vertsnavnet $1 inn i feltet <b>Betrodde nettsteder</b>, og klikk <b>Lagre</b>.</ul>
|
||||
referer_fix1u=Dersom nettleseren din ikke sender den nødvendige <tt>Referer</tt> headeren, kan du slå av denne sjekken på følgende måte :<ul><li>Logg inn på Webmin på vanlig måte.<li>Gå til <b>Webmin konfigurasjon</b> modulen.<li>Klikk på ikonet Betrodde Referenter.<li>Kryss av i boksen <b>Stol på lenker fra ukjente referenter</b>, og klikk <b>Lagre</b>.</ul>
|
||||
referer_fix2=Alternativt kan du konfigurere Webmin til å tillate denne lenken fra kommandolinjen ved å:<ul><li>Logge inn som <tt>root</tt>, og redigere filen <tt>/etc/webmin/config</tt>.<li>Legg til linjen <tt>referers=$1</tt> på slutten, eller dersom en <tt>referers</tt> linje allerede finnes legger du til <tt>$1</tt> til den.<li>Lagre filen.</ul>
|
||||
referer_fix2u=Alternativt kan du konfigurere Webmin til å tillate lenker fra ukjente referenter ved å :<ul><li>Logge inn som <tt>root</tt>, og redigere filen <tt>/etc/webmin/config</tt>.<li>Finn linjen <tt>referers_none=1</tt> og endre den til <tt>referers_none=0</tt>.<li>Lagre filen.</ul>
|
||||
referer_fix3u=Forsikre deg om at nettleseren din er konfigurert til å sende referer-informasjon slik at den kan verifiseres av Webmin
|
||||
referer_title=Sikkerhetsadvarsel
|
||||
referer_warn=<b>Advarsel!</b> Webmin har oppdaget at URL $1 linken til programmet $2, ser ut til å vare utenfor Webmin serveren. Dette kan vare ett forsøk på å lure din server til å utføre ett farligt kommando.
|
||||
referer_warn_unknown=<b>Advarsel!</b> Webmin har oppdaget at programmet $1 ble lenket til fra en ukjent URL, som ser ut til å ligge utenfor Webmin serveren. Dette kan være ett forsøk på å lure din server til å utføre en farlig kommando.
|
||||
|
||||
@@ -15,3 +15,5 @@ Improved support for older versions of Net::LDAP without the hosts() function.
|
||||
If a TLS certificate and key are defined in the LDAP client configuration file, they will be used by Webmin when connecting to the LDAP database.
|
||||
---- Changes since 1.690 ----
|
||||
Added support for nslcd as seen on CentOS 6 and above.
|
||||
---- Changes since 1.740 ----
|
||||
Various fixes needed to support the new NSLCD LDAP client used by CentOS 7.
|
||||
|
||||
@@ -8,8 +8,24 @@ $conf = &get_config();
|
||||
print &ui_form_start("save_base.cgi", "post");
|
||||
print &ui_table_start($text{'base_header'}, "width=100%", 2);
|
||||
|
||||
@bases = &find_value("base", $conf);
|
||||
@scopes = &find_value("scope", $conf);
|
||||
@filters = &find_value("filter", $conf);
|
||||
|
||||
if (&get_ldap_client() eq "nss") {
|
||||
# Base is just one directive
|
||||
$base = $bases[0];
|
||||
$scope = $scopes[0];
|
||||
$filter = $filters[0];
|
||||
}
|
||||
else {
|
||||
# Default base, scope and filter are the ones with no DB
|
||||
($base) = grep { /^\S+$/ } @bases;
|
||||
($scope) = grep { /^\S+$/ } @scopes;
|
||||
($filter) = grep { /^\S+$/ } @filters;
|
||||
}
|
||||
print &ui_table_row($text{'base_base'},
|
||||
&ui_textbox("base", &find_svalue("base", $conf), 50)."\n".
|
||||
&ui_textbox("base", $base, 50)."\n".
|
||||
&base_chooser_button("base", 0));
|
||||
|
||||
$scopes = [ [ "", $text{'default'} ],
|
||||
@@ -17,7 +33,7 @@ $scopes = [ [ "", $text{'default'} ],
|
||||
[ "one", $text{'base_sone'} ],
|
||||
[ "base", $text{'base_sbase'} ] ];
|
||||
print &ui_table_row($text{'base_scope'},
|
||||
&ui_select("scope", &find_svalue("scope", $conf), $scopes));
|
||||
&ui_select("scope", $scope, $scopes));
|
||||
|
||||
print &ui_table_row($text{'base_timelimit'},
|
||||
&ui_opt_textbox("timelimit", &find_svalue("timelimit", $conf), 5,
|
||||
@@ -25,16 +41,29 @@ print &ui_table_row($text{'base_timelimit'},
|
||||
|
||||
$sp = " " x 5;
|
||||
foreach $b (@base_types) {
|
||||
local $base = &find_svalue("nss_base_".$b, $conf);
|
||||
local ($scope, $filter);
|
||||
if ($base =~ /^(.*)\?(.*)\?(.*)$/) {
|
||||
$base = $1;
|
||||
$scope = $2;
|
||||
$filter = $3;
|
||||
local ($base, $scope, $filter);
|
||||
if (&get_ldap_client() eq "nss") {
|
||||
# Older LDAP config uses directives like nss_base_passwd, with
|
||||
# the scope and filter separated by ?
|
||||
$base = &find_svalue("nss_base_".$b, $conf);
|
||||
if ($base =~ /^(.*)\?(.*)\?(.*)$/) {
|
||||
$base = $1;
|
||||
$scope = $2;
|
||||
$filter = $3;
|
||||
}
|
||||
elsif ($base =~ /^(.*)\?(.*)$/) {
|
||||
$base = $1;
|
||||
$scope = $2;
|
||||
}
|
||||
}
|
||||
elsif ($base =~ /^(.*)\?(.*)$/) {
|
||||
$base = $1;
|
||||
$scope = $2;
|
||||
else {
|
||||
# Newer LDAP config uses
|
||||
($base) = map { /^\S+\s+(\S+)/; $1 }
|
||||
grep { /^\Q$b\E\s/ } @bases;
|
||||
($scope) = map { /^\S+\s+(\S+)/; $1 }
|
||||
grep { /^\Q$b\E\s/ } @scopes;
|
||||
($filter) = map { /^\S+\s+(\S+)/; $1 }
|
||||
grep { /^\Q$b\E\s/ } @filters;
|
||||
}
|
||||
print &ui_table_row($text{'base_'.$b},
|
||||
&ui_opt_textbox("base_$b", $base, 50, $text{'base_global'})." ".
|
||||
|
||||
@@ -50,6 +50,8 @@ if ($config{'init_name'} &&
|
||||
($st = &init::action_status($config{'init_name'}))) {
|
||||
# Start or stop
|
||||
if (&init::status_action($config{'init_name'}) == 1) {
|
||||
print &ui_buttons_row("restart.cgi", $text{'index_restart'},
|
||||
$text{'index_restartdesc'});
|
||||
print &ui_buttons_row("stop.cgi", $text{'index_stop'},
|
||||
$text{'index_stopdesc'});
|
||||
}
|
||||
|
||||
@@ -1,24 +1,60 @@
|
||||
__norefs=1
|
||||
base_aliases=Basis für E-Mail-Aliase
|
||||
base_base=Globale Suchbasis
|
||||
base_bfilter=Suchfilter
|
||||
base_bscope=Suchtiefe
|
||||
base_ealiases=Fehlende Basis für E-Mail-Aliase
|
||||
base_ebase=Fehlende globale Suchbasis
|
||||
base_egroup=Fehlende Basis für Unix Gruppen
|
||||
base_ehosts=Fehlende Basis für Hostnamen
|
||||
base_enetgroup=Fehlende Basis für Netzgruppen
|
||||
base_enetmasks=Fehlende Basis für Netzwerknamen
|
||||
base_enetworks=Fehlende Basis für Netzwerknamen
|
||||
base_epasswd=Fehlende Basis für Unix Benutzer
|
||||
base_eprotocols=Fehlende Basis für Protokolle
|
||||
base_err=Fehlgeschlagen LDAP Suchbasen zu speichern
|
||||
base_eservices=Fehlende Basis für Netzwerkdienste
|
||||
base_eshadow=Fehlende Basis für Unix Passwörter
|
||||
base_etimelimit=Fehlende oder ungültige Suchfrist
|
||||
base_global=Globale Basis
|
||||
base_group=Basis für Unix Gruppen
|
||||
base_header=LDAP Verzeichnis Suchorte
|
||||
base_hosts=Basis für Hostnamen
|
||||
base_netgroup=Basis für Netzgruppen
|
||||
base_netmasks=Basis für Netzwerknamen
|
||||
base_networks=Basis für Netzwerknamen
|
||||
base_passwd=Basis für Unix Benutzer
|
||||
base_protocols=Basis für Protokolle
|
||||
base_sbase=Nur Basis
|
||||
base_scope=Suchtiefe
|
||||
base_secs=Sekunden
|
||||
base_services=Basis für Netzwerkdienste
|
||||
base_shadow=Basis für Unix Passwörter
|
||||
base_sone=Eine Level
|
||||
base_ssub=Kompletter Teilbaum
|
||||
base_timelimit=Such-Frist
|
||||
base_title=LDAP Such-Basen
|
||||
browser_attrs=Objektattribute
|
||||
browser_base=Browse:
|
||||
browser_econn=Der LDAP-Browser können nicht verwendet werden : $1
|
||||
browser_esearch=LDAP-Suche fehlgeschlagen : $1
|
||||
browser_none=Keine
|
||||
browser_ok=Zeigen
|
||||
browser_parent=Durchsuche Übergeordnetes
|
||||
browser_sel=OK
|
||||
browser_subs=Untergeordnete Objekte
|
||||
browser_title=LDAP Browser
|
||||
check_base=Finde LDAP Basis für Benutzer ..
|
||||
check_based=...Basis gefunden $1.
|
||||
check_connect=Verbinde zu LDAP Server ..
|
||||
check_connected=.. verbunden mit $1
|
||||
check_done=Ihr System wurde erfolgreich als LDAP-Client konfiguriert!
|
||||
check_ebase=.. keine Basis in Client Konfiguration gefunden!
|
||||
check_econnect=...Verbindung fehlgeschlagen : $1
|
||||
check_ematch=...Benutzer existiert nicht.
|
||||
check_enss=.. Dienst ist nicht eingestellt LDAP zu benutzen.
|
||||
check_esearch=...Suche fehlgeschlagen : $1
|
||||
check_eusers=.. keine Benutzer bei der Basis $1 gefunden.
|
||||
check_found=.. $1 Benutzer gefunden.
|
||||
check_match=Schaue nach Unix Benutzer $1 ..
|
||||
check_matched=.. Benutzer erfolgreich gefunden.
|
||||
@@ -85,9 +121,12 @@ index_atbootdesc=Ändert, ob der LDAP-Client Dämon beim Booten gestarte
|
||||
index_check=Überprüfe Konfiguration
|
||||
index_checkdesc=Klicken Sie auf diese Schaltfläche, um Webmin ver veranlassen Ihren LDAP-Server-Konfiguration zu validieren, indem sichergestellt wird, dass der Server kontaktiert werden kann und dass dieser Benutzer und Gruppen enthält.
|
||||
index_econf=Der NSS-LDAP-Konfigurationsdatei $1 wurde auf Ihrem System nicht gefunden. Vielleicht ist die LDAP-Client-Unterstützung nicht installiert, oder die <a href='$2'>Modulkonfiguration</a> ist falsch.
|
||||
index_fix=Behebe durch Linken von Dateien
|
||||
index_fixpam=<b>Warnung</b> - Webmin hat zwei separaten LDAP-Konfigurations-Dateien auf Ihrem System erkannt. NSS-LDAP ist konfiguriert $1 zu nutzen, während PAM-LDAP verwendet $2 nutzt. Dies kann Unstimmigkeiten zwischen den beiden Diensten führen.
|
||||
index_ignore=Zeige diese Nachricht nicht
|
||||
index_ldapmod=LDAP Client
|
||||
index_restart=LDAP Client Daemon neu gestartet
|
||||
index_restartdesc=Übernehme die aktuelle Konfiguration durch den Neustart des lokalen LDAP-Client-Daemons.
|
||||
index_return=Modul Index
|
||||
index_start=Starte LDAP Client Dämon
|
||||
index_startdesc=Startet den lokalen LDAP-Client Dämon herunter, welcher benötigt wird um den entfernten LDAP-Server abzufragen. Bis dieser gestartet ist können Benutzer und Gruppen in LDAP nicht zugreifen.
|
||||
@@ -103,9 +142,11 @@ ldap_emodule2=Das Perl-Modul $1, welche zum Kommunizieren mit dem LDAP-Server be
|
||||
ldap_eparse=Konnte nicht den LDAP-Server URI $1 analysieren
|
||||
ldap_etls=Fehlgeschlagen zum TLS-Modus zu wechseln : $1
|
||||
log_atboot=LDAP Client beim Booten aktiviert
|
||||
log_base=LDAP Such Basis modifiziert
|
||||
log_delboot=LDAP Client beim Booten deaktviert
|
||||
log_modify_switch=Ändere Dienst $1
|
||||
log_pam=Authentifizierungsoptionen geändert
|
||||
log_restart=LDAP Client Daemon neu gestartet
|
||||
log_server=LDAP Server Konfiguration modifiziert
|
||||
log_start=LDAP Client Dämon gestartet
|
||||
log_stop=LDAP Client Dämon gestoppt
|
||||
|
||||
@@ -10,6 +10,8 @@ index_stop=Stop LDAP Client Daemon
|
||||
index_stopdesc=Shut down the local LDAP client daemon, which is needed to query the remote LDAP server.
|
||||
index_start=Start LDAP Client Daemon
|
||||
index_startdesc=Start up the local LDAP client daemon, which is needed to query the remote LDAP server. Until it is started, users and groups in LDAP will not be accessible.
|
||||
index_restart=Restart LDAP Client Daemon
|
||||
index_restartdesc=Apply the current configuration by restarting the local LDAP client daemon.
|
||||
index_atboot=Start LDAP Client At Boot
|
||||
index_atbootdesc=Changes whether the LDAP client daemon is started when the system boots up or not.
|
||||
|
||||
@@ -212,6 +214,7 @@ log_atboot=Enabled LDAP client daemon at boot time
|
||||
log_delboot=Disabled LDAP client daemon at boot time
|
||||
log_start=Started LDAP client daemon
|
||||
log_stop=Stopped LDAP client daemon
|
||||
log_restart=Restarted LDAP client daemon
|
||||
|
||||
check_title=Validating LDAP Configuration
|
||||
check_base=Finding LDAP base for users ..
|
||||
|
||||
@@ -45,6 +45,7 @@ return \@get_config_cache;
|
||||
}
|
||||
|
||||
# find(name, &conf, disabled-mode)
|
||||
# Returns the directive objects with some name
|
||||
sub find
|
||||
{
|
||||
local ($name, $conf, $dis) = @_;
|
||||
@@ -60,7 +61,8 @@ elsif ($dis == 1) {
|
||||
return wantarray ? @rv : $rv[0];
|
||||
}
|
||||
|
||||
# find_value(name, &conf)
|
||||
# find_value(name, &conf, [disabled])
|
||||
# Finds the value or values of a directive
|
||||
sub find_value
|
||||
{
|
||||
local ($name, $conf, $dis) = @_;
|
||||
@@ -68,51 +70,61 @@ local @rv = map { $_->{'value'} } &find($name, $conf, $dis);
|
||||
return wantarray ? @rv : $rv[0];
|
||||
}
|
||||
|
||||
# find_svalue(name, &conf, [disabled])
|
||||
# Like find_value, but only returns a single value
|
||||
sub find_svalue
|
||||
{
|
||||
local $rv = &find_value(@_);
|
||||
return $rv;
|
||||
}
|
||||
|
||||
# save_directive(&conf, name, [value])
|
||||
# save_directive(&conf, name, [value|&values])
|
||||
# Update one or more directives with some name
|
||||
sub save_directive
|
||||
{
|
||||
local ($conf, $name, $value) = @_;
|
||||
local $old = &find($name, $conf);
|
||||
local $oldcmt = &find($name, $conf, 1);
|
||||
local ($conf, $name, $valuez) = @_;
|
||||
local @values = ref($valuez) ? @$valuez : ( $valuez );
|
||||
local @old = &find($name, $conf);
|
||||
local @oldcmt = &find($name, $conf, 1);
|
||||
local $deffile = &get_ldap_config_file();
|
||||
local $lref = &read_file_lines($old ? $old->{'file'} :
|
||||
$oldcmt ? $oldcmt->{'file'} :
|
||||
$deffile);
|
||||
if (defined($value) && $old) {
|
||||
# Just update value
|
||||
$old->{'value'} = $value;
|
||||
$lref->[$old->{'line'}] = "$name $value";
|
||||
}
|
||||
elsif (defined($value) && $oldcmt) {
|
||||
# Add value after commented version
|
||||
splice(@$lref, $oldcmt->{'line'}+1, 0, "$name $value");
|
||||
&renumber($conf, $oldcmt->{'line'}+1, $oldcmt->{'file'}, 1);
|
||||
push(@$conf, { 'name' => $name,
|
||||
'value' => $value,
|
||||
'enabled' => 1,
|
||||
'line' => $oldcmt->{'line'}+1,
|
||||
'file' => $oldcmt->{'file'} });
|
||||
}
|
||||
elsif (!defined($value) && $old) {
|
||||
# Delete current value
|
||||
splice(@$lref, $old->{'line'}, 1);
|
||||
&renumber($conf, $old->{'line'}, $old->{'file'}, -1);
|
||||
@$conf = grep { $_ ne $old } @$conf;
|
||||
}
|
||||
elsif ($value) {
|
||||
# Add value at end of file
|
||||
push(@$conf, { 'name' => $name,
|
||||
'value' => $value,
|
||||
'enabled' => 1,
|
||||
'line' => scalar(@$lref),
|
||||
'file' => $deffile });
|
||||
push(@$lref, "$name $value");
|
||||
|
||||
for(my $i=0; $i<@old || $i<@values; $i++) {
|
||||
local $old = $old[$i];
|
||||
local $oldcmt = $oldcmt[$i];
|
||||
local $value = $values[$i];
|
||||
local $lref = &read_file_lines($old ? $old->{'file'} :
|
||||
$oldcmt ? $oldcmt->{'file'} :
|
||||
$deffile);
|
||||
if (defined($value) && $old) {
|
||||
# Just update value
|
||||
$old->{'value'} = $value;
|
||||
$lref->[$old->{'line'}] = "$name $value";
|
||||
}
|
||||
elsif (defined($value) && $oldcmt) {
|
||||
# Add value after commented version
|
||||
splice(@$lref, $oldcmt->{'line'}+1, 0, "$name $value");
|
||||
&renumber($conf, $oldcmt->{'line'}+1, $oldcmt->{'file'}, 1);
|
||||
push(@$conf, { 'name' => $name,
|
||||
'value' => $value,
|
||||
'enabled' => 1,
|
||||
'line' => $oldcmt->{'line'}+1,
|
||||
'file' => $oldcmt->{'file'} });
|
||||
}
|
||||
elsif (!defined($value) && $old) {
|
||||
# Delete current value
|
||||
splice(@$lref, $old->{'line'}, 1);
|
||||
&renumber($conf, $old->{'line'}, $old->{'file'}, -1);
|
||||
@$conf = grep { $_ ne $old } @$conf;
|
||||
}
|
||||
elsif ($value) {
|
||||
# Add value at end of file
|
||||
push(@$conf, { 'name' => $name,
|
||||
'value' => $value,
|
||||
'enabled' => 1,
|
||||
'line' => scalar(@$lref),
|
||||
'file' => $deffile });
|
||||
push(@$lref, "$name $value");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -434,5 +446,12 @@ if ($changed) {
|
||||
&unlock_file($afile);
|
||||
}
|
||||
|
||||
# get_ldap_client()
|
||||
# Returns either "nss" or "nslcd" depending on the LDAP client being used
|
||||
sub get_ldap_client
|
||||
{
|
||||
return $config{'auth_ldap'} =~ /nslcd/ ? 'nslcd' : 'nss';
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
|
||||
15
ldap-client/restart.cgi
Executable file
15
ldap-client/restart.cgi
Executable file
@@ -0,0 +1,15 @@
|
||||
#!/usr/local/bin/perl
|
||||
# Re-start the LDAP client daemon
|
||||
|
||||
require './ldap-client-lib.pl';
|
||||
&error_setup($text{'start_err'});
|
||||
|
||||
&fix_ldap_authconfig();
|
||||
&foreign_require("init");
|
||||
&init::stop_action($config{'init_name'});
|
||||
($ok, $out) = &init::start_action($config{'init_name'});
|
||||
$ok || &error($out);
|
||||
|
||||
&webmin_log("restart");
|
||||
&redirect("");
|
||||
|
||||
@@ -10,10 +10,11 @@ $conf = &get_config();
|
||||
|
||||
# Validate and save inputs, starting with global base
|
||||
$in{'base'} =~ /\S/ || &error($text{'base_ebase'});
|
||||
&save_directive($conf, "base", $in{'base'});
|
||||
@bases = ( $in{'base'} );
|
||||
|
||||
# Save scope
|
||||
&save_directive($conf, "scope", $in{'scope'} || undef);
|
||||
@scopes = ( );
|
||||
push(@scopes, $in{'scope'}) if ($in{'scope'});
|
||||
|
||||
# Save time limit
|
||||
if ($in{'timelimit_def'}) {
|
||||
@@ -26,21 +27,50 @@ else {
|
||||
|
||||
# Save per-service bases
|
||||
foreach $b (@base_types) {
|
||||
local $base;
|
||||
if ($in{"base_".$b."_def"}) {
|
||||
&save_directive($conf, "nss_base_".$b, undef);
|
||||
$base = undef;
|
||||
}
|
||||
else {
|
||||
local $base = $in{"base_".$b};
|
||||
$base = $in{"base_".$b};
|
||||
$base =~ /\S/ || &error($text{'base_e'.$b});
|
||||
if ($in{'scope_'.$b}) {
|
||||
$base .= "?".$in{'scope_'.$b};
|
||||
if (&get_ldap_client() eq "nss") {
|
||||
# Scope is appended to the base
|
||||
$base .= "?".$in{'scope_'.$b};
|
||||
}
|
||||
else {
|
||||
# Scopes are saved separately
|
||||
push(@scopes, $b." ".$in{'scope_'.$b});
|
||||
}
|
||||
}
|
||||
if ($in{'filter_'.$b}) {
|
||||
$base .= "?" if ($in{'scope_'.$b});
|
||||
$file .= "?".$in{'filter_'.$b};
|
||||
if (&get_ldap_client() eq "nss") {
|
||||
# Filter is appended to the base
|
||||
$base .= "?" if ($in{'scope_'.$b});
|
||||
$file .= "?".$in{'filter_'.$b};
|
||||
}
|
||||
else {
|
||||
# Filters are saved separately
|
||||
push(@filters, $b." ".$in{'filter_'.$b});
|
||||
}
|
||||
}
|
||||
}
|
||||
if (&get_ldap_client() eq "nss") {
|
||||
# Update DB-specific directive
|
||||
&save_directive($conf, "nss_base_".$b, $base);
|
||||
}
|
||||
else {
|
||||
# Add to list of base directives to save
|
||||
push(@bases, $b." ".$base) if ($base);
|
||||
}
|
||||
}
|
||||
|
||||
# Save all base, scope and filter directives
|
||||
&save_directive($conf, "base", \@bases);
|
||||
&save_directive($conf, "scope", \@scopes);
|
||||
if (&get_ldap_client() eq "nslcd") {
|
||||
&save_directive($conf, "filter", \@filters);
|
||||
}
|
||||
|
||||
# Write out config
|
||||
|
||||
@@ -75,7 +75,7 @@ sub list_switch_sources
|
||||
if ($gconfig{'os_type'} =~ /-linux$/) {
|
||||
# All Linux variants
|
||||
return ( [ 'files', 'nisplus', 'nis', 'compat', 'dns', 'db',
|
||||
'hesiod', 'ldap' ],
|
||||
'hesiod', 'ldap', 'sss' ],
|
||||
{ 'dns' => [ 'hosts' ],
|
||||
'compat' => [ 'passwd', 'shadow', 'group' ] } );
|
||||
}
|
||||
|
||||
@@ -19,7 +19,6 @@ desc_hu=Linux BOOT be
|
||||
desc_ru_RU=Çàãðóç÷èê Linux (LILO)
|
||||
desc_ca=Configuració d'Engegada del Linux
|
||||
desc_cz=Konfigurace bootovani Linuxu
|
||||
longdesc=Edit kernels and partitions selectable at boot time with LILO.
|
||||
desc_sk=Konfigurácia ¹tartu
|
||||
desc_zh_TW.UTF-8=Linux 開機組態
|
||||
desc_zh_CN.UTF-8=Linux å<>¯åŠ¨ç®¡ç<C2A1>†
|
||||
@@ -32,5 +31,4 @@ desc_pl.UTF-8=Konfiguracja startu Linuksa
|
||||
desc_cz.UTF-8=Konfigurace bootovani Linuxu
|
||||
desc_sk.UTF-8=Konfigurácia štartu
|
||||
desc_no=Linux Oppstartskonfigurasjon
|
||||
longdesc_ms_MY=Sunting kernel dan partisyen yang dipilih pada masa boot dengan LILO.
|
||||
desc_ms_MY=Konfigurasi bootup Linux
|
||||
|
||||
@@ -1367,7 +1367,9 @@ local $hn = &get_system_hostname();
|
||||
local $fix_index;
|
||||
if (($src->{'type'} == 1 || $src->{'type'} == 3) && $dst->{'type'} == 1) {
|
||||
# Can just move mail files to Maildir names
|
||||
&switch_to_folder_user($dst);
|
||||
if ($src->{'user'} eq $dst->{'user'}) {
|
||||
&switch_to_folder_user($dst);
|
||||
}
|
||||
&create_folder_maildir($dst);
|
||||
local $dd = $dst->{'file'};
|
||||
foreach my $m (@_) {
|
||||
@@ -1375,12 +1377,16 @@ if (($src->{'type'} == 1 || $src->{'type'} == 3) && $dst->{'type'} == 1) {
|
||||
$now++;
|
||||
}
|
||||
&mailbox_fix_permissions($dst);
|
||||
&switch_from_folder_user($dst);
|
||||
if ($src->{'user'} eq $dst->{'user'}) {
|
||||
&switch_from_folder_user($dst);
|
||||
}
|
||||
$fix_index = 1;
|
||||
}
|
||||
elsif (($src->{'type'} == 1 || $src->{'type'} == 3) && $dst->{'type'} == 3) {
|
||||
# Can move and rename to MH numbering
|
||||
&switch_to_folder_user($dst);
|
||||
if ($src->{'user'} eq $dst->{'user'}) {
|
||||
&switch_to_folder_user($dst);
|
||||
}
|
||||
&create_folder_maildir($dst);
|
||||
local $dd = $dst->{'file'};
|
||||
local $num = &max_mhdir($dst->{'file'}) + 1;
|
||||
@@ -1389,7 +1395,9 @@ elsif (($src->{'type'} == 1 || $src->{'type'} == 3) && $dst->{'type'} == 3) {
|
||||
$num++;
|
||||
}
|
||||
&mailbox_fix_permissions($dst);
|
||||
&switch_from_folder_user($dst);
|
||||
if ($src->{'user'} eq $dst->{'user'}) {
|
||||
&switch_from_folder_user($dst);
|
||||
}
|
||||
$fix_index = 1;
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -6,6 +6,7 @@ use WebminCore;
|
||||
|
||||
if ($module_info{'usermin'}) {
|
||||
&switch_to_remote_user();
|
||||
&create_user_config_dirs();
|
||||
$mailcap_file = $userconfig{'mailcap'};
|
||||
if ($mailcap_file !~ /^\//) {
|
||||
$mailcap_file = "$remote_user_info[7]/$mailcap_file";
|
||||
|
||||
@@ -15,7 +15,6 @@ desc_fr=Gestionnaire de Majordomo
|
||||
desc_ja_JP.euc=Majordomo ¥ê¥¹¥È ¥Þ¥Í¡¼¥¸¥ã
|
||||
desc_ru_RU=Ìåíåäæåð ñïèñêîâ ðàññûëêè Majordomo
|
||||
desc_ca=Administrador de Llistes Majordomo
|
||||
longdesc=Create and configure mailing lists for Majordomo.
|
||||
os_support=!windows
|
||||
desc_zh_TW.UTF-8=Majordomo 郵é<C2B5>žåˆ—表管ç<C2A1>†è€…
|
||||
desc_zh_CN.UTF-8=Majordomo 列表管ç<C2A1>†
|
||||
@@ -27,6 +26,4 @@ desc_ru.UTF-8=Менеджер списков рассылки Majordomo
|
||||
desc_cz.UTF-8=Správce poÅ¡tovnÃch diskusà Majordomo
|
||||
desc_pl.UTF-8=Serwer list dyskusyjnych Majordomo
|
||||
desc_no=Majordomo listeadministrator
|
||||
longdesc_ms_MY=Mencipta dan mengkonfigurasi senarai mel untuk Majordomo.
|
||||
desc_ms_MY=Pengurus Senarai Majordomo
|
||||
longdesc_de=Erstellt und konfiguriert Mailinglisten für Majordomo.
|
||||
|
||||
@@ -50,24 +50,24 @@ if ($min) {
|
||||
else {
|
||||
# All the modules
|
||||
@mlist =
|
||||
("cron", "dfsadmin", "dnsadmin", "exports", "inetd", "init",
|
||||
("cron", "dfsadmin", "exports", "inetd", "init",
|
||||
"mount", "samba", "useradmin", "fdisk", "format", "proc", "webmin",
|
||||
"quota", "software", "pap", "acl", "apache", "lpadmin", "bind8",
|
||||
"sendmail", "squid", "bsdexports", "hpuxexports", "file",
|
||||
"net", "dhcpd", "majordomo", "custom", "lilo", "telnet", "servers",
|
||||
"net", "dhcpd", "custom", "telnet", "servers",
|
||||
"time", "wuftpd", "syslog", "mysql", "man",
|
||||
"inittab", "raid", "postfix", "webminlog", "postgresql", "xinetd",
|
||||
"status", "cpan", "caldera", "pam", "nis", "shell", "grub",
|
||||
"fetchmail", "passwd", "at", "proftpd", "sshd",
|
||||
"heartbeat", "cluster-software", "cluster-useradmin", "qmailadmin",
|
||||
"mon", "mscstyle3", "jabber", "stunnel", "burner", "usermin",
|
||||
"fsdump", "lvm", "sentry", "cfengine", "pserver", "procmail",
|
||||
"fsdump", "lvm", "procmail",
|
||||
"cluster-webmin", "firewall", "sgiexports", "vgetty", "openslp",
|
||||
"webalizer", "shorewall", "adsl-client", "updown", "ppp-client",
|
||||
"pptp-server", "pptp-client", "ipsec", "ldap-useradmin",
|
||||
"change-user", "cluster-shell", "cluster-cron", "spam",
|
||||
"htaccess-htpasswd", "logrotate", "cluster-passwd", "mailboxes",
|
||||
"ipfw", "frox", "sarg", "bandwidth", "cluster-copy", "backup-config",
|
||||
"ipfw", "sarg", "bandwidth", "cluster-copy", "backup-config",
|
||||
"smart-status", "idmapd", "krb5", "smf", "ipfilter", "rbac",
|
||||
"tunnel", "zones", "cluster-usermin", "dovecot", "syslog-ng",
|
||||
"mailcap", "blue-theme", "ldap-client", "phpini", "filter",
|
||||
|
||||
@@ -169,6 +169,8 @@ system("find $usr_dir -name '*.bak' | xargs rm -rf");
|
||||
system("find $usr_dir -name '*~' | xargs rm -rf");
|
||||
system("find $usr_dir -name '*.rej' | xargs rm -rf");
|
||||
system("find $usr_dir -name core | xargs rm -rf");
|
||||
system("find $usr_dir -name RELEASE | xargs rm -rf");
|
||||
system("find $usr_dir -name RELEASE.sh | xargs rm -rf");
|
||||
|
||||
# Fix up Perl paths
|
||||
system("(find $usr_dir -name '*.cgi' ; find $usr_dir -name '*.pl') | perl -ne 'chop; open(F,\$_); \@l=<F>; close(F); \$l[0] = \"#\!/usr/bin/perl\$1\n\" if (\$l[0] =~ /#\!\\S*perl\\S*(.*)/); open(F,\">\$_\"); print F \@l; close(F)'");
|
||||
|
||||
@@ -172,6 +172,8 @@ system("/usr/bin/find /tmp/makemodulerpm -name '*~' | xargs rm -rf");
|
||||
system("/usr/bin/find /tmp/makemodulerpm -name '*.rej' | xargs rm -rf");
|
||||
system("/usr/bin/find /tmp/makemodulerpm -name '.*.swp' | xargs rm -rf");
|
||||
system("/usr/bin/find /tmp/makemodulerpm -name core | xargs rm -rf");
|
||||
system("/usr/bin/find /tmp/makemodulerpm -name RELEASE | xargs rm -rf");
|
||||
system("/usr/bin/find /tmp/makemodulerpm -name RELEASE.sh | xargs rm -rf");
|
||||
system("/bin/chown -R root:bin /tmp/makemodulerpm/$mod");
|
||||
|
||||
# Tar up the directory
|
||||
|
||||
@@ -66,7 +66,7 @@ Version: $ver
|
||||
Release: $rel
|
||||
Provides: %{name}-%{version}
|
||||
PreReq: /bin/sh /usr/bin/perl /bin/rm
|
||||
Requires: /bin/sh /usr/bin/perl /bin/rm
|
||||
Requires: /bin/sh /usr/bin/perl /bin/rm perl(Net::SSLeay) openssl
|
||||
AutoReq: 0
|
||||
License: Freeware
|
||||
Group: System/Tools
|
||||
|
||||
@@ -108,6 +108,13 @@ my $build = &find_value("max-build-height", $conf) || 256;
|
||||
print &ui_table_row($text{'conf_build'},
|
||||
&ui_textbox("build", $build, 5));
|
||||
|
||||
# Max time between ticks
|
||||
my $ticks = &find_value("max-tick-time", $conf);
|
||||
$ticks /= 1000.0 if ($ticks > 0);
|
||||
print &ui_table_row($text{'conf_ticks'},
|
||||
&ui_opt_textbox("ticks", $ticks, 5, $text{'default'}." (60s)").
|
||||
" ".$text{'conf_ticksecs'}, 3);
|
||||
|
||||
print &ui_table_hr();
|
||||
|
||||
#### Spawn options
|
||||
|
||||
@@ -77,6 +77,7 @@ conf_eport=Fehlende oder nicht-numerische Portnummer
|
||||
conf_eprotect=Spawn Schutz Radius muss eine Zahl sein
|
||||
conf_err=Fehlgeschlagen Server Konfiguration zu speichern
|
||||
conf_eseen=Fehlende oder ungültig-ausschauene Samen
|
||||
conf_eticks=Maximale Zeit zwischen Ticks muss eine Zahl sein
|
||||
conf_flight=Erlaube fliegen im Überlebens-Modus?
|
||||
conf_gamemode=Standard Spielmodus
|
||||
conf_hardcore=Hardcore (permanenter Tod) Modus?
|
||||
@@ -97,6 +98,8 @@ conf_random=Wähle zufällig
|
||||
conf_rcon=Aktiviere die entfernte Konsole?
|
||||
conf_seed=Samen für neue Welt
|
||||
conf_structs=Generiere NPC Dorf?
|
||||
conf_ticks=Maximale Zeit zwischen Ticks
|
||||
conf_ticksecs=Sekunden
|
||||
conf_title=Server Konfiguration
|
||||
conf_type=Typ für neue Welt
|
||||
conf_type_default=Standard
|
||||
|
||||
@@ -43,6 +43,9 @@ conf_difficulty=Default difficulty
|
||||
conf_gamemode=Default game mode
|
||||
conf_hardcore=Hardcore (permanent death) mode?
|
||||
conf_players=Maximum concurrent players
|
||||
conf_ticks=Max time between ticks
|
||||
conf_ticksecs=seconds
|
||||
conf_eticks=Max time between ticks must be a number
|
||||
conf_motd=Server message
|
||||
conf_motdmsg=Custom message
|
||||
conf_online=Validate Minecraft accounts?
|
||||
|
||||
@@ -29,6 +29,9 @@ else {
|
||||
# Allow nether?
|
||||
&save_directive("allow-nether", $in{'nether'} ? 'true' : 'false', $conf);
|
||||
|
||||
# Allow command blocks?
|
||||
&save_directive("enable-command-block", $in{'command'} ? 'true' : 'false', $conf);
|
||||
|
||||
# Startup difficulty
|
||||
&save_directive("difficulty", $in{'diff'}, $conf);
|
||||
|
||||
@@ -51,6 +54,13 @@ else {
|
||||
$in{'players'} =~ /^[1-9]\d*$/ || &error($text{'conf_eplayers'});
|
||||
&save_directive("max-players", $in{'players'}, $conf);
|
||||
|
||||
# Max time between ticks
|
||||
$in{'ticks_def'} || $in{'ticks'} =~ /^\d+(\.\d+)?$/ || $in{'ticks'} == -1 ||
|
||||
&error($text{'conf_eticks'});
|
||||
&save_directive("max-tick-time", $in{'ticks_def'} ? undef :
|
||||
$in{'ticks'} == -1 ? -1 :
|
||||
int($in{'ticks'}*1000), $conf);
|
||||
|
||||
# Message of the day
|
||||
$in{'motd_def'} || $in{'motd'} =~ /\S/ || &error($text{'conf_emotd'});
|
||||
&save_directive("motd", $in{'motd_def'} ? undef : $in{'motd'}, $conf);
|
||||
|
||||
@@ -11,6 +11,10 @@ eval "use Time::HiRes;";
|
||||
@itoa64 = split(//, "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz");
|
||||
|
||||
# Find and read config file
|
||||
if ($ARGV[0] eq "--nofork") {
|
||||
$nofork_argv = 1;
|
||||
shift(@ARGV);
|
||||
}
|
||||
if (@ARGV != 1) {
|
||||
die "Usage: miniserv.pl <config file>";
|
||||
}
|
||||
@@ -607,7 +611,7 @@ if ($config{'listen'}) {
|
||||
}
|
||||
|
||||
# Split from the controlling terminal, unless configured not to
|
||||
if (!$config{'nofork'}) {
|
||||
if (!$config{'nofork'} && !$nofork_argv) {
|
||||
if (fork()) { exit; }
|
||||
}
|
||||
eval { setsid(); }; # may not work on Windows
|
||||
@@ -1506,7 +1510,7 @@ if ($method eq 'POST' &&
|
||||
}
|
||||
|
||||
# Reject CONNECT request, which isn't supported
|
||||
if ($method eq "CONNECT") {
|
||||
if ($method eq "CONNECT" || $method eq "TRACE") {
|
||||
&http_error(405, "Method $method is not supported");
|
||||
}
|
||||
|
||||
|
||||
@@ -67,7 +67,7 @@ foreach $iface (@ifaces) {
|
||||
elsif($param eq 'slaves') {
|
||||
$cfg->{'partner'} = $value;
|
||||
}
|
||||
elsif($param eq 'hwaddr') {
|
||||
elsif($param eq 'hwaddress' || $param eq 'hwaddr') {
|
||||
local @v = split(/\s+/, $value);
|
||||
$cfg->{'ether_type'} = $v[0];
|
||||
$cfg->{'ether'} = $v[1];
|
||||
@@ -176,8 +176,9 @@ my @autos = get_auto_defs();
|
||||
my $amode = $gconfig{'os_version'} > 3 || scalar(@autos);
|
||||
if (!$cfg->{'up'} && !$amode) { push(@options, ['noauto', '']); }
|
||||
if ($cfg->{'ether'}) {
|
||||
push(@options, [ 'hwaddr', ($cfg->{'ether_type'} || 'ether').' '.
|
||||
$cfg->{'ether'} ]);
|
||||
push(@options, [ 'hwaddress',
|
||||
($cfg->{'ether_type'} || 'ether').' '.
|
||||
$cfg->{'ether'} ]);
|
||||
}
|
||||
if ($cfg->{'bridge'}) {
|
||||
&has_command("brctl") || &error("Bridges cannot be created unless the ".
|
||||
|
||||
10
os_list.txt
10
os_list.txt
@@ -117,6 +117,8 @@ Linux Mint 14 debian-linux 6.0 `cat /etc/lsb-release 2>/dev/null | grep DISTRI
|
||||
Linux Mint 15 debian-linux 7.0 `cat /etc/lsb-release 2>/dev/null | grep DISTRIB_DESCRIPTION` =~ /^DISTRIB_DESCRIPTION="Linux Mint 15 Olivia"/
|
||||
Linux Mint 16 debian-linux 8.0 `cat /etc/lsb-release 2>/dev/null | grep DISTRIB_DESCRIPTION` =~ /^DISTRIB_DESCRIPTION="Linux Mint 16 Petra"/
|
||||
Linux Mint 17 debian-linux 8.0 `cat /etc/lsb-release 2>/dev/null | grep DISTRIB_DESCRIPTION` =~ /^DISTRIB_DESCRIPTION="Linux Mint 17 Qiana"/
|
||||
Linux Mint 17.1 debian-linux 8.0 `cat /etc/lsb-release 2>/dev/null | grep DISTRIB_DESCRIPTION` =~ /^DISTRIB_DESCRIPTION="Linux Mint 17.1 Rebecca"/
|
||||
Linux Mint 17.2 debian-linux 8.0 `cat /etc/lsb-release 2>/dev/null | grep DISTRIB_DESCRIPTION` =~ /^DISTRIB_DESCRIPTION="Linux Mint 17.2 Rafaela"/
|
||||
|
||||
# Debian Linux versions with numbers
|
||||
Debian Linux $1 debian-linux $1 $etc_issue =~ /Debian.*\s([0-9\.]+)\s/i || `cat /etc/debian_version 2>/dev/null` =~ /([0-9\.]+)/
|
||||
@@ -131,11 +133,11 @@ Debian Linux 6.0 debian-linux 6.0 `cat /etc/debian_version 2>/dev/null` =~ /^(
|
||||
Debian Linux 7.0 debian-linux 7.0 `cat /etc/debian_version 2>/dev/null` =~ /^(wheezy)/i
|
||||
Debian Linux 8.0 debian-linux 8.0 `cat /etc/debian_version 2>/dev/null` =~ /^(jessie)/i
|
||||
# These change sometimes...
|
||||
Debian Linux 7.0 debian-linux 7.0 `cat /etc/debian_version 2>/dev/null` =~ /^(stable)/i
|
||||
Debian Linux 8.0 debian-linux 8.0 `cat /etc/debian_version 2>/dev/null` =~ /^(stable)/i
|
||||
# These don't have a version number yet, so we use the one from "stable"
|
||||
Debian Linux 8.0 debian-linux 8.0 `cat /etc/debian_version 2>/dev/null` =~ /^(testing)/i
|
||||
Debian Linux 8.0 debian-linux 8.0 `cat /etc/debian_version 2>/dev/null` =~ /^(unstable)/i
|
||||
Debian Linux 8.0 debian-linux 8.0 `cat /etc/debian_version 2>/dev/null` =~ /^(sid)/i
|
||||
Debian Linux 9.0 debian-linux 9.0 `cat /etc/debian_version 2>/dev/null` =~ /^(testing)/i
|
||||
Debian Linux 9.0 debian-linux 9.0 `cat /etc/debian_version 2>/dev/null` =~ /^(unstable)/i
|
||||
Debian Linux 9.0 debian-linux 9.0 `cat /etc/debian_version 2>/dev/null` =~ /^(sid)/i
|
||||
Debian Linux 9.0 debian-linux 9.0 `cat /etc/debian_version 2>/dev/null` =~ /^(stretch)/i
|
||||
Debian Linux 10.0 debian-linux 10.0 `cat /etc/debian_version 2>/dev/null` =~ /^(buster)/i
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ desc=Software Package Updates
|
||||
longdesc=Displays available package updates from YUM, APT or other update systems
|
||||
category=system
|
||||
depends=software cron mailboxes
|
||||
os_support=redhat-linux debian-linux mandrake-linux/10.2-* solaris freebsd
|
||||
os_support=redhat-linux debian-linux mandrake-linux/10.2-* solaris freebsd macos
|
||||
desc_ca=Actualitzacions de Paquets de Programes
|
||||
desc_ru.UTF-8=Обновление программных пакетов
|
||||
desc_nl=Software pakketten Update
|
||||
|
||||
@@ -25,7 +25,7 @@ print &ui_table_start($text{'view_header'}, undef, 2);
|
||||
print &ui_table_row($text{'view_name'}, $p->{'name'});
|
||||
print &ui_table_row($text{'view_system'}, $text{'system_'.$p->{'system'}} ||
|
||||
uc($p->{'system'}));
|
||||
print &ui_table_row($text{'view_desc'}, $c->{'desc'});
|
||||
print &ui_table_row($text{'view_desc'}, $p->{'desc'});
|
||||
|
||||
# Current state
|
||||
print &ui_table_row($text{'view_state'},
|
||||
|
||||
@@ -23,6 +23,9 @@ if ($gconfig{'loginbanner'} && $ENV{'HTTP_COOKIE'} !~ /banner=1/ &&
|
||||
return;
|
||||
}
|
||||
$sec = uc($ENV{'HTTPS'}) eq 'ON' ? "; secure" : "";
|
||||
if (!$config{'no_httponly'}) {
|
||||
$sec .= "; httpOnly";
|
||||
}
|
||||
&get_miniserv_config(\%miniserv);
|
||||
$sidname = $miniserv{'sidname'} || "sid";
|
||||
print "Set-Cookie: banner=0; path=/$sec\r\n" if ($gconfig{'loginbanner'});
|
||||
|
||||
@@ -9,8 +9,10 @@ index_econfig=L'ordre de configuraci
|
||||
index_esuper=L'ordre del supervisor Postfix $1 no existeix. Pot ser que la <a href='$2'>configuració del mòdul</a> sigui incorrecta.
|
||||
index_stop=Atura Postfix
|
||||
index_start=Inicia Postfix
|
||||
index_reload=Recarrega la Configuració
|
||||
index_stopmsg=Fes clic sobre aquest botó per aturar el servidor de correu Postfix en execució. Això impedirà que es lliuri correu als usuaris locals des d'altres sistemes, així com els clients locals d'utilitzar aquest sistema com a servidor per enviar correu.
|
||||
index_startmsg=Fes clic sobre aquest botó per iniciar el servidor de correu Postfix. Fins que no es faci, no es podrà lliurar correu als usuaris locals des d'altres sistemes, ni aquests podran utilitzar aquest sistema com a servidor de correu.
|
||||
index_reloadmsg=Fes clic sobre aquest botó per fer que Postfix rellegeixi tots els seus fitxers de configuració. Això pot ser útil si els fitxers de configuració de Postfix s'han canviat manualment.
|
||||
index_version=Postfix versió $1
|
||||
opts_err=No s'han pogut desar les opcions
|
||||
|
||||
@@ -407,6 +409,9 @@ stop_ecannot=No tens perm
|
||||
start_efailed=No s'ha pogut iniciar Postfix
|
||||
start_ecannot=No tens permís per iniciar Postfix
|
||||
|
||||
reload_efailed=No s'ha pogut recarregar Postfix
|
||||
reload_ecannot=NO tens permís per recarregar Postfix
|
||||
|
||||
query_get_efailed=No s'ha pogut consultar l'ordre de configuració de Postfix per obtenir el valor actual del paràmetre $1: <tt>$2</tt>
|
||||
query_set_efailed=No s'ha pogut consultar l'ordre de configuració de Postfix per establir el valor actual del paràmetre $1 a $2: <tt>$3</tt>
|
||||
reload_ecannot=No tens permís per reiniciar Postfix
|
||||
@@ -783,6 +788,7 @@ log_master_delete=S'ha suprimit el proc
|
||||
log_manual=S'ha editat manualment el fitxer de configuració $1
|
||||
log_stop=S'ha aturat el servidor Postfix
|
||||
log_start=S'ha iniciat el servidor Postfix
|
||||
log_reload=S'ha recarregat la configuració de Postfix
|
||||
log_delqs=S'han suprimit $1 missatges de la cua de correu
|
||||
log_flushq=S'ha buidat la cua de correu
|
||||
log_backend=S'ha actualitzat el fitxer de configuracio del mapa $1
|
||||
|
||||
@@ -414,8 +414,6 @@ reload_ecannot=You are not allowed to reload Postfix
|
||||
|
||||
query_get_efailed=Failed to query Postfix config command to get the current value of parameter $1: <tt>$2</tt>
|
||||
query_set_efailed=Failed to query Postfix config command to set the current value of parameter $1 to $2: <tt>$3</tt>
|
||||
reload_ecannot=You are not allowed to reload Postfix
|
||||
reload_efailed=Failed to reload Postfix.
|
||||
regenerate_ecannot=You are not allowed to regenerate the Aliases
|
||||
regenerate_alias_efailed=Failed to regenerate aliases: <tt>$1</tt>
|
||||
regenerate_table_efailed=Failed to regenerate table $1: <tt>$2</tt>
|
||||
|
||||
@@ -251,6 +251,8 @@ index_econfig=Postfix sin konfig kommando $1 finnes ikke. Kanskje <a href='$2'>m
|
||||
index_epath=Postfix kontrollkommandoen $1 er ikke installert. Kanskje <a href='$2'>modulkonfigurasjonen</a> er feil, eller så er Postfix ikke installert.
|
||||
index_esuper=Postfix overvåkingskommando $1 finnes ikke. Kanskje <a href='$2'>modulkonfigurasjonen</a> er feil.
|
||||
index_postfix=Postfix
|
||||
index_reload=Last om konfigurasjon
|
||||
index_reloadmsg=Klikk på denne knappen for å be Postfix om å lese alle sine konfigurasjonsfiler på nytt. Dette kan være nyttig når Postix' konfigurasjonsfiler er endret manuelt.
|
||||
index_return=Postfix konfigurasjon
|
||||
index_start=Start Postfix
|
||||
index_startmsg=Klikk på denne knappen for å starte Postfix. Før dette er gjort vil ikke e-post bli levert til lokale brukere og klienter vil ikke kunne benytte dette systemet som e-post tjener.
|
||||
@@ -330,6 +332,7 @@ log_rate=Endret leveringsrater
|
||||
log_recipient_canonical_maps_create=Opprettet kanonisk tilordning $1 for mottaker
|
||||
log_recipient_canonical_maps_delete=Slettet kanonisk tilordning $1 for mottaker
|
||||
log_recipient_canonical_maps_modify=Endret kanonisk tilordning $1 for mottaker
|
||||
log_reload=Lastet om Postfix konfigurasjon
|
||||
log_relocated=Endret innstillinger for tilordning av omplassering
|
||||
log_relocated_maps_create=Opprettet tilordning $1 av omplassering
|
||||
log_relocated_maps_delete=Slettet tilordning $1 av omplassering
|
||||
|
||||
@@ -42,7 +42,8 @@ print &ui_table_row($text{'owner'}, $pinfo{'user'});
|
||||
print &ui_table_row($text{'cpu'}, $pinfo{'cpu'});
|
||||
|
||||
# Memory size
|
||||
print &ui_table_row($text{'size'}, $pinfo{'size'});
|
||||
print &ui_table_row($text{'size'}, $pinfo{'bytes'} ? &nice_size($pinfo{'bytes'})
|
||||
: $pinfo{'size'});
|
||||
|
||||
# Run time
|
||||
print &ui_table_row($text{'runtime'}, $pinfo{'time'});
|
||||
|
||||
@@ -17,6 +17,7 @@ for($i=0; $line=<PS>; $i++) {
|
||||
$plist[$i]->{"ppid"} = $2;
|
||||
$plist[$i]->{"user"} = $3;
|
||||
$plist[$i]->{"size"} = "$4 kB";
|
||||
$plist[$i]->{"bytes"} = $4*1024;
|
||||
$plist[$i]->{"cpu"} = $5;
|
||||
$plist[$i]->{"time"} = $6;
|
||||
$plist[$i]->{"nice"} = $7;
|
||||
|
||||
@@ -40,7 +40,7 @@ foreach $pr (@procs) {
|
||||
push(@cols, $p);
|
||||
}
|
||||
push(@cols, $pr->{'user'});
|
||||
push(@cols, $pr->{'size'});
|
||||
push(@cols, $pr->{'bytes'} ? &nice_size($pr->{'bytes'}) : $pr->{'size'});
|
||||
push(@cols, &html_escape(&cut_string($pr->{'args'})));
|
||||
print &ui_columns_row(\@cols);
|
||||
}
|
||||
|
||||
@@ -48,6 +48,7 @@ if ($ver >= 2) {
|
||||
$plist[$i]->{"user"} = $w[0];
|
||||
$plist[$i]->{"cpu"} = "$w[7] %";
|
||||
$plist[$i]->{"size"} = "$w[8] kB";
|
||||
$plist[$i]->{"bytes"} = $w[8]*1024;
|
||||
$plist[$i]->{"time"} = $w[11];
|
||||
$plist[$i]->{"_stime"} = $w[12];
|
||||
$plist[$i]->{"nice"} = $w[9];
|
||||
|
||||
@@ -12,12 +12,15 @@ else {
|
||||
}
|
||||
for($i=0; $line=<PS>; $i++) {
|
||||
chop($line);
|
||||
if ($line =~ /ps axlwwww/ || $line =~ /^\s*UID\s+PID/) { $i--; next; }
|
||||
if ($line =~ /ps (axlwwww|xlwwwwp)/ ||
|
||||
$line =~ /^\s*UID\s+PID/) { $i--; next; }
|
||||
if ($line =~ /^\s*(\d+)\s+(\d+)\s+(\S+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\S+)\s+(\S+)\s+(\d+)\s+(...)\s+(\S+)\s+(\d+:\d+)\s+(.*)/) {
|
||||
# Old MacOS
|
||||
if ($3 <= 0) { $i--; next; }
|
||||
$plist[$i]->{"pid"} = $3;
|
||||
$plist[$i]->{"ppid"} = $4;
|
||||
$plist[$i]->{"size"} = $8;
|
||||
$plist[$i]->{"bytes"} = $8 * 1024;
|
||||
$plist[$i]->{"time"} = $13;
|
||||
$plist[$i]->{"nice"} = $6;
|
||||
$plist[$i]->{"_tty"} = $12 eq '?' ? $text{'edit_none'} : "/dev/tty$12";
|
||||
@@ -25,10 +28,12 @@ for($i=0; $line=<PS>; $i++) {
|
||||
$pidmap{$3} = $plist[$i];
|
||||
}
|
||||
elsif ($line =~ /^\s*(\d+)\s+(\d+)\s+(\S+)\s+(\d+)\s+(\d+)\s+(\S+)\s+(\d+)\s+(\d+)\s+(\S+)\s+(...)\s+(\S+)\s+(\d+:\S+)\s+(.*)/) {
|
||||
# New MacOS
|
||||
if ($2 <= 0) { $i--; next; }
|
||||
$plist[$i]->{"pid"} = $2;
|
||||
$plist[$i]->{"ppid"} = $3;
|
||||
$plist[$i]->{"size"} = $7;
|
||||
$plist[$i]->{"bytes"} = $7 * 1024;
|
||||
$plist[$i]->{"time"} = $12;
|
||||
$plist[$i]->{"nice"} = $6;
|
||||
$plist[$i]->{"_tty"} = $11 eq '??' ? $text{'edit_none'} : "/dev/tty$11";
|
||||
@@ -90,5 +95,82 @@ foreach $pty (@ptys) {
|
||||
return ();
|
||||
}
|
||||
|
||||
# get_memory_info()
|
||||
# Returns a list containing the real mem, free real mem, swap and free swap,
|
||||
# and possibly cached memory and the burstable limit. All of these are in Kb.
|
||||
sub get_memory_info
|
||||
{
|
||||
my @rv;
|
||||
|
||||
# Get total memory
|
||||
my $out = &backquote_command("sysctl -a hw.physmem 2>/dev/null");
|
||||
if ($out =~ /:\s*(\d+)/) {
|
||||
$rv[0] = $1 / 1024;
|
||||
}
|
||||
|
||||
# Get memory usage
|
||||
$out = &backquote_command("vm_stat 2>/dev/null");
|
||||
my %stat;
|
||||
foreach my $l (split(/\r?\n/, $out)) {
|
||||
if ($l =~ /^(.*):\s*(\d+)/) {
|
||||
$stat{lc($1)} = $2;
|
||||
}
|
||||
}
|
||||
my $usage = ($stat{'pages active'} + $stat{'pages wired down'}) * 4;
|
||||
$rv[1] = $rv[0] - $usage;
|
||||
|
||||
# Get swap usage
|
||||
$out = &backquote_command("sysctl -a vm.swapusage 2>/dev/null");
|
||||
if ($out =~ /total\s*=\s*([0-9\.]+)([KMGT]).*free\s*=\s*([0-9\.]+)([KMGT])/) {
|
||||
$rv[2] = $1*($2 eq "K" ? 1 :
|
||||
$2 eq "M" ? 1024 :
|
||||
$2 eq "G" ? 1024*1024 :
|
||||
$2 eq "T" ? 1024*1024*1024 : 0);
|
||||
$rv[3] = $3*($4 eq "K" ? 1 :
|
||||
$4 eq "M" ? 1024 :
|
||||
$4 eq "G" ? 1024*1024 :
|
||||
$4 eq "T" ? 1024*1024*1024 : 0);
|
||||
}
|
||||
|
||||
return @rv;
|
||||
}
|
||||
|
||||
# os_get_cpu_info()
|
||||
# Returns a list containing the 5, 10 and 15 minute load averages, and the
|
||||
# CPU mhz, model, vendor, cache and count
|
||||
sub os_get_cpu_info
|
||||
{
|
||||
&clean_language();
|
||||
my $out = &backquote_command("uptime 2>&1");
|
||||
&reset_environment();
|
||||
my @rv = $out =~ /average(s)?:\s+([0-9\.]+),?\s+([0-9\.]+),?\s+([0-9\.]+)/i ?
|
||||
( $2, $3, $4 ) : ( undef, undef, undef );
|
||||
|
||||
$out = &backquote_command("sysctl -a machdep.cpu.brand_string");
|
||||
if ($out =~ /:\s*(\S.*)/) {
|
||||
$rv[4] = $1;
|
||||
if ($rv[4] =~ s/\s*\@\s*([0-9\.]+)(GHz|MHz)//i) {
|
||||
$rv[3] = $1 * ($2 eq "GHz" ? 1000 : 1);
|
||||
}
|
||||
}
|
||||
|
||||
$out = &backquote_command("sysctl -a machdep.cpu.vendor");
|
||||
if ($out =~ /:\s*(\S.*)/) {
|
||||
$rv[5] = $1;
|
||||
}
|
||||
|
||||
$out = &backquote_command("sysctl -a machdep.cpu.cache.size");
|
||||
if ($out =~ /:\s*(\d+)/) {
|
||||
$rv[6] = $1 * 1024;
|
||||
}
|
||||
|
||||
$out = &backquote_command("sysctl -a machdep.cpu.core_count");
|
||||
if ($out =~ /:\s*(\d+)/) {
|
||||
$rv[7] = $1;
|
||||
}
|
||||
|
||||
return @rv;
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
|
||||
@@ -15,6 +15,7 @@ for($i=0; $line=<PS>; $i++) {
|
||||
$plist[$i]->{"ppid"} = $2;
|
||||
$plist[$i]->{"user"} = $3;
|
||||
$plist[$i]->{"size"} = "$4 kB";
|
||||
$plist[$i]->{"bytes"} = $4 * 1024;
|
||||
$plist[$i]->{"cpu"} = $5;
|
||||
$plist[$i]->{"time"} = $6;
|
||||
$plist[$i]->{"nice"} = $7;
|
||||
|
||||
@@ -33,6 +33,7 @@ for($i=0; $line=<PS>; $i++) {
|
||||
$plist[$i]->{"user"} = $w[0];
|
||||
$plist[$i]->{"cpu"} = "$w[7] %";
|
||||
$plist[$i]->{"size"} = "$w[8] kB";
|
||||
$plist[$i]->{"bytes"} = $w[8]*1024;
|
||||
local $ofs = 0;
|
||||
if ($has_stime) {
|
||||
$plist[$i]->{"_stime"} = $w[12+$ofs];
|
||||
|
||||
@@ -6,7 +6,6 @@ desc_es=Servidor CVS
|
||||
desc_de=CVS-Server
|
||||
desc_ru_SU=óÅÒ×ÅÒ CVS
|
||||
desc_ru_RU=Ñåðâåð CVS
|
||||
longdesc=Setup a remotely-accessible CVS server, manage users and browse the repository.
|
||||
desc_zh_TW.Big5=CVS¦øªA¾¹
|
||||
desc_fr=Serveur CVS
|
||||
os_support=!windows
|
||||
@@ -20,6 +19,4 @@ desc_ru.UTF-8=Сервер CVS
|
||||
desc_nl=CVS Server
|
||||
desc_cz.UTF-8=CVS server
|
||||
desc_no=CVS Tjener
|
||||
longdesc_ms_MY=Menyediakan pelayan CVS yang boleh dicapai jauh, mengurus pengguna dan melayari repositori.
|
||||
desc_ms_MY=Pelayan CVS
|
||||
longdesc_de=Einrichten eines Remote-CVS-Server, Verwalten von Benutzern und Durchsuchen von Repository.
|
||||
|
||||
@@ -542,7 +542,7 @@ sub filesystem_users
|
||||
my ($fs) = @_;
|
||||
if (&is_xfs_fs($fs)) {
|
||||
return &parse_xfs_report_output(
|
||||
"xfs_quota -xc 'report -u -b -i'", \%user, 'user', $fs);
|
||||
"xfs_quota -xc 'report -u -b -i -n'", \%user, 'user', $fs);
|
||||
}
|
||||
else {
|
||||
return &parse_repquota_output(
|
||||
@@ -562,7 +562,7 @@ sub filesystem_groups
|
||||
my ($fs) = @_;
|
||||
if (&is_xfs_fs($fs)) {
|
||||
return &parse_xfs_report_output(
|
||||
"xfs_quota -xc 'report -g -b -i'", \%group, 'group', $fs);
|
||||
"xfs_quota -xc 'report -g -b -i -n'", \%group, 'group', $fs);
|
||||
}
|
||||
else {
|
||||
return &parse_repquota_output(
|
||||
@@ -665,6 +665,13 @@ foreach my $l (@rep) {
|
||||
if ($what->{$nn,'gblocks'} =~ /^\-+$/);
|
||||
$what->{$nn,'gfiles'} = undef
|
||||
if ($what->{$nn,'gfiles'} =~ /^\-+$/);
|
||||
if ($what->{$nn,$mode} =~ /^#(\d+)$/) {
|
||||
my $u = $mode eq "user" ? getpwuid("$1")
|
||||
: getgrgid("$1");
|
||||
if ($u) {
|
||||
$what->{$nn,$mode} = $u;
|
||||
}
|
||||
}
|
||||
$nn++;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ index_mdadm=S'est
|
||||
index_raidtools=S'està utilitzant RaidTools
|
||||
index_name=Nom de dispositiu
|
||||
index_active=Actiu
|
||||
index_errors=Errors
|
||||
index_status=Estat
|
||||
index_level=Nivell RAID
|
||||
index_size=Mida utilitzable
|
||||
@@ -67,6 +68,7 @@ create_o3_layout=3 C
|
||||
view_title=Dispositiu RAID
|
||||
view_header=Opcions de dispositiu RAID
|
||||
view_device=Fitxer de dispositiu
|
||||
view_uuid=UUID
|
||||
view_level=Nivell RAID
|
||||
view_status=Estat del sistema de fitxers
|
||||
view_errors=Errors de RAID
|
||||
|
||||
@@ -43,7 +43,7 @@ emdadmcreate=<tt>mdadm</tt> i <tt>--create</tt> modus feilet : $1
|
||||
emdadmfail=<tt>mdadm</tt> i <tt>--manage --fail</tt> modus feilet : $1
|
||||
emdadmgrow=<tt>mdadm</tt> i <tt>--grow</tt> modus feilet : $1
|
||||
emdadmremove=<tt>mdadm</tt> i <tt>--manage --remove</tt> modus feilet : $1
|
||||
emdadmreplace= <tt>mdadm</tt> i <tt>--manage --replace</tt> modus feilet : $1
|
||||
emdadmreplace=<tt>mdadm</tt> i <tt>--manage --replace</tt> modus feilet : $1
|
||||
emdadmstop=<tt>mdadm</tt> i <tt>--stop</tt> modus feilet : $1
|
||||
emkraid=<tt>mkraid</tt> feilet : $1
|
||||
eraidstart=<tt>raidstart</tt> feilet : $1
|
||||
@@ -52,6 +52,7 @@ index_active=Aktiv?
|
||||
index_add=Opprett RAID enhet på nivå:
|
||||
index_emdstat=Kernel RAID statusfilen $1 finnes ikke på systemet ditt. Kernelen din støtter mest sannsynlig ikke RAID.
|
||||
index_eprogs=Hverken RAID verktøy eller MDADM pakkene er installert på systemet ditt.
|
||||
index_errors=Feil
|
||||
index_header=Innstillinger for varsling om RAID problemer
|
||||
index_level=RAID nivå
|
||||
index_mailaddr=Send meldinger til
|
||||
@@ -157,3 +158,4 @@ view_stop=Deaktiver
|
||||
view_stopdesc=Klikk på denne knappen for å slå av RAID enheten, slik at den ikke lenger er tilgjengelig.
|
||||
view_super=Vedvarende superblokk?
|
||||
view_title=RAID Enhet
|
||||
view_uuid=UUID
|
||||
|
||||
@@ -7,7 +7,6 @@ desc_es=Centinelas de Seguridad
|
||||
desc_de=Sicherheits-Dienste
|
||||
desc_ru_SU=óÉÓÔÅÍÁ ÂÅÚÏÐÁÓÎÏÓÔÉ
|
||||
desc_ru_RU=Ñèñòåìà áåçîïàñíîñòè
|
||||
longdesc=Configure the portsentry, hostsentry and logcheck system security monitoring programs.
|
||||
readonly=1
|
||||
os_support=!windows
|
||||
desc_cz=Bezpeènostní hlídaè
|
||||
@@ -15,5 +14,4 @@ desc_nl=Beveiligings Sentries (Schildwachten)
|
||||
desc_ru.UTF-8=СиÑ<C2B8>тема безопаÑ<C2B0>ноÑ<C2BE>ти
|
||||
desc_cz.UTF-8=BezpeÄ<65>nostnà hlÃdaÄ<61>
|
||||
desc_no=Sikkerhets-tjeneste
|
||||
longdesc_ms_MY=Mengkonfigurasi portsentry, hostsentry dan pemantauan sistem keselamatan logcheck.
|
||||
desc_ms_MY=Sentri Keselamatan
|
||||
|
||||
@@ -24,6 +24,9 @@ if ($gconfig{'loginbanner'} && $ENV{'HTTP_COOKIE'} !~ /banner=1/ &&
|
||||
return;
|
||||
}
|
||||
$sec = uc($ENV{'HTTPS'}) eq 'ON' ? "; secure" : "";
|
||||
if (!$config{'no_httponly'}) {
|
||||
$sec .= "; httpOnly";
|
||||
}
|
||||
&get_miniserv_config(\%miniserv);
|
||||
$sidname = $miniserv{'sidname'} || "sid";
|
||||
print "Set-Cookie: banner=0; path=/$sec\r\n" if ($gconfig{'loginbanner'});
|
||||
|
||||
4
setup.sh
4
setup.sh
@@ -601,9 +601,9 @@ echo "PERLLIB=$PERLLIB" >>$config_dir/start
|
||||
echo "export PERLLIB" >>$config_dir/start
|
||||
uname -a | grep -i 'HP/*UX' >/dev/null
|
||||
if [ $? = "0" ]; then
|
||||
echo "exec '$wadir/miniserv.pl' $config_dir/miniserv.conf &" >>$config_dir/start
|
||||
echo "exec '$wadir/miniserv.pl' \$* $config_dir/miniserv.conf &" >>$config_dir/start
|
||||
else
|
||||
echo "exec '$wadir/miniserv.pl' $config_dir/miniserv.conf" >>$config_dir/start
|
||||
echo "exec '$wadir/miniserv.pl' \$* $config_dir/miniserv.conf" >>$config_dir/start
|
||||
fi
|
||||
|
||||
echo "#!/bin/sh" >>$config_dir/stop
|
||||
|
||||
@@ -4,4 +4,6 @@ actions=Standard actions files,9,40,5,\t
|
||||
macros=Macro files directory,0
|
||||
before_apply_cmd=Command to run before applying configuration,3,None
|
||||
after_apply_cmd=Command to run after applying configuration,3,None
|
||||
before_refresh_cmd=Command to run before refreshing blacklist,3,None
|
||||
after_refresh_cmd=Command to run after refreshing blacklist,3,None
|
||||
display_zone_descriptions=Display zone descriptions in rules file?,1,0-No,1-Yes
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
config_dir=Shorewall Konfigurationsverzeichnis,0
|
||||
shorewall=Pfad zum Shorewall Befehl,0
|
||||
actions=Standard Aktionsdateien,9,40,5,\t
|
||||
|
||||
actions=Standard Aktionsdateien,9,40,5,\t
|
||||
macros=Makro Dateiverzeichnis,0
|
||||
before_apply_cmd=Befehle, bevor Konfiguration ausgeführt wird,3,None
|
||||
before_apply_cmd=Befehl, bevor Konfiguration ausgeführt wird,3,None
|
||||
after_apply_cmd=Befehl, der nach der Anwendung der Konfiguration ausgeführt wird,3,Keiner
|
||||
before_refresh_cmd=Befehl, vordem Blackliste aktualisiert wird,3,None
|
||||
after_refresh_cmd=Befehl, nachdem Blackliste aktualisiert wird,3,None
|
||||
display_zone_descriptions=Zeige Zone Beschreibungen in Regeldatei?,1,0-Nein,1-Ja
|
||||
|
||||
@@ -84,7 +84,7 @@ index_title=Shorewall brannmur
|
||||
index_version=Shorewall versjon $1
|
||||
interfaces_0=Grensesnitt
|
||||
interfaces_1=Sone navn
|
||||
interfaces_2=Boradcast adresse
|
||||
interfaces_2=Broadcast adresse
|
||||
interfaces_3=Innstillinger
|
||||
interfaces_add=Legg til nytt nettverksgrensesnitt.
|
||||
interfaces_create=Opprett nettverksgrensesnitt
|
||||
|
||||
@@ -9,13 +9,13 @@ if ($access{'nochange'}) {
|
||||
}
|
||||
|
||||
&error_setup($text{'refresh_err'});
|
||||
$err = &run_before_apply_command();
|
||||
$err = &run_before_refresh_command();
|
||||
&error($err) if ($err);
|
||||
$out = &backquote_logged("$config{'shorewall'} refresh 2>&1");
|
||||
if ($?) {
|
||||
&error("<pre>$out</pre>");
|
||||
}
|
||||
$err = &run_after_apply_command();
|
||||
$err = &run_after_refresh_command();
|
||||
&webmin_log("refresh");
|
||||
&redirect("");
|
||||
|
||||
|
||||
@@ -1845,6 +1845,27 @@ if ($config{'after_apply_cmd'}) {
|
||||
}
|
||||
}
|
||||
|
||||
# run_before_refresh_command()
|
||||
# Runs the before-refresh command, if any. If it fails, returns the error
|
||||
# message output
|
||||
sub run_before_refresh_command
|
||||
{
|
||||
if ($config{'before_refresh_cmd'}) {
|
||||
local $out = &backquote_logged("($config{'before_refresh_cmd'}) </dev/null 2>&1");
|
||||
return $out if ($?);
|
||||
}
|
||||
return undef;
|
||||
}
|
||||
|
||||
# run_after_refresh_command()
|
||||
# Runs the after-refresh command, if any
|
||||
sub run_after_refresh_command
|
||||
{
|
||||
if ($config{'after_refresh_cmd'}) {
|
||||
&system_logged("($config{'after_refresh_cmd'}) </dev/null >/dev/null 2>&1");
|
||||
}
|
||||
}
|
||||
|
||||
# list_standard_actions()
|
||||
# Returns a list of standard Shorewall actions
|
||||
sub list_standard_actions
|
||||
|
||||
@@ -124,6 +124,7 @@ log_start=Startet brannmur
|
||||
log_stop=Stoppet brannmur
|
||||
log_up_table=Flyttet opp oppføring i $1 tabellen
|
||||
manual_desc=Dette skjemaet kan brukes til å redigere Shirewall filen $1 manuelt. Vær forsiktig, siden det ikke vil bli utført noen syntakssjekk på endringene.
|
||||
manual_edata=Ingen tabell filinnhold angitt
|
||||
manual_efile=Ugyldig tabellnavn!
|
||||
manual_err=Kunne ikke lagre tabellfil
|
||||
manual_reset=Angre
|
||||
@@ -195,11 +196,13 @@ opts_routeback=Aksepter trafikk tilbake til vert
|
||||
opts_routefilter=Aktiver anti-spoofing rute-filtering
|
||||
opts_source=Tillat fra vært til alle mål
|
||||
opts_tcpflags=Se etter ulovlige TCP-flagg
|
||||
opts_upnp=Remap pakker via UPNP
|
||||
params_0=Parameter
|
||||
params_1=Verdi
|
||||
params_2=Kommentar
|
||||
params_add=Legg ti lny egendefinert parameter.
|
||||
params_create=Opprett egendefinert parameter
|
||||
params_desc=Denne siden lar deg konfigurere Shorewalls egendefinerte parametere. MERK: Det anbefales ikke å endre rekkefølgen på parameterene her, dersom du ønsker å bevare den relative posisjon på kommentarer i konfigurasjonsfilen.
|
||||
params_edit=Rediger egendefinert parameter
|
||||
params_err=Kunne ikke lagre egendefinert parameter
|
||||
params_header=Detaljer for egendefinert parameter
|
||||
@@ -214,7 +217,11 @@ policy_3=Syslog-nivå
|
||||
policy_4=Trafikk-grense
|
||||
policy_add=Legg til ny standard policy.
|
||||
policy_create=Opprett standard policy
|
||||
policy_desc=Denne siden lar deg konfigurere standard handlinger for trafikk mellom forskjellige brannmursoner. De kan overstyres for gitter verter eller trafikktyper på brannmurens Regler side.
|
||||
policy_eburst=Manglende eller ugyldig tall for trafikk burst
|
||||
policy_edit=Rediger standard policy
|
||||
policy_efw=<Brannmur> kan velges både for kilde- og mål-soner
|
||||
policy_elimit=Manglende eller ugyldig tall for trafikkgrense
|
||||
policy_err=Kunne ikke lagre standard policy
|
||||
policy_header=Detaljer for standard policy
|
||||
policy_limit=Grense $1, Burst $2
|
||||
@@ -233,10 +240,14 @@ providers_auto=Oppdag automatisk
|
||||
providers_balance=Last-balanser trafikk
|
||||
providers_copy=Kopier ruter gjennom grensesnitt
|
||||
providers_create=Opprett ruting-leverandør
|
||||
providers_dup=Dupliser leverandør
|
||||
providers_edit=Rediger ruting-leverandør
|
||||
providers_edup=Mangler leverandør å duplisere
|
||||
providers_egateway=Manglende eller ugyldig gateway
|
||||
providers_ename=Manglende eller ugyldig leverandørnavn
|
||||
providers_enumber=Manglende eller ugyldig leverandørnummer
|
||||
providers_err=Kunne ikke lagre ruting-leverandør
|
||||
providers_fallback=Legg til leverandør i rutingtabell
|
||||
providers_gateway=Gateway router
|
||||
providers_iface=Nettverksgrensesnitt
|
||||
providers_loose=Tillat trafikk fra brannmur
|
||||
@@ -259,11 +270,13 @@ proxyndp_edit=Rediger proxy NDP adresse
|
||||
proxyndp_err=Kunne ikke lagre proxy NDP
|
||||
proxyndp_have=Rute til vert finnes?
|
||||
proxyndp_header=Detaljer for proxy NDP
|
||||
proxyndp_none=Ingen proxy NDP adresser er definert enda.
|
||||
proxyndp_return=liste med proxy NDP adresser
|
||||
proxyndp_title=Proxy NDP
|
||||
refresh_err=Kunne ikke oppfriske konfigurasjon
|
||||
restart_err=Kunne ikke ta i bruk konfigurasjon
|
||||
routestopped_0=Grensesnitt
|
||||
routestopped_1=Tilgjengelige adresser
|
||||
routestopped_2=Route innstillinger
|
||||
routestopped_add=Legg til ny stoppet adresse
|
||||
routestopped_all=Alle adresser
|
||||
@@ -279,23 +292,32 @@ rules_0=Handling
|
||||
rules_1=Kilde
|
||||
rules_1z=Kilde-sone
|
||||
rules_2=Mål
|
||||
rules_2z=Mål-sone eller -port
|
||||
rules_3=Protokoll
|
||||
rules_4=Kilde-porter
|
||||
rules_5=Mål-porter
|
||||
rules_add=Legg til ny brannmurregel.
|
||||
rules_create=Opprett brannmurregel
|
||||
rules_dnat=Opprinnelig mål-adresse for DNAT eller REDIRECT
|
||||
rules_dnat_dest=For DNAT eller REDIRECT fyller du inn den nye mål-adressen eller -porten her.
|
||||
rules_dnat_port=For DNAT eller REDIRECT fyller du inn den opprinnelige mål--porten her.
|
||||
rules_eaction=Ingen handling valgt
|
||||
rules_edit=Rediger brannmurregel
|
||||
rules_edother=Manglende eller ugyldig mål-sone
|
||||
rules_emacro=Manglende eller ugyldig makro-parameter
|
||||
rules_err=Kunne ikke lagre brannmurregel
|
||||
rules_esinzone=Ingen vertsadresser angitt for kilde
|
||||
rules_esother=Manglende eller ugyldig kilde-sone
|
||||
rules_header=Detaljer for brannmurregel
|
||||
rules_hosts=Vert <tt>$2</tt> is sone <tt>$1</tt>
|
||||
rules_log=og logg til syslog nivå
|
||||
rules_nolog=Ikke logg
|
||||
rules_none=Ingen brannmurregler er definert enda.
|
||||
rules_none2=Ingen
|
||||
rules_norate=Ingen grense
|
||||
rules_noset=Alle brukere
|
||||
rules_related=Relatert
|
||||
rules_return=liste med brannmurregler
|
||||
rules_rport=Port <tt>$1</tt>
|
||||
rules_title=Brannmurregler
|
||||
rules_zone=Sone <tt>$1</tt>
|
||||
@@ -305,8 +327,12 @@ shorewall_conf_2=Kommentar
|
||||
shorewall_conf_add=Legg til en ny konfigurasjonsvariabel.
|
||||
shorewall_conf_create=Opprett konfigurasjonsvariabel
|
||||
shorewall_conf_edit=Rediger konfigurasjonsvariabel
|
||||
shorewall_conf_err=Kunne ikke lagre konfigurasjonsvariabel
|
||||
shorewall_conf_header=Detaljer for konfigurasjonsvariabel
|
||||
shorewall_conf_none=Ingen shorewall6 konfigurasjon funnet
|
||||
shorewall_conf_return=liste over konfigurasjonsvariabler
|
||||
shorewall_conf_title=Master konfigurasjonsfil
|
||||
shorewall_conf_varname=Ugyldig variabelnavn (må være et gyldig shell variabelnavn)
|
||||
start_err=Kunne ikke starte brannmur
|
||||
status_title=Brannmur-status
|
||||
stop_err=Kunne ikke slå av brannmur
|
||||
@@ -322,12 +348,17 @@ tos_6=Test
|
||||
tos_add=Legg til ny tjeneste-type
|
||||
tos_create=Opprett tjeneste-type
|
||||
tos_edit=Rediger tjeneste-type
|
||||
tos_err=Kunne ikke lagre tjenestetype
|
||||
tos_header=Detaljer for tjeneste-type
|
||||
tos_none=Ingen tjenestetyper er definert enda.
|
||||
tos_return=liste over tjenestetyper
|
||||
tos_title=Tjenestetyper
|
||||
tunnels_0=VPN type
|
||||
tunnels_1=Sone for grensesnitt
|
||||
tunnels_add=Legg til ny VPN tunnel.
|
||||
tunnels_create=Opprett VPN tunell
|
||||
tunnels_edit=Rediger VPN tunell
|
||||
tunnels_eopenvpn=Ugyldig portnummer for OpenVPN tunnel
|
||||
tunnels_err=Kunne ikke lagre VPN tunell
|
||||
tunnels_generic=Generisk
|
||||
tunnels_generic_l=Generisk, for protokoll..
|
||||
@@ -362,6 +393,7 @@ zones_add=Legg til ny nettverkssone.
|
||||
zones_bport=bport
|
||||
zones_bport6=bport6
|
||||
zones_create=Opprett nettverkssone
|
||||
zones_desc=Sonene som vises på denne siden representerer forskjellige nettverk som systemet ditt kan nå. Oppføringene her har imidlertid ingen effekt på brannmuren - i stedet definerer de bare sonenavn og -beskrivelser.
|
||||
zones_edesc=Manglende sonebeskrivelse
|
||||
zones_edit=Rediger nettverkssone
|
||||
zones_eid=Manglende eller ugyldig sone ID
|
||||
@@ -370,7 +402,7 @@ zones_eopts=Ugyldige soneinnstillinger
|
||||
zones_eopts_in=Ugyldige innkommende soneinnstillinger
|
||||
zones_eopts_out=Ugyldige utgående soneinnstillinger
|
||||
zones_err=Kunne ikke lagre nettverkssone
|
||||
zones_firewall=Barrmursystem
|
||||
zones_firewall=Brannmursystem
|
||||
zones_header=Detaljer for nettverkssone
|
||||
zones_ipsec=IPsec
|
||||
zones_ipsec6=IPsec6
|
||||
|
||||
@@ -12,3 +12,4 @@ desc_de=Shoreline Firewall6
|
||||
desc_ms_MY=Firewall Shorewall6
|
||||
longdesc_ms_MY=Membolehkan anda menyunting jadual paling berguna pada Firewall Shorewall6
|
||||
longdesc_de=Hier können die nützlichsten Tabellen der Shorewall6 Firewall bearbeitet werden
|
||||
desc_no=Shorewall Brannmur6
|
||||
|
||||
@@ -39,3 +39,5 @@ Debian packages marked as "hold" are no longer offered as possible updates. This
|
||||
Added support for updating and installing packages from FreeBSD ports.
|
||||
---- Changes since 1.700 ----
|
||||
Added support for the FreeBSD pkgng binary package repository as an alternative to ports.
|
||||
---- Changes since 1.740 ----
|
||||
MacOS systems with PKGsrc installed can now use this module to manage and install binary packages.
|
||||
|
||||
3
software/config-macos
Normal file
3
software/config-macos
Normal file
@@ -0,0 +1,3 @@
|
||||
package_system=macos
|
||||
update_system=macos
|
||||
apt_mode=0
|
||||
@@ -1,3 +1,3 @@
|
||||
package_system=Package management system,1,rpm-RPM,pkgadd-Solaris,hpux-HPUX,freebsd-FreeBSD,slackware-Slackware,debian-Debian,aix-AIX,emerge-Gentoo,cygwin-Cygwin,msi-Microsoft Installer
|
||||
update_system=Package update system,1,-Detect automatically,apt-APT,yum-YUM,rhn-Redhat Network,csw-Blastwave CSW,urpmi-URPMI,emerge-Emerge,ports-FreeBSD Ports,pkg-FreeBSD pkgng,*-None
|
||||
package_system=Package management system,1,rpm-RPM,pkgadd-Solaris,hpux-HPUX,freebsd-FreeBSD,slackware-Slackware,debian-Debian,aix-AIX,emerge-Gentoo,cygwin-Cygwin,msi-Microsoft Installer,pkgsrc-PKGsrc
|
||||
update_system=Package update system,1,-Detect automatically,apt-APT,yum-YUM,rhn-Redhat Network,csw-Blastwave CSW,urpmi-URPMI,emerge-Emerge,ports-FreeBSD Ports,pkg-FreeBSD pkgng,pkgsrc-PKGsrc,*-None
|
||||
apt_mode=Command to use for APT installs,1,0-apt-get,1-aptitude
|
||||
|
||||
@@ -35,10 +35,10 @@ else {
|
||||
}
|
||||
print "<center>\n";
|
||||
if ($n) {
|
||||
print &text('delete_rusure', "<tt>$p</tt>", $n, $sz),"<br>\n";
|
||||
print &text('delete_rusure', "<tt>$p</tt>", $n, $sz),"<p>\n";
|
||||
}
|
||||
else {
|
||||
print &text('delete_rusure2', "<tt>$p</tt>"),"<br>\n";
|
||||
print &text('delete_rusure2', "<tt>$p</tt>"),"<p>\n";
|
||||
}
|
||||
|
||||
# Ask if the user is sure..
|
||||
|
||||
@@ -11,7 +11,7 @@ $f =~ s/\/$//;
|
||||
if ($f !~ /^\//) {
|
||||
# if the filename is not absolute, look for it
|
||||
foreach $p (split(/:/, $ENV{'PATH'})) {
|
||||
last if (&installed_file("$p/$f"));
|
||||
last if (&installed_file("$p/$f") && %file);
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -37,19 +37,18 @@ print &ui_hr();
|
||||
print &ui_subheading($text{'index_install'});
|
||||
print &text('index_installmsg', &package_system()),"<p>\n";
|
||||
|
||||
$upid = time().$$;
|
||||
print &ui_form_start("install_pack.cgi?id=$upid", "form-data", undef,
|
||||
&read_parse_mime_javascript($upid, [ "upload" ])),"\n";
|
||||
@opts = ( );
|
||||
push(@opts, [ 0, $text{'index_local'},
|
||||
&ui_textbox("local", undef, 50)."\n".
|
||||
&file_chooser_button("local", 0, 2) ]);
|
||||
push(@opts, [ 1, $text{'index_uploaded'},
|
||||
&ui_upload("upload", 50) ]);
|
||||
push(@opts, [ 2, $text{'index_ftp'},
|
||||
&ui_textbox("url", undef, 50)."\n".
|
||||
($has_search_system ? &capture_function_output(
|
||||
\&search_system_input) : "") ]);
|
||||
if (!$no_package_install) {
|
||||
push(@opts, [ 0, $text{'index_local'},
|
||||
&ui_textbox("local", undef, 50)."\n".
|
||||
&file_chooser_button("local", 0, 2) ]);
|
||||
push(@opts, [ 1, $text{'index_uploaded'},
|
||||
&ui_upload("upload", 50) ]);
|
||||
push(@opts, [ 2, $text{'index_ftp'},
|
||||
&ui_textbox("url", undef, 50)."\n".
|
||||
($has_search_system ? &capture_function_output(
|
||||
\&search_system_input) : "") ]);
|
||||
}
|
||||
if ($has_update_system) {
|
||||
push(@opts, [ 3, $text{$update_system.'_input'},
|
||||
&ui_textbox("update", undef, 30)."\n".
|
||||
@@ -57,9 +56,20 @@ if ($has_update_system) {
|
||||
(defined(&show_update_system_opts) &&
|
||||
($opts = &show_update_system_opts()) ? "<br>".$opts : "") ]);
|
||||
}
|
||||
print &ui_radio_table("source", 0, \@opts);
|
||||
print &ui_submit($text{'index_installok'}),"\n";
|
||||
print &ui_form_end();
|
||||
if (@opts) {
|
||||
$upid = time().$$;
|
||||
print &ui_form_start("install_pack.cgi?id=$upid", "form-data", undef,
|
||||
&read_parse_mime_javascript($upid, [ "upload" ])),"\n";
|
||||
if (@opts > 1) {
|
||||
print &ui_radio_table("source", $opts[0]->[0], \@opts);
|
||||
}
|
||||
else {
|
||||
print "<b>",$opts[0]->[1],"</b> ",$opts[0]->[2],"<p>\n";
|
||||
print &ui_hidden("source", $opts[0]->[0]);
|
||||
}
|
||||
print &ui_submit($text{'index_installok'}),"\n";
|
||||
print &ui_form_end();
|
||||
}
|
||||
|
||||
# Show search form by file, if supported by package system
|
||||
if (!$no_package_filesearch) {
|
||||
|
||||
@@ -79,14 +79,14 @@ elsif ($in{'source'} == 3) {
|
||||
|
||||
print &ui_hr() if (@packs);
|
||||
foreach $p (@packs) {
|
||||
local @pinfo = &show_package_info($p);
|
||||
&show_package_info($p);
|
||||
}
|
||||
&webmin_log($config{'update_system'}, "install", undef,
|
||||
{ 'packages' => \@packs } ) if (@packs);
|
||||
|
||||
if ($in{'caller'} && &foreign_check("webmin")) {
|
||||
# Software installed - refresh installed flag cache
|
||||
&foreign_require("webmin", "webmin-lib.pl");
|
||||
&foreign_require("webmin");
|
||||
($inst, $changed) =
|
||||
&webmin::build_installed_modules(0, $in{'caller'});
|
||||
if (@$changed && defined(&theme_post_change_modules)) {
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user