Compare commits

...

91 Commits
1.740 ... 1.750

Author SHA1 Message Date
Jamie Cameron
a6901947c2 New version bump 2015-05-10 13:42:47 -07:00
Jamie Cameron
8912154c0b New Postfix version 2015-05-10 13:40:53 -07:00
Jamie Cameron
6b34d179bb changelog for pkgsrc support 2015-05-10 11:00:48 -07:00
Jamie Cameron
bb2f091a17 pkgsrc has no local install mode 2015-05-10 10:50:47 -07:00
Jamie Cameron
dfd337009f Translation function for pkgsrc package names 2015-05-10 10:41:07 -07:00
Jamie Cameron
554cba6eba MacOS is supported now, with pkgsrc 2015-05-10 10:28:46 -07:00
Jamie Cameron
9d3e0e85ba Correct version and description display for packages not installed yet 2015-05-10 10:25:29 -07:00
Jamie Cameron
7d670cc449 More work on MacOS pkgsrc support 2015-05-10 09:57:25 -07:00
Jamie Cameron
0cc0a893a2 Get list of files in a package on MacOS 2015-05-09 21:55:38 -07:00
Jamie Cameron
b7190b1927 Start of work on pkgsrc support 2015-05-09 15:36:55 -07:00
Jamie Cameron
68890d8f2b Remove from the distribution modules for ancient software 2015-05-07 16:50:00 -07:00
Jamie Cameron
03f4c9fd56 Dev version bump 2015-05-05 19:55:50 -07:00
Jamie Cameron
c813b1c068 Allow multiple comma-separated IPs 2015-05-05 18:42:38 -07:00
Jamie Cameron
aafb66e45c changelog for launchd support 2015-05-03 10:23:05 -07:00
Jamie Cameron
8f0d32b764 More changes needed to support launchd 2015-05-03 10:14:03 -07:00
Jamie Cameron
62bf3b6cd4 Change the usermin boot script slightly to work with launchd 2015-05-03 10:10:20 -07:00
Jamie Cameron
58a454dc23 Change the webmin boot script slightly to work with launchd 2015-05-03 10:08:10 -07:00
Jamie Cameron
5a74498b87 Mailcap module needs to access the user's config 2015-05-03 10:07:21 -07:00
Jamie Cameron
ac238e37d1 More work on launchd support for MacOS X 2015-05-02 15:33:36 -07:00
Jamie Cameron
9e4269ebae Add command line option to not fork 2015-05-02 15:09:53 -07:00
Jamie Cameron
dfb0db593d New Debian versions 2015-04-29 19:52:55 -07:00
Jamie Cameron
79e2bf69b4 Show at-boot setting 2015-04-28 21:34:52 -07:00
Jamie Cameron
c153fae3d8 Suppress warnings when gpg doesn't output anything http://virtualmin.com/node/36979 2015-04-28 20:57:18 -07:00
Jamie Cameron
c1105d0ac5 Add support for deleting launchd agents 2015-04-26 17:22:38 -07:00
Jamie Cameron
fdffa9ee42 Use consistent comment type 2015-04-26 16:52:34 -07:00
Jamie Cameron
cb008888bf Launchd action creation now working 2015-04-26 16:30:27 -07:00
Jamie Cameron
86ce05ec3b UI for adding a launchd agent 2015-04-26 15:35:31 -07:00
Jamie Cameron
a42fbc5bd0 Param for MAC address is actually hwaddress https://sourceforge.net/p/webadmin/bugs/4589/ 2015-04-26 15:28:09 -07:00
Jamie Cameron
441b9f1502 Show detailed CPU information on MacOS 2015-04-26 10:19:09 -07:00
Jamie Cameron
1e0100b424 Show memory usage in bytes too 2015-04-26 10:03:05 -07:00
Jamie Cameron
288a377e71 Collect RAM and swap usage on macos 2015-04-26 09:50:50 -07:00
Jamie Cameron
12e2aecbda Give credit for translations 2015-04-26 09:23:44 -07:00
Jamie Cameron
2d83ca6cdf Catalan update from Jaume Badiella 2015-04-26 09:23:16 -07:00
Jamie Cameron
f498f36bef Catalan update from Jaume Badiella 2015-04-26 09:23:04 -07:00
Jamie Cameron
2eb957fc04 German translation updates from Raymond Vetter 2015-04-26 09:21:06 -07:00
Jamie Cameron
9cff0de208 Correct function's documented return type 2015-04-25 22:00:29 -07:00
Jamie Cameron
4b2ba48e58 Work on launchd support 2015-04-25 22:00:07 -07:00
Jamie Cameron
d47ee41c32 Fix remote host to run command on after failure in the case where there are multiple hosts http://virtualmin.com/node/36948 2015-04-25 21:54:38 -07:00
Jamie Cameron
22f3d49e5c Show password DB type 2015-04-25 15:02:00 -07:00
Jamie Cameron
a10dd02a49 New Mint versions 2015-04-23 17:03:37 -07:00
Jamie Cameron
52196635a3 Use reload command by default to avoid cache re-read https://sourceforge.net/p/webadmin/bugs/4588/ 2015-04-21 14:52:10 -07:00
Jamie Cameron
59efd239ea Devel version bump 2015-04-17 12:39:51 -07:00
Jamie Cameron
1a1deef64a UNit names can have spaces or funny characters at the start 2015-04-16 19:04:25 -07:00
Jamie Cameron
132ea695bc UNit names can have spaces or funny characters at the start 2015-04-16 19:03:50 -07:00
Jamie Cameron
743d0d59ad Multi-part TXT records are not automatically joined by a space, so when creating an SPF record this has to be explicitly added 2015-04-15 21:19:52 -07:00
Jamie Cameron
7162dbaa8e Detect more IPsec variants 2015-04-15 18:47:25 -07:00
Jamie Cameron
c378e60ec7 Show process sizes using sensible units https://github.com/webmin/webmin/issues/202 2015-04-13 22:34:02 -07:00
Jamie Cameron
9612e05536 give credit for norwegian 2015-04-10 22:31:09 -07:00
Jamie Cameron
f38442bbae Sort users by login 2015-04-08 17:18:22 -07:00
Jamie Cameron
cf0ddafbe0 German translation updates from Raymond Vetter 2015-04-07 20:31:04 -07:00
Jamie Cameron
1727c9917d German translation updates from Raymond Vetter 2015-04-07 20:30:57 -07:00
Jamie Cameron
18d16d7639 Don't append the architecture un-necessarily, as this breaks upgrades that change it http://virtualmin.com/node/36740 2015-04-05 16:19:53 -07:00
Jamie Cameron
3d20f8c56e Jails can apparently have no actions http://virtualmin.com/node/36768 2015-04-05 14:45:13 -07:00
Jamie Cameron
d4264be5fd A max tick time of -1 means unlimited 2015-04-05 12:05:32 -07:00
Jamie Cameron
6d553a10ad Allow max ticks time to be edited 2015-04-05 12:02:40 -07:00
Jamie Cameron
5f4180cf13 Update docs to modern day 2015-04-02 21:08:27 -07:00
Jamie Cameron
4aedfdb006 Update docs to modern day 2015-04-02 21:07:28 -07:00
Jamie Cameron
a3658ff653 fix wording 2015-04-02 20:59:39 -07:00
Jamie Cameron
d040242a7e Also use yum updateinfo to get security updates 2015-04-02 19:12:50 -07:00
Jamie Cameron
019e5e15e6 Semicolon can be a comment character too 2015-04-02 16:57:38 -07:00
Jamie Cameron
2a8797c49c Merge pull request #199 from tandrup/httpOnly-cookies
Add httpOnly to cookies on login page. Solves #4565.
2015-04-01 21:03:44 -07:00
Jamie Cameron
ab1095e529 Disallow TRACE requests, which we don't even support 2015-04-01 16:54:38 -07:00
Mads Mætzke Tandrup
30168f57bb Add httpOnly to cookies on login page. Solves #4565.
Add httpOnly to pam_login and session_login to avoid security scans reporting false positives on cookies without httpOnly
2015-04-01 14:37:02 +02:00
Jamie Cameron
0a2eb1d520 --to-source can be followed by just a :port 2015-03-29 21:47:13 -07:00
Jamie Cameron
ec4f05ec5f Use correct permissions for MH format too 2015-03-29 18:09:18 -07:00
Jamie Cameron
7a9b4d0b2b Use correct permissions when moving email between users http://virtualmin.com/node/36696 2015-03-29 18:07:40 -07:00
Jamie Cameron
b7b6624ee8 Fix escaping of % in commands http://virtualmin.com/node/36673 2015-03-27 15:06:42 -07:00
Jamie Cameron
f455c24054 Make Net::SSLeay mandatory 2015-03-26 20:30:52 -07:00
Jamie Cameron
ee94c220da German translation updates from Raymond Vetter 2015-03-26 20:30:08 -07:00
Jamie Cameron
615f97f47e German translation updates from Raymond Vetter 2015-03-26 20:29:51 -07:00
Jamie Cameron
1ef26769b6 IPfilter live output can contain inet before 'from' http://virtualmin.com/node/36645 2015-03-26 17:22:29 -07:00
Jamie Cameron
04ed6406e7 Add separate command before/after blacklist refresh http://virtualmin.com/node/36643 2015-03-25 23:10:09 -07:00
Jamie Cameron
882dcb7384 Don't wrap regexps unexpectedly http://virtualmin.com/node/36656 2015-03-25 10:26:33 -07:00
Jamie Cameron
f29f13f817 Fix enabling of command block 2015-03-24 20:23:25 -07:00
Jamie Cameron
0a8abc529b German translation updates from Raymond Vetter 2015-03-23 20:22:53 -07:00
Jamie Cameron
72e2faa5b6 Dev version bump 2015-03-21 20:17:35 -07:00
Jamie Cameron
8291e1c98d Under NSLCD, scope and filter are separate directives 2015-03-21 20:09:06 -07:00
Jamie Cameron
df3fa20d6f Add button to restart LDAP client daemon, which is needed to apply settings 2015-03-21 18:01:08 -07:00
Jamie Cameron
4f532659b3 changelog for ldap fixes 2015-03-21 17:20:42 -07:00
Jamie Cameron
e1f086944d Permissions fix 2015-03-21 17:17:53 -07:00
Jamie Cameron
a13bce59e3 Fixes needed for CentOS 7 support 2015-03-21 17:17:39 -07:00
Jamie Cameron
ad46361cb0 for systemd services, the name may have .service appended 2015-03-21 17:11:19 -07:00
Jamie Cameron
fd5f09a816 Add Net::SSLeay as optional dependency to the Webmin RPM 2015-03-21 16:44:51 -07:00
Jamie Cameron
c38570cb9d In some cases, RPM mamay not list the file in the rpm --dump output if there are multiple hard links to it 2015-03-21 13:39:33 -07:00
Jamie Cameron
324732d948 Norwegian update from Stein-Aksel Basma 2015-03-20 15:45:13 -07:00
Jamie Cameron
78c5892c6a Handle different format for base directive in NSLCD http://virtualmin.com/node/36531 2015-03-18 21:53:55 -07:00
Jamie Cameron
a1e74e6659 Deal with long user/group names by requesting UIDs instead 2015-03-17 22:34:15 -07:00
Jamie Cameron
4caa56aa80 Deal with long user/group names by requesting UIDs instead 2015-03-17 22:33:31 -07:00
Jamie Cameron
95c494d9fc Handle un-formatted MAC addresses 2015-03-16 19:01:14 -07:00
Jamie Cameron
2dd92dc2b7 Allow default match mode to be configured 2015-03-16 18:59:29 -07:00
Jamie Cameron
f5580c4046 Exclude release scripts from modules 2015-03-15 11:49:39 -07:00
122 changed files with 2029 additions and 718 deletions

