mirror of
https://github.com/webmin/webmin.git
synced 2026-02-06 23:42:21 +00:00
Compare commits
201 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d058fc20a1 | ||
|
|
b0e5f067b7 | ||
|
|
48fb038510 | ||
|
|
e0a565d603 | ||
|
|
41c6fd30b4 | ||
|
|
31060b6d06 | ||
|
|
6c453316f6 | ||
|
|
6f28146479 | ||
|
|
37f9bf9610 | ||
|
|
cdccfa120c | ||
|
|
7c1c91b007 | ||
|
|
bac617fa01 | ||
|
|
1da01b566b | ||
|
|
eeca3125c2 | ||
|
|
6f5dd4ee59 | ||
|
|
750e66db57 | ||
|
|
36230c9d7e | ||
|
|
9fae8e4d51 | ||
|
|
3f94e128c6 | ||
|
|
3974506a2c | ||
|
|
95797d1b52 | ||
|
|
d5ce28b8b3 | ||
|
|
0b733047f3 | ||
|
|
314787b39c | ||
|
|
314f244aab | ||
|
|
1dba4990f9 | ||
|
|
f94e99a745 | ||
|
|
496dfff18b | ||
|
|
6b020885b7 | ||
|
|
3843bbfa74 | ||
|
|
2ac4ce9e9a | ||
|
|
29f9c54a57 | ||
|
|
84970e7d78 | ||
|
|
595e72f5f7 | ||
|
|
4ebb89c34b | ||
|
|
4b59012184 | ||
|
|
6eb2314d10 | ||
|
|
8a4e33ad4f | ||
|
|
365e4bda6d | ||
|
|
5cd6c0578c | ||
|
|
72a68098f2 | ||
|
|
1b16568d88 | ||
|
|
ed0f1f30ca | ||
|
|
0b194ccd28 | ||
|
|
56cc1d0cd3 | ||
|
|
31a707ce4b | ||
|
|
5bba2e68c6 | ||
|
|
5ca49334e7 | ||
|
|
0a92666d02 | ||
|
|
88389c68ff | ||
|
|
f2f7050d86 | ||
|
|
02d3144e63 | ||
|
|
26f90d11c8 | ||
|
|
b657b9b5ab | ||
|
|
9f953c78a6 | ||
|
|
fe43e60b3e | ||
|
|
9b73db8417 | ||
|
|
ccbd04d0d0 | ||
|
|
390308697b | ||
|
|
9a268a632e | ||
|
|
289b96b426 | ||
|
|
6735d79b58 | ||
|
|
ee87e6e555 | ||
|
|
7e22ae2ad9 | ||
|
|
eb34879151 | ||
|
|
359297fa01 | ||
|
|
84c0756f39 | ||
|
|
0c49e7f061 | ||
|
|
53f79a190c | ||
|
|
79627542bb | ||
|
|
24cd9c0063 | ||
|
|
ea1affa6ac | ||
|
|
0da2438fc5 | ||
|
|
75292f6673 | ||
|
|
14ef6f4188 | ||
|
|
e421c972b8 | ||
|
|
1f46fa73af | ||
|
|
c73c3972fc | ||
|
|
0eb8698955 | ||
|
|
939a9ff0a0 | ||
|
|
fe64f7c84c | ||
|
|
d98a34a0da | ||
|
|
b093796cd9 | ||
|
|
02aff353d0 | ||
|
|
7a222875e1 | ||
|
|
006326b38c | ||
|
|
b2b453e8c4 | ||
|
|
b1583f1db4 | ||
|
|
903999594a | ||
|
|
fb83f6ef49 | ||
|
|
615d2a0255 | ||
|
|
9036ccaabd | ||
|
|
bb89e2756d | ||
|
|
eb5b6dd35c | ||
|
|
311dc8ae09 | ||
|
|
c3874dcdc1 | ||
|
|
f7b606af1a | ||
|
|
827f337003 | ||
|
|
73c96d21e7 | ||
|
|
1f436ebb28 | ||
|
|
a0c5747d95 | ||
|
|
d62d4f6a39 | ||
|
|
09a8cda636 | ||
|
|
5a57c5cf10 | ||
|
|
defd73f28e | ||
|
|
72389d0b1b | ||
|
|
b095f33c7a | ||
|
|
35b356e755 | ||
|
|
1cbf8e8dcb | ||
|
|
3ac3be1878 | ||
|
|
333343af46 | ||
|
|
a5db316751 | ||
|
|
10c183c35d | ||
|
|
85c9fb169d | ||
|
|
0153a70988 | ||
|
|
2e5f70506a | ||
|
|
30b5ffd8d4 | ||
|
|
90365aad2d | ||
|
|
a63b9a30f2 | ||
|
|
5bf391c8b4 | ||
|
|
d5413e5442 | ||
|
|
572b480165 | ||
|
|
7b9fa73fcb | ||
|
|
86e0cfaf27 | ||
|
|
b6c0d87498 | ||
|
|
63826fe9b0 | ||
|
|
b318011bec | ||
|
|
835b7447ee | ||
|
|
b2b95391ac | ||
|
|
e65ceefd9d | ||
|
|
71e38f66cc | ||
|
|
62b9732f40 | ||
|
|
f73389554d | ||
|
|
7654c96a71 | ||
|
|
d245738402 | ||
|
|
4dfce19c05 | ||
|
|
7600c095c7 | ||
|
|
123b434bea | ||
|
|
ebcc8b32fe | ||
|
|
c1aa42cd08 | ||
|
|
bee30e3ed0 | ||
|
|
8447c6f89c | ||
|
|
d616b00f61 | ||
|
|
6f37277c36 | ||
|
|
9096f4489d | ||
|
|
5e66621cf2 | ||
|
|
d44c90c3ac | ||
|
|
60f498345a | ||
|
|
4d2760bc4b | ||
|
|
c18be20f47 | ||
|
|
76fdb8f67b | ||
|
|
fcac9df241 | ||
|
|
0f0ea37cf1 | ||
|
|
953ab4863e | ||
|
|
c1ddc59034 | ||
|
|
48260ea268 | ||
|
|
36f0a46525 | ||
|
|
e2fc6b848d | ||
|
|
aaecbcbc62 | ||
|
|
cb2771d4ce | ||
|
|
7e3261c43c | ||
|
|
47ab551c80 | ||
|
|
79d6368a6b | ||
|
|
3cf804f04e | ||
|
|
1a64453dce | ||
|
|
828d747a6a | ||
|
|
482e5f8e23 | ||
|
|
112ce34f95 | ||
|
|
6574f269d9 | ||
|
|
f864c77156 | ||
|
|
0f7fb28345 | ||
|
|
782e2a5d04 | ||
|
|
033fa279f1 | ||
|
|
70318ca08c | ||
|
|
c59bff82e6 | ||
|
|
e4a7bc76f7 | ||
|
|
dc5e779ce3 | ||
|
|
7b969179d5 | ||
|
|
0bf5a91f77 | ||
|
|
861d49b9ab | ||
|
|
3f9a8f95eb | ||
|
|
f47eabb6ae | ||
|
|
a792256200 | ||
|
|
b453d0a27c | ||
|
|
bef2f7b17f | ||
|
|
b544e9fe5c | ||
|
|
f8956f9128 | ||
|
|
91a25500c0 | ||
|
|
6f3cb32e49 | ||
|
|
7a242198ea | ||
|
|
29df3dcec6 | ||
|
|
070de197a0 | ||
|
|
200e29ff24 | ||
|
|
22af05015e | ||
|
|
7eb7e034b3 | ||
|
|
0e2af0dad0 | ||
|
|
04dfab3df6 | ||
|
|
26cce7a247 | ||
|
|
5e785475c8 | ||
|
|
b3cda55b5a | ||
|
|
4c33960f99 |
@@ -202,3 +202,9 @@ Security fixes for XSS attacks in user_chooser.cgi and other scripts.
|
||||
---- Changes since 1.690 ----
|
||||
More German translation updates, thanks to Raymond Vetter.
|
||||
Support for RHEL 7, CentOS 7 and other derivatives in multiple modules.
|
||||
---- Changes since 1.700 ----
|
||||
More German translation updates, thanks to Raymond Vetter.
|
||||
Catalan updates, thanks to Jaume Badiella.
|
||||
Added additional protected against Shellshock exploits made via the Webmin webserver.
|
||||
---- Changes since 1.710 ----
|
||||
SSL v2 and v3 are now disabled by default at Webmin install time, to block the POODLE attack. They can be re-enabled on the SSL Encryption page of the Webmin Configuration module.
|
||||
|
||||
2
README
2
README
@@ -1,4 +1,4 @@
|
||||
Webmin Version 1.700
|
||||
Webmin Version 1.720
|
||||
--------------------
|
||||
Webmin is a web-based interface for system administration for Unix.
|
||||
Using any browser that supports tables and forms, you can setup user
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -44,9 +44,11 @@ my ($only) = @_;
|
||||
my (%miniserv, @rv, %acl, %logout);
|
||||
&read_acl(undef, \%acl);
|
||||
&get_miniserv_config(\%miniserv);
|
||||
foreach my $a (split(/\s+/, $miniserv{'logouttimes'})) {
|
||||
if ($a =~ /^([^=]+)=(\S+)$/) {
|
||||
$logout{$1} = $2;
|
||||
if ($miniserv{'logouttimes'}) {
|
||||
foreach my $a (split(/\s+/, $miniserv{'logouttimes'})) {
|
||||
if ($a =~ /^([^=]+)=(\S+)$/) {
|
||||
$logout{$1} = $2;
|
||||
}
|
||||
}
|
||||
}
|
||||
my $fh = "PWFILE";
|
||||
|
||||
@@ -233,6 +233,7 @@ if (@icons) {
|
||||
sub show_modules
|
||||
{
|
||||
my ($type, $who, $mods, $global, $prefix) = @_;
|
||||
$mods ||= [ ];
|
||||
my $rv;
|
||||
if ($config{'select'}) {
|
||||
# Show as drop-down menu
|
||||
|
||||
@@ -481,5 +481,6 @@ twofactor_enrolling=S'est
|
||||
twofactor_failed=...l'assignació ha fallat: $1
|
||||
twofactor_done=...completa. El teu ID amb aquest proveïdor és <tt>$1</tt>.
|
||||
twofactor_setup=L'autenticació de dos factors encara no s'ha activat al sistema, però es pot activar utilitzant el mòdul de <a href='$1'>Configuració de Webmin</a>.
|
||||
twofactor_ebutton=No has fet clic a cap botó!
|
||||
|
||||
__norefs=1
|
||||
|
||||
13
acl/lang/de
13
acl/lang/de
@@ -89,7 +89,6 @@ convert_msg=Konvertiere Unixbenutzer ...
|
||||
convert_nogroups=Auf Ihrem System wurden keine Webmingruppen definiert. Wenigstens eine Gruppe muss vor der Konvertierung angelegt sein, um Rechte für die konvertierten Benutzer zu definieren.
|
||||
convert_ok=Konvertiere jetzt
|
||||
convert_skip=$1 wurde übersprungen
|
||||
convert_sync=Benutze zukünftig das gleiche Passwort wie Unixbenutzer?
|
||||
convert_sync2=Synchronisiere zukünftig Passwort mit Unix Benutzer?
|
||||
convert_title=Benutzer konvertieren
|
||||
convert_user=Unix Benutzer
|
||||
@@ -172,7 +171,6 @@ edit_seldays=Nur gewählte Tage ..
|
||||
edit_selhours=Von $1:$2 nach $3:$4
|
||||
edit_set=Einstellen auf
|
||||
edit_skill=Experten-Level
|
||||
edit_special=Spezial
|
||||
edit_switch=Zu Benutzer wechseln
|
||||
edit_templock=Temporär gesperrt
|
||||
edit_temppass=Erzwinge Änderungen bei der nächsten Anmeldung
|
||||
@@ -286,8 +284,8 @@ makedn_still=Einige Probleme wurden auch nach DN Erstellung gefunden : $1
|
||||
makedn_title=Erstelle LDAP DN
|
||||
pass_days=Tage
|
||||
pass_ecannot=Es ist Ihnen nicht erlaubt Passwortrestriktionen zu editieren
|
||||
pass_elockdays=Vermisse Anzahl von Tagen bevor der Zugang gesperrt wird oder der Wert ist nicht Nummerisch
|
||||
pass_emaxdays=Vermisse Anzahl von Tagen bevor das Kennwort geändert wird oder der Wert ist nicht Nummerisch
|
||||
pass_elockdays=Vermisse Anzahl von Tagen bevor der Zugang gesperrt wird oder der Wert ist nicht numerisch
|
||||
pass_emaxdays=Vermisse Anzahl von Tagen bevor das Kennwort geändert wird oder der Wert ist nicht numerisch
|
||||
pass_eminsize=Vermisse minimale Kennwortlänge oder der Wert ist nicht numerisch
|
||||
pass_eoldblock=Vermisse Anzahl von Tage bevor ein Kennwort zurückgeweisen wird oder der Wert ist nicht numerisch
|
||||
pass_err=Fehler beim Speichern der Kennwortrestriktionen
|
||||
@@ -300,7 +298,7 @@ pass_nolockdays=Zugang wird nie gesperrt
|
||||
pass_nomaxdays=Änderung ist nie notwendig
|
||||
pass_nominsize=Kein Minimum
|
||||
pass_nooldblock=Keine Begrenzung zur Wiederverwendung des Kennworts
|
||||
pass_nouser=Erlaube kein Kennwort welches den Benutzernamen enthält
|
||||
pass_nouser=Erlaube kein Kennwort welches den Benutzernamen enthält?
|
||||
pass_oldblock=Anzahl von alten Kennwörtern zurückweisen
|
||||
pass_pass=Kennwörter
|
||||
pass_regdesc=Menschlich lesbare Beschreibung von regulären Ausdrücken
|
||||
@@ -310,7 +308,7 @@ rbac_desc=Die RBAC (Role Based Access Control)-Integration in die Webmin-Softwar
|
||||
rbac_ecpan=Sie haben keinen Zugriff auf die Webmin-Perl-Modulseite um das für die RBAC-Integration benötigte Modul $1 zu installieren.
|
||||
rbac_eperl=Das Perl-Modul $1 wird für die RBAC-Integration benötigt, ist jedoch nicht installiert. Sie können dies über das <a href='$2'>CPAN-Modul</a> nachholen.
|
||||
rbac_esolaris=RBAC wird derzeit nur von Solaris unterstützt und kann auf diesem $1 System nicht genutzt werden.
|
||||
rbac_ok=RBAC-Integration ist auf Ihrem System verfügbar und kann pro Benutzer im Benutzer- und Gruppenmodul angewandt werden
|
||||
rbac_ok=RBAC-Integration ist auf Ihrem System verfügbar und kann pro Benutzer im Benutzer- und Gruppenmodul angewandt werden.
|
||||
rbac_title=Setup RBAC
|
||||
save_ecolon=Kennwörter dürfen keinen Doppelpunkt (:) enthalten
|
||||
save_ecreate=Sie haben keine Berechtigung einen Benutzer anzulegen
|
||||
@@ -334,7 +332,7 @@ save_enone=Keine Adressen eingegeben
|
||||
save_eos=Die Option "Dasselbe Kennwort wie bei Unix" wird nicht von Ihrem Betriebssystem unterstützt.
|
||||
save_eoverlay=Das Personal theme overlay kann nicht ausgewählt werden, wenn das theme ist
|
||||
save_epam=PAM-Authentifizierung ist nicht verfügbar, da das <tt>Authen::PAM</tt> Perl-Modul nicht installiert ist oder nicht richtig arbeitet.
|
||||
save_epam2=Sie können das Webmin-Modul 'Perl-Module' benutzen um <a href='$1'>Authen::PAM herunterzuladen und zu installieren </a>.
|
||||
save_epam2=Sie können das Webmin-Modul 'Perl-Module' benutzen um <a href='$1'>Authen::PAM herunterzuladen und zu installieren</a>.
|
||||
save_epass=Kennwort ist nicht gültig : $1
|
||||
save_err=Fehler beim Speichern des Benutzers
|
||||
save_eself=Ihrer aktuellen IP-Adresse ($1) würde der Zugriff verweigert
|
||||
@@ -449,7 +447,6 @@ unix_mall=Alle Benutzer
|
||||
unix_mode=Erlauben
|
||||
unix_none=Keine Benutzer eingegeben
|
||||
unix_pamany=Erlaube Anmeldungen welche nur die PAM Validierung durchlaufen als $1
|
||||
unix_restrict=Die folgenden zusätzlichen Restriktionen werden auf die oben ausgewählten Unixbenutzer angewandt.
|
||||
unix_restrict2=Zusätzliche Restriktionen
|
||||
unix_same=<Gleicher Benutzer oder Gruppe>
|
||||
unix_sel=Die für die Anmeldung zu erlaubenden Unixbenutzer sind unten aufgelistet ..
|
||||
|
||||
165
acl/lang/es
165
acl/lang/es
@@ -1,3 +1,4 @@
|
||||
__norefs=1
|
||||
acl_acl=¿Poder editar el control de acceso al módulo?
|
||||
acl_all=Todos los módulos
|
||||
acl_cats=¿Poder cambiar categorización?
|
||||
@@ -22,6 +23,7 @@ acl_mods=Poder otorgar acceso a
|
||||
acl_options=Opciones de control de acceso para $1
|
||||
acl_others=¿Poder ver módulos inaccesibles?
|
||||
acl_own=Solo sus propios módulos
|
||||
acl_pass=Puede cambiar las restricciones de contraseña?
|
||||
acl_perms=Los usuarios creados recientemente obtienen
|
||||
acl_perms_0=Control de acceso a módulo por defecto (sin restricciones)
|
||||
acl_perms_1=Los mismos controles de acceso a módulo que el creador
|
||||
@@ -31,6 +33,7 @@ acl_rename=¿Poder renombrar usuarios?
|
||||
acl_reset=Resetear a Acceso Total
|
||||
acl_sel=Módulos seleccionados ..
|
||||
acl_sessions=¿Poder ver y cancelar sesiones de ingreso?
|
||||
acl_sql=Puede configurar la base de datos de usuario y grupo?
|
||||
acl_switch=¿Puede cambiar a otros usuarios?
|
||||
acl_sync=¿Poder configurar sincronización de usuario?
|
||||
acl_theme=¿Poder cambiar tema personal?
|
||||
@@ -51,6 +54,7 @@ cert_ebrowser=Webmin no sabe como emitir certificados cliente para su navegador
|
||||
cert_eca=Fallo al configurar la autoridad del certificado : $1
|
||||
cert_ekey=No fue entregada una nueva clave SSL por parte de su navegador - quizás no soporte certificados SSL clientes.
|
||||
cert_email=Dirección de correo electrónico
|
||||
cert_etempdir=Archivo de certificado invalido
|
||||
cert_header=Detalles del nuevo certificado
|
||||
cert_install=Instalar su certificado en el navegador
|
||||
cert_issue=Emitir Certificado
|
||||
@@ -66,8 +70,10 @@ convert_1=Solo los usuarios
|
||||
convert_2=Todos excepto los usuarios
|
||||
convert_3=Usuarios con grupo
|
||||
convert_4=Usuarios con identificador de usuario en rango
|
||||
convert_action=Cambios aceptados
|
||||
convert_added=Agregando $1
|
||||
convert_desc=Este formulario permite convertir usuarios Unix existentes a usuarios Webmin. Los permisos de cada uno de los nuevos usuarios Webmin serán determinados por los grupos seleccionados debajo.
|
||||
convert_done=$1 usuarios convertidos, $2 invalidos, $3 ya existen, $4 excuidos.
|
||||
convert_ecannot=No está autorizado a convertir usuarios Unix
|
||||
convert_egroup=El grupo Unix no existe
|
||||
convert_emax=Identificador de usuario máximo no válido
|
||||
@@ -84,7 +90,17 @@ convert_nogroups=No se han definido grupos Webmin en su sistema. Al menos un gru
|
||||
convert_ok=Convertir Ahora
|
||||
convert_skip=Salteándo $1
|
||||
convert_sync=¿Usar la misma contraseña que en Unix en el futuro?
|
||||
convert_sync2=Sincronizar contraseña con el usuario de Unix en el futuro?
|
||||
convert_title=Convertir Usuarios
|
||||
convert_user=Usuario de Unix
|
||||
convert_users=Usuarios a convertir
|
||||
cpass_dict=Es una palabra del diccionario
|
||||
cpass_minsize=Debe ser al menos de $1 caracteres de largo
|
||||
cpass_name=Contiene el nombre de usuario
|
||||
cpass_notre=Coincide con un patron no permitido
|
||||
cpass_old=Contraseñas antiguas no pueden ser reutilizadas
|
||||
cpass_re=No coincide con un patron requerido
|
||||
cpass_spellcmd=Ninguno de los comandos $1 o $2 necesitan ser comprobados para ver si las palabras del diccionario estan instaladas
|
||||
delete_ecannot=No está autorizado a borrar usuarios
|
||||
delete_err=Fallo al borrar usuario
|
||||
delete_eself=No puede borrarse a si mismo
|
||||
@@ -94,13 +110,17 @@ edit_alldays=Cada día
|
||||
edit_allhours=Cualquier hora
|
||||
edit_allow=Permitir solo desde las direcciones listadas
|
||||
edit_cert=Nombre del certificado SSL
|
||||
edit_chars=letras
|
||||
edit_clone=Clonar
|
||||
edit_cloneof=Clonando un usuario de Webmin
|
||||
edit_days=Días permitidos de la semana
|
||||
edit_deny=Denegar desde las direcciones listadas
|
||||
edit_dont=No cambiar
|
||||
edit_ecreate=No está autorizado a crear usuarios
|
||||
edit_egone=El usuario seleccionado ya no existe
|
||||
edit_euser=No está autorizado a editar este usuario
|
||||
edit_extauth=Programa externo de autenticación
|
||||
edit_global=Permisos para todos los modulos
|
||||
edit_group=Miembro de grupo
|
||||
edit_groupmods=(Además de los módulos del grupo)
|
||||
edit_hide=Ocultar no usado
|
||||
@@ -113,15 +133,31 @@ edit_lock=Contraseña no aceptada
|
||||
edit_log=Ver bitácoras
|
||||
edit_logout=Tiempo para expulsión por inactividad
|
||||
edit_mins=minutos
|
||||
edit_minsize=Largo minimo de contraseña
|
||||
edit_mods=Modulos de webmin disponibles
|
||||
edit_modsg=Modulos de webmin disponibles (ademas de los del grupo)
|
||||
edit_modules=Módulos
|
||||
edit_nochange=Hacer cumplir días de cambio de contraseña?
|
||||
edit_none=Ninguna
|
||||
edit_notabs=¿Categorizar módulos?
|
||||
edit_overlay=Tema personal
|
||||
edit_overlayglobal=Ninguno - Usar tema por defecto
|
||||
edit_pam=Autenticación PAM
|
||||
edit_pass=Contraseña
|
||||
edit_passlocked=La contraseña no fue modificada por $1 dias - Cuenta bloqueada!
|
||||
edit_passmax=La contraseña no fue modificada por $1 dias - debe ser modificada en el siguiente ingreso
|
||||
edit_passold=La contraseña fue modificada por ultima vez hace $1 dias
|
||||
edit_passtoday=La contraseña fue cambiada hace menos de un dia
|
||||
edit_proto=Tipo de almacenamiento
|
||||
edit_proto_=Archivos locales
|
||||
edit_proto_ldap=Servidor LDAP
|
||||
edit_proto_mysql=Base de datos MySQL
|
||||
edit_proto_postgresql=Base de datos PostgreSQL
|
||||
edit_rbacdeny=Modo acceso RBAC
|
||||
edit_rbacdeny0=RBAC sólo controla ACLs del módulo seleccionado
|
||||
edit_rbacdeny1=RBAC controla todos los módulos y ACLs
|
||||
edit_readonly=Este usuario de Webmin no debe ser editado mientras es manejado por el $1 módulo. <a href='$2'>Pincha aquí</a> para saltarse esta advertencia y editar el usuario de todos modos - ¡¡pero tenga cuidado de que cualquier cambio manual pueda ser sobreescrito!!
|
||||
edit_real=Nombre real
|
||||
edit_return=Usuario de Webmin
|
||||
edit_return2=Grupo Webmin
|
||||
edit_rights=Derechos de acceso de usuarios Webmin
|
||||
@@ -130,6 +166,7 @@ edit_risk_high=Superusuario
|
||||
edit_risk_low=Usuario normal
|
||||
edit_risk_medium=Usuario Administrador
|
||||
edit_same=Igual que en Unix
|
||||
edit_security=Opciones de seguridad y limites
|
||||
edit_selall=Seleccionar todo
|
||||
edit_seldays=Solo los días seleccionados ...
|
||||
edit_selhours=De $1:$2 a $3:$4
|
||||
@@ -138,11 +175,18 @@ edit_skill=Nivel de habilidades
|
||||
edit_special=Especial
|
||||
edit_switch=Cambiar a Usuario
|
||||
edit_templock=Temporalmente bloqueado
|
||||
edit_temppass=Forzar cambio en el siguiente ingreso
|
||||
edit_theme=Tema personal
|
||||
edit_themedef=Tema de Webmin anterior
|
||||
edit_themeglobal=Desde la Configuración de Webmin
|
||||
edit_title=Editar Usuario de Webmin
|
||||
edit_title2=Crear Usuario de Webmin
|
||||
edit_twofactor=Tipo de autentificacion de 2 factores
|
||||
edit_twofactoradd=Habilitar Two-Factor para Usuario
|
||||
edit_twofactorcancel=Remover reuqerimiento de autentificacion Two-Factor
|
||||
edit_twofactornone=Ninguna configuracion todabia
|
||||
edit_twofactorprov=Usando proveedor $1 con ID $2
|
||||
edit_ui=Opciones de interfaz de usuario
|
||||
edit_unix=Autenticación Unix
|
||||
edit_user=Nombre de usuario
|
||||
gdelete_desc=¿Está seguro que desea borrar el grupo $1 y sus usuarios miembros $2 ?
|
||||
@@ -157,13 +201,16 @@ gdeletes_ok=Borrar Grupos
|
||||
gdeletes_rusure=¿Está seguro de que quiere borrar los $1 grupos seleccionados, y los $2 usuarios que contienen? Todos sus configuraciones de control de acceso y sus detalles de usuario se perderán.
|
||||
gdeletes_title=Borrar Grupos
|
||||
gdeletes_users=Grupos seleccionados: $1
|
||||
gedit_desc=Descripcion de grupo
|
||||
gedit_ecannot=No está autorizado a editar grupos
|
||||
gedit_egone=El grupo seleccionado ya no existe
|
||||
gedit_group=Nombre de grupo
|
||||
gedit_members=Usuarios y grupos miembros
|
||||
gedit_modules=Módulos de miembros
|
||||
gedit_rights=Derechos de acceso del grupo de Webmin
|
||||
gedit_title=Editar Grupos de Webmin
|
||||
gedit_title2=Crear Grupo de Webmin
|
||||
gsave_edesc=Descripcion invalida - el caracter : no esta permitido
|
||||
gsave_edup=El nombre de grupo ya está en uso
|
||||
gsave_ename=Nombre de grupo no ingresado o no válido
|
||||
gsave_enamewebmin=El nombre de grupo 'webmin' está reservado para uso interno
|
||||
@@ -180,10 +227,13 @@ index_convert=Convertir usuarios Unix a Webmin
|
||||
index_create=Crear un nuevo usuario de Webmin
|
||||
index_delete=Borrar Seleccionado
|
||||
index_edit=Editar módulo ACL :
|
||||
index_eglist=Error al listar grupos : $1
|
||||
index_eulist=Error al listar usuarios : $1
|
||||
index_gcreate=Crear un nuevo grupo de Webmin
|
||||
index_global=ACL global
|
||||
index_group=Grupo
|
||||
index_groups=Grupos de Webmin
|
||||
index_joingroup=Agregar al grupo:
|
||||
index_members=Miembros
|
||||
index_modgroups=Módulos del grupo $1
|
||||
index_modules=Módulos
|
||||
@@ -196,6 +246,7 @@ index_return=lista de usuario
|
||||
index_sessions=Ver sesiones de ingreso
|
||||
index_sync=Configurar la sincronización del usuario Unix
|
||||
index_title=Usuarios de Webmin
|
||||
index_twofactor=Autentificacion de 2 factores
|
||||
index_unix=Configurar la autenticación del usuario Unix
|
||||
index_user=Usuario
|
||||
index_users=Usuarios de Webmin
|
||||
@@ -208,12 +259,53 @@ log_delete=Usuario Webmin $1 borrado
|
||||
log_delete_g=Grupo Webmin $1 borrado
|
||||
log_delete_groups=Borrados $1 Grupos de Webmin
|
||||
log_delete_users=Borrados $1 Usuarios de Webmin
|
||||
log_joingroup=Agregado 1 usuario de webmin al grupo $2
|
||||
log_modify=Usuario Webmin $1 modificado
|
||||
log_modify_g=Grupo Webmin $1 modificado
|
||||
log_onefactor=Usuario $1 excluido de la autentificacion two-factor
|
||||
log_pass=Cambiar restricciones de contraseña
|
||||
log_rename=Usuario Webmin $1 renombrado a $2
|
||||
log_rename_g=Grupo Webmin $1 renombrado a $2
|
||||
log_reset=Resetear acceso para $1 en $2
|
||||
log_sql=Cambida base de datos de usuario y grupo
|
||||
log_switch=Se ha cambiado a usuario Webmin $1
|
||||
log_sync=Cambiada la sincronizacion de usuario unix
|
||||
log_twofactor=Usuario $1 incluido con 2 factores con el proveedor $2
|
||||
log_unix=Cambiada la auntenficiacion de usuario unix
|
||||
make_done=.. listo
|
||||
make_err=Error al crear tablas de usuario y grupo
|
||||
make_exec=Ejecutando SQL $1 ..
|
||||
make_failed=.. creacion fallida : $1
|
||||
make_still=Algunos problemas fueron encontrados luego de la creacion de la tabla : $1
|
||||
make_title=Crear tablas de Usuario y grupo
|
||||
makedn_done=.. listo
|
||||
makedn_eoc=No se encontraron clases de objeto estructural
|
||||
makedn_exec=Creando padre DN $1 ..
|
||||
makedn_failed=.. creacion fallida : $1
|
||||
makedn_still=Algunos problemas fueron encontrados luego de la creacion de DN : $1
|
||||
makedn_title=Crear LDAP DN
|
||||
pass_days=dias
|
||||
pass_ecannot=No estas permitido a editar las restricciones de contraseña
|
||||
pass_elockdays=Falta o no es numero el numero de dias antes de que la cuenta este bloqueada
|
||||
pass_emaxdays=Falta o no es numerico el numero de dias antes de que la cuenta cambie
|
||||
pass_eminsize=Falta o no es numerico el largo minimo de la contraseña
|
||||
pass_eoldblock=Falta o no es numerico el numero de contraseñas antiguas a rechazar
|
||||
pass_err=Error al guardar las restricciones de contraseña
|
||||
pass_header=Opciones de aplicacion de contraseña webmin
|
||||
pass_lockdays=Dias antes de que una contraseña sin cambiar bloquee la cuenta
|
||||
pass_maxdays=Dias antes de que la contraseña necesite ser cambiada
|
||||
pass_minsize=Largo minimo de contraseña
|
||||
pass_nodict=Desabilitar contraseñas con palabras de diccionario?
|
||||
pass_nolockdays=La cuenta nunca esta bloqueada
|
||||
pass_nomaxdays=Cambio nunca requerido
|
||||
pass_nominsize=Sin minimo
|
||||
pass_nooldblock=Sin limite de reutilizacion de contraseña
|
||||
pass_nouser=Desabilitar contraseñas que contengan nombre de usuario?
|
||||
pass_oldblock=Numero de antiguas contraseñas para rechazar
|
||||
pass_pass=contraseñas
|
||||
pass_regdesc=Descripcion de expresion regular legible por el humano
|
||||
pass_regexps=Las contraseñas de expresiones regulares deben coincidir
|
||||
pass_title=Restricciones de contraseña
|
||||
rbac_desc=La integración RBAC de Webmin proporciona la capacidad de configurar el módulo de usuarios y permisos ACL desde una base de datos RBAC (Role Based Access Control, o Control de Acceso Basado en Roles), en lugar de desde los archivos de configuración propios de Webmin. Una vez que el soporte de RBAC se habilita, cualquier usuario para el cual esté seleccionada la opción <b>$edit_rbacdeny1</b> tendrá sus capacidades determinadas por RBAC en lugar de por la configuración de acceso del propio Webmin.
|
||||
rbac_ecpan=No tiene acceso a la página de Módulos Perl de Webmin que le permitiría instalar el módulo $1, necesario para la integración con RBAC.
|
||||
rbac_eperl=El módulo Perl $1, necesario para la integración con RBAC, no está instalado. <a href='$2'>Pulse aquí</a> para instalarlo ahora.
|
||||
@@ -233,18 +325,25 @@ save_eip='$1' no es una dirección IP de red completa
|
||||
save_elogouttime=Tiempo de expulsión por inactividad falta o no numérico
|
||||
save_emask='$1' no es una máscara de red válida
|
||||
save_emd5=La opción Igual que la contraseña de Unix no puede ser usada en sistemas con encriptación MD5
|
||||
save_eminsize=Falta o no es numero el largo minimo de contraseña
|
||||
save_emod=No puede otorgar acceso al módulo '$1'
|
||||
save_ename='$1' no es un nombre de usuario válido
|
||||
save_enamewebmin=El nombre de usuario 'webmin' está reservado para uso interno
|
||||
save_enet='$1' no es una dirección de red válida
|
||||
save_enone=Direcciones no ingresadas
|
||||
save_eos=La opción Igual que la contraseña de Unix no es soportada por su sistema operativo.
|
||||
save_eoverlay=El tema no puede ser seleecionado si un tema es
|
||||
save_epam=La autenticación PAM no está disponible ya que el módulo <tt>Authen::PAM</tt> de Perl no está instalado o no funciona adecuadamente.
|
||||
save_epam2=Puede usar el módulo Módulos Perl de Webmin para <a href='$1'>descargar e instalar Authen::PAM</a> ahora.
|
||||
save_epass=Contraseña no valida : $1
|
||||
save_err=Fallo al salvar usuario
|
||||
save_eself=Su dirección IP actual ($1) sería denegada
|
||||
save_etemp=La opcion para forzar un cambio de contraseña en el siguiente inicio de sesion no se puede utilizar a menos que <a href='$1'>pedir al usuario que introduzca nuevas contraseñas</a> este habilitado
|
||||
save_eunix=El usuario Unix '$1' no existe
|
||||
save_euser=No está autorizado a editar este usuario
|
||||
schema_desc=Antes de que webmin pueda usar un servidor LDAP para almacenar usuarios y grupos debe estar configurado para usar el esquema abajo. Esto se puede hacer guardando la definicion del esquema en <tt>/etc/ldap/schema</tt> or <tt>/etc/openldap/schema</tt> como </tt>webmin.schema</tt>, despues configurando el servidor para cargar el archivo del esquema.
|
||||
schema_download=Descargar archivo de esquema : <a href=$1>$1</a>
|
||||
schema_title=Descargar esquema LDAP
|
||||
sessions_desc=Las sesiones de ingreso de Webmin están listadas debajo. Para cancelar una sesión existente y forzar al usuario a ingresar nuevamente, presione sobre su ID de sesión.
|
||||
sessions_host=Dirección IP
|
||||
sessions_id=ID de Sesión
|
||||
@@ -252,6 +351,48 @@ sessions_login=Ingreso como
|
||||
sessions_lview=Ver bitácoras..
|
||||
sessions_title=Sesiones de Ingreso Corrientes
|
||||
sessions_user=Usuario Webmin
|
||||
sql_addto0=Agregar nuevos usuarios a la base datos seleccionada anteriormente
|
||||
sql_addto1=Agregar nuevos usuarios a los archivos locales
|
||||
sql_db=Nombre de base de datos
|
||||
sql_dnerr=La configuracion de la base de datos de usuario y grupo es valida, pero el LDAP DN necesitado por webmin no se encuentra : $1
|
||||
sql_dnerr2=Click en el boton <b>Crear DN</b> de abajo para crearlo automaticamente, o agregar a su servidor LDAP manualmente.
|
||||
sql_ecannot=No esta autorizado a configurar la base de datos de usuario y grupo
|
||||
sql_eclass=Clase de objeto LDAP $1 no existe en el esquema del servidor
|
||||
sql_edb=Nombre de base de datos invalida (no se permiten espacios)
|
||||
sql_egroupclass=Falta o es invalido la clase del objeto de grupos
|
||||
sql_ehost=Falta o no se puede resolver el hostname
|
||||
sql_eldapdn=La base LDAP DN $1 no fue encontrada
|
||||
sql_emod=Falta el modulo perl <tt>$1</tt> requerido
|
||||
sql_epass=Contraseña invalida (no se permiten espacios)
|
||||
sql_eprefix=Falta o es invalida la base DN (no se admiten espacios)
|
||||
sql_eprefix2=Base DN invalida - tiene que ser como <tt>dc=mydomain,dc=com</tt>
|
||||
sql_err=Error al guardar la configuracion de la base de datos de usuario y grupo
|
||||
sql_etable=Error al consultar la tabla requerida $1 : $2
|
||||
sql_euser=Falta o es invalido el usuario (no se admiten espacios)
|
||||
sql_euserclass=Falta es invalida la clase del objeto para usuarios
|
||||
sql_groupclass=Clase de objectos para grupos
|
||||
sql_header=Opciones para el backend de base de datos para usuarios y grupos
|
||||
sql_host=Hostname
|
||||
sql_ldap=Usar servidor LDAP
|
||||
sql_make=Crear tablas
|
||||
sql_makedn=Crear DN
|
||||
sql_mysql=Usar base de datos MySQL
|
||||
sql_none=Usar solo archivos locales para almacenar usuarios y grupos
|
||||
sql_pass=Contraseña
|
||||
sql_postgresql=Usar base de datos PostgreSQL
|
||||
sql_prefix=Crear bajo DN
|
||||
sql_schema=Descargar esquema LDAP
|
||||
sql_ssl=Encriptacion de conexion
|
||||
sql_ssl0=Ninguno
|
||||
sql_ssl1=SSL
|
||||
sql_ssl2=TLS
|
||||
sql_tableerr=La configuracion de la base de datos de usuario y grupo es valida pero algunas tablas necesitadas por webmin no se encuentran : $1
|
||||
sql_tableerr2=Click en el boton <b>Crear tablas</b> de abajo para crearlos automaticamente, o correr manualmente el SQL de abajo.
|
||||
sql_title=Base de datos de usuario y grupo
|
||||
sql_title2=Crear tablas faltantes
|
||||
sql_title3=Crear DN faltante
|
||||
sql_user=Usuario
|
||||
sql_userclass=Clase de objecto para usuarios
|
||||
switch_eold=¡Sesión existente no encontrada!
|
||||
switch_euser=No está autorizado a cambiar a este usuario
|
||||
sync_create=Crear un usuario Webmin cuando un usuario Unix es creado.
|
||||
@@ -263,6 +404,22 @@ sync_nogroups=No se han definido grupos Webmin en su sistema. Al menos un grupo
|
||||
sync_title=Sincronización de usuarios Unix
|
||||
sync_unix=Poner el password de los nuevos usuarios como en la autenticación Unix.
|
||||
sync_update=Actualizar el usuario Webmin relacionado cuando el usuario Unix es modificado.
|
||||
sync_when=Cuando sincronizar
|
||||
twofactor_already=Su ingreso de webmin ya tiene la autentificacion de 2 factores habilitada con el proveedor $1 y ID de cuenta $2.
|
||||
twofactor_already2=Ingreso de webmin $3 ya tiene la autificacion de 2 factores activada con el proveedor $1 y ID de cuenta $2
|
||||
twofactor_desc=Esta pagina le permite activar la autentificacion de 2 factores para su ingreso en webmin usando <a href='$2' target=_blank>$1</a>.
|
||||
twofactor_desc2=Esta pagina le permite activar la autentificacion de 2 factores para el ingreso de $3 en webmin usando <a href='$2' target=_blank>$1</a>.
|
||||
twofactor_disable=Desabilitar autentificacion de 2 factores
|
||||
twofactor_done=.. completado. Su ID con este provedoor is <tt>$1</tt>.
|
||||
twofactor_ebutton=No se presiono ningun boton!
|
||||
twofactor_enable=Incluir para la autentificacion de 2 factores
|
||||
twofactor_enrolling=Incluyendo para la autentificacion de 2 factores con el proveedor $1 ..
|
||||
twofactor_err=Error al configurar la autentificacion de 2 factores
|
||||
twofactor_euser=Su usuario de webmin no fue encontrado!
|
||||
twofactor_failed=.. error : $1
|
||||
twofactor_header=Detalles de autentificacion de 2 factores
|
||||
twofactor_setup=La autentificacion de 2 factores no fue habilitada en este sistema todabia, pero puede ser habilitada usando el modulo de <a href='$1'Configuracion Webmin</a>.
|
||||
twofactor_title=Autentificacion de 2 factores
|
||||
udeletes_enone=Ninguno seleccionado
|
||||
udeletes_ereadonly=Uno de los usuarios seleccionados está marcado como no-editable
|
||||
udeletes_err=Fallo al borrar usuarios
|
||||
@@ -279,19 +436,27 @@ unix_ecannot=No está autorizado a configurar la autenticación de usuar
|
||||
unix_egroup='$1' no es un nombre de grupo válido
|
||||
unix_enone=No se introdujeron usuarios ni grupos Unix para permitir
|
||||
unix_epam=La autenticación Unix no está disponible ya que el módulo <tt>Authen::PAM</tt> de Perl no está instalado o no funciona adecuadamente.
|
||||
unix_err=Error al guardar la autenficiacion Unix
|
||||
unix_eshells=Archivo de shells inexistente o no introducido
|
||||
unix_esudo=El comando $1 no esta instalado
|
||||
unix_esudomod=El modulo de Perl $1 necesario para la autenticacion <tt>sudo</tt> no esta instalado
|
||||
unix_euser='$1' no es un nombre de usuario válido
|
||||
unix_ewhogroup=Grupo a permitir no introducido en la fila $1
|
||||
unix_ewhouser=Usuario a permitir no introducido en la fila $1
|
||||
unix_group=Miembros del grupo..
|
||||
unix_header=Configuracion de autenticacion de usuario de Unix
|
||||
unix_mall=Todos los usuarios
|
||||
unix_mode=Permitir
|
||||
unix_none=No se introdujeron usuarios
|
||||
unix_pamany=Tratar a los ingresos que solo pasan la validación PAM $1
|
||||
unix_restrict=Las restricciones adicionales siguientes sólo se aplicarán a los usuarios Unix seleccionados arriba.
|
||||
unix_restrict2=Restricciones adicionales
|
||||
unix_same=<Mismo usuario o grupo>
|
||||
unix_sel=Permitir hacer login a los usuarios Unix listados abajo..
|
||||
unix_shells=Denegar usuarios Unix cuyas shells no estén en el fichero
|
||||
unix_sudo=Permitir a los usuarios que pueden ejecutar todos los comandos a través de <tt>sudo</ tt> para entrar como <tt>root</ tt>
|
||||
unix_title=Autenticación de Usuario Unix
|
||||
unix_to=Como usuario Webmin
|
||||
unix_user=Permitir a cualquier usuario Unix el ingreso con permisos de usuario
|
||||
unix_utable=Permitir usuarios Unix
|
||||
unix_who=Usuario o Grupo
|
||||
|
||||
@@ -409,6 +409,7 @@ twofactor_desc=Denne siden lar deg aktivere to-faktor autentisering for din Webm
|
||||
twofactor_desc2=Denne siden lar deg aktivere to-faktor autentisering for Webmin-brukeren $1 vha. <a href='$2' target=_blank>$1</a>. Når denne er aktivert vil det kreves et ekstra autentiserings-token for å logge inn på Webmin.
|
||||
twofactor_disable=Deaktiver to-faktor autentisering
|
||||
twofactor_done=.. fullført. Din ID hos denne leverandøren er <tt>$1</tt>.
|
||||
twofactor_ebutton=Ingen knapp klikket!
|
||||
twofactor_enable=Meld inn til to-faktor autentisering
|
||||
twofactor_enrolling=Melder inn til to-faktor autentisering med leverandør $1 ..
|
||||
twofactor_err=Kunne ikke sette opp to-faktor autentisering
|
||||
|
||||
36
acl/lang/pl
36
acl/lang/pl
@@ -54,6 +54,7 @@ cert_ebrowser=Webmin nie wie jak wystawia
|
||||
cert_eca=Nie udało się ustawić centrum autoryzacji: $1
|
||||
cert_ekey=Twoja przeglądarka nie zaakceptowała nowego klucza SSL - być może nie obsługuje ona certyfikatów SSL po stronie klienta.
|
||||
cert_email=Adres e-mail
|
||||
cert_etempdir=Błędny plik certyfikatu
|
||||
cert_header=Dane nowego certyfikatu
|
||||
cert_install=Zainstaluj swój certyfikat w przeglądarce
|
||||
cert_issue=Certyfikat wydany
|
||||
@@ -69,6 +70,7 @@ convert_1=Wybranych
|
||||
convert_2=Wszystkich oprócz
|
||||
convert_3=Użytkowników z grupy
|
||||
convert_4=Użytkowników z zakresu UID-ów
|
||||
convert_action=Podjęta akcja
|
||||
convert_added=Dodawanie $1
|
||||
convert_desc=Za pomocą tego formularza możesz przekształcić istniejących użytkowników Unixa w użytkowników Webmina. Uprawnienia każdego z nowych użytkowników Webmina będą określone przez podanie poniżej grupy.
|
||||
convert_done=$1 skonwertowanych użytkowników, $2 nieprawidłowych, $3 już istnieje, $4 wykluczonych.
|
||||
@@ -87,8 +89,10 @@ convert_msg=Przekszta
|
||||
convert_nogroups=W systemie nie zdefiniowano grup Webmina. Musisz utworzyć przynajmniej jedną grupę przed konwersją, aby określić uprawnienia dla przekształconych użytkowników.
|
||||
convert_ok=Przekształć teraz
|
||||
convert_skip=Pomijanie $1
|
||||
convert_sync=Używać w przyszłości tego samego hasła co użytkownik unixowy?
|
||||
convert_sync2=Synchronizować hasło z użytkiem Unix'a w przysłości?
|
||||
convert_title=Przekształć użytkowników
|
||||
convert_user=Użytkownik Unixa
|
||||
convert_users=Konwertuj użytkownika
|
||||
cpass_dict=Jest słowem ze słownika
|
||||
cpass_minsize=Musi zawierać przynajmniej $1 znaków
|
||||
cpass_name=Zawiera nazwę użytkownika
|
||||
@@ -175,6 +179,11 @@ edit_themedef=Stary temat Webmina
|
||||
edit_themeglobal=Z konfiguracji Webmina
|
||||
edit_title=Modyfikuj użytkownika Webmina
|
||||
edit_title2=Nowy użytkownik Webmina
|
||||
edit_twofactor=Typ dwustopniowego uwierzetylniania
|
||||
edit_twofactoradd=Włącz dwustopniowe uwierzytelnianie dla użytkownika
|
||||
edit_twofactorcancel=Usuń wymaganie dwustopniowego uwierzytelniania
|
||||
edit_twofactornone=Nic nie ustawiono
|
||||
edit_twofactorprov=Używa $1 z ID $2
|
||||
edit_ui=Opcje interfejsu użytkownika
|
||||
edit_unix=Uwierzytelnienie Unixowe
|
||||
edit_user=Nazwa użytkownika
|
||||
@@ -222,6 +231,7 @@ index_gcreate=Utw
|
||||
index_global=Ogólne ACL-e
|
||||
index_group=Grupa
|
||||
index_groups=Grupy Webmina
|
||||
index_joingroup=Dodaj do grupy:
|
||||
index_members=Członkowie
|
||||
index_modgroups=Moduły z grupy $1
|
||||
index_modules=Moduły
|
||||
@@ -234,6 +244,7 @@ index_return=listy u
|
||||
index_sessions=Wyświetl sesje logowania
|
||||
index_sync=Konfiguruj synchronizację użytkowników Unixa
|
||||
index_title=Użytkownicy Webmina
|
||||
index_twofactor=Dwustopniowe uwierzytelnianie
|
||||
index_unix=Konfiguruj autoryzację użytkowników Unixa
|
||||
index_user=Użytkownik
|
||||
index_users=Użytkownicy Webmina
|
||||
@@ -246,8 +257,10 @@ log_delete=Usuni
|
||||
log_delete_g=Usunięto grupę Webmina $1
|
||||
log_delete_groups=Usunięto $1 grup Webmina
|
||||
log_delete_users=Usunięto $1 użytkowników Webmina
|
||||
log_joingroup=Dodano $1 użytkowników Webmina do grupy $2
|
||||
log_modify=Zmodyfikowano użytkownika Webmina $1
|
||||
log_modify_g=Zmodyfikowano grupę Webmina $1
|
||||
log_onefactor=Użytkownik $1 już NIE uczestniczy w dwustopniowym uwierzytelnianiu u dostawcy: $2
|
||||
log_pass=Zmieniono ustawienia dotyczące hasła
|
||||
log_rename=Zmieniono nazwę użytkownika Webmina $1 na $2
|
||||
log_rename_g=Zmieniono nazwę grupy Webmina $1 na $2
|
||||
@@ -255,6 +268,7 @@ log_reset=Zresetowano dost
|
||||
log_sql=Zmieniono bazę danych użytkownika i grupy
|
||||
log_switch=Przełączono do użytkownika $1.
|
||||
log_sync=Zmieniono synchronizację użytkownika unixa
|
||||
log_twofactor=Użytkownik $1 uczestniczy w dwustopniowym uwierzytelnianiu u dostawcy: $2
|
||||
log_unix=Zmieniono uwierzytelnienie użytkownika unixa
|
||||
make_done=.. zrobione
|
||||
make_err=Nie udało się utworzyć tabel dla użytkownika i grupy
|
||||
@@ -388,6 +402,22 @@ sync_nogroups=W systemie nie zdefiniowano
|
||||
sync_title=Synchronizacja użytkowników Unixa
|
||||
sync_unix=Ustawiaj hasła dla nowych użytkowników dla uwierzytelnianie Unixowego.
|
||||
sync_update=Aktualizuj odpowiedniego użytkownika Webmina, gdy aktualizowany jest użytkownik Unixa.
|
||||
sync_when=Kiedy synchronizować
|
||||
twofactor_already=Korzystasz jusz z dwustopniowego uwierzytelniania u $1 z ID $2.
|
||||
twofactor_already2=Dla loginu $3 jest już włączone dwustopniowe uwierzytelnianie na $1 z ID $2.
|
||||
twofactor_desc=Ta strona pozwala na włączenie dwustopniowego uwierzytelniania dla twojego logowania w Webmin korzystając z <a href='$2' target=_blank>$1</a>. Po włączeniu będzie wymagane podawanie dodatkowego tokena przy logowaniu.
|
||||
twofactor_desc2=Ta strona pozwala na włączenie dwustopniowego uwierzytelniania dla logowania w Webmin korzystając z <a href='$2' target=_blank>$1</a>. Po włączeniu będzie wymagane podawanie dodatkowego tokena przy logowaniu.
|
||||
twofactor_disable=Wyłącz dwustopniowe uwierzytelnianie
|
||||
twofactor_done=.. zakończono. Twój ID u tego dostawcy to <tt>$1</tt>.
|
||||
twofactor_ebutton=Nie kliknięto na przycisk!
|
||||
twofactor_enable=Włącz dwustopniowe uwierzytelnianie
|
||||
twofactor_enrolling=Włączanie dwustopniowego uwierzytelniania u $1 ..
|
||||
twofactor_err=Błąd konfigurowania Włącz dwustopniowego uwierzytelniania
|
||||
twofactor_euser=Użytkownik Webmina nie został znaleziony!
|
||||
twofactor_failed=.. błąd włączania : $1
|
||||
twofactor_header=Szczegóły dwustopniowego uwierzytelniania
|
||||
twofactor_setup=Dwustopniowe uwierzytelnianie nie jest włączone na tym systemie, może zostać włączone poprzez moduł <a href='$1'>Konfiguracji Webmina</a>
|
||||
twofactor_title=Dwustopniowe uwierzytelnianie
|
||||
udeletes_enone=Nie wybrane
|
||||
udeletes_ereadonly=Jeden z wybranych użytkowników jest oznaczony jako nie-edytowalny
|
||||
udeletes_err=Błąd usuwanie użytkowników
|
||||
@@ -412,11 +442,12 @@ unix_euser='$1' nie jest poprawn
|
||||
unix_ewhogroup=Brakująca dozwolona grupa w wierszu $1
|
||||
unix_ewhouser=Brakujący dozwolony użytkownik w wierszu $1
|
||||
unix_group=Członkowie grup...
|
||||
unix_header=Ustawienia uwierzytelniania użytkownika Unix'a
|
||||
unix_mall=Wszyscy użytkownicy
|
||||
unix_mode=Pozwól
|
||||
unix_none=Nie podano użytkowników
|
||||
unix_pamany=Śledź logowania, które pasują do walidacji PAM jako $1
|
||||
unix_restrict=Następujące dodatkowe ograniczenia są stosowane do użytkowników wybranych powyżej.
|
||||
unix_restrict2=Dodatkowe ograniczenia
|
||||
unix_same=<Ten sam użytkownik lub grupa>
|
||||
unix_sel=Pozwól użytkownikom Unixa z poniższej listy na zalogowanie...
|
||||
unix_shells=Odmów użytkownikom Unixa, których shelle nie znajdują są w pliku
|
||||
@@ -424,4 +455,5 @@ unix_sudo=Pozw
|
||||
unix_title=Autoryzacja użytkowników Unixa
|
||||
unix_to=Jako użytkownik Webmina
|
||||
unix_user=Użytkownik Unixa ..
|
||||
unix_utable=Dozwoleni użytkownicy Unix'a
|
||||
unix_who=Użytkownik lub Grupa
|
||||
|
||||
@@ -39,3 +39,4 @@ desc_sk.UTF-8=Užívatelia Webminu
|
||||
longdesc_ms_MY=Cipta pengguna Webmin dan konfigurasikan modul dan ciri-ciri yang dibenarkan akses.
|
||||
desc_ms_MY=Pengguna Webmin
|
||||
longdesc_de=Erstellt Webmin-Benutzer und konfiguriert, auf welche Module und Funktionen diese berechtigt sind, zugreifen.
|
||||
longdesc_es=Crear usuarios de webmin y configurar a que modulos y caracteristicas pueden acceder.
|
||||
|
||||
@@ -5,11 +5,11 @@ index_bytes=Bytes
|
||||
index_cancel=Verbindung beenden
|
||||
index_canceldesc=Es wird momentan eine ADSL-Verbindung hergestellt. Klicken Sie auf diesen Button, um diesen Vorgang mit dem Befehl $1 abzubrechen.
|
||||
index_cdemand=Auf Verlangen abbrechen
|
||||
index_cdemanddesc=Der ADSL-Client wartet derzeit darauf, Benutzer gesteuert die Verbindung zu beenden. Klicken Sie auf diesen Button, wenn Sie dies mit dem Befehl $1 ausführen möchten.
|
||||
index_cdemanddesc=Der ADSL-Client wartet derzeit darauf, Benutzer auf Verlangen die Verbindung zu beenden. Klicken Sie auf diesen Button, wenn Sie dies mit dem Befehl $1 ausführen möchten.
|
||||
index_connect=Konfigurierbare Dauer der Verbindung
|
||||
index_demand=Verbindung auf Wunsch?
|
||||
index_desc=Diese Einstellungen werden erst bei der nächsten Anmeldung des ADSL-Clients aktiv. Wenn Sie diese ändern, dann müssen Sie die Verbindung beenden und neu aufbauen, damit die Änderungen wirksam werden.
|
||||
index_dns=DNS-Konfiguration des ISP übernehmen (/etc/resolve.conf)?
|
||||
index_dns=DNS-Konfiguration des ISP übernehmen?
|
||||
index_eadsl=Der RP-PPPoE-Befehl $1 wurde auf Ihrem System nicht gefunden oder ist nicht gültig. Entweder ist er nicht installiert, oder Ihre <a href='$2'>Modulkonfiguration</a> ist falsch.
|
||||
index_econfig=Die RP-PPPoE ADSL-Konfigurationsdatei $1 wurde auf Ihrem System nicht gefunden. Entweder ist sie nicht installiert, oder Ihre <a href='$2'>Modulkonfiguration</a> ist falsch.
|
||||
index_emodem=Die aktuelle Konfigurationsdatei wurde für ein Modem unter RedHat-Linux geschrieben, und nicht für eine ADSL-Verbindung. Benutzen Sie die <a href='$2'>Modulkonfiguration</a>, um entweder eine der <tt>ifcfg-ppp*</tt>-Dateien unter $1 zu nutzen, oder ein neues Interface anzugeben, welches von Webmin eingerichtet werden soll.
|
||||
@@ -37,12 +37,12 @@ index_timeout=Ja, mit Timeout
|
||||
index_title=ADSL Client
|
||||
index_user=Anmelden als Benutzer
|
||||
index_version=RP-PPPoE Version $1
|
||||
log_bootdown=Deaktiviere ADSL-Verbindung zur Bootzeit
|
||||
log_bootup=Aktiviere ADSL-Verbindung zur Bootzeit
|
||||
log_save=Gespeicherte Client-Konfiguration
|
||||
log_setup=Lege eine Standard-Konfiguration an
|
||||
log_start=Starte ADSL-Verbindung
|
||||
log_stop=Beende ADSL-Verbindung
|
||||
log_bootdown=ADSL-Verbindung zur Bootzeit deaktiviert
|
||||
log_bootup=ADSL-Verbindung zur Bootzeit aktiviert
|
||||
log_save=Client-Konfiguration gespeichert
|
||||
log_setup=Standard-Konfiguration angelegt
|
||||
log_start=ADSL-Verbindung gestartet
|
||||
log_stop=ADSL-Verbindung beendet
|
||||
save_desc=Ihre ADSL-Client-Konfiguration wurde erfolgreich gespeichert, wird jedoch erst bei der nächsten Anmeldung/Anwahl aktiv.
|
||||
save_econnect=Fehlendes oder ungültiges "timeout"
|
||||
save_eeth=Fehlende oder ungültige aussehende Ethernetschnittstelle
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
__norefs=1
|
||||
index_boot=Lanzar en el arranque del sistema
|
||||
index_bootdesc=Cambie esta opción para elegir si desea que su conexión ADSL se lance en el arranque o no.
|
||||
index_bytes=bytes
|
||||
index_cancel=Cancelar conexión
|
||||
index_canceldesc=El cliente ADSL está actualmente intentando establecer conexión. Pulse este botón para cancelar el intento con el comando $1.
|
||||
index_cdemand=Cancelar demanda
|
||||
index_cdemanddesc=El cliente ADSL esta a la espera para una solicitud de conexion demandada. Haga clic en este boton para detener con el comando $1
|
||||
index_connect=Tiempo durante el que se intenta una conexión
|
||||
index_demand=¿Conectar bajo demanda?
|
||||
index_desc=La configuración de abajo se aplica a cualquier conexión ADSL iniciada por su sistema. Si la cambia, la conexión debe ser apagada y reiniciada para que las modificaciones surtan efecto.
|
||||
|
||||
@@ -3,7 +3,7 @@ httpd_dir=/etc/httpd
|
||||
httpd_path=/usr/sbin/httpd
|
||||
mime_types=/etc/mime.types
|
||||
start_cmd=service httpd start
|
||||
apply_cmd=service httpd graceful
|
||||
apply_cmd=service httpd reload
|
||||
stop_cmd=service httpd stop
|
||||
show_order=0
|
||||
max_servers=100
|
||||
18
apache/config-Redhat-Enterprise-Linux-7.0-*
Normal file
18
apache/config-Redhat-Enterprise-Linux-7.0-*
Normal file
@@ -0,0 +1,18 @@
|
||||
show_list=0
|
||||
httpd_dir=/etc/httpd
|
||||
httpd_path=/usr/sbin/httpd
|
||||
mime_types=/etc/mime.types
|
||||
start_cmd=service httpd start
|
||||
apply_cmd=service httpd reload
|
||||
stop_cmd=service httpd stop
|
||||
show_order=0
|
||||
max_servers=100
|
||||
test_config=1
|
||||
test_manual=0
|
||||
apachectl_path=/usr/sbin/apachectl
|
||||
test_always=0
|
||||
test_apachectl=1
|
||||
auto_mods=1
|
||||
show_names=0
|
||||
allow_virtualmin=0
|
||||
pid_file=/run/httpd/httpd.pid
|
||||
18
apache/config-Scientific-Linux-7.0-*
Normal file
18
apache/config-Scientific-Linux-7.0-*
Normal file
@@ -0,0 +1,18 @@
|
||||
show_list=0
|
||||
httpd_dir=/etc/httpd
|
||||
httpd_path=/usr/sbin/httpd
|
||||
mime_types=/etc/mime.types
|
||||
start_cmd=service httpd start
|
||||
apply_cmd=service httpd reload
|
||||
stop_cmd=service httpd stop
|
||||
show_order=0
|
||||
max_servers=100
|
||||
test_config=1
|
||||
test_manual=0
|
||||
apachectl_path=/usr/sbin/apachectl
|
||||
test_always=0
|
||||
test_apachectl=1
|
||||
auto_mods=1
|
||||
show_names=0
|
||||
allow_virtualmin=0
|
||||
pid_file=/run/httpd/httpd.pid
|
||||
@@ -246,31 +246,33 @@ elsif ($in{"$_[0]_mode"} == 2) {
|
||||
# Networking and address directives
|
||||
sub edit_BindAddress_Listen_Port
|
||||
{
|
||||
local($bref, $lref, $pref, @blist, @plist, $inp);
|
||||
local($bref, $lref, $pref, @blist, @plist, @slist, $inp);
|
||||
$bref = $_[0]; $lref = $_[1]; $pref = $_[2];
|
||||
if (@$lref) {
|
||||
# listen directives in use.. so BindAddress and Port are unused
|
||||
foreach $l (@$lref) {
|
||||
if ($l->{'value'} =~ /^\[(\S+)\]:(\d+)$/) {
|
||||
my @w = split(/\s+/, $l->{'value'});
|
||||
if ($w[0] =~ /^\[(\S+)\]:(\d+)$/) {
|
||||
# IPv6 address and port
|
||||
push(@blist, $1); push(@plist, $2);
|
||||
}
|
||||
elsif ($l->{'value'} =~ /^\[(\S+)\]$/) {
|
||||
elsif ($w[0] =~ /^\[(\S+)\]$/) {
|
||||
# IPv6 address only
|
||||
push(@blist, $1); push(@plist, undef);
|
||||
}
|
||||
elsif ($l->{'value'} =~ /^(\S+):(\d+)$/) {
|
||||
elsif ($w[0] =~ /^(\S+):(\d+)$/) {
|
||||
# IPv4 address and port
|
||||
push(@blist, $1); push(@plist, $2);
|
||||
}
|
||||
elsif ($l->{'value'} =~ /^(\d+)$/) {
|
||||
elsif ($w[0] =~ /^(\d+)$/) {
|
||||
# Port only
|
||||
push(@blist, "*"); push(@plist, $1);
|
||||
}
|
||||
elsif ($l->{'value'} =~ /^(\S+)$/) {
|
||||
elsif ($w[0] =~ /^(\S+)$/) {
|
||||
# IPv4 address or hostname only
|
||||
push(@blist, $1); push(@plist, undef);
|
||||
}
|
||||
push(@slist, $w[1]);
|
||||
}
|
||||
}
|
||||
else {
|
||||
@@ -278,36 +280,48 @@ else {
|
||||
if (@$bref) { push(@blist, $bref->[@$bref-1]->{'value'}); }
|
||||
else { push(@blist, "*"); }
|
||||
push(@plist, undef);
|
||||
push(@slist, undef);
|
||||
}
|
||||
$port = @$pref ? $pref->[@$pref-1]->{'value'} : 80;
|
||||
if ($_[3]->{'version'} < 2.0) {
|
||||
$inp = "<b>$text{'core_dport'}</b> <input name=Port size=6 value=\"$port\"><br>\n";
|
||||
$inp = "<b>$text{'core_dport'}</b> ".
|
||||
&ui_textbox("Port", $port, 6)."<br>\n";
|
||||
}
|
||||
$inp .= "<table border>\n".
|
||||
"<tr $tb> <td><b>$text{'core_address'}</b></td> <td><b>$text{'core_port'}</b></td> </tr>\n";
|
||||
my @cols = ( $text{'core_address'}, $text{'core_port'} );
|
||||
if ($_[3]->{'version'} >= 2.4) {
|
||||
# Apache supports a port protocol
|
||||
push(@cols, $text{'core_portname'});
|
||||
}
|
||||
$inp .= &ui_columns_start(\@cols, "50%");
|
||||
for($i=0; $i<@blist+1; $i++) {
|
||||
$inp .= sprintf
|
||||
"<tr><td><input type=radio name=BindAddress_def_$i value=2 %s>".
|
||||
" $text{'core_none'} <input type=radio name=BindAddress_def_$i value=1 %s>".
|
||||
" $text{'core_all'} <input type=radio name=BindAddress_def_$i value=0 %s> ".
|
||||
"<input name=BindAddress_$i size=20 value=\"%s\"></td>",
|
||||
$blist[$i] ? "" : "checked",
|
||||
$blist[$i] eq "*" ? "checked" : "",
|
||||
$blist[$i] && $blist[$i] ne "*" ? "checked" : "",
|
||||
$blist[$i] eq "*" ? "" : $blist[$i];
|
||||
my @row;
|
||||
my $ba = $blist[$i] eq "*" ? 1 : $blist[$i] eq "" ? 2 : 0;
|
||||
push(@row, &ui_radio("BindAddress_def_$i", $ba,
|
||||
[ [ 2, $text{'core_none'} ],
|
||||
[ 1, $text{'core_all'} ],
|
||||
[ 0, &ui_textbox("BindAddress_$i",
|
||||
$ba == 0 ? $blist[$i] : "", 20) ] ]));
|
||||
if ($_[3]->{'version'} < 2.0) {
|
||||
$inp .= "<td>".&opt_input($plist[$i], "Port_$i", "$text{'core_default'}", 5)."</td>";
|
||||
push(@row, &opt_input($plist[$i], "Port_$i",
|
||||
$text{'core_default'}, 5));
|
||||
}
|
||||
else {
|
||||
$inp .= "<td><input name=Port_$i size=5 value='$plist[$i]'></td>\n";
|
||||
push(@row, &ui_textbox("Port_$i", $plist[$i], 5));
|
||||
}
|
||||
if ($_[3]->{'version'} >= 2.4) {
|
||||
push(@row, &ui_select("Name_$i", $slist[$i],
|
||||
[ [ "", $text{'core_protoany'} ],
|
||||
[ "http", "HTTP" ],
|
||||
[ "https", "HTTPS" ] ]));
|
||||
}
|
||||
$inp .= &ui_columns_row(\@row);
|
||||
}
|
||||
$inp .= "</table>\n";
|
||||
$inp .= &ui_columns_end();
|
||||
return (2, $text{'core_listen'}, $inp);
|
||||
}
|
||||
sub save_BindAddress_Listen_Port
|
||||
{
|
||||
local(@blist, @plist, $bdef, $b, $p);
|
||||
local(@blist, @plist, @slist, $bdef, $b, $p);
|
||||
|
||||
# build list of addresses and ports
|
||||
for($i=0; defined($in{"Port_$i"}); $i++) {
|
||||
@@ -323,6 +337,8 @@ for($i=0; defined($in{"Port_$i"}); $i++) {
|
||||
if ($pdef) { push(@plist, undef); }
|
||||
elsif ($p =~ /^\d+$/) { push(@plist, $p); }
|
||||
else { &error(&text('core_eport', $p)); }
|
||||
|
||||
push(@slist, $in{"Name_$i"});
|
||||
}
|
||||
if (!@blist) { &error($text{'core_eoneaddr'}); }
|
||||
|
||||
@@ -359,6 +375,9 @@ else {
|
||||
}
|
||||
elsif ($blist[$i] ne "*") { push(@l, $blist[$i]); }
|
||||
else { push(@l, "*:$plist[$i]"); }
|
||||
if ($_[0]->{'version'} >= 2.4 && $slist[$i]) {
|
||||
$l[$#l] .= " ".$slist[$i];
|
||||
}
|
||||
}
|
||||
return ( [], \@l );
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ acl_dirs2=Alle, bis auf aufgeführte ...
|
||||
acl_global=Darf globale Optionen bearbeiten?
|
||||
acl_htaccess=nur .htaccess
|
||||
acl_names=Darf Servernamen bearbeiten?
|
||||
acl_pipe=Darf Protokolle an Programm leiten?
|
||||
acl_pipe=Darf Protokolle an Programme leiten?
|
||||
acl_sel=Ausgewählte..
|
||||
acl_stop=Darf Apache starten und stoppen?
|
||||
acl_types=Verfügbare Direktiv-Arten
|
||||
@@ -113,7 +113,7 @@ autoindex_select=Unten ausgewählte...
|
||||
autoindex_sicon=Zeige Dateiicons
|
||||
autoindex_size=Zeige Dateigrößen
|
||||
autoindex_sort=Erlaube Benutzern das Sortieren nach Spalten
|
||||
autoindex_srules=Zeige <hr> Linien
|
||||
autoindex_srules=Zeige <hr> Zeilen
|
||||
autoindex_track=Füge ETags im Header ein
|
||||
autoindex_version=Sortiere nach Versionen
|
||||
browsermatch_case=Identischer Fall?
|
||||
@@ -195,7 +195,7 @@ core_egid='$1' ist keine gültige Benutzer-ID
|
||||
core_ehead=Ungültige Anzahl Headers
|
||||
core_ehlimit=$1 ist kein gültiger hard $2
|
||||
core_ehostname=Ungültiger Server Hostname
|
||||
core_einitial=Anzahl initial server processes muss eine Ganzzahl sein
|
||||
core_einitial=Anzahl initiale Server-Prozesse muss eine Ganzzahl sein
|
||||
core_ekeep='$1' ist keine gültige Anzahl von Keepalives
|
||||
core_ekeeptout=Keep-alive Timeout muss eine Ganzzahl sein
|
||||
core_eline=Ungültige Request line-Größe
|
||||
@@ -211,7 +211,7 @@ core_enodoc=Dokumenten-Root '$1' existiert nicht
|
||||
core_enoopt=Keine Optionsdatei angegeben
|
||||
core_eoneaddr=Sie müssen mindestens eine Adresse, auf der gelauscht wird, angeben
|
||||
core_eoptfile=Nur eine Optionsdatei ist erlaubt
|
||||
core_eperm=Sie sind nicht berechtigt Protokolle an Programme weiterzuleiten
|
||||
core_eperm=Sie sind nicht berechtigt, Protokolle an Programme weiterzuleiten
|
||||
core_epid=Ungültige PID-Datei
|
||||
core_eport='$1' ist kein gültiger Port
|
||||
core_eprogmiss=Fehlendes Fehlerprotokoll-Programm
|
||||
@@ -302,10 +302,12 @@ core_outfilter=Wende Output-Filter auf alle Dateien an
|
||||
core_overr=Optionsdatei überschreibt..
|
||||
core_pid=Server PID-Datei
|
||||
core_port=Port
|
||||
core_portname=Protokoll
|
||||
core_proclimit=Prozessgrenze
|
||||
core_proclimit2=Prozessgrenze
|
||||
core_product=Nur Produkt
|
||||
core_proglog=Programm
|
||||
core_protoany=<Jedes>
|
||||
core_realm=Authentifizierungs Realm-Name
|
||||
core_resp=Meldung
|
||||
core_rtout=Anfragen-Timeout
|
||||
|
||||
@@ -359,6 +359,8 @@ core_ehlimit=$1 is not a valid hard $2
|
||||
core_dport=Default port:
|
||||
core_address=Address
|
||||
core_port=Port
|
||||
core_portname=Protocol
|
||||
core_protoany=<Any>
|
||||
core_listen=Listen on addresses and ports
|
||||
core_eaddress='$1' is not a valid address
|
||||
core_eport='$1' is not a valid port
|
||||
|
||||
@@ -302,10 +302,12 @@ core_outfilter=Zastosuj filry wyj
|
||||
core_overr=Opcje w pliku mają priorytet..
|
||||
core_pid=PID serwera
|
||||
core_port=Port
|
||||
core_portname=Protokół
|
||||
core_proclimit=Ograniczenie liczby procesów
|
||||
core_proclimit2=ograniczenie liczby procesów
|
||||
core_product=Tylko produkt
|
||||
core_proglog=Programu
|
||||
core_protoany=<Żaden>
|
||||
core_realm=Nazwa dziedziny autoryzacji
|
||||
core_resp=Odpowiedź
|
||||
core_rtout=Czas przeterminowania zapytania
|
||||
|
||||
@@ -11,7 +11,6 @@ return &make_directives($rv, $_[0], "mod_ext_filter");
|
||||
sub mod_ext_filter_filters
|
||||
{
|
||||
local($d, @rv);
|
||||
print STDERR "looking for ExtFilterDefine\n";
|
||||
foreach $d (&find_all_directives($_[0], "ExtFilterDefine")) {
|
||||
push(@rv, $d->{'words'}->[0]);
|
||||
}
|
||||
|
||||
24
apache/mod_mpm_prefork.pl
Executable file
24
apache/mod_mpm_prefork.pl
Executable file
@@ -0,0 +1,24 @@
|
||||
# mod_mpm_prefork.pl
|
||||
# Defines editors for the pre-forking module in apache 2.4.
|
||||
# The actual functions for all of these are still in core.pl
|
||||
|
||||
sub mod_mpm_prefork_directives
|
||||
{
|
||||
local $rv;
|
||||
$rv = [ [ 'CoreDumpDirectory', 0, 9, 'global', 2.0 ],
|
||||
[ 'BindAddress Listen Port', 1, 1, 'global', 2.0, 10 ],
|
||||
[ 'ListenBacklog', 0, 1, 'global', 2.0 ],
|
||||
[ 'LockFile', 0, 9, 'global', 2.0 ],
|
||||
[ 'MaxRequestsPerChild', 0, 0, 'global', 2.0 ],
|
||||
[ 'MinSpareServers', 0, 0, 'global', 2.0 ],
|
||||
[ 'MaxSpareServers', 0, 0, 'global', 2.0 ],
|
||||
[ 'PidFile', 0, 9, 'global', 2.0 ],
|
||||
[ 'ScoreBoardFile', 0, 9, 'global', 2.0 ],
|
||||
[ 'SendBufferSize', 0, 1, 'global', 2.0 ],
|
||||
[ 'StartServers', 0, 0, 'global', 2.0 ],
|
||||
[ 'Group', 0, 8, 'global', 2.0 ],
|
||||
[ 'User', 0, 8, 'global', 2.0, 10 ] ];
|
||||
return &make_directives($rv, $_[0], "mod_mpm_prefork");
|
||||
}
|
||||
|
||||
|
||||
@@ -143,7 +143,7 @@ for($i=0; defined($path = $in{"$_[0]_path_$i"}); $i++) {
|
||||
$url = $in{"$_[0]_url_${i}_def"} ? "!" : $in{"$_[0]_url_$i"};
|
||||
next if (!$path);
|
||||
$path =~ /^\/\S*$/ || &error(&text('mod_proxy_elurl', $path));
|
||||
$url =~ /^(http|https|balancer):\/\/(\S+)$/ || $url eq "!" ||
|
||||
$url =~ /^(http|https|balancer|ajp):\/\/(\S+)$/ || $url eq "!" ||
|
||||
&error(&text('mod_proxy_erurl', $url));
|
||||
if ($url eq "!") {
|
||||
push(@notrv, "$path $url");
|
||||
|
||||
@@ -34,18 +34,26 @@ if ($in{'SSLEngine'} eq 'on' &&
|
||||
return &parse_choice("SSLEngine");
|
||||
}
|
||||
|
||||
@sslprotos = ("SSLv2", "SSLv3", "TLSv1");
|
||||
sub get_sslprotos
|
||||
{
|
||||
my @sslprotos = ("SSLv2", "SSLv3", "TLSv1" );
|
||||
if ($httpd_modules{'core'} >= 2.223) {
|
||||
push(@sslprotos, "TLSv1.1", "TLSv1.2");
|
||||
}
|
||||
return @sslprotos;
|
||||
}
|
||||
|
||||
sub edit_SSLProtocol
|
||||
{
|
||||
local ($rv, $p, %prot);
|
||||
local @list = $_[0] ? @{$_[0]->{'words'}} : ("all");
|
||||
foreach $p (@list) {
|
||||
if ($p =~ /^\+?all$/i) { map { $prot{lc($_)} = 1 } @sslprotos; }
|
||||
if ($p =~ /^\+?all$/i) { map { $prot{lc($_)} = 1 } &get_sslprotos(); }
|
||||
elsif ($p =~ /^\-all$/i) { undef(%prot); }
|
||||
elsif ($p =~ /^\-(\S+)/) { $prot{lc($1)} = 0; }
|
||||
elsif ($p =~ /^\+(\S+)/) { $prot{lc($1)} = 1; }
|
||||
}
|
||||
foreach $p (@sslprotos) {
|
||||
foreach $p (&get_sslprotos()) {
|
||||
$rv .= sprintf "<input type=checkbox name=SSLProtocol value=$p %s> $p ",
|
||||
$prot{lc($p)} ? "checked" : "";
|
||||
}
|
||||
@@ -54,7 +62,7 @@ return (1, $text{'mod_ssl_proto'}, $rv);
|
||||
sub save_SSLProtocol
|
||||
{
|
||||
local @sel = split(/\0/, $in{'SSLProtocol'});
|
||||
if (scalar(@sel) == scalar(@sslprotos)) { return ( [ ] ); }
|
||||
if (scalar(@sel) == scalar(&get_sslprotos())) { return ( [ ] ); }
|
||||
return ( [ join(" ", (map { "+$_" } @sel)) ] );
|
||||
}
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ desc_ko_KR.euc=Apache webServer
|
||||
risk=low medium high
|
||||
desc_ru_SU=÷Å ÓÅÒ×ÅÒ Apache
|
||||
desc_zh_TW.Big5=Apache ºô¶¦øªA¾¹
|
||||
desc_pl=Serwer WWW Apache
|
||||
desc_pl=Apache - serwer WWW
|
||||
desc_de=Apache Webserver
|
||||
name=Apache
|
||||
desc_zh_CN=Apache ·þÎñÆ÷
|
||||
@@ -39,3 +39,4 @@ longdesc_hu=Apache direkt
|
||||
longdesc_ms_MY=Mengkonfigurasi hampir kesemua arahan Apache dan ciri-ciri yang ada.
|
||||
desc_ms_MY=Pelayan Web Apache
|
||||
longdesc_de=Konfiguriert fast alle Apache-Direktiven und Features.
|
||||
longdesc_pl=Konfiguracja niemal wszystkich opcji i dyrektyw Apache.
|
||||
|
||||
@@ -25,11 +25,13 @@ if (!$ver) {
|
||||
# Work out which modules Apache has
|
||||
%inst = map { $_, 1 } &configurable_modules();
|
||||
|
||||
# Build list of modules know to Webmin
|
||||
# Build list of modules known to Webmin
|
||||
push(@mods, "core");
|
||||
opendir(DIR, ".");
|
||||
foreach $f (readdir(DIR)) {
|
||||
if ($f =~ /^(mod_\S+|prefork|worker|perchild|mpm_\S+)\.pl$/) { push(@mods, $1); }
|
||||
if ($f =~ /^(mod_\S+|prefork|worker|perchild|mpm_\S+)\.pl$/) {
|
||||
push(@mods, $1);
|
||||
}
|
||||
}
|
||||
closedir(DIR);
|
||||
@mods = sort { $a cmp $b } @mods;
|
||||
|
||||
@@ -101,6 +101,7 @@ fileset_eclash=Ja existeix un conjunt de fitxers amb aquest mateix nom
|
||||
fileset_echild=No es pot suprimir aquest conjunt de fitxers, ja que està $1 l'està utilitzant
|
||||
fileset_comp=Tipus de compressió
|
||||
fileset_gzipdef=<Nivell de compressió per defecte>
|
||||
fileset_lzo=Compressió LZO
|
||||
fileset_gzip=Gzip nivell $1
|
||||
fileset_onefs=Limita la còpia a un sol sistema de fitxers
|
||||
|
||||
|
||||
@@ -283,7 +283,6 @@ index_status=Prozessstatus:
|
||||
index_stop=Stoppe Bacula
|
||||
index_stopdesc=Klicken Sie auf diesen Button zum Stoppen des Bacula-Daemon wie oben aufgeführt.
|
||||
index_up=Up
|
||||
index_version=Bacula $1
|
||||
index_versionbacula=Bacula $1
|
||||
index_versionbareos=Bareos $1
|
||||
job_after=Befehl nach Job
|
||||
@@ -362,6 +361,8 @@ log_delete_fdirector=Datei Daemon Director $1 gelöscht
|
||||
log_delete_fdirectors=$1 Datei Daemon Director gelöscht
|
||||
log_delete_fileset=Dateisatz $1 gelöscht
|
||||
log_delete_filesets=$1 Dateisätze gelöscht
|
||||
log_delete_gjob=Bacula-Gruppen-Backup Job $1 gelöscht
|
||||
log_delete_gjobs=$1 Bacula-Gruppen-Backup Jobs gelöscht
|
||||
log_delete_group=Bacula Gruppe $1 gelöscht
|
||||
log_delete_groups=$1 Bacula Gruppen gelöscht
|
||||
log_delete_job=Backup-Job $1 gelöscht
|
||||
@@ -382,6 +383,7 @@ log_restart=Bacula Daemons wieder gestartet
|
||||
log_start=Bacula Daemons gestartet
|
||||
log_stop=Bacula Daemons gestoppt
|
||||
log_storagec=Bacula Speicher Daemon-Konfiguration gespeichert
|
||||
log_sync=Bacula-Gruppensynchronisierung gespeichert
|
||||
mount_done=.. erfolgreicht gemountet.
|
||||
mount_eslot=Fehlende oder ungültige Slot Nummer
|
||||
mount_failed=.. mounten fehlgeschlagen! Siehe die Fehlermeldung für den Grund oben.
|
||||
@@ -394,6 +396,7 @@ mount_title=Mount oder Unmount
|
||||
pool_any=Sichere an jedes Volume in Pool?
|
||||
pool_autolabel=Automatisch Volumes Präfix beschriften
|
||||
pool_echild=Dieser Client kann nicht gelöscht werden, da dieser von $1 genutzt wird
|
||||
pool_eclash=Ein Speichergerät mit dem gleichen Namen ist bereits vorhanden
|
||||
pool_egone=Volume Pool existiert nicht länger!
|
||||
pool_emax=Fehlende oder ungültige maximale Anzahl an Jobs pro Volume
|
||||
pool_ereten=Fehlende oder ungültige Aufbewahrungsfrist
|
||||
@@ -422,6 +425,7 @@ poolstatus_first=Erstmals genutzt
|
||||
poolstatus_last=Letztmals genutzt
|
||||
poolstatus_name=Volume Name
|
||||
poolstatus_never=Niemals
|
||||
poolstatus_none=Es sind keine Volumes momentan in diesem Sicherungspool.
|
||||
poolstatus_ok=OK
|
||||
poolstatus_show=Zeige Volumes in Pool:
|
||||
poolstatus_status=Backupmodus
|
||||
@@ -445,6 +449,7 @@ restore_efiles=Keine Dateien eingegeben
|
||||
restore_egroup=Bacula Gruppe existiert nicht
|
||||
restore_ejob=Ungültige Job-ID
|
||||
restore_ejobfiles=Keine Dateien für den Job aufgezeichnet
|
||||
restore_enofiles=Keine der ausgewählten Dateien im Backup
|
||||
restore_eok=.. Job konnte nicht gestartet werden
|
||||
restore_err=Fehlgeschlagen Backup wiederherzustellen
|
||||
restore_ewhere=Fehlendes Verzeichnis zum Wiederherstellen zu
|
||||
@@ -463,11 +468,16 @@ restore_return=wiederherstellen von
|
||||
restore_run=Starte Wiederherstellung des Job $1 zu Client $2 aus dem Speicher $3 ..
|
||||
restore_running=.. die Wiederherstellung läuft jetzt. Wenn diese fertig ist, werden die Ergebnisse unten dargestellt ..
|
||||
restore_running2=.. die Wiederherstellung wurde im Hintergrund gestartet.
|
||||
restore_storage=Wiederherstellung von Speichergerät
|
||||
restore_title=Stelle Backup wieder her
|
||||
restore_title2=Wiederherstellung Backup zur Bacula-Gruppe
|
||||
restore_title3=Wiederherstellung Bacula-Backup-Gruppe
|
||||
restore_where=Wiederherstellen ins Verzeichnis
|
||||
restore_where2=Anderes root Verzeichnis
|
||||
schedule_echild=Dieser Zeitplan kann nicht gelöscht werden, da es von $1 verwendet wird
|
||||
schedule_eclash=Ein Zeitplan mit dem selben Namen existiert bereits
|
||||
schedule_ename=Fehlender oder ungültiger Zeitplan Name
|
||||
schedule_err=Fehlgeschlagen Backup-Zeitplan zu speichern
|
||||
schedule_etimes=Fehlende Backup-Zeiten in Zeile $1
|
||||
schedule_header=Sicherungszeitplan Details
|
||||
schedule_level=Backup Level
|
||||
@@ -484,6 +494,7 @@ schedules_title=Backup-Zeitpläne
|
||||
sdirector_egone=Director existiert nicht länger!
|
||||
sdirector_ename=Fehlender Director Name
|
||||
sdirector_epass=Fehlendes Passwort
|
||||
sdirector_monitor=Nur Überwachung der Verbindung erlauben?
|
||||
sdirector_name=Director Name
|
||||
sdirector_pass=Akzeptiertes Passwort
|
||||
sdirector_title1=Erstelle Storage Daemon Director
|
||||
|
||||
@@ -40,6 +40,8 @@ ipv6_mode=Domena dla adres
|
||||
confirm_zone=Potwierdzać usuwanie stref?,1,1-Tak,0-Nie
|
||||
confirm_rec=Potwierdzać usuwanie rekordów?,1,1-Tak,0-Nie
|
||||
free_nets=Sieci IP dla wolnych adresów,3,Automatycznie
|
||||
force_random=Źródło Entropy dla kluczy DNSSEC,1,1-/dev/random (bezpieczne, ale wolne),0-/dev/urandom (Prawdopodobnie niebezpieczne, ale szybkie)
|
||||
spf_record=Prawdziwy typ rekordu dla Sender Permitted From,1,1-SPF,0-TXT
|
||||
line2.5=Klaster serwerów zapasowych,11
|
||||
this_ip=IP domyślnego serwera głównego dla zdalnych stref zapasowych,3,Adres IP nazwy hosta
|
||||
other_slaves=Dodać inne adresy IP serwerów zapasowych do listy serwerów głównych na serwerach zapasowych?,1,1-Tak,0-Nie
|
||||
|
||||
@@ -149,11 +149,6 @@ for($i=0; $i<@_; $i++) {
|
||||
if ($in{'type'} eq "PTR") {
|
||||
$name = &ip6int_to_net(&arpa_to_ip($r->{'name'}));
|
||||
}
|
||||
elsif ($in{'type'} eq "SRV") {
|
||||
$name = $r->{'name'};
|
||||
$name =~ s/^_//;
|
||||
$name =~ s/\._/\./;
|
||||
}
|
||||
else {
|
||||
$name = $r->{'name'};
|
||||
}
|
||||
|
||||
@@ -20,8 +20,40 @@ $desc = &text('findfree_header', &arpa_to_ip($dom));
|
||||
|
||||
if ($in{'from'} && $in{'to'}) {
|
||||
# Do the search
|
||||
@recs = &read_zone_file($file, $dom);
|
||||
@recs = grep { ($_->{'type'} eq 'A') || ($_->{'type'} eq 'PTR')} @recs;
|
||||
@allrecs = &read_zone_file($file, $dom);
|
||||
@recs = grep { ($_->{'type'} eq 'A') || ($_->{'type'} eq 'PTR')} @allrecs;
|
||||
@gens = grep { $_->{'generate'} } @allrecs;
|
||||
foreach my $g (@gens) {
|
||||
@gv = @{$g->{'generate'}};
|
||||
if ($gv[0] =~ /^(\d+)-(\d+)\/(\d+)$/) {
|
||||
$start = $1; $end = $2; $skip = $3;
|
||||
}
|
||||
elsif ($gv[0] =~ /^(\d+)-(\d+)$/) {
|
||||
$start = $1; $end = $2; $skip = 1;
|
||||
}
|
||||
else { next; }
|
||||
for($i=$start; $i<=$end; $i+=$skip) {
|
||||
$lhs = $gv[1];
|
||||
$lhs =~ s/\$\$/\0/g;
|
||||
$lhs =~ s/\$/$i/g;
|
||||
$lhs =~ s/\0/\$/g;
|
||||
$lhsfull = $lhs =~ /\.$/ ? $lhs :
|
||||
$dom eq "." ? "$lhs." : "$lhs.$dom";
|
||||
|
||||
$rhs = $gv[3];
|
||||
$rhs =~ s/\$\$/\0/g;
|
||||
$rhs =~ s/\$/$i/g;
|
||||
$rhs =~ s/\0/\$/g;
|
||||
$rhsfull = &check_ipaddress($rhs) ? $rhs :
|
||||
$rhs =~ /\.$/ ? $rhs :
|
||||
$dom eq "." ? "$rhs." : "$rhs.$dom";
|
||||
push(@recs, { 'name' => $lhsfull,
|
||||
'values' => [ $rhsfull ],
|
||||
'type' => $gv[2],
|
||||
'class' => 'IN' });
|
||||
}
|
||||
}
|
||||
|
||||
my $freeXXXcount=0;
|
||||
my $freemaccount=0;
|
||||
if (@recs) {
|
||||
|
||||
@@ -229,6 +229,8 @@ recs_find=Mostra els registres que coincideixin amb:
|
||||
recs_search=Cerca
|
||||
recs_drev=Elimina també els inversos
|
||||
recs_none=El domini encara no té cap registre $1.
|
||||
recs_nosearch=No hi ha cap registre que coincideixi amb la teva cerca.
|
||||
recs_needsearch=Introdueix una cerca per trobar registres coincidents.
|
||||
|
||||
edit_title=Edició de $1
|
||||
edit_header=de $1
|
||||
|
||||
2193
bind8/lang/de
2193
bind8/lang/de
File diff suppressed because it is too large
Load Diff
@@ -796,7 +796,9 @@ recs_ecannottype=Du har ikke tilgang til å slett oppføringer av denne
|
||||
recs_find=Vis oppføringer som matcher:
|
||||
recs_header=I $1
|
||||
recs_name=Navn
|
||||
recs_needsearch=Angi et søk for å finne matchende oppføringer.
|
||||
recs_none=Domenet har ingen $1 oppføringer enda.
|
||||
recs_nosearch=Ingen oppføringer matchet søket ditt.
|
||||
recs_return=oppføringstyper
|
||||
recs_search=Søk
|
||||
recs_title=$1 oppføringer
|
||||
@@ -822,6 +824,7 @@ rmass_ename=Manglende eller ugyldig oppføringsnavn
|
||||
rmass_ename2=Oppføringsnavnet kan ikke slutte med .
|
||||
rmass_enone=Ingen valgt
|
||||
rmass_err=Kunne ikke legge til oppføringer
|
||||
rmass_esign=.. ferdig, men signering feilet : $1
|
||||
rmass_ettl=Manglende eller ugyldig time-to-live
|
||||
rmass_header=Detaljer om masse-innlegging av oppføringer
|
||||
rmass_name=Navn for ny oppføring
|
||||
@@ -1110,6 +1113,7 @@ zonekey_desc=Denne sonen har ingen DNSSEC signerings-nøkkel enda. Du kan br
|
||||
zonekey_disable=Fjern nøkkel
|
||||
zonekey_disabledesc=Fjerner DNSSEC nøkkelen fra denne sonen, og alle signerings-oppføringer. Med en gang dette er gjort vil du kunne generere en ny nøkkel.
|
||||
zonekey_done=.. ferdig
|
||||
zonekey_ds=DS oppføring for overordnet sone :
|
||||
zonekey_ecreate=.. oppretting feilet : $1
|
||||
zonekey_efactor=Nøkkelstørrelse må være et multippel av $1
|
||||
zonekey_enable=Opprett og legg til nøkkel
|
||||
@@ -1122,7 +1126,9 @@ zonekey_header=Innstillinger for ny DNSSEC nøkkel
|
||||
zonekey_noprivate=Webmin kunne imidlertid ikke finne den private nøkkelen som er assosiert med sonen, og vil derfor ikke være i stand til å re-signere den.
|
||||
zonekey_other=Annen størrelse (i bits)
|
||||
zonekey_private=Detaljer for privat nøkkel :
|
||||
zonekey_privatefile=Privat nøkkel fil : $1
|
||||
zonekey_public=Oppføring for offentlig nøkkel :
|
||||
zonekey_publicfile=Offentlig nøkkel fil : $1
|
||||
zonekey_resign=Re-signer sone
|
||||
zonekey_resigndesc=Generer ny signeringsnøkkel for sone, signer den med sonens masternøkkel, og re-signer alle oppføringer.
|
||||
zonekey_sign=Signer sone
|
||||
|
||||
@@ -406,6 +406,7 @@ index_search=Szukaj
|
||||
index_slave=Zapasowa
|
||||
index_start=Uruchom serwer
|
||||
index_startmsg=Naciśnij ten przycisk, aby uruchomić serwer BIND oraz załadować bieżącą konfigurację.
|
||||
index_status=Stan
|
||||
index_stop=Zatrzymaj serwer nazw
|
||||
index_stopmsg=Kliknij ten przycisk, aby zatrzymać serwer BINDa. Klienci używający serwera nie będą mogli rozwiązywać nazw, aż serwer zostanie zrestartowany.
|
||||
index_stub=Skrótowa
|
||||
@@ -1009,11 +1010,14 @@ weeks=tygodni
|
||||
whois_ecannot=Nie masz uprawnień do oglądania informacji WHOIS
|
||||
whois_header=Wynik polecenia $1 ..
|
||||
whois_title=Informacje z bazy WHOIS
|
||||
xfer_failed=.. z $1 : niepowodzenie : $2
|
||||
zonedef_alg=Algorytm klucza
|
||||
zonedef_cmaster=Czy sprawdzać nazwy w strefach podstawowych?
|
||||
zonedef_cresponse=Czy sprawdzać nazwy w odpowiedziach?
|
||||
zonedef_cslave=Czy sprawdzać nazwy w strefach zapasowych?
|
||||
zonedef_dne=Weryfikacja odpowiedzi negatywnych (Authenticated Denial of Existance Using)
|
||||
zonedef_dnssec=Utworzyć klucz DNSSEC i podpisać nowe strefy?
|
||||
zonedef_dnssec_dt=Zautomatyzuj wszystkie operacje DNSSEC (ignoruje poniższe inne ustawienia)?
|
||||
zonedef_ecannot=Nie masz uprawnień do zmiany ustawień domyślnych stref podstawowych
|
||||
zonedef_email=Domyślny adres e-mail
|
||||
zonedef_eprins=Brakujący lub nieprawidłowy serwer nazw dla domen głównych
|
||||
@@ -1038,6 +1042,7 @@ zonekey_desc=Ta strefa nie posiada ustawionego klucza DNSSEC. Mo
|
||||
zonekey_disable=Usuń klucz
|
||||
zonekey_disabledesc=Usuwa klucz DNSSEC z tej strefy i wszystkich podpisanych rekordów. Gdy zostanie to wykonane, będziesz mógł wygenerować nowy klucz.
|
||||
zonekey_done=.. zakończono
|
||||
zonekey_ds=Rekord DS dla strefy nadrzędnej :
|
||||
zonekey_ecreate=.. błąd tworzenia : $1
|
||||
zonekey_efactor=Rozmiar klucza musi być wielokrotnością $1
|
||||
zonekey_enable=Utwórz i dodaj klucz
|
||||
@@ -1050,7 +1055,9 @@ zonekey_header=Nowe opcje klucza DNSSEC
|
||||
zonekey_noprivate=Jednakże Webmin nie mógł znaleźć klucza prywatnego skojarzonego ze strefą, a więc nie może jej podpisać.
|
||||
zonekey_other=Inny rozmiar (w bitach)
|
||||
zonekey_private=Szczegóły klucza prywatnego :
|
||||
zonekey_privatefile=Plik klucza prywatnego: $1
|
||||
zonekey_public=Rekord klucza publicznego :
|
||||
zonekey_publicfile=Plik klucza publicznego : $1
|
||||
zonekey_resign=Podpisz strefę
|
||||
zonekey_resigndesc=Generuje nowy klucz podpisywania strefy, podpisuje nim klucz strefy głównej i ponownie podpisuje wszystkie rekordy.
|
||||
zonekey_sign=Podpisz srefę
|
||||
|
||||
@@ -2,7 +2,7 @@ desc_ko_KR.euc=BIND DNS
|
||||
risk=low medium high
|
||||
desc_ru_SU=óÅÒ×ÅÒ DNS BIND
|
||||
desc_zh_TW.Big5=BIND DNS ¦øªA¾¹
|
||||
desc_pl=Serwer DNS BIND
|
||||
desc_pl=BIND - serwer DNS
|
||||
desc_de=BIND DNS-Server
|
||||
name=BIND
|
||||
desc_zh_CN=BIND DNS ·þÎñÆ÷
|
||||
|
||||
@@ -44,7 +44,8 @@ if ($in{'show'}) {
|
||||
$rhs =~ s/\$\$/\0/g;
|
||||
$rhs =~ s/\$/$i/g;
|
||||
$rhs =~ s/\0/\$/g;
|
||||
$rhsfull = $rhs =~ /\.$/ ? $rhs :
|
||||
$rhsfull = &check_ipaddress($rhs) ? $rhs :
|
||||
$rhs =~ /\.$/ ? $rhs :
|
||||
$dom eq "." ? "$rhs." : "$rhs.$dom";
|
||||
|
||||
print &ui_columns_row([
|
||||
|
||||
@@ -38,5 +38,5 @@ print <<EOF;
|
||||
</noframes>
|
||||
</frameset>
|
||||
EOF
|
||||
&popup_footer();
|
||||
&popup_footer(1);
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ edit_uid=Benutzer / UID
|
||||
edit_unpriv=Unprivilegierte Benutzer
|
||||
index_add=Füge einen neuen Export hinzu.
|
||||
index_apply=Änderungen anwenden
|
||||
index_applydesc=Klicken Sie auf diese Schaltfläche, um die aktuelle Datei Export Konfiguration anzuwenden. Dies wird alle obig aufgelisteten Verzeichnisse mit den angegebenen Optionen verfügbar.
|
||||
index_applydesc=Klicken Sie auf diese Schaltfläche, um die aktuelle Datei Export Konfiguration anzuwenden. Dies wird alle obig aufgelisteten Verzeichnisse mit den angegebenen Optionen verfügbar machen.
|
||||
index_clients=Clients
|
||||
index_delete=Lösche ausgewählte Exporte
|
||||
index_dirs=Verzeichnisse
|
||||
|
||||
@@ -165,7 +165,7 @@ location = "chooser.cgi?frame=1&chroot=$uchroot&type=$utype&file="+p;
|
||||
EOF
|
||||
print "<div id='filter_box' style='display:none;margin:0px;padding:0px;width:100%;clear:both;'>";
|
||||
print &ui_textbox("filter",$text{'ui_filterbox'}, 50, 0, undef,"style='width:100%;color:#aaa;' onkeyup=\"filter_match(this.value,'row',true);\" onfocus=\"if (this.value == '".$text{'ui_filterbox'}."') {this.value = '';this.style.color='#000';}\" onblur=\"if (this.value == '') {this.value = '".$text{'ui_filterbox'}."';this.style.color='#aaa';}\"");
|
||||
print &ui_hr("style='wdith:100%;'")."</div>";
|
||||
print &ui_hr("style='width:100%;'")."</div>";
|
||||
print "<b>",&text('chooser_dir', &html_escape($dir)),"</b>\n";
|
||||
opendir(DIR, $in{'chroot'}.$dir) ||
|
||||
&popup_error(&text('chooser_eopen', "$!"));
|
||||
|
||||
@@ -1,168 +1,167 @@
|
||||
__norefs=1
|
||||
add_echeck=Auf dem Server $1 ist das Webmin-Software-Modul nicht installiert.
|
||||
add_err=Konnte Server nicht hinzufügen
|
||||
add_esystem=Der Server $1 benutzt nicht das gleiche Paketsystem wie dieser Rechner
|
||||
add_gerr=Konnte Gruppe nicht hinzufügen
|
||||
add_gmsg=Füge Server in die Gruppe $1 ein ...
|
||||
add_msg=Füge $1 hinzu ..
|
||||
add_ok=$1 mit $2 Paketen inventarisiert und hinzugefügt
|
||||
add_title=Server hinzufügen
|
||||
compare_all=Alle Server
|
||||
compare_desc=Hier können Sie die Software-Pakete ermitteln, die auf den verschiedenen Servern installiert sind. Damit können Sie unterschiedliche Software-Version einfach erkennen, um diese vielleicht auf den gleichen Stand zu bringen.
|
||||
compare_err=Konnte Pakete nicht vergleichen
|
||||
compare_etwo=Es müssen mindestens zwei Server ausgewählt werden
|
||||
compare_got=OK
|
||||
compare_hosts=Server zum Vergleichen
|
||||
compare_miss=Fehlende
|
||||
compare_ok=Jetzt vergleichen
|
||||
compare_pack=Paket
|
||||
compare_sel=Ausgewählte ..
|
||||
compare_showall=Pakete zum Anzeigen
|
||||
compare_showall0=Nur Unterschiede
|
||||
compare_showall1=Alle
|
||||
compare_title=Pakete vergleichen
|
||||
delete_done=.. erledigt
|
||||
delete_epack=Das Paket $1 existiert nicht
|
||||
delete_err=Konnte Paket $1 nicht löschen
|
||||
delete_error=Fehler beim Löschen von $1 : $2
|
||||
delete_header=Lösche Paket $1 ..
|
||||
delete_ok=Löschen
|
||||
delete_rusure=Sind Sie sicher, dass Sie das Paket $1 von allen Servern löschen möchten. Bis zu $2 Dateien ($3 bytes) werden für immer gelöscht.
|
||||
delete_rusure2=Sind Sie sicher, dass Sie das Paket $1 von $4 löschen möchten. Bis zu $2 Dateien ($3 bytes) werden für immer gelöscht.
|
||||
delete_rusure2none=Sind Sie sich sicher, dass Sie die Pakete $1 von $4 löschen wollen?
|
||||
delete_rusurenone=Sind Sie sich sicher, dass Sie die Pakete $1 von allen Servern löschen zu wollen?
|
||||
delete_success=Gelöscht von $1.
|
||||
delete_title=Paket löschen
|
||||
deletes_desc=Deinstalliere Pakete $1
|
||||
deletes_enone=Keine Pakete ausgewählt
|
||||
deletes_err=Fehlgeschlagen Pakete zu löschen
|
||||
deletes_failed1=Deinstallieren fehlgeschlagen $1 : $2
|
||||
deletes_failed2=Deinstallation fehlgeschlagen : $1
|
||||
deletes_ok=Lösche alle
|
||||
deletes_rusure=Sind Sie sich sicher, dass Sie die Pakete $1 von allen ausgewählten Hosts deinstallieren wollen?
|
||||
deletes_success1=Erfolgreich deinstalliert $1
|
||||
deletes_success2=...Deinstallation komplett.
|
||||
deletes_title=Lösche Pakete
|
||||
do_already=Ist bereits installiert auf $1.
|
||||
do_arch=Architektur
|
||||
do_class=Klasse
|
||||
do_desc=Beschreibung
|
||||
do_details=Paket-Details
|
||||
do_done=.. erledigt
|
||||
do_edeleted=Die Installationsdatei wurde gelöscht - kehren Sie zum Modulindex zurück und versuchen Sie es erneut.
|
||||
do_failed=Fehler beim Installieren auf $1 : $2
|
||||
do_header=Installiere $1 auf allen Rechnern ...
|
||||
do_header3=Installiere $1 auf Servern, wo es noch nicht installiert ist ...
|
||||
do_header4=Installiere $1 auf Servern der Gruppe $2 ...
|
||||
do_header5=Installiere $1 auf $2 ..
|
||||
do_header6=Installiere $1 auf Rechnern, die es bereits haben ..
|
||||
do_inst=Installiert
|
||||
do_none=Kein(es)
|
||||
do_pack=Paket
|
||||
do_success=Installiert auf $1.
|
||||
do_success2=$1 auf $2 installiert.
|
||||
do_title=Installiere Paket
|
||||
do_vend=Lieferant
|
||||
do_ver=Version
|
||||
edit_all=<Alle Server>
|
||||
edit_arch=Architektur
|
||||
edit_class=Klasse
|
||||
edit_desc=Beschreibung
|
||||
edit_details=Paket-Details von $1
|
||||
edit_donthave=<Server, die es noch nicht haben>
|
||||
edit_group=Mitglieder von $1
|
||||
edit_have=<Rechner haben es bereits>
|
||||
edit_hosts=Installiert auf den Servern
|
||||
edit_inst=Installiert
|
||||
edit_list=Liste Dateien auf:
|
||||
edit_none=Kein(es)
|
||||
edit_pack=Paket
|
||||
edit_return=Paket-Details
|
||||
edit_title=Bearbeite Paket
|
||||
edit_uninst=Deinstalliere von:
|
||||
edit_vend=Lieferant
|
||||
edit_ver=Version
|
||||
host_all=Alle Pakete
|
||||
host_close=Schließe alle
|
||||
host_count=Installierte Pakete
|
||||
host_delete=Entferne aus dem Software-Management
|
||||
host_header=Details zu den Servern im Software-Management
|
||||
host_installed=Installierte Pakete
|
||||
host_name=Hostname
|
||||
host_open=Alle öffnen
|
||||
host_os=Betriebssystem von Webmin übermittelt
|
||||
host_refresh=Pakete aktualisieren
|
||||
host_return=Serverdetails
|
||||
host_system=Paketsystem
|
||||
host_title=Server im Software-Management
|
||||
host_type=Servertyp
|
||||
index_add=Einen Server hinzufügen
|
||||
index_compare=Server vergleichen
|
||||
index_count=($1 Pakete)
|
||||
index_down=Jeder Server soll das Paket neu downloaden
|
||||
index_ftp=Via FTP- oder HTTP-URL
|
||||
index_gadd=Füge Server der Gruppe hinzu
|
||||
index_hosts=Server im Software-Management
|
||||
index_install=Ein neues Paket installieren
|
||||
index_installed=Installierte Pakete
|
||||
index_installmsg=Wählen Sie den Ort von wo ein neues Paket installiert werden soll ..
|
||||
index_installok=Installiere
|
||||
index_local=Von einer lokalen Datei
|
||||
index_nohosts=Es wurden keine Webmin-Server für das Software-Management eingerichtet.
|
||||
index_refresh=Erneuere Paketliste
|
||||
index_return=Serverliste
|
||||
index_search=Suche nach einem Paket
|
||||
index_tcount=Pakete
|
||||
index_tdesc=Beschreibung
|
||||
index_thost=Hostname
|
||||
index_title=Cluster Software-Pakete
|
||||
index_ttype=Betriebssystemtyp
|
||||
index_uploaded=Von einer heraufzuladenden Datei
|
||||
install_ealready=Bereits installiert
|
||||
install_edir=Kein gültiges $1 Verzeichnis
|
||||
install_efile=Keine gültige $1 Datei
|
||||
install_elocal=Es wurde keine lokale Datei angegeben
|
||||
install_elocal2='$1' existiert nicht
|
||||
compare_showall=Pakete zum Anzeigen
|
||||
search_pack=Paket
|
||||
add_gmsg=Füge Server in die Gruppe $1 ein ...
|
||||
index_installed=Installierte Pakete
|
||||
deletes_success2=...Deinstallation komplett.
|
||||
add_ok=$1 mit $2 Paketen inventarisiert und hinzugefügt
|
||||
search_nomatch=Keine Pakete gefunden für $1
|
||||
deletes_ok=Lösche alle
|
||||
delete_done=.. erledigt
|
||||
edit_title=Bearbeite Paket
|
||||
deletes_failed1=Deinstallieren fehlgeschlagen $1 : $2
|
||||
search_invert=Auswahl umkehren
|
||||
host_delete=Entferne aus dem Software-Management
|
||||
install_err=Konnte Paket nicht installieren
|
||||
install_erus=Dieser Server benutzt einen anderen Update-Mechanismus als der Masterserver ($1 im Gegensatz zu $2)
|
||||
install_eupdate=Ein Fehler ist beim Installieren der spezifizierten Updates aufgetreten
|
||||
install_eupload=Ihr Browser unterstützt keinerlei Dateiuploads
|
||||
install_eurl=Unverständliche URL '$1'
|
||||
install_ezip=Keine gültige komprimierte oder "gzip"te $1 Datei
|
||||
install_header=Installiere Paket
|
||||
install_ok=Installiere
|
||||
install_packs=Paket(e) zum Installieren
|
||||
install_servers=Server auf die installiert werden soll.
|
||||
install_title=Installiere Paket
|
||||
list_files=Dateien für Paket $1 auf $2
|
||||
list_group=Gruppe
|
||||
list_ok=OK
|
||||
list_owner=Besitzer
|
||||
list_path=Pfad
|
||||
list_size=Größe
|
||||
list_status=Status
|
||||
list_title=Paketdateien
|
||||
list_type=Typ
|
||||
refresh_1=Erneuere $1 (hinzugefügt $2 , gelöscht $3)
|
||||
refresh_2=Erneuere $1 (hinzugefügt $2)
|
||||
refresh_3=Erneuere $1 (gelöscht $2)
|
||||
refresh_4=Erneuere $1 (keine Änderungen)
|
||||
index_local=Von einer lokalen Datei
|
||||
delete_epack=Das Paket $1 existiert nicht
|
||||
do_header5=Installiere $1 auf $2 ..
|
||||
do_header=Installiere $1 auf allen Rechnern ...
|
||||
refresh_del=Lösche $1 von der Serverliste
|
||||
refresh_done=.. erledigt
|
||||
compare_showall1=Alle
|
||||
deletes_failed2=Deinstallation fehlgeschlagen : $1
|
||||
delete_header=Lösche Paket $1 ..
|
||||
edit_arch=Architektur
|
||||
search_desc=Beschreibung
|
||||
index_count=($1 Pakete)
|
||||
index_uploaded=Von einer heraufzuladenden Datei
|
||||
refresh_1=Erneuere $1 (hinzugefügt $2 , gelöscht $3)
|
||||
install_ezip=Keine gültige komprimierte oder "gzip"te $1 Datei
|
||||
install_eurl=Unverständliche URL '$1'
|
||||
delete_error=Fehler beim Löschen von $1 : $2
|
||||
edit_all=<Alle Server>
|
||||
refresh_failed=Konnte nicht erneuern $1 : $2
|
||||
refresh_header=Frage die Paketliste von allen Servern neu ab ...
|
||||
refresh_header4=Neuabfrage der Paketliste von Mitgliedern von $2 ..
|
||||
compare_desc=Hier können Sie die Software-Pakete ermitteln, die auf den verschiedenen Servern installiert sind. Damit können Sie unterschiedliche Software-Version einfach erkennen, um diese vielleicht auf den gleichen Stand zu bringen.
|
||||
edit_inst=Installiert
|
||||
edit_desc=Beschreibung
|
||||
search_class=Klasse
|
||||
install_efile=Keine gültige $1 Datei
|
||||
install_packs=Paket(e) zum Installieren
|
||||
do_header4=Installiere $1 auf Servern der Gruppe $2 ...
|
||||
install_erus=Dieser Server benutzt einen anderen Update-Mechanismus als der Masterserver ($1 im Gegensatz zu $2)
|
||||
index_compare=Server vergleichen
|
||||
install_title=Installiere Paket
|
||||
compare_etwo=Es müssen mindestens zwei Server ausgewählt werden
|
||||
index_ftp=Via FTP- oder HTTP-URL
|
||||
install_ok=Installiere
|
||||
install_servers=Server auf die installiert werden soll.
|
||||
deletes_title=Lösche Pakete
|
||||
list_group=Gruppe
|
||||
delete_err=Konnte Paket $1 nicht löschen
|
||||
this_server=dieser Server
|
||||
edit_donthave=<Server, die es noch nicht haben>
|
||||
search_return=Suchergebnisse
|
||||
deletes_success1=Erfolgreich deinstalliert $1
|
||||
refresh_header5=Neuabfrage der Paketliste von $2 ..
|
||||
refresh_title=Erneuere Paketliste
|
||||
search_class=Klasse
|
||||
index_tdesc=Beschreibung
|
||||
host_system=Paketsystem
|
||||
do_already=Ist bereits installiert auf $1.
|
||||
delete_success=Gelöscht von $1.
|
||||
search_delete=Deinstalliere ausgewählte Pakete von:
|
||||
search_desc=Beschreibung
|
||||
search_invert=Auswahl umkehren
|
||||
search_match=Pakete gefunden für $1
|
||||
search_nomatch=Keine Pakete gefunden für $1
|
||||
search_none=Kein(es)
|
||||
search_pack=Paket
|
||||
search_return=Suchergebnisse
|
||||
search_selall=Alle auswählen
|
||||
do_edeleted=Die Installationsdatei wurde gelöscht - kehren Sie zum Modulindex zurück und versuchen Sie es erneut.
|
||||
compare_got=OK
|
||||
host_close=Schließe alle
|
||||
edit_ver=Version
|
||||
edit_have=<Rechner haben es bereits>
|
||||
compare_all=Alle Server
|
||||
refresh_4=Erneuere $1 (keine Änderungen)
|
||||
index_add=Einen Server hinzufügen
|
||||
install_eupload=Ihr Browser unterstützt keinerlei Dateiuploads
|
||||
deletes_rusure=Sind Sie sich sicher, dass Sie die Pakete $1 von allen ausgewählten Hosts deinstallieren wollen?
|
||||
index_return=Serverliste
|
||||
search_title=Paketsuche
|
||||
this_server=dieser Server
|
||||
index_hosts=Server im Software-Management
|
||||
do_ver=Version
|
||||
install_header=Installiere Paket
|
||||
deletes_err=Fehlgeschlagen Pakete zu löschen
|
||||
edit_class=Klasse
|
||||
deletes_desc=Deinstalliere Pakete $1
|
||||
index_thost=Hostname
|
||||
compare_hosts=Server zum Vergleichen
|
||||
install_elocal2='$1' existiert nicht
|
||||
delete_rusure2=Sind Sie sicher, dass Sie das Paket $1 von $4 löschen möchten. Bis zu $2 Dateien ($3 bytes) werden für immer gelöscht.
|
||||
install_elocal=Es wurde keine lokale Datei angegeben
|
||||
edit_group=Mitglieder von $1
|
||||
edit_none=Kein(es)
|
||||
host_name=Hostname
|
||||
compare_sel=Ausgewählte ..
|
||||
search_selall=Alle auswählen
|
||||
do_done=.. erledigt
|
||||
do_class=Klasse
|
||||
do_success2=$1 auf $2 installiert.
|
||||
refresh_2=Erneuere $1 (hinzugefügt $2)
|
||||
host_open=Alle öffnen
|
||||
index_nohosts=Es wurden keine Webmin-Server für das Software-Management eingerichtet.
|
||||
do_title=Installiere Paket
|
||||
compare_err=Konnte Pakete nicht vergleichen
|
||||
host_type=Servertyp
|
||||
host_refresh=Pakete aktualisieren
|
||||
edit_pack=Paket
|
||||
do_none=Kein(es)
|
||||
list_ok=OK
|
||||
list_type=Typ
|
||||
install_eupdate=Ein Fehler ist beim Installieren der spezifizierten Updates aufgetreten
|
||||
add_title=Server hinzufügen
|
||||
do_inst=Installiert
|
||||
host_header=Details zu den Servern im Software-Management
|
||||
do_header6=Installiere $1 auf Rechnern, die es bereits haben ..
|
||||
compare_showall0=Nur Unterschiede
|
||||
install_ealready=Bereits installiert
|
||||
install_edir=Kein gültiges $1 Verzeichnis
|
||||
compare_title=Pakete vergleichen
|
||||
list_status=Status
|
||||
delete_rusure2none=Sind Sie sich sicher, dass Sie die Pakete $1 von $4 löschen wollen?
|
||||
edit_hosts=Installiert auf den Servern
|
||||
edit_details=Paket-Details von $1
|
||||
host_count=Installierte Pakete
|
||||
refresh_done=.. erledigt
|
||||
list_title=Paketdateien
|
||||
index_tcount=Pakete
|
||||
edit_vend=Lieferant
|
||||
do_header3=Installiere $1 auf Servern, wo es noch nicht installiert ist ...
|
||||
add_err=Konnte Server nicht hinzufügen
|
||||
edit_list=Liste Dateien auf:
|
||||
refresh_header4=Neuabfrage der Paketliste von Mitgliedern von $2 ..
|
||||
host_all=Alle Pakete
|
||||
add_msg=Füge $1 hinzu ..
|
||||
delete_ok=Löschen
|
||||
list_owner=Besitzer
|
||||
compare_ok=Jetzt vergleichen
|
||||
deletes_enone=Keine Pakete ausgewählt
|
||||
add_esystem=Der Server $1 benutzt nicht das gleiche Paketsystem wie dieser Rechner
|
||||
host_return=Serverdetails
|
||||
index_installok=Installiere
|
||||
add_echeck=Auf dem Server $1 ist das Webmin-Software-Modul nicht installiert.
|
||||
compare_miss=Fehlende
|
||||
__norefs=1
|
||||
add_gerr=Konnte Gruppe nicht hinzufügen
|
||||
do_details=Paket-Details
|
||||
do_desc=Beschreibung
|
||||
delete_rusure=Sind Sie sicher, dass Sie das Paket $1 von allen Servern löschen möchten. Bis zu $2 Dateien ($3 bytes) werden für immer gelöscht.
|
||||
edit_uninst=Deinstalliere von:
|
||||
delete_rusurenone=Sind Sie sich sicher, dass Sie die Pakete $1 von allen Servern löschen zu wollen?
|
||||
host_installed=Installierte Pakete
|
||||
refresh_header=Frage die Paketliste von allen Servern neu ab ...
|
||||
index_ttype=Betriebssystemtyp
|
||||
do_arch=Architektur
|
||||
compare_pack=Paket
|
||||
index_down=Jeder Server soll das Paket neu downloaden
|
||||
search_match=Pakete gefunden für $1
|
||||
index_install=Ein neues Paket installieren
|
||||
index_search=Suche nach einem Paket
|
||||
list_path=Pfad
|
||||
index_title=Cluster Software-Pakete
|
||||
index_refresh=Erneuere Paketliste
|
||||
host_os=Betriebssystem von Webmin übermittelt
|
||||
index_gadd=Füge Server der Gruppe hinzu
|
||||
do_vend=Lieferant
|
||||
search_none=Kein(es)
|
||||
do_pack=Paket
|
||||
list_size=Größe
|
||||
host_title=Server im Software-Management
|
||||
edit_return=Paket-Details
|
||||
refresh_3=Erneuere $1 (gelöscht $2)
|
||||
do_failed=Fehler beim Installieren auf $1 : $2
|
||||
list_files=Dateien für Paket $1 auf $2
|
||||
delete_title=Paket löschen
|
||||
|
||||
@@ -716,8 +716,10 @@ like /etc/cron.hourly. Returns undef otherwise.
|
||||
=cut
|
||||
sub is_run_parts
|
||||
{
|
||||
local ($cmd) = @_;
|
||||
local $rp = $config{'run_parts'};
|
||||
return $rp && $_[0] =~ /$rp(.*)\s+(\-\-\S+\s+)*([a-z0-9\.\-\/_]+)(\s*\))?$/i ? $3 : undef;
|
||||
$cmd =~ s/\s*#.*$//;
|
||||
return $rp && $cmd =~ /$rp(.*)\s+(\-\-\S+\s+)*([a-z0-9\.\-\/_]+)(\s*\))?$/i ? $3 : undef;
|
||||
}
|
||||
|
||||
=head2 can_edit_user(&access, user)
|
||||
|
||||
@@ -9,7 +9,7 @@ if ($in{'cancel'}) {
|
||||
&redirect("");
|
||||
exit;
|
||||
}
|
||||
&lock_file($config{'dhcpd_conf'});
|
||||
&lock_all_files();
|
||||
$par = &get_parent_config();
|
||||
foreach $i ($in{'sidx'}, $in{'uidx'}) {
|
||||
if ($i ne "") {
|
||||
@@ -64,7 +64,7 @@ if ($type) {
|
||||
}
|
||||
&save_directive($par, [ $to_del ], [ ], 0);
|
||||
&flush_file_lines();
|
||||
&unlock_file($config{'dhcpd_conf'});
|
||||
&unlock_all_files();
|
||||
if ($to_del->{'name'} eq "group") {
|
||||
@count = &find("host", $group->{'members'});
|
||||
&webmin_log('delete', 'group', join(",", map { $_->{'values'}->[0] } @count), \%in);
|
||||
|
||||
@@ -10,7 +10,7 @@ require './params-lib.pl';
|
||||
%access = &get_module_acl();
|
||||
|
||||
# Work out what is being done
|
||||
&lock_file($config{'dhcpd_conf'});
|
||||
&lock_all_files();
|
||||
$parent = &get_parent_config();
|
||||
foreach $d (@d) {
|
||||
local @subs = reverse(split(/\//, $d));
|
||||
@@ -37,7 +37,7 @@ if ($in{'confirm'}) {
|
||||
&save_directive($pardel->[0], [ $pardel->[1] ], [ ], 0);
|
||||
}
|
||||
&flush_file_lines();
|
||||
&unlock_file($config{'dhcpd_conf'});
|
||||
&unlock_all_files();
|
||||
&webmin_log("delete", "hosts", scalar(@d));
|
||||
&redirect("");
|
||||
}
|
||||
|
||||
@@ -23,14 +23,14 @@ while($i < @tok) {
|
||||
}
|
||||
|
||||
# Delete them, in reverse order so that line numbers aren't messed up
|
||||
&lock_file($config{'lease_file'});
|
||||
&lock_all_files();
|
||||
$lref = &read_file_lines($config{'lease_file'});
|
||||
foreach $lease (reverse(@todelete)) {
|
||||
splice(@$lref, $lease->{'line'},
|
||||
$lease->{'eline'} - $lease->{'line'} + 1);
|
||||
}
|
||||
&flush_file_lines($config{'lease_file'});
|
||||
&unlock_file($config{'lease_file'});
|
||||
&unlock_all_files();
|
||||
|
||||
&restart_dhcpd();
|
||||
&webmin_log("delete", "lease", $lease->{'values'}->[0]);
|
||||
|
||||
@@ -10,7 +10,7 @@ require './params-lib.pl';
|
||||
%access = &get_module_acl();
|
||||
|
||||
# Work out what is being done
|
||||
&lock_file($config{'dhcpd_conf'});
|
||||
&lock_all_files();
|
||||
$parent = &get_parent_config();
|
||||
foreach $d (@d) {
|
||||
local ($idx, $pidx) = split(/\//, $d);
|
||||
@@ -35,7 +35,7 @@ if ($in{'confirm'}) {
|
||||
&save_directive($pardel->[0], [ $pardel->[1] ], [ ], 0);
|
||||
}
|
||||
&flush_file_lines();
|
||||
&unlock_file($config{'dhcpd_conf'});
|
||||
&unlock_all_files();
|
||||
&webmin_log("delete", "subnets", scalar(@d));
|
||||
&redirect("");
|
||||
}
|
||||
|
||||
@@ -993,4 +993,27 @@ else {
|
||||
}
|
||||
}
|
||||
|
||||
sub get_all_config_files
|
||||
{
|
||||
my $conf = &get_config();
|
||||
my @rv = ( $config{'dhcpd_conf'} );
|
||||
push(@rv, map { $_->{'file'} } @$conf);
|
||||
push(@rv, $config{'add_file'}) if ($config{'add_file'});
|
||||
return &unique(@rv);
|
||||
}
|
||||
|
||||
sub lock_all_files
|
||||
{
|
||||
foreach my $f (&get_all_config_files()) {
|
||||
&lock_file($f);
|
||||
}
|
||||
}
|
||||
|
||||
sub unlock_all_files
|
||||
{
|
||||
foreach my $f (reverse(&get_all_config_files())) {
|
||||
&unlock_file($f);
|
||||
}
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
require './dhcpd-lib.pl';
|
||||
require './params-lib.pl';
|
||||
&ReadParse();
|
||||
&lock_file($config{'dhcpd_conf'});
|
||||
&lock_all_files();
|
||||
($par, $group, $indent, $npar, $nindent) = get_branch('grp', $in{'new'});
|
||||
$parconf = $par->{'members'};
|
||||
|
||||
@@ -121,12 +121,13 @@ if ($in{'delete'}) {
|
||||
&flush_file_lines();
|
||||
}
|
||||
else {
|
||||
&unlock_file($config{'dhcpd_conf'});
|
||||
&unlock_all_files();
|
||||
&redirect("confirm_delete.cgi?sidx=$in{'sidx'}&uidx=$in{'uidx'}".
|
||||
"&idx=$in{'idx'}=&type=2");
|
||||
exit;
|
||||
}
|
||||
}
|
||||
&unlock_file($config{'dhcpd_conf'});
|
||||
&unlock_all_files();
|
||||
@count = &find("host", $group->{'members'});
|
||||
&webmin_log($in{'delete'} ? 'delete' : $in{'new'} ? 'create' : 'modify',
|
||||
'group', join(",", map { $_->{'values'}->[0] } @count), \%in);
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
require './dhcpd-lib.pl';
|
||||
require './params-lib.pl';
|
||||
&ReadParse();
|
||||
&lock_file($config{'dhcpd_conf'});
|
||||
&lock_all_files();
|
||||
($par, $host, $indent, $npar, $nindent) = get_branch('hst', $in{'new'});
|
||||
|
||||
# check acls
|
||||
@@ -152,7 +152,7 @@ else {
|
||||
}
|
||||
}
|
||||
&flush_file_lines();
|
||||
&unlock_file($config{'dhcpd_conf'});
|
||||
&unlock_all_files();
|
||||
&webmin_log($in{'delete'} ? 'delete' : $in{'new'} ? 'create' : 'modify',
|
||||
'host', $host->{'values'}->[0], \%in);
|
||||
if ($in{'ret'} eq "group") {
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
require './dhcpd-lib.pl';
|
||||
require './params-lib.pl';
|
||||
&ReadParse();
|
||||
&lock_file($config{'dhcpd_conf'});
|
||||
&lock_all_files();
|
||||
$conf = &get_config();
|
||||
|
||||
$client = &get_parent_config();
|
||||
@@ -31,7 +31,7 @@ for($i=0; defined($id = $in{"id_$i"}); $i++) {
|
||||
}
|
||||
&save_directive($client, 'key', \@keys, 0);
|
||||
&flush_file_lines();
|
||||
&unlock_file($config{'dhcpd_conf'});
|
||||
&unlock_all_files();
|
||||
&webmin_log("keys", undef, undef, \%in);
|
||||
&redirect("");
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
require './dhcpd-lib.pl';
|
||||
require './params-lib.pl';
|
||||
&ReadParse();
|
||||
&lock_file($config{'dhcpd_conf'});
|
||||
&lock_all_files();
|
||||
$client = &get_parent_config();
|
||||
push(@parents, $client);
|
||||
foreach $i ($in{'sidx'}, $in{'uidx'}, $in{'gidx'}, $in{'idx'}) {
|
||||
@@ -184,7 +184,7 @@ else {
|
||||
}
|
||||
|
||||
&flush_file_lines();
|
||||
&unlock_file($config{'dhcpd_conf'});
|
||||
&unlock_all_files();
|
||||
if ($client->{'name'} eq 'subnet') {
|
||||
&webmin_log("options", 'subnet',
|
||||
"$client->{'values'}->[0]/$client->{'values'}->[2]", \%in);
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
require './dhcpd-lib.pl';
|
||||
require './params-lib.pl';
|
||||
&ReadParse();
|
||||
&lock_file($config{'dhcpd_conf'});
|
||||
&lock_all_files();
|
||||
$conf = &get_config();
|
||||
if ($in{'sidx'} ne "") {
|
||||
$sha = $conf->[$in{'sidx'}];
|
||||
@@ -80,7 +80,7 @@ else {
|
||||
}
|
||||
}
|
||||
&flush_file_lines();
|
||||
&unlock_file($config{'dhcpd_conf'});
|
||||
&unlock_all_files();
|
||||
if ($sub->{'name'} eq 'subnet') {
|
||||
&webmin_log('modify', 'subnet',
|
||||
"$sub->{'values'}->[0]/$sub->{'values'}->[2]", \%in);
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
require './dhcpd-lib.pl';
|
||||
require './params-lib.pl';
|
||||
&ReadParse();
|
||||
&lock_file($config{'dhcpd_conf'});
|
||||
&lock_all_files();
|
||||
($par, $sha, $indent) = &get_branch('sha', $in{'new'});
|
||||
$parconf = $par->{'members'};
|
||||
|
||||
@@ -189,12 +189,12 @@ if ($in{'delete'}) {
|
||||
&flush_file_lines();
|
||||
}
|
||||
else {
|
||||
&unlock_file($config{'dhcpd_conf'});
|
||||
&unlock_all_files();
|
||||
&redirect("confirm_delete.cgi?idx=$in{'idx'}\&type=0");
|
||||
exit;
|
||||
}
|
||||
}
|
||||
&unlock_file($config{'dhcpd_conf'});
|
||||
&unlock_all_files();
|
||||
&webmin_log($in{'delete'} ? 'delete' : $in{'new'} ? 'create' : 'modify',
|
||||
'shared', $sha->{'values'}->[0], \%in);
|
||||
&redirect("");
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
require './dhcpd-lib.pl';
|
||||
require './params-lib.pl';
|
||||
&ReadParse();
|
||||
&lock_file($config{'dhcpd_conf'});
|
||||
&lock_all_files();
|
||||
($par, $sub, $indent, $npar, $nindent) = get_branch('sub', $in{'new'});
|
||||
$parconf = $par->{'members'};
|
||||
|
||||
@@ -201,13 +201,13 @@ if ($in{'delete'}) {
|
||||
&flush_file_lines();
|
||||
}
|
||||
else {
|
||||
&unlock_file($config{'dhcpd_conf'});
|
||||
&unlock_all_files();
|
||||
&redirect("confirm_delete.cgi?sidx=$in{'sidx'}&idx=$in{'idx'}"
|
||||
."\&type=1");
|
||||
exit;
|
||||
}
|
||||
}
|
||||
&unlock_file($config{'dhcpd_conf'});
|
||||
&unlock_all_files();
|
||||
&webmin_log($in{'delete'} ? 'delete' : $in{'new'} ? 'create' : 'modify',
|
||||
'subnet', "$sub->{'values'}->[0]/$sub->{'values'}->[2]", \%in);
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ require './params-lib.pl';
|
||||
&ReadParse();
|
||||
%access = &get_module_acl();
|
||||
$access{'zones'} || &error($text{'zone_ecannot'});
|
||||
&lock_file($config{'dhcpd_conf'});
|
||||
&lock_all_files();
|
||||
|
||||
unless ($in{'new'}){ # on change or delete
|
||||
# Read current zone data from config file
|
||||
@@ -56,7 +56,7 @@ if ($in{'delete'}) {
|
||||
|
||||
&flush_file_lines();
|
||||
|
||||
&unlock_file($config{'dhcpd_conf'});
|
||||
&unlock_all_files();
|
||||
|
||||
&webmin_log($in{'delete'} ? 'delete' : $in{'new'} ? 'create' : 'modify',
|
||||
'shared', $zone->{'values'}->[0], \%in);
|
||||
|
||||
@@ -1,21 +1,20 @@
|
||||
__norefs=1
|
||||
index_rundesc=Klicke hier, um die konfigurierten Verzeichnissen sofort zu scannen, um ihre Festplattennutzung zu berechnen.
|
||||
run_done=... Fertig!
|
||||
sched_err=Fehlgeschlagen zeitgesteuerte Sammlung zu speichern
|
||||
index_none=Es ist noch kein Festplattenverbrauch analysiert. Erstellen Sie entweder eine geplante Analyse oder drücken Sie auf den Button unten.
|
||||
run_title=Analysiere Festplattenplatz
|
||||
sched_header=Optionen
|
||||
index_dir=Verzeichnis
|
||||
index_files=Dateien
|
||||
sched_title=Geplante Analyse
|
||||
index_for=Für Verzeichnis $1
|
||||
index_fors=Für Verzeichnisse $1
|
||||
index_none=Es ist noch kein Festplattenverbrauch analysiert. Erstellen Sie entweder eine geplante Analyse oder drücken Sie auf den Button unten.
|
||||
index_return=Nutzungsbau
|
||||
index_run=Analysiere jetzt
|
||||
index_rundesc=Klicke hier, um die konfigurierten Verzeichnissen sofort zu scannen, um ihre Festplattennutzung zu berechnen.
|
||||
index_sched=Erstelle geplante Analyse
|
||||
sched_enabled=Geplante Analyse aktiviert?
|
||||
sched_at=Ja, zu den unten gewählten Einstellungen.
|
||||
run_doing=Analysiere jetzt Festplattenplatz ...
|
||||
index_scheddesc=Klicken auf diese Schaltfläche, um die automatische, zeitgesteuerte Sammlung von Festplatten Nutzungsdaten für den konfigurierten Verzeichnissen einzustellen.
|
||||
index_total=Gesamt
|
||||
run_doing=Analysiere jetzt Festplattenplatz ...
|
||||
run_done=... Fertig!
|
||||
run_title=Analysiere Festplattenplatz
|
||||
sched_at=Ja, zu den unten gewählten Einstellungen.
|
||||
sched_enabled=Geplante Analyse aktiviert?
|
||||
sched_err=Fehlgeschlagen zeitgesteuerte Sammlung zu speichern
|
||||
sched_header=Optionen
|
||||
sched_title=Geplante Analyse
|
||||
shed_err=Fehler bei der Analyse
|
||||
index_fors=Für Verzeichnisse $1
|
||||
index_return=Nutzungsbau
|
||||
index_sched=Erstelle geplante Analyse
|
||||
__norefs=1
|
||||
index_run=Analysiere jetzt
|
||||
|
||||
5
exports/help/secs.ca.html
Normal file
5
exports/help/secs.ca.html
Normal file
@@ -0,0 +1,5 @@
|
||||
<header>Nivells de seguretat</header>
|
||||
|
||||
Aquest camp determina quins nivells de seguretat han d'utilitzar els clients. Es poden seleccionar múltiples nivells, i els preferits es provaran primer. <p>
|
||||
|
||||
<footer>
|
||||
@@ -4,6 +4,7 @@ index_inactive=Inactiu
|
||||
index_to=Exportat a..
|
||||
index_none=Actualment no estàs exportant cap directori.
|
||||
index_add=Afegeix una nova exportació.
|
||||
index_add4=Afegeix una nova exportació NFSv4.
|
||||
index_apply=Aplica els Canvis
|
||||
index_applymsg=Fes clic sobre aquest botó per aplicar la configuració actual d'exportacions. Això farà que tots els directoris llistats més amunt estiguin disponibles amb les opcions especificades.
|
||||
index_return=a la llista d'exportació
|
||||
@@ -26,6 +27,8 @@ edit_host=Host(s)
|
||||
edit_webnfs=Clients WebNFS
|
||||
edit_netgroup=Grup de xarxa NIS
|
||||
edit_network=Xarxa
|
||||
edit_network4=Xarxa IPv4
|
||||
edit_network6=Xarxa IPv6
|
||||
edit_netmask=Màscara
|
||||
edit_address=Adreça
|
||||
edit_prefix=/
|
||||
@@ -37,7 +40,7 @@ edit_ro=Nom
|
||||
edit_subtree_check=Desactiva la comprovació de subarbres
|
||||
edit_hide=Amaga el sistema de fitxers
|
||||
edit_auth=(amb o sense Autenticació)
|
||||
edit_sec=Nivell de seguretat
|
||||
edit_sec=Nivells de seguretat
|
||||
edit_integrity=Integritat
|
||||
edit_privacy=Privacitat (incloent Integritat)
|
||||
edit_v2opts=Opcions específiques de NFSv2
|
||||
@@ -57,9 +60,16 @@ edit_sync1=S
|
||||
edit_sync2=No
|
||||
edit_sync0=Per defecte
|
||||
edit_in=en
|
||||
edit_sec_sys=Sense seguretat
|
||||
edit_sec_krb5=Autenticació Kerberos
|
||||
edit_sec_krb5i=Integritat Kerberos
|
||||
edit_sec_krb5p=Privacitat Kerberos
|
||||
edit_sec_lipkey=LIPKEY
|
||||
edit_sec_spkm=SPKM
|
||||
|
||||
save_err=No s'ha pogut desar l'exportació
|
||||
save_edir=El directori '$1' no existeix
|
||||
save_epfs=No sembla que el camí '$1' del pseudo-sistema sigui un camí absolut
|
||||
save_enetgroup=Hi falta el grup de xarxa o és invàlid
|
||||
save_enetwork='$1' no és una xarxa vàlida
|
||||
save_enetmask='$1' no és una màscara vàlida
|
||||
@@ -68,7 +78,8 @@ save_euids=Els UIDs no fiables han de ser una llista de n
|
||||
save_egids=Els GIDs no fiables han de ser una llista de números o rangs separada per comes
|
||||
save_pfs='$1' ja està exportat com a directori
|
||||
save_create_dir=No es pot crear el directori '$1'
|
||||
|
||||
save_eanonuid=L'usuari d'accès anònim és invàlid
|
||||
save_eanongid=El grup d'accés anònim és invàlid
|
||||
exports_webnfs=Clients WebNFS
|
||||
exports_ngroup=Grup de xarxa $1
|
||||
exports_net=Xarxa $1
|
||||
|
||||
@@ -32,14 +32,13 @@ edit_prefix=/
|
||||
edit_privacy=Datenschutz (inklusive Integrität)
|
||||
edit_relative=Symbolische Links relativ machen?
|
||||
edit_ro=Schreibgeschützt
|
||||
edit_sec=Sicherheitslevel
|
||||
edit_sec_krb5=Kerberos-Authentifizierung
|
||||
edit_sec_krb5i=Kerberos Integrität
|
||||
edit_sec_krb5p=Kerberos Privatsphäre
|
||||
edit_sec_lipkey=LIPKEY
|
||||
edit_sec_spkm=SPKM
|
||||
edit_sec_sys=Keine Sicherheit
|
||||
edit_secs=Sicherheitslevel
|
||||
edit_secs=Sicherheitsstufen
|
||||
edit_security=Exportiere Sicherheit
|
||||
edit_squash=Vertraue Fernbenutzern
|
||||
edit_subtree_check=Subtree-Überprüfung abschalten?
|
||||
|
||||
@@ -21,6 +21,8 @@ edit_mode=Tilgangsmodus
|
||||
edit_netgroup=NIS Nettgruppe
|
||||
edit_netmask=Nettmaske
|
||||
edit_network=Nettverk
|
||||
edit_network4=IPv4 nettverk
|
||||
edit_network6=IPv6 nettverk
|
||||
edit_nfs_vers=NFS Versjon
|
||||
edit_noaccess=Nekt tilgang til katalog?
|
||||
edit_nobody=Ingen
|
||||
@@ -30,7 +32,13 @@ edit_prefix=/
|
||||
edit_privacy=Hemmelighold (inkludert Integritet)
|
||||
edit_relative=Gjør symbolske lenker relative?
|
||||
edit_ro=Bare-les?
|
||||
edit_sec=Sikkerhetsnivå
|
||||
edit_sec_krb5=Kerberos autentisering
|
||||
edit_sec_krb5i=Kerberos integritet
|
||||
edit_sec_krb5p=Kerberos privacy
|
||||
edit_sec_lipkey=LIPKEY
|
||||
edit_sec_spkm=SPKM
|
||||
edit_sec_sys=Ingen sikkerhet
|
||||
edit_secs=Sikkerhetsnivåer
|
||||
edit_security=Eksporter sikkerhet
|
||||
edit_squash=Stol på eksterne brukere
|
||||
edit_subtree_check=Deaktiver sjekking av under-tre?
|
||||
@@ -52,6 +60,7 @@ exports_net=Nettverk;nbsp;$1
|
||||
exports_ngroup=Nettgruppe;nbsp;$1
|
||||
exports_webnfs=WebNFS klienter
|
||||
index_add=Legg til ny eksport.
|
||||
index_add4=Legg til en ny NFSv4 eksport.
|
||||
index_apply=Bruk endringer
|
||||
index_applymsg=Klikk på denne knappen for å ta i bruk gjeldende fileksport konfigurasjon. Dette vil gjøre alle kataloger angitt ovenfor, tilgjengelige med de spesifiserte innstillingene.
|
||||
index_delete=Slett valgte eksporter
|
||||
@@ -73,12 +82,15 @@ log_delete_l=Slettet NFS eksport $1 til $2
|
||||
log_modify=Endret NFS eksport $1
|
||||
log_modify_l=Endret NFS eksport $1 til $2
|
||||
save_create_dir=Kan ikke opprette katalogen '$1'
|
||||
save_eanongid=Ugyldig navn på anonym tilgangsgruppe
|
||||
save_eanonuid=Ugyldig brukernavn for anonym tilgang
|
||||
save_edir=Katalogen '$1' finnes ikke
|
||||
save_egids=GIDer som ikke skal betros må være en komma-separert liste med tall eller tallområder
|
||||
save_ehost='$1' er ikke et gyldig vertsnavn
|
||||
save_enetgroup=Ugyldig eller manglende nettgruppe
|
||||
save_enetmask='$1' er ikke en gyldig nettmaske
|
||||
save_enetwork='$1' er ikke et gyldig nettverk
|
||||
save_epfs=Pseudo-filsystem sti '$1' ser ikke ut som en absolutt sti
|
||||
save_err=Kunne ikke lagre eksport
|
||||
save_euids=UIDer som ikke skal betros må være en komma-separert liste med tall eller tallområder
|
||||
save_pfs='$1' er allerede eksportert som en katalog
|
||||
|
||||
@@ -455,10 +455,14 @@ sub list_all_config_files
|
||||
{
|
||||
my @rv;
|
||||
push(@rv, "$config{'config_dir'}/fail2ban.conf");
|
||||
push(@rv, "$config{'config_dir'}/fail2ban.local");
|
||||
push(@rv, glob("$config{'config_dir'}/filter.d/*.conf"));
|
||||
push(@rv, glob("$config{'config_dir'}/filter.d/*.local"));
|
||||
push(@rv, glob("$config{'config_dir'}/action.d/*.conf"));
|
||||
push(@rv, glob("$config{'config_dir'}/action.d/*.local"));
|
||||
push(@rv, "$config{'config_dir'}/jail.conf");
|
||||
return @rv;
|
||||
push(@rv, "$config{'config_dir'}/jail.local");
|
||||
return grep { -r $_ } @rv;
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
@@ -119,6 +119,7 @@ jail_none=No n'hi ha cap d'establert
|
||||
jail_banaction=Acció a aplicar per defecte
|
||||
jail_defprotocol=Protocol per defecte de les accions
|
||||
jail_edestemail=Hi falta el correu de notificació per defecte o bé és invàlid
|
||||
jail_eignoreip=L'adreça IP a ignorar és invàlida
|
||||
|
||||
jaildef_title=Opcions per Defecte de les Presons
|
||||
jaildef_header=Valors per defecte de totes les presons
|
||||
@@ -129,14 +130,14 @@ start_err=No s'ha pogut iniciar el servidor
|
||||
stop_err=No s'ha pogut aturar el servidor
|
||||
restart_err=No s'ha pogut reiniciar el servidor
|
||||
|
||||
log_create_filter=S'ha suprimit el filtre $1
|
||||
log_modify_filter=S'ha suprimit el filtre $1
|
||||
log_create_filter=S'ha creat el filtre $1
|
||||
log_modify_filter=S'ha modificat el filtre $1
|
||||
log_delete_filter=S'ha suprimit el filtre $1
|
||||
log_create_action=S'ha suprimit l'acció $1
|
||||
log_modify_action=S'ha suprimit l'acció $1
|
||||
log_create_action=S'ha creat l'acció $1
|
||||
log_modify_action=S'ha modificat l'acció $1
|
||||
log_delete_action=S'ha suprimit l'acció $1
|
||||
log_create_jail=S'ha suprimit la presó $1
|
||||
log_modify_jail=S'ha suprimit la presó $1
|
||||
log_create_jail=S'ha creat la presó $1
|
||||
log_modify_jail=S'ha modificat la presó $1
|
||||
log_delete_jail=S'ha suprimit la presó $1
|
||||
log_config=S'ha canviat la configuració global
|
||||
log_stop=S'ha aturat el servidor Fail2Ban
|
||||
|
||||
@@ -28,7 +28,6 @@ check_eclient=Der Client-Befehl $1 wurde nicht gefunden
|
||||
check_econf=Die Konfigurationsdatei $2 in $1 existiert nicht
|
||||
check_edir=Das Konfigurationsverzeichnis $1 existiert nicht
|
||||
check_eserver=Der Server-Befehl $1 wurde nicht gefunden
|
||||
client_cmd=Der Client-Befehl $1 wurde nicht gefunden
|
||||
config_default=Standard Ziel
|
||||
config_edef=Kein Definition Abschnitt in der Konfigurationsdatei gefunden!
|
||||
config_elogtarget=Datei, um Protokolle zu schreiben, muss ein absoluter Pfad sein
|
||||
@@ -142,15 +141,12 @@ log_delete_filter=Filter $1 gelöscht
|
||||
log_delete_jail=Gefängnis $1 gelöscht
|
||||
log_jaildef=Standard Gefängnis Optionen geändert
|
||||
log_manual=Konfigurationsdatei $1 editiert
|
||||
log_modify_action=Aktion $1 modifiziert
|
||||
log_modify_filter=Filter $1 modifiziert
|
||||
log_modify_jail=Gefängnis $1 modifiziert
|
||||
log_restart=Fail2Ban Server neu gestartet
|
||||
log_start=Fail2Ban Server gestartet
|
||||
log_stop=Fail2Ban Server gestoppt
|
||||
log_update_action=Aktion $1 modifiziert
|
||||
log_update_filter=Filter $1 modifiziert
|
||||
log_update_jail=Gefängnis $1 modifiziert
|
||||
log_update_jail=Jail $1 modifiziert
|
||||
manual_desc=Datei zum editieren:
|
||||
manual_edata=Keinen Inhalt für Konfigurationsdatei eingegeben
|
||||
manual_efile=Ausgewählte Datei ist nicht Bestandteil der Fail2Ban Konfiguration!
|
||||
@@ -158,7 +154,6 @@ manual_err=Fehlgeschlagen Konfigurationsdateien zu editieren
|
||||
manual_ok=OK
|
||||
manual_title=Editiere Konfigurationsdateien
|
||||
restart_err=Fehlgeschlagen Server neu zu starten
|
||||
server_cmd=Der Server-Befehl $1 wurde nicht gefunden
|
||||
start_err=Fehlgeschlagen Server zu starten
|
||||
stop_err=Fehlgeschlagen Server zu stoppen
|
||||
syslog_logtarget=Fail2Ban Aktion Log
|
||||
|
||||
@@ -12,9 +12,9 @@ if ($in{'text'} || $in{'file'} && !&is_html_file($in{'file'})) {
|
||||
$text_mode = 1;
|
||||
}
|
||||
|
||||
if (!&can_access($in{'file'})) {
|
||||
if ($in{'file'} ne '' && !&can_access($in{'file'})) {
|
||||
# ACL rules prevent access to file
|
||||
&error_exit(&text('view_eaccess', &html_escape($in{'file'})));
|
||||
&error(&text('view_eaccess', &html_escape($in{'file'})));
|
||||
}
|
||||
|
||||
&popup_header($in{'file'} ? $text{'html_title'} : $text{'html_title2'},
|
||||
|
||||
@@ -182,7 +182,9 @@ else {
|
||||
# Returns 1 if some file can be edited/deleted
|
||||
sub can_access
|
||||
{
|
||||
local $path = &simplify_path($_[0]);
|
||||
local ($file) = @_;
|
||||
$file =~ /^\// || return 0;
|
||||
local $path = &simplify_path($file);
|
||||
return &under_root_dir($path, \@allowed_roots) &&
|
||||
($path eq "/" || !&under_root_dir($path, \@denied_roots));
|
||||
}
|
||||
@@ -383,9 +385,11 @@ if ($zip) {
|
||||
}
|
||||
$info = &file_info_line(&unmake_chroot($refresh), $refresh);
|
||||
print "<script>\n";
|
||||
print "opener.document.FileManager.",
|
||||
print "try {\n";
|
||||
print " opener.document.FileManager.",
|
||||
"upload_notify(\""."e_escape($refresh)."\", ",
|
||||
"\""."e_escape($info)."\");\n";
|
||||
print "} catch(err) { }\n";
|
||||
if ($err) {
|
||||
$err =~ s/\r//g;
|
||||
$err =~ s/\n/\\n/g;
|
||||
|
||||
@@ -81,6 +81,11 @@ if ($config{'extract'} &&
|
||||
}
|
||||
|
||||
print <<EOF;
|
||||
|
||||
<style>
|
||||
body { margin: 0px; }
|
||||
</style>
|
||||
|
||||
<script>
|
||||
function upload(dir)
|
||||
{
|
||||
|
||||
3
file/manifest.txt
Normal file
3
file/manifest.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
Permissions: sandbox
|
||||
Application-Name: Webmin File Manager
|
||||
Caller-Allowable-Codebase: *
|
||||
@@ -112,7 +112,7 @@ if ($in{'format'}) {
|
||||
print "Content-type: $type\n\n";
|
||||
open(FILE, $temp);
|
||||
unlink($temp);
|
||||
while(read(FILE, $buf, 1024)) {
|
||||
while(read(FILE, $buf, 1000*1024)) {
|
||||
print $buf;
|
||||
}
|
||||
close(FILE);
|
||||
@@ -136,13 +136,13 @@ else {
|
||||
print "X-Content-Type-Options: nosniff\n";
|
||||
&print_content_type($type);
|
||||
if ($type =~ /^text\/html/i && !$in{'edit'}) {
|
||||
while(read(FILE, $buf, 1024)) {
|
||||
while(read(FILE, $buf, 1000*1024)) {
|
||||
$data .= $buf;
|
||||
}
|
||||
print &filter_javascript($data);
|
||||
}
|
||||
else {
|
||||
while(read(FILE, $buf, 1024)) {
|
||||
while(read(FILE, $buf, 1000*1024)) {
|
||||
print $buf;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -223,8 +223,8 @@ move_ok=Verschiebe jetzt
|
||||
move_title=Verschiebe Regeln
|
||||
new_err=Fehlgeschlagen eine Regel zu erstellen
|
||||
new_etaken=Eine Regeln mit diesem Namen existiert bereits
|
||||
redhat_einstalled=Kein <tt>iptables</tt> Systemstart Aktion wurde festgestellt, was darauf hinweist, dass das IPtables-Paket nicht auf Ihrem System installiert ist.
|
||||
redhat_eoutput=Ein Fehler ist beim Abrufen des IPtables Status von dem Befehl $1 aufgetreten. Dies ist wahrscheinlich darauf zurückzuführen, dass Ihr System so konfiguriert wurde, IPchains anstelle von IPtables zu benutzen.
|
||||
redhat_escript=Das Redhat IPtables Startskript $1 wurde nicht auf Ihrem System gefunden.
|
||||
rename_chain=Aktueller Name
|
||||
rename_name=Neuer Name
|
||||
rename_none=Nichts
|
||||
@@ -240,6 +240,7 @@ save_edportfrom=Ungültiger Bereichsstart für Zielports
|
||||
save_edportrange=Sie müssen mindestens einen Anfang oder Ende für den Ziel-Port-Bereich eingeben
|
||||
save_edportto=Ungültiger Bereichsende für Zielports
|
||||
save_edpto=Fehlender oder ungültiger endente Port für DNAT
|
||||
save_egidowner=Fehlende oder ungültige gesendete Unix-Gruppe
|
||||
save_eicmp=Die ICMP-Paket-Typ Bedingung kann nur verwendet werden, wenn das Protokoll ICMP verwendet wird
|
||||
save_ein=Fehlende oder ungültige einkommende Schnittstelle
|
||||
save_elimit=Fehlende oder ungültige Paketflussrate
|
||||
|
||||
@@ -125,7 +125,7 @@ desc_conds=If $1
|
||||
desc_and=and
|
||||
desc_always=Always
|
||||
|
||||
redhat_escript=The Redhat IPtables startup script $1 was not found on your system.
|
||||
redhat_einstalled=No <tt>iptables</tt> bootup action was found, indicating that the IPtables package is not installed on your system
|
||||
redhat_eoutput=An error occured getting IPtables status from the command $1. This probably indicates that your system has been configured to use IPchains instead of IPtables.
|
||||
|
||||
gentoo_escript=The Gentoo IPtables startup script $1 was not found on your system.
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
# redhat-linux-lib.pl
|
||||
# Deal with redhat's /etc/sysconfig/iptables save file and startup script
|
||||
# mandriva-linux-lib.pl
|
||||
# Deal with Mandriva's /etc/sysconfig/iptables save file and startup script
|
||||
|
||||
# check_iptables()
|
||||
# Returns an error message if something is wrong with iptables on this system
|
||||
sub check_iptables
|
||||
{
|
||||
if (!-r "/etc/rc.d/init.d/iptables") {
|
||||
return &text('redhat_escript', "<tt>/etc/rc.d/init.d/iptables</tt>");
|
||||
if (!-r "/usr/libexec/iptables.init") {
|
||||
return &text("The iptabes service", "<tt>/usr/libexec/iptables.init</tt>");
|
||||
}
|
||||
if (!$config{'done_check_iptables'}) {
|
||||
local $out = `/etc/rc.d/init.d/iptables status 2>&1`;
|
||||
local $out = `/usr/libexec/iptables.init status 2>&1`;
|
||||
if ($out !~ /table:|INPUT|FORWARD|OUTPUT/) {
|
||||
return &text('redhat_eoutput',
|
||||
"<tt>/etc/init.d/iptables status</tt>");
|
||||
"<tt>/usr/libexec/iptables.init status</tt>");
|
||||
}
|
||||
$config{'done_check_iptables'} = 1;
|
||||
&save_module_config();
|
||||
@@ -35,7 +35,7 @@ $iptables_save_file = "/etc/sysconfig/iptables";
|
||||
# Writes the current iptables configuration to the save file
|
||||
sub unapply_iptables
|
||||
{
|
||||
$out = &backquote_logged("cd / ; /etc/rc.d/init.d/iptables save 2>&1 </dev/null");
|
||||
$out = &backquote_logged("cd / ; /usr/libexec/iptables.init save 2>&1 </dev/null");
|
||||
$out =~ s/\033[^m]+m//g;
|
||||
return $? || $out =~ /FAILED/ ? "<pre>$out</pre>" : undef;
|
||||
}
|
||||
|
||||
@@ -8,10 +8,8 @@ $init_script = "$init::config{'init_dir'}/iptables";
|
||||
# Returns an error message if something is wrong with iptables on this system
|
||||
sub check_iptables
|
||||
{
|
||||
if (!-r $init_script &&
|
||||
&backquote_command("service iptables status 2>/dev/null") !~ /Loaded:\s+loaded/) {
|
||||
return &text('redhat_escript', "<tt>$init_script</tt>");
|
||||
}
|
||||
&foreign_require("init");
|
||||
&init::action_status("iptables") > 0 || return $text{'redhat_einstalled'};
|
||||
return undef if ($gconfig{'os_type'} eq 'trustix-linux');
|
||||
return undef if ($gconfig{'os_type'} eq 'redhat-linux' &&
|
||||
$gconfig{'os_version'} > 10);
|
||||
|
||||
@@ -38,5 +38,5 @@ print <<EOF;
|
||||
</noframes>
|
||||
</frameset>
|
||||
EOF
|
||||
&popup_footer();
|
||||
&popup_footer(1);
|
||||
|
||||
|
||||
@@ -327,6 +327,13 @@ if ($main::ui_table_pos+$cols+1 > $main::ui_table_cols &&
|
||||
$rv .= "</tr>\n";
|
||||
$main::ui_table_pos = 0;
|
||||
}
|
||||
if (defined($label) &&
|
||||
($value =~ /id="([^"]+)"/ || $value =~ /id='([^']+)'/ ||
|
||||
$value =~ /id=([^>\s]+)/)) {
|
||||
# Value contains an input with an ID
|
||||
my $id = $1;
|
||||
$label = "<label for=\""."e_escape($id)."\">$label</label>";
|
||||
}
|
||||
$rv .= "<tr class='ui_form_pair'>\n" if ($main::ui_table_pos%$main::ui_table_cols == 0);
|
||||
$rv .= "<td class='ui_form_label' $tds->[0]><b>$label</b></td>\n" if (defined($label));
|
||||
$rv .= "<td class='ui_form_value' colspan=$cols $tds->[1]>$value</td>\n";
|
||||
|
||||
@@ -72,7 +72,7 @@ if ($in{'multi'}) {
|
||||
print "</script>\n";
|
||||
print "<div id='filter_box' style='display:none;margin:0px;padding:0px;width:100%;clear:both;'>";
|
||||
print &ui_textbox("filter",$text{'ui_filterbox'}, 50, 0, undef,"style='width:100%;color:#aaa;' onkeyup=\"filter_match(this.value);\" onfocus=\"if (this.value == '".$text{'ui_filterbox'}."') {this.value = '';this.style.color='#000';}\" onblur=\"if (this.value == '') {this.value = '".$text{'ui_filterbox'}."';this.style.color='#aaa';}\"");
|
||||
print &ui_hr("style='wdith:100%;'")."</div>";
|
||||
print &ui_hr("style='width:100%;'")."</div>";
|
||||
print "<font size=+1>$text{'groups_all'}</font>\n";
|
||||
print "<table width=100%>\n";
|
||||
my $cnt = 0;
|
||||
@@ -165,7 +165,7 @@ else {
|
||||
print "</script>\n";
|
||||
print "<div id='filter_box' style='display:none;margin:0px;padding:0px;width:100%;clear:both;'>";
|
||||
print &ui_textbox("filter",$text{'ui_filterbox'}, 50, 0, undef,"style='width:100%;color:#aaa;' onkeyup=\"filter_match(this.value);\" onfocus=\"if (this.value == '".$text{'ui_filterbox'}."') {this.value = '';this.style.color='#000';}\" onblur=\"if (this.value == '') {this.value = '".$text{'ui_filterbox'}."';this.style.color='#aaa';}\"");
|
||||
print &ui_hr("style='wdith:100%;'")."</div>";;
|
||||
print &ui_hr("style='width:100%;'")."</div>";;
|
||||
print "<table width=100%>\n";
|
||||
my $cnt = 0;
|
||||
foreach $u (&get_groups_list()) {
|
||||
|
||||
131
grub/lang/de
131
grub/lang/de
@@ -1,73 +1,72 @@
|
||||
__norefs=1
|
||||
global_default=Standard Boot-Optionen
|
||||
global_edev=Nicht unterstützte Festplatte/Partition $1
|
||||
global_eother=Fehlende oder ungültige Festplatte/Partition
|
||||
global_epassword=Fehlendes oder ungültige Boot-Passwort
|
||||
global_epasswordfile=Fehlender Dateiname für das Alternativ-Menü
|
||||
global_err=Konnte globale Optionen nicht speichern
|
||||
global_etimeout=Fehlender oder ungültiger zeitbedingter Abbruch
|
||||
global_fallback=Fallback-Boot-Option
|
||||
global_first=Erster auf der Liste
|
||||
global_forever=Immer warten
|
||||
global_header=Globale Boot-Menü-Optionen
|
||||
global_install=Installiere GRUB auf Festplatte/Partition
|
||||
global_none=Keine
|
||||
global_other=Andere
|
||||
global_password=Boot-Passwort
|
||||
global_password_file=Benutze Menü-Datei, wenn Passwort eingegeben wird:
|
||||
global_secs=Sekunden
|
||||
index_installmsg=Installieren Sie den GRUB-Bootloader auf $1 um die obigen Boot-Optionen zur Bootzeit anzuzeigen. Dies wird jeden anderen Bootloader (z.B. LILO) von diesem Gerät komplett entfernen und Sie können vielleicht Ihr System nicht mehr erfolgreich booten.
|
||||
title_chain_file=Aus der Chainloader-Datei
|
||||
title_args=Kernel-Optionen
|
||||
title_err=Konnte Boot-Optionen nicht speichern
|
||||
global_sel=Ausgewählte
|
||||
global_timeout=Bedingter Zeitabbruch vor dem Laden des Standard
|
||||
global_title=Globale Optionen
|
||||
index_add=Eine neue Boot-Option hinzufügen
|
||||
title_title=Option-Titel
|
||||
title_ekernel=Fehlender oder ungültiger Pfad zum Kernel
|
||||
title_other=Andere
|
||||
global_other=Andere
|
||||
log_modify_title=Modifizierte Bootoptionen $1
|
||||
index_efile=Die GRUB-Menü-Datei $1 wurde nicht auf Ihrem System gefunden. Entweder ist GRUB nicht installiert, oder die <a href='$2'>Modulkonfiguration</a> ist falsch.
|
||||
title_lock=Passwort gesichert?
|
||||
log_create_title=Erstellte Bootoptionen $1
|
||||
title_noverify=Nicht einhängen und Partition überprüfen
|
||||
title_none2=(kein bootender Menüeintrag)
|
||||
install_err=Konnte GRUB nicht installieren
|
||||
title_echain=Fehlende oder ungültige Chainloader-Datei
|
||||
global_epassword=Fehlendes oder ungültige Boot-Passwort
|
||||
title_edit=Bearbeite Boot-Optionen
|
||||
log_delete_title=Gelöschte Bootoptionen $1
|
||||
global_secs=Sekunden
|
||||
global_install=Installiere GRUB auf Festplatte/Partition
|
||||
title_etitle=Fehlender Options-Titel
|
||||
index_epath=Die ausführbare GRUB-Datei $1 wurde nicht auf Ihrem System gefunden. Entweder ist GRUB nicht installiert, oder die <a href='$2'>Modulkonfiguration</a> ist falsch.
|
||||
index_global=Bearbeite globale Optionen
|
||||
index_globalmsg=Bearbeiten Sie die globalen Boot-Optionen, welche auf alle Boot-Menü-Auswahlmöglichkeiten angewandt werden und wählen Sie das Gerät aus, auf welchem GRUB installiert werden soll.
|
||||
index_install=Installiere GRUB
|
||||
index_installmsg=Installieren Sie den GRUB-Bootloader auf $1 um die obigen Boot-Optionen zur Bootzeit anzuzeigen. Dies wird jeden anderen Bootloader (z.B. LILO) von diesem Gerät komplett entfernen und Sie können vielleicht Ihr System nicht mehr erfolgreich booten.
|
||||
index_none=Es wurden bisher keine Boot-Optionen definiert. Stellen Sie sicher, daß Sie zumindest eine definieren, bevor Sie GRUB installieren.
|
||||
index_return=Optionenliste
|
||||
index_title=GRUB Boot-Loader
|
||||
install_desc=Installiere GRUB auf $1 mit Kommando $2 und $3 ..
|
||||
install_efind=Konnte die Menü-Datei nicht finden
|
||||
install_err=Konnte GRUB nicht installieren
|
||||
install_failed=.. Installation fehlgeschlagen!
|
||||
install_ok=.. Installation komplett.
|
||||
install_title=Installiere GRUB
|
||||
log_create_title=Erstellte Bootoptionen $1
|
||||
log_delete_title=Gelöschte Bootoptionen $1
|
||||
log_down_title=Nach unten verschobene Bootoptionen $1
|
||||
log_global=Veränderte globale Optionen
|
||||
log_install=Installiertes GRUB
|
||||
log_modify_title=Modifizierte Bootoptionen $1
|
||||
log_up_title=Nach oben verschobene Bootoptionen $1
|
||||
title_add=Eine Boot-Option hinzufügen
|
||||
title_args=Kernel-Optionen
|
||||
title_boot=Zu bootendes Betriebssystem
|
||||
title_chain=Anderes Betriebssystem
|
||||
title_chain_def=Vom ersten Sektor der Partition
|
||||
title_chain_file=Aus der Chainloader-Datei
|
||||
title_echain=Fehlende oder ungültige Chainloader-Datei
|
||||
title_edev=Nicht unterstütztes Root-Partitions-Gerät $1
|
||||
title_edit=Bearbeite Boot-Optionen
|
||||
title_einitrd=Fehlender Dateiname der initialen Ramdisk
|
||||
title_ekernel=Fehlender oder ungültiger Pfad zum Kernel
|
||||
title_eroot=Fehlende Root-Partition
|
||||
title_err=Konnte Boot-Optionen nicht speichern
|
||||
title_etitle=Fehlender Options-Titel
|
||||
title_header=Eigenschaften der Boot-Menü-Optionen
|
||||
title_initrd=Initiale Ramdisk-Datei
|
||||
title_kernel=Kernel
|
||||
title_kfile=Pfad zum Kernel
|
||||
title_lock=Passwort gesichert?
|
||||
title_makeactive=Markiere Root-Partition als aktiv?
|
||||
title_modules=Extra Module
|
||||
title_none=Keine (nicht bootbarer Menü-Eintrag)
|
||||
title_none1=Keine
|
||||
title_none2=(kein bootender Menüeintrag)
|
||||
title_noverify=Nicht einhängen und Partition überprüfen
|
||||
title_other=Andere
|
||||
global_edev=Nicht unterstützte Festplatte/Partition $1
|
||||
title_root=Boot-Image-Partition
|
||||
title_kfile=Pfad zum Kernel
|
||||
title_add=Eine Boot-Option hinzufügen
|
||||
install_failed=.. Installation fehlgeschlagen!
|
||||
global_epasswordfile=Fehlender Dateiname für das Alternativ-Menü
|
||||
install_efind=Konnte die Menü-Datei nicht finden
|
||||
global_first=Erster auf der Liste
|
||||
log_down_title=Nach unten verschobene Bootoptionen $1
|
||||
title_boot=Zu bootendes Betriebssystem
|
||||
title_kernel=Kernel
|
||||
global_err=Konnte globale Optionen nicht speichern
|
||||
index_none=Es wurden bisher keine Boot-Optionen definiert. Stellen Sie sicher, daß Sie zumindest eine definieren, bevor Sie GRUB installieren.
|
||||
global_header=Globale Boot-Menü-Optionen
|
||||
title_initrd=Initiale Ramdisk-Datei
|
||||
install_title=Installiere GRUB
|
||||
install_ok=.. Installation komplett.
|
||||
log_global=Veränderte globale Optionen
|
||||
global_fallback=Fallback-Boot-Option
|
||||
title_chain=Anderes Betriebssystem
|
||||
global_none=Keine
|
||||
global_default=Standard Boot-Optionen
|
||||
global_etimeout=Fehlender oder ungültiger zeitbedingter Abbruch
|
||||
__norefs=1
|
||||
install_desc=Installiere GRUB auf $1 mit Kommando $2 und $3 ..
|
||||
global_forever=Immer warten
|
||||
global_password=Boot-Passwort
|
||||
global_timeout=Bedingter Zeitabbruch vor dem Laden des Standard
|
||||
global_password_file=Benutze Menü-Datei, wenn Passwort eingegeben wird:
|
||||
title_modules=Extra Module
|
||||
index_install=Installiere GRUB
|
||||
title_makeactive=Markiere Root-Partition als aktiv?
|
||||
index_title=GRUB Boot-Loader
|
||||
log_up_title=Nach oben verschobene Bootoptionen $1
|
||||
log_install=Installiertes GRUB
|
||||
index_globalmsg=Bearbeiten Sie die globalen Boot-Optionen, welche auf alle Boot-Menü-Auswahlmöglichkeiten angewandt werden und wählen Sie das Gerät aus, auf welchem GRUB installiert werden soll.
|
||||
title_none1=Keine
|
||||
title_eroot=Fehlende Root-Partition
|
||||
title_edev=Nicht unterstütztes Root-Partitions-Gerät $1
|
||||
title_header=Eigenschaften der Boot-Menü-Optionen
|
||||
global_eother=Fehlende oder ungültige Festplatte/Partition
|
||||
title_chain_def=Vom ersten Sektor der Partition
|
||||
global_title=Globale Optionen
|
||||
index_add=Eine neue Boot-Option hinzufügen
|
||||
title_sel=Ausgewählte
|
||||
title_title=Option-Titel
|
||||
index_return=Optionenliste
|
||||
|
||||
@@ -1762,7 +1762,8 @@ foreach my $f (split(/\s+/, $config{'rc_conf'})) {
|
||||
=head2 list_upstart_services
|
||||
|
||||
Returns a list of all known upstart services, each of which is a hash ref
|
||||
with 'name', 'desc', 'boot', 'status' and 'pid' keys.
|
||||
with 'name', 'desc', 'boot', 'status' and 'pid' keys. Also includes init.d
|
||||
scripts, but if both exist then the native service will be preferred.
|
||||
|
||||
=cut
|
||||
sub list_upstart_services
|
||||
@@ -1922,7 +1923,9 @@ my $ifile = "/etc/init.d/$name";
|
||||
=head2 list_systemd_services
|
||||
|
||||
Returns a list of all known systemd services, each of which is a hash ref
|
||||
with 'name', 'desc', 'boot', 'status' and 'pid' keys.
|
||||
with 'name', 'desc', 'boot', 'status' and 'pid' keys. Also includes init.d
|
||||
scripts, which will be preferred over native systemd services (because sometimes
|
||||
systemd automatically includes init scripts).
|
||||
|
||||
=cut
|
||||
sub list_systemd_services
|
||||
@@ -1932,7 +1935,10 @@ my $out = &backquote_command("systemctl list-units --full --all");
|
||||
&error("Failed to list systemd units : $out") if ($?);
|
||||
foreach my $l (split(/\r?\n/, $out)) {
|
||||
my ($unit, $loaded, $active, $sub, $desc) = split(/\s+/, $l, 5);
|
||||
if ($unit ne "UNIT" && $loaded eq "loaded") {
|
||||
my $a = $unit;
|
||||
$a =~ s/\.service$//;
|
||||
my $f = &action_filename($a);
|
||||
if ($unit ne "UNIT" && $loaded eq "loaded" && !-r $f) {
|
||||
push(@units, $unit);
|
||||
}
|
||||
}
|
||||
@@ -1940,7 +1946,7 @@ foreach my $l (split(/\r?\n/, $out)) {
|
||||
# Also find unit files for units that may be disabled at boot and not running,
|
||||
# and so don't show up in systemctl list-units
|
||||
opendir(UNITS, &get_systemd_root());
|
||||
push(@units, grep { !/\.wants$/ && !/^\./ && !/\@/ } readdir(UNITS));
|
||||
push(@units, grep { !/\.wants$/ && !/^\./ } readdir(UNITS));
|
||||
closedir(UNITS);
|
||||
|
||||
# Skip useless units
|
||||
@@ -2001,7 +2007,6 @@ foreach my $name (keys %info) {
|
||||
my @rls = &get_inittab_runlevel();
|
||||
foreach my $a (&list_actions()) {
|
||||
$a =~ s/\s+\d+$//;
|
||||
next if ($done{$a});
|
||||
my $f = &action_filename($a);
|
||||
my $s = { 'name' => $a,
|
||||
'legacy' => 1 };
|
||||
|
||||
@@ -1,48 +1,47 @@
|
||||
__norefs=1
|
||||
apply_err=Fehler beim Anwenden der Konfiguration
|
||||
delete_enone=Nichts ausgewählt
|
||||
delete_err=Fehlgeschlagen Prozesse zu löschen
|
||||
edit_inittab_del=Löschen
|
||||
edit_inittab_details=Prozessdetails
|
||||
edit_inittab_err=Sie haben keine Berechtigung, einen Prozess zu bearbeiten
|
||||
edit_inittab_save=Speichern
|
||||
edit_inittab_title=Prozess $1 bearbeiten
|
||||
index_delete=Lösche ausgewählte Prozesse
|
||||
inittab_action=Aktion
|
||||
inittab_active=Aktiviert?
|
||||
inittab_apply=Init-Konfiguration anwenden
|
||||
inittab_applymsg=Drücken Sie diese Schaltfläche, um die aktuelle SysV-Init-Konfiguration durch den Befehl <tt>telinit q</tt> anzuwenden. Seien Sie sich bewusst, dass jegliche Fehler in Ihrer Konfiguration das System unbrauchbar machen können, wenn dieser Befehl ausgeführt wird.
|
||||
inittab_boot=Beim Booten
|
||||
inittab_bootwait=Beim Booten, warten bis Beendigung
|
||||
inittab_ctrlaltdel=Strg-Alt-Entf
|
||||
inittab_id=ID
|
||||
inittab_initdefault=Nach dem Systemstart
|
||||
inittab_kbdrequest=Spezielle Schlüsselkombination
|
||||
inittab_kbrequest=Spezielle Tastenkombination
|
||||
inittab_powerwait=Bei Stromausfall
|
||||
save_inittab_err=Sie haben keine Berechtigung, einen Prozess zu speichern
|
||||
log_rename=Init-Prozess $1 nach $2 umbenannt
|
||||
inittab_new=Neuen Init-Prozess erstellen.
|
||||
inittab_none=Keine
|
||||
inittab_process=Prozess
|
||||
edit_inittab_title=Prozess $1 bearbeiten
|
||||
log_create=Init-Prozess $1 erzeugt
|
||||
apply_err=Fehler beim Anwenden der Konfiguration
|
||||
save_inittab_noid=Fehler, es wurde kein Name für den Prozess eingegeben
|
||||
inittab_off=Nichts tun
|
||||
inittab_wait=Warten
|
||||
inittab_sysinit=Während des Systemstarts
|
||||
inittab_powerokwait=Stromversorgung ist wiederhergestellt
|
||||
inittab_kbdrequest=Spezielle Schlüsselkombination
|
||||
delete_err=Fehlgeschlagen Prozesse zu löschen
|
||||
inittab_applymsg=Drücken Sie diese Schaltfläche, um die aktuelle SysV-Init-Konfiguration durch den Befehl <tt>telinit q</tt> anzuwenden. Seien Sie sich bewusst, dass jegliche Fehler in Ihrer Konfiguration das System unbrauchbar machen können, wenn dieser Befehl ausgeführt wird.
|
||||
log_modify=Init-Prozess $1 geändert
|
||||
new_inittab_err=Sie haben keine Berechtigung, einen neuen Prozess zu erstellen
|
||||
edit_inittab_details=Prozessdetails
|
||||
inittab_once=Einmal im Level
|
||||
inittab_ondemand=Immer wenn in A, B, C
|
||||
inittab_powerfail=Bei Stromausfall ohne Warten
|
||||
inittab_powerfailnow=Stromausfall
|
||||
inittab_powerokwait=Stromversorgung ist wiederhergestellt
|
||||
inittab_powerwait=Bei Stromausfall
|
||||
inittab_process=Prozess
|
||||
inittab_respawn=Neu starten
|
||||
inittab_return=Inittab-Index
|
||||
inittab_runlevels=Ausführungs-Level
|
||||
inittab_sysinit=Während des Systemstarts
|
||||
inittab_title=SysV-Init-Konfiguration
|
||||
inittab_wait=Warten
|
||||
inittab_active=Aktiviert?
|
||||
inittab_kbrequest=Spezielle Tastenkombination
|
||||
log_apply=Konfiguration angewandt
|
||||
log_create=Init-Prozess $1 erzeugt
|
||||
__norefs=1
|
||||
index_delete=Lösche ausgewählte Prozesse
|
||||
edit_inittab_err=Sie haben keine Berechtigung, einen Prozess zu bearbeiten
|
||||
inittab_id=ID
|
||||
inittab_boot=Beim Booten
|
||||
inittab_none=Keine
|
||||
edit_inittab_del=Löschen
|
||||
inittab_return=Inittab-Index
|
||||
log_delete=Init-Prozess $1 gelöscht
|
||||
log_deletes=Gelöschte $1 Init-Prozesse
|
||||
log_modify=Init-Prozess $1 geändert
|
||||
log_rename=Init-Prozess $1 nach $2 umbenannt
|
||||
new_inittab_err=Sie haben keine Berechtigung, einen neuen Prozess zu erstellen
|
||||
inittab_bootwait=Beim Booten, warten bis Beendigung
|
||||
inittab_ctrlaltdel=Strg-Alt-Entf
|
||||
inittab_initdefault=Nach dem Systemstart
|
||||
new_inittab_title=Neuer Prozess
|
||||
edit_inittab_save=Speichern
|
||||
delete_enone=Nichts ausgewählt
|
||||
inittab_powerfailnow=Stromausfall
|
||||
inittab_runlevels=Ausführungs-Level
|
||||
inittab_apply=Init-Konfiguration anwenden
|
||||
inittab_respawn=Neu starten
|
||||
inittab_powerfail=Bei Stromausfall ohne Warten
|
||||
save_inittab_already=Fehler, der angegebene Prozessname ist bereits vergeben
|
||||
save_inittab_err=Sie haben keine Berechtigung, einen Prozess zu speichern
|
||||
save_inittab_noid=Fehler, es wurde kein Name für den Prozess eingegeben
|
||||
|
||||
@@ -101,14 +101,19 @@ elsif (@$rules && !$in{'reset'}) {
|
||||
"before=$r->{'index'}'>".
|
||||
"<img src=images/before.gif border=0></a>";
|
||||
|
||||
local $ls = &ui_link("edit_rule.cgi?idx=$r->{'index'}","local $le =");
|
||||
local $act = $amap{int($r->{'num'})};
|
||||
local $active = $r->{'active'} ? $text{'yes'} :
|
||||
"<font color=#ff0000>$text{'no'}</font>";
|
||||
$active = &ui_link("edit_rule.cgi?idx=$r->{'index'}", $active);
|
||||
local $action = $text{'action_'.$r->{'action'}} ||
|
||||
uc($r->{'action'});
|
||||
$action = &ui_link("edit_rule.cgi?idx=$r->{'index'}", $action);
|
||||
local $dir = $text{'dir_'.$r->{'dir'}};
|
||||
$dir = &ui_link("edit_rule.cgi?idx=$r->{'index'}", $dir);
|
||||
|
||||
print &ui_checked_columns_row(
|
||||
[ $ls.($r->{'active'} ? $text{'yes'} :
|
||||
"<font color=#ff0000>$text{'no'}</font>").$le,
|
||||
$ls.($text{'action_'.$r->{'action'}} ||
|
||||
uc($r->{'action'})).$le,
|
||||
$ls.$text{'dir_'.$r->{'dir'}}.$le,
|
||||
[ $active,
|
||||
$action,
|
||||
$dir,
|
||||
$config{'view_condition'} ?
|
||||
( &describe_rule($r) ) : ( ),
|
||||
$config{'view_comment'} ?
|
||||
@@ -169,13 +174,19 @@ elsif (@$rules && !$in{'reset'}) {
|
||||
"border=0></a>";
|
||||
}
|
||||
|
||||
local $ls = &ui_link("edit_nat.cgi?idx=$r->{'index'}","local $le =");
|
||||
local $active = $r->{'active'} ? $text{'yes'} :
|
||||
"<font color=#ff0000>$text{'no'}</font>";
|
||||
$active = &ui_link("edit_nat.cgi?idx=$r->{'index'}",
|
||||
$active);
|
||||
local $action = $text{'action_'.$r->{'action'}} ||
|
||||
uc($r->{'action'});
|
||||
$action = &ui_link("edit_nat.cgi?idx=$r->{'index'}",
|
||||
$action);
|
||||
|
||||
print &ui_columns_row(
|
||||
[ &ui_checkbox("d", $r->{'index'}, "", 0),
|
||||
$ls.($r->{'active'} ? $text{'yes'} :
|
||||
"<font color=#ff0000>$text{'no'}</font>").$le,
|
||||
$ls.($text{'action_'.$r->{'action'}} ||
|
||||
uc($r->{'action'})).$le,
|
||||
$active,
|
||||
$action,
|
||||
$config{'view_condition'} ?
|
||||
( &describe_from($r), &describe_to($r) ) : ( ),
|
||||
$config{'view_comment'} ?
|
||||
|
||||
@@ -109,19 +109,24 @@ elsif (@$rules && !$in{'reset'}) {
|
||||
"<img src=images/before.gif border=0></a>";
|
||||
}
|
||||
|
||||
local ($ls, $le);
|
||||
local $num = $r->{'num'};
|
||||
local $act = ($text{'action_'.&real_action($r->{'action'})} ||
|
||||
uc($r->{'action'})).
|
||||
(defined($r->{'aarg'}) ? " $r->{'aarg'}" : "");
|
||||
if ($r->{'index'} <= $lastidx) {
|
||||
$ls = &ui_link("edit_rule.cgi?idx=$r->{'index'}","$le =");
|
||||
$num = &ui_link("edit_rule.cgi?idx=$r->{'index'}",$num);
|
||||
$act = &ui_link("edit_rule.cgi?idx=$r->{'index'}",$act);
|
||||
}
|
||||
local $act = $amap{int($r->{'num'})};
|
||||
local $a = $amap{int($r->{'num'})};
|
||||
print &ui_checked_columns_row(
|
||||
[ $ls.$r->{'num'}.$le,
|
||||
$ls.($text{'action_'.&real_action($r->{'action'})} ||
|
||||
uc($r->{'action'})).
|
||||
(defined($r->{'aarg'}) ? " $r->{'aarg'}" : "").$le,
|
||||
$config{'view_condition'} ? ( &describe_rule($r) ) : ( ),
|
||||
$config{'view_comment'} ? ( $r->{'cmt'} || "<br>" ) : ( ),
|
||||
$config{'view_counters'} ? ( $act->{'count1'}, &nice_size($act->{'count2'}) ) : ( ),
|
||||
[ $num,
|
||||
$act,
|
||||
$config{'view_condition'} ?
|
||||
( &describe_rule($r) ) : ( ),
|
||||
$config{'view_comment'} ?
|
||||
( $r->{'cmt'} || "<br>" ) : ( ),
|
||||
$config{'view_counters'} ?
|
||||
( $a->{'count1'}, &nice_size($a->{'count2'}) ) : ( ),
|
||||
$mover,
|
||||
$adder ],
|
||||
\@widths, "d", $r->{'num'});
|
||||
|
||||
2
iscsi-tgtd/CHANGELOG
Normal file
2
iscsi-tgtd/CHANGELOG
Normal file
@@ -0,0 +1,2 @@
|
||||
---- Changes since 1.700 ----
|
||||
First version of this module, for sharing devices using the iSCSI protocol with the TGTd server.
|
||||
26
iscsi-tgtd/atboot.cgi
Executable file
26
iscsi-tgtd/atboot.cgi
Executable file
@@ -0,0 +1,26 @@
|
||||
#!/usr/local/bin/perl
|
||||
# Change if the iscsi server is started at boot or not
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
require './iscsi-tgtd-lib.pl';
|
||||
&foreign_require("init");
|
||||
our (%text, %config, %in);
|
||||
&ReadParse();
|
||||
&error_setup($text{'atboot_err'});
|
||||
|
||||
&setup_tgtd_init();
|
||||
my $old = &init::action_status($config{'init_name'});
|
||||
if ($old != 2 && $in{'boot'}) {
|
||||
# Enable at boot
|
||||
$old == 1 || &error(&text('atboot_einit',
|
||||
"<tt>$config{'init_name'}</tt>"));
|
||||
&init::enable_at_boot($config{'init_name'});
|
||||
&webmin_log("atboot");
|
||||
}
|
||||
elsif ($old == 2 && !$in{'boot'}) {
|
||||
# Disable at boot
|
||||
&init::disable_at_boot($config{'init_name'});
|
||||
&webmin_log("delboot");
|
||||
}
|
||||
&redirect("");
|
||||
4
iscsi-tgtd/config
Normal file
4
iscsi-tgtd/config
Normal file
@@ -0,0 +1,4 @@
|
||||
config_file=/etc/tgt/tgtd.conf
|
||||
tgtd=tgtd
|
||||
tgtadm=tgtadm
|
||||
init_name=tgtd
|
||||
8
iscsi-tgtd/config-CentOS-Linux-7.0-*
Normal file
8
iscsi-tgtd/config-CentOS-Linux-7.0-*
Normal file
@@ -0,0 +1,8 @@
|
||||
config_file=/etc/tgt/tgtd.conf
|
||||
tgtd=tgtd
|
||||
tgtadm=tgtadm
|
||||
init_name=tgtd
|
||||
tgtadmin=tgt-admin
|
||||
start_cmd=service tgtd start
|
||||
stop_cmd=service tgtd stop
|
||||
restart_cmd=service tgtd restart
|
||||
8
iscsi-tgtd/config-Redhat-Enterprise-Linux-7.0-*
Normal file
8
iscsi-tgtd/config-Redhat-Enterprise-Linux-7.0-*
Normal file
@@ -0,0 +1,8 @@
|
||||
config_file=/etc/tgt/tgtd.conf
|
||||
tgtd=tgtd
|
||||
tgtadm=tgtadm
|
||||
init_name=tgtd
|
||||
tgtadmin=tgt-admin
|
||||
start_cmd=service tgtd start
|
||||
stop_cmd=service tgtd stop
|
||||
restart_cmd=service tgtd restart
|
||||
8
iscsi-tgtd/config-Scientific-Linux-7.0-*
Normal file
8
iscsi-tgtd/config-Scientific-Linux-7.0-*
Normal file
@@ -0,0 +1,8 @@
|
||||
config_file=/etc/tgt/tgtd.conf
|
||||
tgtd=tgtd
|
||||
tgtadm=tgtadm
|
||||
init_name=tgtd
|
||||
tgtadmin=tgt-admin
|
||||
start_cmd=service tgtd start
|
||||
stop_cmd=service tgtd stop
|
||||
restart_cmd=service tgtd restart
|
||||
5
iscsi-tgtd/config-debian-linux
Normal file
5
iscsi-tgtd/config-debian-linux
Normal file
@@ -0,0 +1,5 @@
|
||||
config_file=/etc/tgt/targets.conf
|
||||
tgtd=tgtd
|
||||
tgtadm=tgtadm
|
||||
tgtadmin=tgt-admin
|
||||
init_name=tgtd
|
||||
6
iscsi-tgtd/config-redhat-linux
Normal file
6
iscsi-tgtd/config-redhat-linux
Normal file
@@ -0,0 +1,6 @@
|
||||
config_file=/etc/tgt/targets.conf
|
||||
tgtd=tgtd
|
||||
tgtadm=tgtadm
|
||||
tgtadmin=tgt-admin
|
||||
init_name=tgtd
|
||||
restart_cmd=/etc/init.d/tgtd reload
|
||||
9
iscsi-tgtd/config.info
Normal file
9
iscsi-tgtd/config.info
Normal file
@@ -0,0 +1,9 @@
|
||||
config_file=iSCSI TGTD configuration file,0
|
||||
add_file=Add new targets to,3,Primary configuration file
|
||||
tgtd=Full path to tgtd command,0
|
||||
tgtadm=Full path to tgtadm command,0
|
||||
tgtadmin=Full path to tgt-admin command,0
|
||||
init_name=Bootup script name,0
|
||||
start_cmd=Commamd to start iSCSI TGTd,3,Start init script
|
||||
stop_cmd=Commamd to stop iSCSI TGTd,3,Stop init script
|
||||
restart_cmd=Commamd to restart iSCSI TGTd,3,Restart init script
|
||||
9
iscsi-tgtd/config.info.de
Normal file
9
iscsi-tgtd/config.info.de
Normal file
@@ -0,0 +1,9 @@
|
||||
config_file=iSCSI-TGTD-Konfigurationsdatei,0
|
||||
add_file=Füge neue Ziele zu,3,Primäre Konfigurationsdatei
|
||||
tgtd=Voller Pfad zum tgtd-Befehl,0
|
||||
tgtadm=Voller Pfad zum tgtadm-Befehl,0
|
||||
tgtadmin=Voller Pfad zum tgt-admin-Befehl,0
|
||||
init_name=Boot-Skript-Name,0
|
||||
start_cmd=Befehl zum Starten von iSCSI TGTd,3,Start von Init-Skript
|
||||
stop_cmd=Befehl zum Stoppen von iSCSI TGTd,3,Stoppen von Init-Skript
|
||||
restart_cmd=Befehl zum Neustarten von iSCSI TGTd,3,Init-Skript neu starten
|
||||
39
iscsi-tgtd/delete_targets.cgi
Executable file
39
iscsi-tgtd/delete_targets.cgi
Executable file
@@ -0,0 +1,39 @@
|
||||
#!/usr/local/bin/perl
|
||||
# Delete multiple targets
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
require './iscsi-tgtd-lib.pl';
|
||||
our (%text, %in, %config);
|
||||
&ReadParse();
|
||||
&error_setup($text{'dtargets_err'});
|
||||
&lock_file($config{'config_file'});
|
||||
my $conf = &get_tgtd_config();
|
||||
|
||||
# Find the targets
|
||||
my @d = split(/\0/, $in{'d'});
|
||||
my @deltargets;
|
||||
my @locks;
|
||||
foreach my $d (@d) {
|
||||
my ($target) = grep { $_->{'value'} eq $d } &find($conf, "target");
|
||||
push(@deltargets, $target) if ($target);
|
||||
push(@locks, $target->{'file'});
|
||||
}
|
||||
@deltargets || &error($text{'dtargets_enone'});
|
||||
@locks = &unique(@locks);
|
||||
|
||||
# Delete them, in reverse order
|
||||
foreach my $l (@locks) {
|
||||
&lock_file($l);
|
||||
}
|
||||
foreach my $target (reverse(@deltargets)) {
|
||||
&save_directive($conf, $target, undef);
|
||||
&flush_file_lines($target->{'file'});
|
||||
&delete_if_empty($target->{'file'});
|
||||
}
|
||||
foreach my $l (@locks) {
|
||||
&unlock_file($l);
|
||||
}
|
||||
|
||||
&webmin_log('delete', 'targets', scalar(@deltargets));
|
||||
&redirect("");
|
||||
35
iscsi-tgtd/edit_manual.cgi
Executable file
35
iscsi-tgtd/edit_manual.cgi
Executable file
@@ -0,0 +1,35 @@
|
||||
#!/usr/local/bin/perl
|
||||
# Show a form to edit a config file
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
require './iscsi-tgtd-lib.pl';
|
||||
our (%text, %config, %in);
|
||||
&ReadParse();
|
||||
my $file = $in{'file'} || $config{'config_file'};
|
||||
|
||||
&ui_print_header(undef, $text{'manual_title'}, "");
|
||||
|
||||
# Config file selector
|
||||
my $conf = &get_tgtd_config();
|
||||
my @files = &unique($config{'config_file'},
|
||||
(map { $_->{'file'} } @$conf));
|
||||
print &ui_form_start("edit_manual.cgi");
|
||||
print "<b>$text{'manual_file'}</b> ",
|
||||
&ui_select("file", $file, \@files),"\n",
|
||||
&ui_submit($text{'manual_ok'}),"<br>\n";
|
||||
print &ui_form_end();
|
||||
print &ui_hr();
|
||||
|
||||
# File editor
|
||||
print "<b>",&text('manual_desc', "<tt>$file</tt>"),"</b><p>\n";
|
||||
print &ui_form_start("save_manual.cgi", "form-data");
|
||||
print &ui_hidden("file", $file);
|
||||
print &ui_table_start(undef, undef, 2);
|
||||
print &ui_table_row(undef,
|
||||
&ui_textarea("data", &read_file_contents($file),
|
||||
20, 80));
|
||||
print &ui_table_end();
|
||||
print &ui_form_end([ [ undef, $text{'save'} ] ]);
|
||||
|
||||
&ui_print_footer("", $text{'index_return'});
|
||||
192
iscsi-tgtd/edit_target.cgi
Executable file
192
iscsi-tgtd/edit_target.cgi
Executable file
@@ -0,0 +1,192 @@
|
||||
#!/usr/local/bin/perl
|
||||
# Show a form to edit or create a target
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
require './iscsi-tgtd-lib.pl';
|
||||
our (%text, %in);
|
||||
&ReadParse();
|
||||
my $conf = &get_tgtd_config();
|
||||
|
||||
# Get the target and show page header
|
||||
my $target;
|
||||
if ($in{'new'}) {
|
||||
&ui_print_header(undef, $text{'target_title1'}, "");
|
||||
$target = { 'members' => [ ] };
|
||||
}
|
||||
else {
|
||||
&ui_print_header(undef, $text{'target_title2'}, "");
|
||||
($target) = grep { $_->{'value'} eq $in{'name'} }
|
||||
&find($conf, "target");
|
||||
$target || &error($text{'target_egone'});
|
||||
}
|
||||
|
||||
print &ui_form_start("save_target.cgi", "post");
|
||||
print &ui_hidden("new", $in{'new'});
|
||||
print &ui_hidden("oldname", $in{'name'});
|
||||
print &ui_table_start($text{'target_header'}, undef, 4);
|
||||
|
||||
# Target name
|
||||
my ($host, $tname);
|
||||
if ($in{'new'}) {
|
||||
$host = &find_host_name($conf) || &generate_host_name();
|
||||
$tname = "";
|
||||
}
|
||||
else {
|
||||
($host, $tname) = split(/:/, $target->{'value'});
|
||||
}
|
||||
print &ui_table_row($text{'target_name'},
|
||||
"<tt>".$host.":</tt>".&ui_textbox("name", $tname, 30));
|
||||
|
||||
# Logical units it contains
|
||||
my @luns = (&find($target->{'members'}, "backing-store"),
|
||||
&find($target->{'members'}, "direct-store"));
|
||||
@luns = sort { $a->{'file'} <=> $b->{'file'} } @luns;
|
||||
push(@luns, { 'name' => 'backing-store',
|
||||
'value' => '',
|
||||
'values' => [] });
|
||||
for(my $i=0; $i<@luns; $i++) {
|
||||
my $path = $luns[$i]->{'values'}->[0] || "";
|
||||
my @opts;
|
||||
|
||||
# Start with option for no device
|
||||
my $none_found = 0;
|
||||
if ($i > 0) {
|
||||
push(@opts, [ 'none', $text{'target_none'} ]);
|
||||
$none_found = 1 if (!$path);
|
||||
}
|
||||
|
||||
# Add regular partitions
|
||||
my $part_found = 0;
|
||||
my $sel = &fdisk::partition_select("part".$i, $path, 0,
|
||||
\$part_found);
|
||||
push(@opts, [ 'part', $text{'target_part'}, $sel ]);
|
||||
|
||||
# Then add RAID devices
|
||||
my $rconf = &raid::get_raidtab();
|
||||
my @ropts;
|
||||
my $raid_found = 0;
|
||||
foreach my $c (@$rconf) {
|
||||
if ($c->{'active'}) {
|
||||
push(@ropts, [ $c->{'value'},
|
||||
&text('target_md',
|
||||
substr($c->{'value'}, -1)) ]);
|
||||
$raid_found = 1 if ($path eq $c->{'value'});
|
||||
}
|
||||
}
|
||||
if (@ropts) {
|
||||
push(@opts, [ 'raid', $text{'target_raid'},
|
||||
&ui_select("raid".$i, $path, \@ropts) ]);
|
||||
}
|
||||
|
||||
# Then add LVM logical volumes
|
||||
my @vgs = sort { $a->{'name'} cmp $b->{'name'} }
|
||||
&lvm::list_volume_groups();
|
||||
my @lvs;
|
||||
foreach my $v (@vgs) {
|
||||
push(@lvs, sort { $a->{'name'} cmp $b->{'name'} }
|
||||
&lvm::list_logical_volumes($v->{'name'}));
|
||||
}
|
||||
my @lopts;
|
||||
my $lvm_found = 0;
|
||||
foreach my $l (@lvs) {
|
||||
push(@lopts, [ $l->{'device'},
|
||||
&text('target_lv', $l->{'vg'}, $l->{'name'}) ]);
|
||||
$lvm_found = 1 if (&same_file($path, $l->{'device'}));
|
||||
}
|
||||
if (@lopts) {
|
||||
push(@opts, [ 'lvm', $text{'target_lvm'},
|
||||
&ui_select("lvm".$i, $path, \@lopts) ]);
|
||||
}
|
||||
|
||||
# Then add other file mode
|
||||
my $mode = $part_found ? 'part' :
|
||||
$raid_found ? 'raid' :
|
||||
$none_found ? 'none' :
|
||||
$lvm_found ? 'lvm' : 'other';
|
||||
push(@opts, [ 'other', $text{'target_other'},
|
||||
&ui_textbox("other".$i,
|
||||
$mode eq 'other' ? $path : "", 50).
|
||||
" ".&file_chooser_button("other") ]);
|
||||
|
||||
# Options for this lun
|
||||
my @grid;
|
||||
my $cache = &find_value($luns[$i], "write-cache");
|
||||
push(@grid, "<b>$text{'target_type'}</b>",
|
||||
&ui_select("type".$i, $luns[$i]->{'name'},
|
||||
[ [ 'backing-store', $text{'target_backing'} ],
|
||||
[ 'direct-store', $text{'target_direct'} ] ]));
|
||||
push(@grid, "<b>$text{'target_cache'}</b>",
|
||||
&ui_radio("cache".$i, $cache,
|
||||
[ [ "on", $text{'yes'} ],
|
||||
[ "off", $text{'no'} ],
|
||||
[ "", $text{'default'} ] ]));
|
||||
|
||||
print &ui_table_row(&text('target_lun', $i+1),
|
||||
&ui_radio_table("mode".$i, $mode, \@opts)."\n".
|
||||
&ui_grid_table(\@grid, 2), 3);
|
||||
}
|
||||
|
||||
print &ui_table_hr();
|
||||
|
||||
# Incoming user(s)
|
||||
my @iusers = &find_value($target, "incominguser");
|
||||
my $utable = &ui_columns_start([
|
||||
$text{'target_uname'},
|
||||
$text{'target_upass'},
|
||||
]);
|
||||
my $i = 0;
|
||||
foreach my $u (@iusers, "", "") {
|
||||
my ($uname, $upass) = split(/\s+/, $u);
|
||||
$utable .= &ui_columns_row([
|
||||
&ui_textbox("uname_$i", $uname, 30),
|
||||
&ui_textbox("upass_$i", $upass, 20),
|
||||
]);
|
||||
$i++;
|
||||
}
|
||||
$utable .= &ui_columns_end();
|
||||
print &ui_table_row($text{'target_iuser'},
|
||||
&ui_radio("iuser_def", @iusers ? 0 : 1,
|
||||
[ [ 1, $text{'target_iuserall'} ],
|
||||
[ 0, $text{'target_iuserbelow'} ] ])."<br>\n".
|
||||
$utable, 3);
|
||||
|
||||
# Outgoing user
|
||||
my $u = &find_value($target, "outgoinguser");
|
||||
my ($uname, $upass) = $u ? split(/\s+/, $u) : ( );
|
||||
print &ui_table_row($text{'target_ouser'},
|
||||
&ui_radio("ouser_def", $u ? 0 : 1,
|
||||
[ [ 1, $text{'target_ousernone'}."<br>" ],
|
||||
[ 0, $text{'target_ousername'} ] ])." ".
|
||||
&ui_textbox("ouser", $uname, 20)." ".
|
||||
$text{'target_ouserpass'}." ".
|
||||
&ui_textbox("opass", $upass, 20), 3);
|
||||
|
||||
print &ui_table_hr();
|
||||
|
||||
# Allowed initiator address
|
||||
my @a = &find_value($target, "initiator-address");
|
||||
print &ui_table_row($text{'target_iaddress'},
|
||||
&ui_radio("iaddress_def", @a ? 0 : 1,
|
||||
[ [ 1, $text{'target_iall'} ],
|
||||
[ 0, $text{'target_ibelow'} ] ])."<br>\n".
|
||||
&ui_textarea("iaddress", join("\n", @a), 3, 20));
|
||||
|
||||
# Allowed initiator name
|
||||
my @n = &find_value($target, "initiator-name");
|
||||
print &ui_table_row($text{'target_iname'},
|
||||
&ui_radio("iname_def", @n ? 0 : 1,
|
||||
[ [ 1, $text{'target_iall'} ],
|
||||
[ 0, $text{'target_ibelow'} ] ])."<br>\n".
|
||||
&ui_textarea("iname", join("\n", @n), 3, 20));
|
||||
|
||||
print &ui_table_end();
|
||||
if ($in{'new'}) {
|
||||
print &ui_form_end([ [ undef, $text{'create'} ] ]);
|
||||
}
|
||||
else {
|
||||
print &ui_form_end([ [ undef, $text{'save'} ],
|
||||
[ 'delete', $text{'delete'} ] ]);
|
||||
}
|
||||
|
||||
&ui_print_footer("", $text{'index_return'});
|
||||
BIN
iscsi-tgtd/images/icon.gif
Executable file
BIN
iscsi-tgtd/images/icon.gif
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 2.3 KiB |
95
iscsi-tgtd/index.cgi
Executable file
95
iscsi-tgtd/index.cgi
Executable file
@@ -0,0 +1,95 @@
|
||||
#!/usr/local/bin/perl
|
||||
# Display a list of iSCSI targets
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
require './iscsi-tgtd-lib.pl';
|
||||
our (%text, %config, $module_name);
|
||||
|
||||
&ui_print_header(undef, $text{'index_title'}, "", "intro", 1, 1, 0,
|
||||
&help_search_link("tgtadm", "man", "doc", "google"));
|
||||
|
||||
my $err = &check_config();
|
||||
if ($err) {
|
||||
&ui_print_endpage(
|
||||
$err." ".&text('index_clink', "../config.cgi?$module_name"));
|
||||
}
|
||||
|
||||
# Find and show targets
|
||||
my $conf = &get_tgtd_config();
|
||||
my @targets = grep { $_->{'name'} eq 'target' } @$conf;
|
||||
my @crlinks = ( &ui_link("edit_target.cgi?new=1",$text{'index_add'}) );
|
||||
if (@targets) {
|
||||
unshift(@crlinks, &select_all_link("d"), &select_invert_link("d"));
|
||||
print &ui_form_start("delete_targets.cgi");
|
||||
print &ui_links_row(\@crlinks);
|
||||
my @tds = ( "width=5" );
|
||||
print &ui_columns_start([
|
||||
"", $text{'index_target'}, $text{'index_lun'},
|
||||
$text{'index_size'}, $text{'index_users'},
|
||||
], 100, 0, \@tds);
|
||||
foreach my $t (@targets) {
|
||||
my @luns;
|
||||
my $size = 0;
|
||||
foreach my $l (&find($t, 'backing-store'),
|
||||
&find($t, 'direct-store')) {
|
||||
my $v = $l->{'values'}->[0];
|
||||
push(@luns, &mount::device_name($v));
|
||||
$size += &get_device_size($v);
|
||||
}
|
||||
my @users = map { $_->{'values'}->[0] }
|
||||
&find($t, "incominguser");
|
||||
if (@users > 5) {
|
||||
@users = (@users[0 .. 4], "...");
|
||||
}
|
||||
print &ui_checked_columns_row([
|
||||
"<a href='edit_target.cgi?name=".
|
||||
&urlize($t->{'value'})."'>".$t->{'value'}."</a>",
|
||||
join(" , ", @luns) || "<i>$text{'index_noluns'}</i>",
|
||||
$size ? &nice_size($size) : "",
|
||||
join(" , ", @users) || "<i>$text{'index_nousers'}</i>"
|
||||
],
|
||||
\@tds, "d", $t->{'value'});
|
||||
}
|
||||
print &ui_columns_end();
|
||||
print &ui_links_row(\@crlinks);
|
||||
print &ui_form_end([ [ undef, $text{'index_delete'} ] ]);
|
||||
}
|
||||
else {
|
||||
print "<b>$text{'index_none'}</b><p>\n";
|
||||
print &ui_links_row(\@crlinks);
|
||||
}
|
||||
|
||||
print &ui_hr();
|
||||
print &ui_buttons_start();
|
||||
|
||||
# Manual edit button
|
||||
print &ui_buttons_row("edit_manual.cgi", $text{'index_manual'},
|
||||
$text{'index_manualdesc'});
|
||||
|
||||
# Show start/stop/restart buttons
|
||||
my $pid = &is_tgtd_running();
|
||||
if ($pid) {
|
||||
print &ui_buttons_row("restart.cgi", $text{'index_restart'},
|
||||
$text{'index_restartdesc'});
|
||||
print &ui_buttons_row("stop.cgi", $text{'index_stop'},
|
||||
$text{'index_stopdesc'});
|
||||
}
|
||||
else {
|
||||
print &ui_buttons_row("start.cgi", $text{'index_start'},
|
||||
$text{'index_startdesc'});
|
||||
}
|
||||
|
||||
# Show start at boot button
|
||||
&foreign_require("init");
|
||||
my $starting = &init::action_status($config{'init_name'});
|
||||
print &ui_buttons_row("atboot.cgi",
|
||||
$text{'index_atboot'},
|
||||
$text{'index_atbootdesc'},
|
||||
undef,
|
||||
&ui_radio("boot", $starting == 2 ? 1 : 0,
|
||||
[ [ 1, $text{'yes'} ], [ 0, $text{'no'} ] ]));
|
||||
|
||||
print &ui_buttons_end();
|
||||
|
||||
&ui_print_footer("/", $text{'index'});
|
||||
15
iscsi-tgtd/install_check.pl
Executable file
15
iscsi-tgtd/install_check.pl
Executable file
@@ -0,0 +1,15 @@
|
||||
# install_check.pl
|
||||
|
||||
do 'iscsi-tgtd-lib.pl';
|
||||
|
||||
# is_installed(mode)
|
||||
# For mode 1, returns 2 if the server is installed and configured for use by
|
||||
# Webmin, 1 if installed but not configured, or 0 otherwise.
|
||||
# For mode 0, returns 1 if installed, 0 if not
|
||||
sub is_installed
|
||||
{
|
||||
my ($mode) = @_;
|
||||
my $err = &check_config();
|
||||
return $err ? 0 : $mode + 1;
|
||||
}
|
||||
|
||||
484
iscsi-tgtd/iscsi-tgtd-lib.pl
Normal file
484
iscsi-tgtd/iscsi-tgtd-lib.pl
Normal file
@@ -0,0 +1,484 @@
|
||||
# iscsi-tgtd-lib.pl
|
||||
# Common functions for managing and configuring the iSCSI TGTD server
|
||||
|
||||
BEGIN { push(@INC, ".."); };
|
||||
use strict;
|
||||
use warnings;
|
||||
use WebminCore;
|
||||
&init_config();
|
||||
&foreign_require("raid");
|
||||
&foreign_require("fdisk");
|
||||
&foreign_require("lvm");
|
||||
&foreign_require("mount");
|
||||
our (%text, %config, %gconfig, $module_config_file);
|
||||
our ($list_disks_partitions_cache, $get_raidtab_cache,
|
||||
$list_logical_volumes_cache, $get_tgtd_config_cache);
|
||||
|
||||
# check_config()
|
||||
# Returns undef if the iSCSI server is installed, or an error message if
|
||||
# missing
|
||||
sub check_config
|
||||
{
|
||||
return $text{'check_econfigset'} if (!$config{'config_file'});
|
||||
return &text('check_econfig', "<tt>$config{'config_file'}</tt>")
|
||||
if (!-r $config{'config_file'});
|
||||
return &text('check_etgtadm', "<tt>$config{'tgtadm'}</tt>")
|
||||
if (!&has_command($config{'tgtadm'}));
|
||||
#&foreign_require("init");
|
||||
#return &text('check_einit', "<tt>$config{'init_name'}</tt>")
|
||||
# if (&init::action_status($config{'init_name'}) == 0);
|
||||
return undef;
|
||||
}
|
||||
|
||||
# get_tgtd_config()
|
||||
# Parses the iSCSI server config file in an array ref of objects
|
||||
sub get_tgtd_config
|
||||
{
|
||||
if (!$get_tgtd_config_cache) {
|
||||
$get_tgtd_config_cache = &read_tgtd_config_file($config{'config_file'});
|
||||
}
|
||||
return $get_tgtd_config_cache;
|
||||
}
|
||||
|
||||
# read_tgtd_config_file(file)
|
||||
# Parses a single config file into an array ref
|
||||
sub read_tgtd_config_file
|
||||
{
|
||||
my ($file) = @_;
|
||||
my @rv;
|
||||
my $lnum = 0;
|
||||
my $parent;
|
||||
my $lref = &read_file_lines($file, 1);
|
||||
my @pstack;
|
||||
foreach my $ol (@$lref) {
|
||||
my $l = $ol;
|
||||
$l =~ s/#.*$//;
|
||||
if ($l =~ /^\s*include\s(\S+)/) {
|
||||
# Include some other files
|
||||
my $ifile = $1;
|
||||
foreach my $iglob (glob($ifile)) {
|
||||
next if (!-r $iglob);
|
||||
my $inc = &read_tgtd_config_file($iglob);
|
||||
push(@rv, @$inc);
|
||||
}
|
||||
}
|
||||
elsif ($l =~ /^\s*<(\S+)\s+(.*)>/) {
|
||||
# Start of a block
|
||||
my $dir = { 'name' => $1,
|
||||
'value' => $2,
|
||||
'values' => [ split(/\s+/, $2) ],
|
||||
'type' => 1,
|
||||
'members' => [ ],
|
||||
'file' => $file,
|
||||
'line' => $lnum,
|
||||
'eline' => $lnum };
|
||||
if ($parent) {
|
||||
push(@{$parent->{'members'}}, $dir);
|
||||
}
|
||||
else {
|
||||
push(@rv, $dir);
|
||||
}
|
||||
push(@pstack, $parent);
|
||||
$parent = $dir;
|
||||
}
|
||||
elsif ($l =~ /^\s*<\/(\S+)>/) {
|
||||
# End of a block
|
||||
$parent->{'eline'} = $lnum;
|
||||
$parent = pop(@pstack);
|
||||
}
|
||||
elsif ($l =~ /^\s*(\S+)\s+(\S.*)/) {
|
||||
# Some directive in a block
|
||||
my $dir = { 'name' => $1,
|
||||
'value' => $2,
|
||||
'values' => [ split(/\s+/, $2) ],
|
||||
'type' => 0,
|
||||
'file' => $file,
|
||||
'line' => $lnum,
|
||||
'eline' => $lnum };
|
||||
if ($parent) {
|
||||
push(@{$parent->{'members'}}, $dir);
|
||||
}
|
||||
else {
|
||||
push(@rv, $dir);
|
||||
}
|
||||
}
|
||||
$lnum++;
|
||||
}
|
||||
return \@rv;
|
||||
}
|
||||
|
||||
# save_directive(&config, [&old|old-name], [&new], [&parent], [add-file-file])
|
||||
# Replaces, creates or deletes some directive
|
||||
sub save_directive
|
||||
{
|
||||
my ($conf, $olddir, $newdir, $parent, $addfile) = @_;
|
||||
my $file;
|
||||
if ($olddir && !ref($olddir)) {
|
||||
# Lookup the old directive by name
|
||||
$olddir = &find($parent ? $parent->{'members'} : $conf, $olddir);
|
||||
}
|
||||
if ($olddir) {
|
||||
# Modifying old directive's file
|
||||
$file = $olddir->{'file'};
|
||||
}
|
||||
elsif ($addfile) {
|
||||
# Adding to a specific file
|
||||
$file = $addfile;
|
||||
}
|
||||
elsif ($parent) {
|
||||
# Adding to parent's file
|
||||
$file = $parent->{'file'};
|
||||
}
|
||||
else {
|
||||
# Adding to the default config file
|
||||
$file = $config{'config_file'};
|
||||
}
|
||||
my $lref = $file ? &read_file_lines($file) : undef;
|
||||
my @lines = $newdir ? &directive_lines($newdir) : ( );
|
||||
my $oldlen = $olddir ? $olddir->{'eline'} - $olddir->{'line'} + 1 : undef;
|
||||
my $oldidx = $olddir && $parent ? &indexof($olddir, @{$parent->{'members'}}) :
|
||||
$olddir ? &indexof($olddir, @$conf) : undef;
|
||||
my ($renumline, $renumoffset);
|
||||
if ($olddir && $newdir) {
|
||||
# Replace some directive
|
||||
if ($lref) {
|
||||
splice(@$lref, $olddir->{'line'}, $oldlen, @lines);
|
||||
$newdir->{'file'} = $olddir->{'file'};
|
||||
$newdir->{'line'} = $olddir->{'line'};
|
||||
$newdir->{'eline'} = $newdir->{'line'} + scalar(@lines) - 1;
|
||||
if ($parent) {
|
||||
$parent->{'eline'} += scalar(@lines) - $oldlen;
|
||||
}
|
||||
}
|
||||
if ($parent) {
|
||||
$parent->{'members'}->[$oldidx] = $newdir;
|
||||
}
|
||||
else {
|
||||
$conf->[$oldidx] = $newdir;
|
||||
}
|
||||
$renumline = $newdir->{'eline'};
|
||||
$renumoffset = scalar(@lines) - $oldlen;
|
||||
}
|
||||
elsif ($olddir) {
|
||||
# Remove some directive
|
||||
if ($lref) {
|
||||
splice(@$lref, $olddir->{'line'}, $oldlen);
|
||||
}
|
||||
if ($parent) {
|
||||
# From inside parent
|
||||
splice(@{$parent->{'members'}}, $oldidx, 1);
|
||||
if ($lref) {
|
||||
$parent->{'eline'} -= $oldlen;
|
||||
}
|
||||
}
|
||||
else {
|
||||
# From top-level
|
||||
splice(@$conf, $oldidx, 1);
|
||||
}
|
||||
$renumline = $olddir->{'line'};
|
||||
$renumoffset = $oldlen;
|
||||
}
|
||||
elsif ($newdir) {
|
||||
# Add some directive
|
||||
if ($lref) {
|
||||
$newdir->{'file'} = $file;
|
||||
}
|
||||
if ($parent) {
|
||||
# Inside parent
|
||||
if ($lref) {
|
||||
$newdir->{'line'} = $parent->{'eline'};
|
||||
$newdir->{'eline'} = $newdir->{'line'} +
|
||||
scalar(@lines) - 1;
|
||||
$parent->{'eline'} += scalar(@lines);
|
||||
splice(@$lref, $newdir->{'line'}, 0, @lines);
|
||||
}
|
||||
$parent->{'members'} ||= [ ];
|
||||
$parent->{'type'} ||= 1;
|
||||
push(@{$parent->{'members'}}, $newdir);
|
||||
}
|
||||
else {
|
||||
# At end of file
|
||||
if ($lref) {
|
||||
$newdir->{'line'} = scalar(@lines);
|
||||
$newdir->{'eline'} = $newdir->{'line'} +
|
||||
scalar(@lines) - 1;
|
||||
push(@$lref, @lines);
|
||||
}
|
||||
push(@$conf, $newdir);
|
||||
}
|
||||
$renumline = $newdir->{'eline'};
|
||||
$renumoffset = scalar(@lines);
|
||||
}
|
||||
|
||||
# Apply any renumbering to the config (recursively)
|
||||
if ($renumoffset && $lref) {
|
||||
&recursive_renumber($conf, $file, $renumline, $renumoffset,
|
||||
[ $newdir, $parent ? ( $parent ) : ( ) ]);
|
||||
}
|
||||
}
|
||||
|
||||
# save_multiple_directives(&config, name, &directives, &parent)
|
||||
# Update all existing directives with some name
|
||||
sub save_multiple_directives
|
||||
{
|
||||
my ($conf, $name, $newdirs, $parent) = @_;
|
||||
my $olddirs = [ &find($parent ? $parent->{'members'} : $conf, $name) ];
|
||||
for(my $i=0; $i<@$olddirs || $i<@$newdirs; $i++) {
|
||||
&save_directive($conf,
|
||||
$i<@$olddirs ? $olddirs->[$i] : undef,
|
||||
$i<@$newdirs ? $newdirs->[$i] : undef,
|
||||
$parent);
|
||||
}
|
||||
}
|
||||
|
||||
# delete_if_empty(file)
|
||||
# Remove some file if after modification it contains no non-whitespace lines
|
||||
sub delete_if_empty
|
||||
{
|
||||
my ($file) = @_;
|
||||
my $lref = &read_file_lines($file, 1);
|
||||
foreach my $l (@$lref) {
|
||||
return 0 if ($l =~ /\S/);
|
||||
}
|
||||
&unlink_file($file);
|
||||
&unflush_file_lines($file);
|
||||
return 1;
|
||||
}
|
||||
|
||||
# recursive_renumber(&directives, file, after-line, offset, &ignore-list)
|
||||
sub recursive_renumber
|
||||
{
|
||||
my ($conf, $file, $renumline, $renumoffset, $ignore) = @_;
|
||||
foreach my $c (@$conf) {
|
||||
if ($c->{'file'} eq $file && &indexof($c, @$ignore) < 0) {
|
||||
$c->{'line'} += $renumoffset if ($c->{'line'} > $renumline);
|
||||
$c->{'eline'} += $renumoffset if ($c->{'eline'} > $renumline);
|
||||
}
|
||||
if ($c->{'type'}) {
|
||||
&recursive_renumber($c->{'members'}, $file, $renumline,
|
||||
$renumoffset, $ignore);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# directive_lines(&dir, [indent])
|
||||
# Returns the lines of text for some directive
|
||||
sub directive_lines
|
||||
{
|
||||
my ($dir, $indent) = @_;
|
||||
$indent ||= 0;
|
||||
my $istr = " " x $indent;
|
||||
my @rv;
|
||||
if ($dir->{'type'}) {
|
||||
# Has sub-directives
|
||||
push(@rv, $istr."<".$dir->{'name'}.
|
||||
($dir->{'value'} ? " ".$dir->{'value'} : "").">");
|
||||
foreach my $s (@{$dir->{'members'}}) {
|
||||
push(@rv, &directive_lines($s, $indent+1));
|
||||
}
|
||||
push(@rv, $istr."</".$dir->{'name'}.">");
|
||||
}
|
||||
else {
|
||||
# Just a name/value
|
||||
push(@rv, $istr.$dir->{'name'}.
|
||||
($dir->{'value'} ? " ".$dir->{'value'} : ""));
|
||||
}
|
||||
return @rv;
|
||||
}
|
||||
|
||||
# find(&config|&object, name)
|
||||
# Returns all config objects with the given name
|
||||
sub find
|
||||
{
|
||||
my ($conf, $name) = @_;
|
||||
$conf = $conf->{'members'} if (ref($conf) eq 'HASH');
|
||||
my @rv = grep { lc($_->{'name'}) eq lc($name) } @$conf;
|
||||
return wantarray ? @rv : $rv[0];
|
||||
}
|
||||
|
||||
# find_value(&config|&object, name)
|
||||
# Returns config values with the given name
|
||||
sub find_value
|
||||
{
|
||||
my ($conf, $name) = @_;
|
||||
$conf = $conf->{'members'} if (ref($conf) eq 'HASH');
|
||||
my @rv = map { $_->{'value'} } &find($conf, $name);
|
||||
return wantarray ? @rv : $rv[0];
|
||||
}
|
||||
|
||||
# is_tgtd_running()
|
||||
# Returns the PID if the server process is running, or 0 if not
|
||||
sub is_tgtd_running
|
||||
{
|
||||
my $pid = &find_byname("tgtd");
|
||||
return $pid;
|
||||
}
|
||||
|
||||
# setup_tgtd_init()
|
||||
# If no init script exists, create one
|
||||
sub setup_tgtd_init
|
||||
{
|
||||
&foreign_require("init");
|
||||
return 0 if (&init::action_status($config{'init_name'}));
|
||||
&init::enable_at_boot($config{'init_name'},
|
||||
"Start TGTd iSCSI server",
|
||||
&has_command($config{'tgtd'}).
|
||||
" && sleep 2 && ".
|
||||
&has_command($config{'tgtadmin'})." -e",
|
||||
"killall -9 tgtd",
|
||||
undef,
|
||||
{ 'fork' => 1 },
|
||||
);
|
||||
}
|
||||
|
||||
# start_iscsi_tgtd()
|
||||
# Run the init script to start the server
|
||||
sub start_iscsi_tgtd
|
||||
{
|
||||
if ($config{'start_cmd'}) {
|
||||
my $out = &backquote_command("$config{'start_cmd'} 2>&1 </dev/null");
|
||||
return $? ? $out : undef;
|
||||
}
|
||||
else {
|
||||
&setup_tgtd_init();
|
||||
&foreign_require("init");
|
||||
my ($ok, $out) = &init::start_action($config{'init_name'});
|
||||
return $ok ? undef : $out;
|
||||
}
|
||||
}
|
||||
|
||||
# stop_iscsi_tgtd()
|
||||
# Run the init script to stop the server
|
||||
sub stop_iscsi_tgtd
|
||||
{
|
||||
if ($config{'stop_cmd'}) {
|
||||
my $out = &backquote_command("$config{'stop_cmd'} 2>&1 </dev/null");
|
||||
return $? ? $out : undef;
|
||||
}
|
||||
else {
|
||||
&setup_tgtd_init();
|
||||
&foreign_require("init");
|
||||
my ($ok, $out) = &init::stop_action($config{'init_name'});
|
||||
return $ok ? undef : $out;
|
||||
}
|
||||
}
|
||||
|
||||
# restart_iscsi_tgtd()
|
||||
# Sends a HUP signal to re-read the configuration
|
||||
sub restart_iscsi_tgtd
|
||||
{
|
||||
if ($config{'restart_cmd'}) {
|
||||
my $out = &backquote_command("$config{'restart_cmd'} 2>&1 </dev/null");
|
||||
return $? ? $out : undef;
|
||||
}
|
||||
else {
|
||||
&stop_iscsi_tgtd();
|
||||
# Wait for process to exit
|
||||
for(my $i=0; $i<20; $i++) {
|
||||
last if (!&is_tgtd_running());
|
||||
sleep(1);
|
||||
}
|
||||
return &start_iscsi_tgtd();
|
||||
}
|
||||
}
|
||||
|
||||
# get_device_size(device, "part"|"raid"|"lvm"|"other")
|
||||
# Returns the size in bytes of some device, which can be a partition, RAID
|
||||
# device, logical volume or regular file.
|
||||
sub get_device_size
|
||||
{
|
||||
my ($dev, $type) = @_;
|
||||
if (!$type) {
|
||||
$type = $dev =~ /^\/dev\/md\d+$/ ? "raid" :
|
||||
$dev =~ /^\/dev\/([^\/]+)\/([^\/]+)$/ ? "lvm" :
|
||||
$dev =~ /^\/dev\/(s|h|v|xv)d[a-z]+\d*$/ ? "part" : "other";
|
||||
}
|
||||
if ($type eq "part") {
|
||||
# A partition or whole disk
|
||||
foreach my $d (&list_disks_partitions_cached()) {
|
||||
if ($d->{'device'} eq $dev) {
|
||||
# Whole disk
|
||||
return $d->{'cylinders'} * $d->{'cylsize'};
|
||||
}
|
||||
foreach my $p (@{$d->{'parts'}}) {
|
||||
if ($p->{'device'} eq $dev) {
|
||||
return ($p->{'end'} - $p->{'start'} + 1) *
|
||||
$d->{'cylsize'};
|
||||
}
|
||||
}
|
||||
}
|
||||
return undef;
|
||||
}
|
||||
elsif ($type eq "raid") {
|
||||
# A RAID device
|
||||
my $conf = &get_raidtab_cached();
|
||||
foreach my $c (@$conf) {
|
||||
if ($c->{'value'} eq $dev) {
|
||||
return $c->{'size'} * 1024;
|
||||
}
|
||||
}
|
||||
return undef;
|
||||
}
|
||||
elsif ($type eq "lvm") {
|
||||
# LVM volume group
|
||||
foreach my $l (&list_logical_volumes_cached()) {
|
||||
if ($l->{'device'} eq $dev) {
|
||||
return $l->{'size'} * 1024;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
# A regular file
|
||||
my @st = stat($dev);
|
||||
return @st ? $st[7] : undef;
|
||||
}
|
||||
}
|
||||
|
||||
sub list_disks_partitions_cached
|
||||
{
|
||||
$list_disks_partitions_cache ||= [ &fdisk::list_disks_partitions() ];
|
||||
return @$list_disks_partitions_cache;
|
||||
}
|
||||
|
||||
sub get_raidtab_cached
|
||||
{
|
||||
$get_raidtab_cache ||= &raid::get_raidtab();
|
||||
return $get_raidtab_cache;
|
||||
}
|
||||
|
||||
sub list_logical_volumes_cached
|
||||
{
|
||||
if (!$list_logical_volumes_cache) {
|
||||
$list_logical_volumes_cache = [ ];
|
||||
foreach my $v (&lvm::list_volume_groups()) {
|
||||
push(@$list_logical_volumes_cache,
|
||||
&lvm::list_logical_volumes($v->{'name'}));
|
||||
}
|
||||
}
|
||||
return @$list_logical_volumes_cache;
|
||||
}
|
||||
|
||||
# find_host_name(&config)
|
||||
# Returns the first host name part of the first target
|
||||
sub find_host_name
|
||||
{
|
||||
my ($conf) = @_;
|
||||
my %hcount;
|
||||
foreach my $t (&find_value($conf, "target")) {
|
||||
my ($host) = split(/:/, $t);
|
||||
$hcount{$host}++;
|
||||
}
|
||||
my @hosts = sort { $hcount{$b} <=> $hcount{$a} } (keys %hcount);
|
||||
return $hosts[0];
|
||||
}
|
||||
|
||||
# generate_host_name()
|
||||
# Returns the first part of a target name, in the standard format
|
||||
sub generate_host_name
|
||||
{
|
||||
my @tm = localtime(time());
|
||||
return sprintf("iqn.%.4d-%.2d.%s", $tm[5]+1900, $tm[4]+1,
|
||||
join(".", reverse(split(/\./, &get_system_hostname()))));
|
||||
}
|
||||
|
||||
1;
|
||||
98
iscsi-tgtd/lang/de
Normal file
98
iscsi-tgtd/lang/de
Normal file
@@ -0,0 +1,98 @@
|
||||
atboot_einit=Init-Skript $1 existiert nicht
|
||||
atboot_err=Fehlgeschlagen beim booten zu aktivieren
|
||||
check_econfig=Die iSCSI-TGTd-Konfigurationsdatei $1 wurde nicht auf Ihrem System gefunden.
|
||||
check_econfigset=Keine iSCSI TGTd-Konfigurationsdatei!
|
||||
check_einit=Systemstart Aktion $1 existiert nicht
|
||||
check_etgtadm=Der iSCSI-TGTd-Verwaltungsbefehl $1 wurde nicht auf Ihrem System gefunden.
|
||||
dtargets_enone=Nichts ausgewählt!
|
||||
dtargets_err=Fehlgeschlagen Ziele zu löschen
|
||||
index_add=Füge ein neues iSCSI Ziel hinzu.
|
||||
index_atboot=Starte beim booten?
|
||||
index_atbootdesc=Ändere diese Option, um zu kontrollieren, ob die iSCSI-Ziel beim Booten gestartet werden soll oder nicht. Wenn es nicht gerade beim booten gestartet wurde und "Ja" gewählt wird, wird ein neues Init-Skript erstellt.
|
||||
index_clink=Vielleicht ist es nicht installiert ist, oder Ihr <a href='$1'>Modulkonfiguration</a> ist falsch.
|
||||
index_delete=Lösche Ausgewählte Ziele
|
||||
index_lun=Disk-Geräte
|
||||
index_manual=Editiere Konfigurationsdateien
|
||||
index_manualdesc=Manuell Bearbeiten eines der iSCSI-Target-Konfigurationsdateien, um Änderungen vorzunehmen, die von Webmin nicht unterstützt werden.
|
||||
index_noluns=Kein
|
||||
index_none=Keine iSCSI Ziele zum exportieren wurden bisher definiert.
|
||||
index_nousers=Jeder
|
||||
index_restart=Starte iSCSI TGTd neu
|
||||
index_restartdesc=Klicke auf diese Schaltfläche, um die aktuelle Konfiguration durch einen Neustart des iSCSI Ziel anzuwenden.
|
||||
index_return=Liste an Zielen
|
||||
index_size=Gesamtgröße
|
||||
index_start=Start iSCSI TGTd
|
||||
index_startdesc=Klicken auf diese Schaltfläche, um das iSCSI Ziel zu starten, so dass gemeinsam genutzte Geräte den Clients zugänglich sind.
|
||||
index_stop=Stoppe iSCSI TGTd
|
||||
index_stopdesc=Klicke auf diese Schaltfläche, um das laufende iSCSI Ziel zu stoppen. Alle freigegebenen Geräte werden den Clients nicht länger zugänglich sein.
|
||||
index_target=Ziel Name
|
||||
index_title=iSCSI TGTd
|
||||
index_users=Erlaubte Benutzer
|
||||
log_atboot=iSCSI Server beim booten aktiviert
|
||||
log_create_target=Ziel $1 erstellt
|
||||
log_delboot=iSCSI Server beim booten deaktiviert
|
||||
log_delete_target=Ziel $1 gelöscht
|
||||
log_delete_targets=$1 Ziele gelöscht
|
||||
log_manual=Manuell editierte Konfigurationsdatei
|
||||
log_modify_target=Ziel $1 modifiziert
|
||||
log_restart=iSCSI Server neu gestartet
|
||||
log_start=iSCSI Server gestartet
|
||||
log_stop=iSCSI Server gestoppt
|
||||
manual_desc=Verwende das Textfeld unten, um die iSCSI-Server-Konfigurationsdatei $1 zu bearbeiten. Sei vorsichtig, da keine Validierung Ihrer Eingaben durchgeführt werden!
|
||||
manual_edata=Kein Inhalt eingegeben!
|
||||
manual_efile=Ungültige Konfigurationsdatei!
|
||||
manual_err=Fehlgeschlagen Konfigurationsdatei zu speichern
|
||||
manual_file=Wähle Datei zum editieren:
|
||||
manual_ok=Öffne
|
||||
manual_title=Editiere Konfigurationsdatei
|
||||
restart_err=Fehlgeschlagen iSCSI TGTd neu zu starten
|
||||
start_err=Fehlgeschlagen iSCSI TGTd zu starten
|
||||
stop_err=Fehlgeschlagen iSCSI TGTd zu stoppen
|
||||
target_backing=Hintergrundspeicher
|
||||
target_blockio=Block basiert (kein Caching, nur für Geräte)
|
||||
target_cache=Schreibe Cache auf Gerät?
|
||||
target_direct=Direkter Geräte-Zugriff
|
||||
target_eaddr=Ungültig erlaubte IP-Adresse
|
||||
target_eaname=Ungültig erlaubter Initiator-Name
|
||||
target_egone=Ausgewähltes Ziel existiert nicht länger!
|
||||
target_eipass=Ungültiges Passwort für Benutzer $1 - keine Leerzeichen erlaubt
|
||||
target_eiuser=Ungültiger Name für Benutzer $1 - keine Leerzeichen erlaubt
|
||||
target_eiusernone=Kein Client Benutzernamen eingegeben
|
||||
target_eopass=Ungültiges oder fehlendes Passwort für Authentifizierung an Clients - keine Leerzeichen erlaubt
|
||||
target_eother=Fehlende oder ungültige Datei für Gerät $1
|
||||
target_eouser=Fehlender oder ungültiger Benutzername für die Authentifizierung an Clients - keine Leerzeichen sind erlaubt
|
||||
target_err=Fehlgeschlagen Ziel zu speichern
|
||||
target_esectors=Fehlende oder nicht-numerische Anzahl an Sektoren für Gerät $1
|
||||
target_fileio=Datei basiert
|
||||
target_header=iSCSI gemeinsamen Geräteoptionen
|
||||
target_iaddress=Erlaube Verbindungen von Adressen
|
||||
target_iall=Alle
|
||||
target_ibelow=Unten eingegeben ..
|
||||
target_iname=Erlaube Verbindungen von Initiatoren
|
||||
target_iomode=IO Modus
|
||||
target_iuser=Authentifizierung von Clients
|
||||
target_iuserall=Keine Authentifizierung erforderlich
|
||||
target_iuserbelow=Erlaube Logins unten..
|
||||
target_lun=Gerät zu teilen $1
|
||||
target_lv=LVM VG $1, LV $2
|
||||
target_lvm=LVM logisches Volume
|
||||
target_md=RAID-Gerät $1
|
||||
target_name=Ziel Name
|
||||
target_none=Nichts
|
||||
target_null=Temporäre RAM-Disk von der Größe
|
||||
target_other=Andere Datei oder Gerät
|
||||
target_ouser=Authentifizierung für Clients
|
||||
target_ousername=Login mit Benutzername
|
||||
target_ousernone=Nicht authentifizieren
|
||||
target_ouserpass=und Passwort
|
||||
target_part=Lokale Disk-Partition
|
||||
target_raid=RAID-Gerät
|
||||
target_ro=Nur lesen
|
||||
target_sectors=Sektoren
|
||||
target_title1=Erstelle iSCSI Ziel
|
||||
target_title2=Editiere iSCSI Ziel
|
||||
target_type=Speicher-Typ
|
||||
target_uname=Benutzername
|
||||
target_upass=Passwort
|
||||
target_wb=Write-back caching
|
||||
target_wt=Write-through caching
|
||||
105
iscsi-tgtd/lang/en
Normal file
105
iscsi-tgtd/lang/en
Normal file
@@ -0,0 +1,105 @@
|
||||
check_econfigset=No iSCSI TGTd configuration file set!
|
||||
check_econfig=The iSCSI TGTd configuration file $1 was not found on your system.
|
||||
check_etgtadm=The iSCSI TGTd administration command $1 was not found on your system.
|
||||
check_einit=Bootup action $1 does not exist
|
||||
|
||||
index_title=iSCSI TGTd
|
||||
index_clink=Maybe it is not installed, or your <a href='$1'>module configuration</a> is incorrect.
|
||||
index_stop=Stop iSCSI TGTd
|
||||
index_stopdesc=Click this button to stop the running iSCSI target. All shared devices will no longer be accessible to clients.
|
||||
index_start=Start iSCSI TGTd
|
||||
index_startdesc=Click this button to start the iSCSI target, so that shared devices are accessible to clients.
|
||||
index_restart=Restart iSCSI TGTd
|
||||
index_restartdesc=Click this button to apply the current configuration by restarting the iSCSI target.
|
||||
index_atboot=Start at boot?
|
||||
index_atbootdesc=Change this option to control whether the iSCSI target is started at boot time or not. If it is not currently started at boot and Yes is chosen, a new init script will be created.
|
||||
index_manual=Edit Configuration Files
|
||||
index_manualdesc=Manually edit any of the iSCSI target configuration files, to make changes not supported by Webmin.
|
||||
index_return=list of targets
|
||||
index_none=No iSCSI targets to export have been defined yet.
|
||||
index_add=Add a new iSCSI target.
|
||||
index_target=Target name
|
||||
index_delete=Delete Selected Targets
|
||||
index_lun=Disk devices
|
||||
index_users=Allowed users
|
||||
index_size=Total size
|
||||
index_noluns=None
|
||||
index_nousers=Any
|
||||
|
||||
dtargets_err=Failed to delete targets
|
||||
dtargets_enone=None selected!
|
||||
|
||||
target_title1=Create iSCSI Target
|
||||
target_title2=Edit iSCSI Target
|
||||
target_header=iSCSI shared device options
|
||||
target_part=Local disk partition
|
||||
target_raid=RAID device
|
||||
target_md=RAID device $1
|
||||
target_lvm=LVM logical volume
|
||||
target_lv=LVM VG $1, LV $2
|
||||
target_other=Other file or device
|
||||
target_lun=Device to share $1
|
||||
target_name=Target name
|
||||
target_egone=Selected target no longer exists!
|
||||
target_none=Nothing
|
||||
target_null=Temporary RAM disk of size
|
||||
target_sectors=sectors
|
||||
target_fileio=File based
|
||||
target_blockio=Block based (no caching, for devices only)
|
||||
target_iomode=IO mode
|
||||
target_wt=Write-through caching
|
||||
target_wb=Write-back caching
|
||||
target_ro=Read-only
|
||||
target_iuser=Authentication by clients
|
||||
target_iuserall=No authentication needed
|
||||
target_iuserbelow=Allow logins below ..
|
||||
target_uname=Username
|
||||
target_upass=Password
|
||||
target_ouser=Authentication to clients
|
||||
target_ousernone=Don't authenticate
|
||||
target_ousername=Login with username
|
||||
target_ouserpass=and password
|
||||
target_err=Failed to save target
|
||||
target_esectors=Missing or non-numeric number of sectors for device $1
|
||||
target_eother=Missing or invalid file for device $1
|
||||
target_eiuser=Invalid name for user $1 - no spaces are allowed
|
||||
target_eipass=Invalid password for user $1 - no spaces are allowed
|
||||
target_eouser=Missing or invalid username for authentication to clients - no spaces are allowed
|
||||
target_eopass=Missing or invalid password for authentication to clients - no spaces are allowed
|
||||
target_eiusernone=No client usernames entered
|
||||
target_iaddress=Allow connections from addresses
|
||||
target_iname=Allow connections from initiators
|
||||
target_iall=All
|
||||
target_ibelow=Entered below ..
|
||||
target_type=Storage type
|
||||
target_backing=Backing store
|
||||
target_direct=Direct device access
|
||||
target_cache=Cache writes to device?
|
||||
target_eaddr=Invalid allowed IP address
|
||||
target_eaname=Invalid allowed initiator name
|
||||
|
||||
start_err=Failed to start iSCSI TGTd
|
||||
stop_err=Failed to stop iSCSI TGTd
|
||||
restart_err=Failed to restart iSCSI TGTd
|
||||
atboot_err=Failed to enable at boot
|
||||
atboot_einit=Init script $1 does not exist
|
||||
|
||||
log_create_target=Created target $1
|
||||
log_delete_target=Deleted target $1
|
||||
log_modify_target=Modified target $1
|
||||
log_delete_targets=Deleted $1 targets
|
||||
log_start=Started iSCSI server
|
||||
log_stop=Stopped iSCSI server
|
||||
log_restart=Restarted iSCSI server
|
||||
log_atboot=Enabled iSCSI server at boot time
|
||||
log_delboot=Disabled iSCSI server at boot time
|
||||
log_manual=Manually edited configuration file
|
||||
|
||||
manual_title=Edit Configuration File
|
||||
manual_file=Select file to edit:
|
||||
manual_ok=Open
|
||||
manual_desc=Use the text box below to edit the iSCSI server configuration file $1. Be careful, as no validation will be performed on your input!
|
||||
manual_err=Failed to save configuration file
|
||||
manual_edata=No contents entered!
|
||||
manual_efile=Invalid configuration file!
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user