diff --git a/iscsi-target/config b/iscsi-target/config new file mode 100644 index 000000000..10afcf37e --- /dev/null +++ b/iscsi-target/config @@ -0,0 +1,3 @@ +config_file=/etc/ietd.conf +ietadm=ietadm +init_name=iscsitarget diff --git a/iscsi-target/config.info b/iscsi-target/config.info new file mode 100644 index 000000000..88e23c9c9 --- /dev/null +++ b/iscsi-target/config.info @@ -0,0 +1,3 @@ +config_file=iSCSI target configuration file,0 +ietadm=Full path to ietadm command,0 +init_name=Bootup script name,0 diff --git a/iscsi-target/index.cgi b/iscsi-target/index.cgi new file mode 100644 index 000000000..b711a2e1c --- /dev/null +++ b/iscsi-target/index.cgi @@ -0,0 +1,56 @@ +#!/usr/local/bin/perl +# Display a list of iSCSI targets? + +use strict; +use warnings; +require './iscsi-target-lib.pl'; +our (%text, %config, $module_name); + +&ui_print_header(undef, $text{'index_title'}, "", "intro", 1, 1); + +my $err = &check_config(); +if ($err) { + &ui_print_endpage( + $err." ".&text('index_clink', "../config.cgi?$module_name")); + } + +my @links = ( "list_extents.cgi", "list_devices.cgi", + "list_targets.cgi", "edit_opts.cgi", + "edit_manual.cgi" ); +my @titles = ( $text{'extents_title'}, $text{'devices_title'}, + $text{'targets_title'}, $text{'opts_title'}, + $text{'manual_title'} ); +my @icons = ( "images/extents.gif", "images/devices.gif", + "images/targets.gif", "images/opts.gif", + "images/manual.gif" ); +&icons_table(\@links, \@titles, \@icons, 5); + +print &ui_hr(); +print &ui_buttons_start(); + +# Show start/stop/restart buttons +my $pid = &is_iscsi_target_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'}); diff --git a/iscsi-target/install_check.pl b/iscsi-target/install_check.pl new file mode 100755 index 000000000..2b5f41d3e --- /dev/null +++ b/iscsi-target/install_check.pl @@ -0,0 +1,15 @@ +# install_check.pl + +do 'iscsi-target-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; +} + diff --git a/iscsi-target/iscsi-target-lib.pl b/iscsi-target/iscsi-target-lib.pl new file mode 100644 index 000000000..2cd995cea --- /dev/null +++ b/iscsi-target/iscsi-target-lib.pl @@ -0,0 +1,63 @@ +# iscsi-target-lib.pl +# Common functions for managing and configuring an iSCSI target + +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); + +# check_config() +# Returns undef if the iSCSI server is installed, or an error message if +# missing +sub check_config +{ +return &text('check_econfig', "$config{'config_file'}") + if (!-r $config{'config_file'}); +return &text('check_eietadm', "$config{'ietadm'}") + if (!&has_command($config{'ietadm'})); +return undef; +} + +# get_iscsi_config() +# Returns an array ref of entries from the iSCSI target config file +sub get_iscsi_config +{ +my @rv; +my $fh = "CONFIG"; +my $lnum = 0; +&open_readfile($fh, $config{'config_file'}) || return [ ]; +my $parent = undef; +while(<$fh>) { + s/\r|\n//g; + s/#.*$//; + my @w = split(/\s+/, $_); + my $dir; + if (@w) { + $dir = { 'name' => $w[0], + 'value' => $w[1], + 'line' => $lnum }; + } + if (/^\S/) { + # Top-level directive + $parent = $dir; + push(@rv, $parent); + } + elsif (@w) { + # Sub-directive + $parent || &error("Sub-directive with no parent at line $lnum"); + $parent->{'members'} ||= [ ]; + push(@{$parent->{'members'}}, $dir); + } + $lnum++; + } +close($fh); +return \@rv; +} + +1; diff --git a/iscsi-target/lang/en b/iscsi-target/lang/en new file mode 100644 index 000000000..f8b735634 --- /dev/null +++ b/iscsi-target/lang/en @@ -0,0 +1,3 @@ + +config_econfig=The iSCSI target configuration file $1 was not found on your system. +config_eietadm=The iSCSI target administration command $1 was not found on your system. diff --git a/postfix/lang/de b/postfix/lang/de index 0069242d7..1e2a6d286 100644 --- a/postfix/lang/de +++ b/postfix/lang/de @@ -1,4 +1,6 @@ __norefs=1 +acl_aliases=Kann Alias editieren? +acl_aliases_options=Kann Alias Optionen editieren? acl_ldap=Kann LDAP editieren? acl_smtp=Kann smtp editieren? acl_smtpd=Kann smtpd editieren? @@ -7,12 +9,17 @@ acl_transport=Kann transport editieren? acl_virtual=Kann virtual editieren? address_rewriting_ecannot=Sie haben keine Berechtigung, Adressumschreibung und Maskierung zu bearbeiten. address_rewriting_title=Adressumschreibung und Maskierung +afile_efile=Es ist Ihnen nicht erlaubt $1 zu editieren +afile_undo=Änderungen rückgängig aform_afile=Editiere... aform_cmt=Beschreibung +aform_create=Alias erstellen +aform_edit=Alias editieren aform_enabled=Aktiviert? aform_name=Adresse aform_return=alias aform_type1=E-Mail Adresse +aform_type2=Adressen in Datei aform_type3=Schreibe in Datei alias_delete_create=Sie wollen den Alias löschen, den Sie gerade erstellen!? alias_save=Alias speichern @@ -63,10 +70,18 @@ chooser_muser=Datenbank Login chooser_mysql=MySQL Datenbank chooser_mysqlsrc=MySQL Quelle chooser_other=Andere Quelle +client_err=Fehlgeschlage Client Restriktionen zu speichern +client_evalue=Fehlender Wert für Restriktion $1 +client_other=Andere Restriktionen : +client_restrict=Client Restriktionen +client_restrict0=Ausgewählte unten .. client_restrict1=Postfix Standard (erlaube alle Clients) client_return=SMTP-Client Einschränkungen client_title=SMTP-Client Einschränkungen +cmanual_ecannot=Es ist Ihnen nicht erlaubt die Postfix Konfigurationsdatei zu editieren cmanual_edata=Nichts eingegeben! +cmanual_efile=Die ausgewählte Datei ist nicht Bestandteil der Postfix Konfiguration +cmanual_err=Fehlgeschlagen Konfigurationsdatei zu speichern cmanual_file=Editiere Konfigurationsdatei: cmanual_ok=Editieren cmanual_title=Editiere Konfigurationsdateien @@ -113,6 +128,8 @@ ldap_non_existent=Es scheint, dass LDAP nicht auf Ihrem Postfix-System existiert ldap_title=LDAP-Lookups local_delivery_ecannot=Sie haben keine Berechtigung, die lokalen Lieferungseinstellungen zu bearbeiten local_delivery_title=Lokale Lieferung +log_smtp=SMTP Client Optionen geändert +log_smtpd=SMTP Server Optionen geändert log_start=Postfix Server gestartet log_stop=Postfix Server gestoppt mail_all=Alle auswählen @@ -164,6 +181,7 @@ mailq_size=Größe mailq_status=Status mailq_subject=Betreff mailq_to=Zu +manual_change=Ändern map_click=Klicken Sie auf eine Verknüpfung, um Ihre Eigenschaften zu bearbeiten map_delete_create=Sie können keine Verknüpfung löschen, die Sie gerade erstellen map_save=Verknüpfung speichern @@ -398,12 +416,15 @@ rfile_efile=Es ist Ihnen nicht erlaubt $1 zu editieren. rfile_efrom=Fehlende "Von:" Adresse rfile_file=Ja, benutze Logdatei rfile_secs=Sekunden +rfile_undo=Änderung rückgängig sasl_elogin=Fehleder oder ungültiger SMTP Login sasl_epass=Ungültiges SMTP Passwort sasl_level_encrypt=Immer sasl_level_none=Niemals sasl_opts=SMTP Sicherheitseinstellungen sasl_permit_inet_interfaces=Erlaube Verbindungen von diesem System +sasl_permit_mynetworks=Erlaube Verbindungen vom gleichen Netzwerk +sasl_permit_sasl_authenticated=Erlaube authentifizierte Clients sasl_title=SMTP-Authentifizierung und Verschlüsselung sasl_userpass=Login als $1 mit Passwort $2 search_efield=Sie müssen ein Suchtyp wählen. @@ -441,6 +462,7 @@ view_reply=Antworten view_reply2=Antworten an alle view_return=Original E-Mail view_strip=Entferne Anhänge +view_title=Lese E-Mail virtual_ecannot=Sie haben keine Berechtigung, Verknüpfung für virtuelle Domänen zu bearbeiten virtual_title=Virtuelle Domänen what_is_it=Was ist das?