View File

@@ -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
View File

@@ -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

View File

@@ -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...

View File

@@ -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 ..

View File

@@ -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

View File

@@ -749,6 +749,7 @@ local $rvword;
while(@rv) {
my $w = shift(@rv);
if (length($rvword)+length($w)+1 >= 255) {
$rvword .= " ";
push(@rvwords, $rvword);
$rvword = "";
}

View File

@@ -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>­ 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

View File

@@ -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

View File

@@ -20,7 +20,7 @@ index_dlang=spr&#229;ket modulene vises i
index_dpass=passordet brukt til &#229; logge inn p&#229;
index_dtheme=temaet som kontrollerer Webmins utseende
index_lang=Webmin UI spr&#229;k
index_langglobal=Globalt spr&#229;k ($1)
index_langglobal2=Globalt spr&#229;k .. $1 ($2)
index_langset=Personlig valg
index_ok=Lagre endringer
index_overlay=Tema overstyring

View File

@@ -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");

View File

@@ -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);
}

View File

@@ -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));

View File

@@ -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);

View File

@@ -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)) {

View File

@@ -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'}) );

View File

@@ -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>

View File

@@ -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'}) {

View File

@@ -116,6 +116,7 @@ my @rv;
while(<$fh>) {
s/\r|\n//g;
s/^\s*#.*$//;
s/^\s;.*$//;
if (/^\[([^\]]+)\]/) {
# Start of a section
$sect = { 'name' => $1,

View File

@@ -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);

View File

@@ -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";

View File

@@ -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

View File

@@ -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;

View File

@@ -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&#246;schen m&#246;chten?
clear_title=Regeln leeren
cluster_add=F&#252;ge Server hinzu
cluster_delete=Ausgew&#228;hltes l&#246;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&#246;schen
delete_ok=L&#246;sche jetzt
delete_rusure=Sind Sie sicher, dass Sie die Kette $1 l&#246;schen m&#246;chten? $2 Regeln werden in ihr gel&#246;scht.
delete_title=L&#246;sche Regel
desc_always=Immer
desc_and=und
@@ -170,6 +172,7 @@ index_auto5=Blockiere alles ausgenommen Ports die f&#252;r virtuelles Hosting be
index_bootup=Aktiviere beim Booten
index_bootupdesc=&#196;ndert die Option, um zu kontrollieren, ob Ihre Firewall beim Booten aktiviert ist oder nicht.
index_cclear=L&#246;sche alle Regeln
index_cdelete=L&#246;sche Kette
index_cdeletesel=L&#246;sches ausgew&#228;hltes
index_chain=Regel $1
index_chain_forward=Weitergeleitete Pakete (FORWARD) - Gilt nur f&#252;r Pakete, die dieser Host weitergeleitet hat
@@ -182,6 +185,7 @@ index_cluster=Cluster Server
index_clusterdesc=Klicken Sie auf diese Schaltfl&#228;che, um zus&#228;tzliche Webmin-Server einzurichten, mit denen die Firewall-Konfiguration automatisch kopiert werden.
index_cmovesel=Verschiebe ausgew&#228;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&#246;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&#252;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&#246;ffnet
log_rename_chain=Kette $1 in Tabelle $2 umbenannt
log_setup=Firewall eingerichtet
log_unapply=Konfiguration zur&#252;ckgesetzt
move_chain=Aktuelle &#196;nderung
move_count=Regeln ausgew&#228;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&#252;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&#252;ckzuf&#252;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

View File

@@ -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;
}

View File

@@ -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.

View File

@@ -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>

View File

@@ -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

View File

@@ -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

View File

@@ -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 ..

View File

@@ -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.

View File

@@ -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
View 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'});

View File

@@ -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();

View File

@@ -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;

View File

@@ -62,7 +62,9 @@ index_delboot_stop=Jetzt stoppen &amp; zur Bootzeit deaktivieren
index_desc=Beschreibung
index_downscript=Gleichfalls wird das Skript $1, welches unten aufgef&#252;hrt ist, beim Herunterfahren des Rechners ausgef&#252;hrt. Sie k&#246;nnen hier eigene Kommandos einf&#252;gen um beispielsweise sicher zu stellen, da&#223; 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

View File

@@ -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
View 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
View 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("");

View File

@@ -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);

View File

@@ -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()

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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 = "&nbsp;" 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'})." ".

View File

@@ -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'});
}

View File

@@ -1,24 +1,60 @@
__norefs=1
base_aliases=Basis f&#252;r E-Mail-Aliase
base_base=Globale Suchbasis
base_bfilter=Suchfilter
base_bscope=Suchtiefe
base_ealiases=Fehlende Basis f&#252;r E-Mail-Aliase
base_ebase=Fehlende globale Suchbasis
base_egroup=Fehlende Basis f&#252;r Unix Gruppen
base_ehosts=Fehlende Basis f&#252;r Hostnamen
base_enetgroup=Fehlende Basis f&#252;r Netzgruppen
base_enetmasks=Fehlende Basis f&#252;r Netzwerknamen
base_enetworks=Fehlende Basis f&#252;r Netzwerknamen
base_epasswd=Fehlende Basis f&#252;r Unix Benutzer
base_eprotocols=Fehlende Basis f&#252;r Protokolle
base_err=Fehlgeschlagen LDAP Suchbasen zu speichern
base_eservices=Fehlende Basis f&#252;r Netzwerkdienste
base_eshadow=Fehlende Basis f&#252;r Unix Passw&#246;rter
base_etimelimit=Fehlende oder ung&#252;ltige Suchfrist
base_global=Globale Basis
base_group=Basis f&#252;r Unix Gruppen
base_header=LDAP Verzeichnis Suchorte
base_hosts=Basis f&#252;r Hostnamen
base_netgroup=Basis f&#252;r Netzgruppen
base_netmasks=Basis f&#252;r Netzwerknamen
base_networks=Basis f&#252;r Netzwerknamen
base_passwd=Basis f&#252;r Unix Benutzer
base_protocols=Basis f&#252;r Protokolle
base_sbase=Nur Basis
base_scope=Suchtiefe
base_secs=Sekunden
base_services=Basis f&#252;r Netzwerkdienste
base_shadow=Basis f&#252;r Unix Passw&#246;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&#246;nnen nicht verwendet werden : $1
browser_esearch=LDAP-Suche fehlgeschlagen : $1
browser_none=Keine
browser_ok=Zeigen
browser_parent=Durchsuche &#220;bergeordnetes
browser_sel=OK
browser_subs=Untergeordnete Objekte
browser_title=LDAP Browser
check_base=Finde LDAP Basis f&#252;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=&#196;ndert, ob der LDAP-Client D&#228;mon beim Booten gestarte
index_check=&#220;berpr&#252;fe Konfiguration
index_checkdesc=Klicken Sie auf diese Schaltfl&#228;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&#228;lt.
index_econf=Der NSS-LDAP-Konfigurationsdatei $1 wurde auf Ihrem System nicht gefunden. Vielleicht ist die LDAP-Client-Unterst&#252;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&#228;hrend PAM-LDAP verwendet $2 nutzt. Dies kann Unstimmigkeiten zwischen den beiden Diensten f&#252;hren.
index_ignore=Zeige diese Nachricht nicht
index_ldapmod=LDAP Client
index_restart=LDAP Client Daemon neu gestartet
index_restartdesc=&#220;bernehme die aktuelle Konfiguration durch den Neustart des lokalen LDAP-Client-Daemons.
index_return=Modul Index
index_start=Starte LDAP Client D&#228;mon
index_startdesc=Startet den lokalen LDAP-Client D&#228;mon herunter, welcher ben&#246;tigt wird um den entfernten LDAP-Server abzufragen. Bis dieser gestartet ist k&#246;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=&#196;ndere Dienst $1
log_pam=Authentifizierungsoptionen ge&#228;ndert
log_restart=LDAP Client Daemon neu gestartet
log_server=LDAP Server Konfiguration modifiziert
log_start=LDAP Client D&#228;mon gestartet
log_stop=LDAP Client D&#228;mon gestoppt

View File

@@ -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 ..

View File

@@ -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
View 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("");

View File

@@ -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

View File

@@ -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' ] } );
}

View File

@@ -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

View File

@@ -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 {

View File

@@ -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";

View 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&#252;r Majordomo.

View File

@@ -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",

View File

@@ -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)'");

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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&#252;ltig-ausschauene Samen
conf_eticks=Maximale Zeit zwischen Ticks muss eine Zahl sein
conf_flight=Erlaube fliegen im &#220;berlebens-Modus?
conf_gamemode=Standard Spielmodus
conf_hardcore=Hardcore (permanenter Tod) Modus?
@@ -97,6 +98,8 @@ conf_random=W&#228;hle zuf&#228;llig
conf_rcon=Aktiviere die entfernte Konsole?
conf_seed=Samen f&#252;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&#252;r neue Welt
conf_type_default=Standard

View File

@@ -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?

View File

@@ -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);

View File

@@ -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");
}

View File

@@ -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 ".

View File

@@ -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

View File

@@ -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

View File

@@ -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'},

View File

@@ -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'});

View File

@@ -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

View File

@@ -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>

View File

@@ -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&#229; er Postfix ikke installert.
index_esuper=Postfix overv&#229;kingskommando $1 finnes ikke. Kanskje <a href='$2'>modulkonfigurasjonen</a> er feil.
index_postfix=Postfix
index_reload=Last om konfigurasjon
index_reloadmsg=Klikk p&#229; denne knappen for &#229; be Postfix om &#229; lese alle sine konfigurasjonsfiler p&#229; nytt. Dette kan v&#230;re nyttig n&#229;r Postix' konfigurasjonsfiler er endret manuelt.
index_return=Postfix konfigurasjon
index_start=Start Postfix
index_startmsg=Klikk p&#229; denne knappen for &#229; starte Postfix. F&#248;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

View File

@@ -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'});

View File

@@ -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;

View File

@@ -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);
}

View File

@@ -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];

View File

@@ -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;

View File

@@ -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;

View File

@@ -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];

View File

@@ -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.

View File

@@ -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++;
}
}

View File

@@ -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

View File

@@ -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&#229; niv&#229;:
index_emdstat=Kernel RAID statusfilen $1 finnes ikke p&#229; systemet ditt. Kernelen din st&#248;tter mest sannsynlig ikke RAID.
index_eprogs=Hverken RAID verkt&#248;y eller MDADM pakkene er installert p&#229; systemet ditt.
index_errors=Feil
index_header=Innstillinger for varsling om RAID problemer
index_level=RAID niv&#229;
index_mailaddr=Send meldinger til
@@ -157,3 +158,4 @@ view_stop=Deaktiver
view_stopdesc=Klikk p&#229; denne knappen for &#229; sl&#229; av RAID enheten, slik at den ikke lenger er tilgjengelig.
view_super=Vedvarende superblokk?
view_title=RAID Enhet
view_uuid=UUID

View File

@@ -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

View File

@@ -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'});

View File

@@ -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

View File

@@ -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

View File

@@ -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&#44; bevor Konfiguration ausgef&#252;hrt wird,3,None
before_apply_cmd=Befehl&#44; bevor Konfiguration ausgef&#252;hrt wird,3,None
after_apply_cmd=Befehl&#44; der nach der Anwendung der Konfiguration ausgef&#252;hrt wird,3,Keiner
before_refresh_cmd=Befehl&#44; vordem Blackliste aktualisiert wird,3,None
after_refresh_cmd=Befehl&#44; nachdem Blackliste aktualisiert wird,3,None
display_zone_descriptions=Zeige Zone Beschreibungen in Regeldatei?,1,0-Nein,1-Ja

View File

@@ -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

View File

@@ -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("");

View File

@@ -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

View File

@@ -124,6 +124,7 @@ log_start=Startet brannmur
log_stop=Stoppet brannmur
log_up_table=Flyttet opp oppf&#248;ring i $1 tabellen
manual_desc=Dette skjemaet kan brukes til &#229; redigere Shirewall filen $1 manuelt. V&#230;r forsiktig, siden det ikke vil bli utf&#248;rt noen syntakssjekk p&#229; 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&#230;rt til alle m&#229;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 &#229; endre rekkef&#248;lgen p&#229; parameterene her, dersom du &#248;nsker &#229; bevare den relative posisjon p&#229; 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&#229;
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&#229; brannmurens Regler side.
policy_eburst=Manglende eller ugyldig tall for trafikk burst
policy_edit=Rediger standard policy
policy_efw=&lt;Brannmur&gt; kan velges b&#229;de for kilde- og m&#229;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&#248;r
providers_dup=Dupliser leverand&#248;r
providers_edit=Rediger ruting-leverand&#248;r
providers_edup=Mangler leverand&#248;r &#229; duplisere
providers_egateway=Manglende eller ugyldig gateway
providers_ename=Manglende eller ugyldig leverand&#248;rnavn
providers_enumber=Manglende eller ugyldig leverand&#248;rnummer
providers_err=Kunne ikke lagre ruting-leverand&#248;r
providers_fallback=Legg til leverand&#248;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&#229;l
rules_2z=M&#229;l-sone eller -port
rules_3=Protokoll
rules_4=Kilde-porter
rules_5=M&#229;l-porter
rules_add=Legg til ny brannmurregel.
rules_create=Opprett brannmurregel
rules_dnat=Opprinnelig m&#229;l-adresse for DNAT eller REDIRECT
rules_dnat_dest=For DNAT eller REDIRECT fyller du inn den nye m&#229;l-adressen eller -porten her.
rules_dnat_port=For DNAT eller REDIRECT fyller du inn den opprinnelige m&#229;l--porten her.
rules_eaction=Ingen handling valgt
rules_edit=Rediger brannmurregel
rules_edother=Manglende eller ugyldig m&#229;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&#229;
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&#229; v&#230;re et gyldig shell variabelnavn)
start_err=Kunne ikke starte brannmur
status_title=Brannmur-status
stop_err=Kunne ikke sl&#229; 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&#229; denne siden representerer forskjellige nettverk som systemet ditt kan n&#229;. Oppf&#248;ringene her har imidlertid ingen effekt p&#229; 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&#229;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

View File

@@ -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&#246;nnen die n&#252;tzlichsten Tabellen der Shorewall6 Firewall bearbeitet werden
desc_no=Shorewall Brannmur6

View File

@@ -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
View File

@@ -0,0 +1,3 @@
package_system=macos
update_system=macos
apt_mode=0

View File

@@ -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&#45;get,1-aptitude

View File

@@ -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..

View File

@@ -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 {

View File

@@ -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) {

View File

@@ -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