From 59430e90b1b9334761d815aeb6e519effe7e5243 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Tue, 13 Feb 2018 17:52:52 +0100 Subject: [dozmod] Move subpages to pages/, hide pages where user has no permission --- modules-available/dozmod/lang/en/module.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'modules-available/dozmod/lang/en/module.json') diff --git a/modules-available/dozmod/lang/en/module.json b/modules-available/dozmod/lang/en/module.json index 17a2b838..b7a04762 100644 --- a/modules-available/dozmod/lang/en/module.json +++ b/modules-available/dozmod/lang/en/module.json @@ -4,7 +4,7 @@ "submenu_actionlog": "action log", "submenu_expiredimages": "Expired VM versions", "submenu_mailconfig": "email configuration", - "submenu_runtime": "limits and defaults", + "submenu_runtimeconfig": "limits and defaults", "submenu_templates": "templates", "submenu_users": "users and permissions" } \ No newline at end of file -- cgit v1.2.3-55-g7522 From 05b361f1288fa93e272e11eb2e3cc3e6ec5e830a Mon Sep 17 00:00:00 2001 From: Jannik Schönartz Date: Fri, 23 Nov 2018 00:08:07 +0100 Subject: [dozmod] Add LDAP filter submodule --- modules-available/dozmod/lang/de/messages.json | 7 ++ modules-available/dozmod/lang/de/module.json | 1 + modules-available/dozmod/lang/de/permissions.json | 2 + .../dozmod/lang/de/template-tags.json | 8 ++ modules-available/dozmod/lang/en/messages.json | 6 ++ modules-available/dozmod/lang/en/module.json | 1 + modules-available/dozmod/lang/en/permissions.json | 2 + .../dozmod/lang/en/template-tags.json | 8 ++ modules-available/dozmod/page.inc.php | 3 +- modules-available/dozmod/pages/ldapfilters.inc.php | 119 +++++++++++++++++++++ .../dozmod/permissions/permissions.json | 6 ++ .../dozmod/templates/ldapfilter-add.html | 39 +++++++ .../dozmod/templates/ldapfilters.html | 72 +++++++++++++ 13 files changed, 273 insertions(+), 1 deletion(-) create mode 100644 modules-available/dozmod/pages/ldapfilters.inc.php create mode 100644 modules-available/dozmod/templates/ldapfilter-add.html create mode 100644 modules-available/dozmod/templates/ldapfilters.html (limited to 'modules-available/dozmod/lang/en/module.json') diff --git a/modules-available/dozmod/lang/de/messages.json b/modules-available/dozmod/lang/de/messages.json index 60c37927..47912ae1 100644 --- a/modules-available/dozmod/lang/de/messages.json +++ b/modules-available/dozmod/lang/de/messages.json @@ -3,6 +3,13 @@ "delete-images": "L\u00f6schung: {{0}}", "dozmod-error": "Fehler bei der Kommunikation mit dem bwLehrpool-Suite server: {{0}}", "images-pending-delete-exist": "Zur L\u00f6schung markierte VM-Versionen: {{0}}", + "ldap-filter-created": "LDAP Filter wurde erfolgreich erstellt", + "ldap-filter-deleted": "LDAP Filter wurde erfolgreich gel\u00f6scht", + "ldap-invalid-filter-id": "Ung\u00fcltige LDAP Filter ID", + "ldap-filter-id-missing": "Fehlende LDAP Filter ID", + "ldap-filter-insert-failed": "LDAP filter konnte der Datenbank nicht hinzugef\u00fcgt werden", + "ldap-filter-save-missing-information": "Es fehlen LDAP Filter Informationen", + "ldap-filter-saved": "LDAP Filter wurde erfolgreich gespeichert", "mail-config-saved": "Mail-Konfiguration gespeichert", "no-expired-images": "Keine Abgelaufenen VM-Versionen", "nothing-submitted": "Es wurde nichts \u00fcbermittelt", diff --git a/modules-available/dozmod/lang/de/module.json b/modules-available/dozmod/lang/de/module.json index c9acd4ee..4a5e0249 100644 --- a/modules-available/dozmod/lang/de/module.json +++ b/modules-available/dozmod/lang/de/module.json @@ -3,6 +3,7 @@ "page_title": "Verwalten der bwLehrpool-Suite", "submenu_actionlog": "Aktions-Log", "submenu_expiredimages": "Abgelaufene VM-Versionen", + "submenu_ldapfilters": "LDAP Filter", "submenu_mailconfig": "Email-Konfiguration", "submenu_runtimeconfig": "Limits und Standardwerte", "submenu_templates": "Textbausteine f\u00fcr E-Mails", diff --git a/modules-available/dozmod/lang/de/permissions.json b/modules-available/dozmod/lang/de/permissions.json index df913265..ad099d37 100644 --- a/modules-available/dozmod/lang/de/permissions.json +++ b/modules-available/dozmod/lang/de/permissions.json @@ -1,6 +1,8 @@ { "actionlog.view": "Aktions-Log einsehen.", "expiredimages.delete": "Zur L\u00f6schung vorgemerkete Abbilder l\u00f6schen.", + "ldapfilters.save": "LDAP Filter speichern.", + "ldapfilters.view": "LDAP Filter einsehen.", "mailconfig.save": "\u00c4nderungen an der SMTP-Konfiguration zum Versenden von Mails speichern.", "runtimeconfig.save": "\u00c4nderungen an der Laufzeit-Konfiguration speichern.", "templates.reset": "E-Mail Templates zur\u00fccksetzen.", diff --git a/modules-available/dozmod/lang/de/template-tags.json b/modules-available/dozmod/lang/de/template-tags.json index 84f6e0de..7fbeda37 100644 --- a/modules-available/dozmod/lang/de/template-tags.json +++ b/modules-available/dozmod/lang/de/template-tags.json @@ -35,6 +35,14 @@ "lang_lastEditor": "Zuletzt bearbeitet von", "lang_lastLogin": "Letzte Anmeldung", "lang_latestVersion": "Neuste Version", + "lang_ldapFilterAdd": "LDAP Filter Hinzuf\u00fcgen", + "lang_ldapFilterAttribute": "Attribut", + "lang_ldapFilterDeleteConfirmation": "Willst du diesen LDAP Filter wirklich L\u00f6schen.", + "lang_ldapFilterDescription": "Dies sind die Filter, die ein Benutzer in der bwLehrpool-Suite Veranstaltungen hinzuf\u00fcgen kann.", + "lang_ldapFilterEdit": "LDAP Filter bearbeiten", + "lang_ldapFilterName": "Filtername", + "lang_ldapfilters": "LDAP Filter", + "lang_ldapFilterValue": "Wert", "lang_lecture": "Veranstaltung", "lang_lecturePermissionAdmin": "Administration", "lang_lecturePermissionEdit": "Bearbeiten", diff --git a/modules-available/dozmod/lang/en/messages.json b/modules-available/dozmod/lang/en/messages.json index 6d7ea0ac..4d914406 100644 --- a/modules-available/dozmod/lang/en/messages.json +++ b/modules-available/dozmod/lang/en/messages.json @@ -3,6 +3,12 @@ "delete-images": "Delete: {{0}}", "dozmod-error": "Error communicating with the bwLehrpool-Suite server: {{0}}", "images-pending-delete-exist": "VMs marked for deletion: {{0}}", + "ldap-filter-created": "LDAP filter was successfully created", + "ldap-filter-deleted": "LDAP filter successfully deleted", + "ldap-invalid-filter-id": "Invalid LDAP filter id", + "ldap-filter-id-missing": "LDAP filter id was missing", + "ldap-filter-insert-failed": "LDAP filter could not be inserted into the database", + "ldap-filter-save-missing-information": "LDAP filter informations were missing", "mail-config-saved": "Mail config saved", "no-expired-images": "No expired VMs", "nothing-submitted": "There was nothing submitted", diff --git a/modules-available/dozmod/lang/en/module.json b/modules-available/dozmod/lang/en/module.json index b7a04762..c2b4439d 100644 --- a/modules-available/dozmod/lang/en/module.json +++ b/modules-available/dozmod/lang/en/module.json @@ -3,6 +3,7 @@ "page_title": "Manage the bwLehrpool-Suite", "submenu_actionlog": "action log", "submenu_expiredimages": "Expired VM versions", + "submenu_ldapfilters": "LDAP filters", "submenu_mailconfig": "email configuration", "submenu_runtimeconfig": "limits and defaults", "submenu_templates": "templates", diff --git a/modules-available/dozmod/lang/en/permissions.json b/modules-available/dozmod/lang/en/permissions.json index 0827c8d2..797f7c2f 100644 --- a/modules-available/dozmod/lang/en/permissions.json +++ b/modules-available/dozmod/lang/en/permissions.json @@ -1,6 +1,8 @@ { "actionlog.view": "View action log.", "expiredimages.delete": "Delete images marked for deletion.", + "ldapfilters.save": "Save LDAP filter.", + "ldapfilters.view": "View LDAP filters. ", "mailconfig.save": "Save SMTP configuration for sending mails.", "runtimeconfig.save": "Save limits and defaults of a runtime configuration.", "templates.reset": "Reset email templates.", diff --git a/modules-available/dozmod/lang/en/template-tags.json b/modules-available/dozmod/lang/en/template-tags.json index 3ee95e8c..4f9ab877 100644 --- a/modules-available/dozmod/lang/en/template-tags.json +++ b/modules-available/dozmod/lang/en/template-tags.json @@ -35,6 +35,14 @@ "lang_lastEditor": "Edited by", "lang_lastLogin": "Last login", "lang_latestVersion": "latest version", + "lang_ldapFilterAdd": "Add LDAP filter", + "lang_ldapFilterAttribute": "Attribute", + "lang_ldapFilterDeleteConfirmation": "Do you really want to delete this LDAP filter.", + "lang_ldapFilterDescription": "These are the LDAP filters that can be applied to lectures in the bwLehrpool-Suite.", + "lang_ldapFilterEdit": "Edit LDAP filter", + "lang_ldapFilterName": "Filter name", + "lang_ldapfilters": "LDAP filters", + "lang_ldapFilterValue": "Value", "lang_lecture": "Lecture", "lang_lecturePermissionAdmin": "Administrate", "lang_lecturePermissionEdit": "Edit", diff --git a/modules-available/dozmod/page.inc.php b/modules-available/dozmod/page.inc.php index a8e0da0e..47110dd0 100644 --- a/modules-available/dozmod/page.inc.php +++ b/modules-available/dozmod/page.inc.php @@ -5,7 +5,7 @@ class Page_DozMod extends Page /** @var bool true if we have a proper subpage */ private $haveSubPage = false; - private $validSections = ['expiredimages', 'mailconfig', 'templates', 'runtimeconfig', 'users', 'actionlog']; + private $validSections = ['expiredimages', 'mailconfig', 'templates', 'runtimeconfig', 'users', 'actionlog', 'ldapfilters']; private $section; @@ -60,6 +60,7 @@ class Page_DozMod extends Page Dictionary::translate('submenu_runtimeconfig', true); Dictionary::translate('submenu_users', true); Dictionary::translate('submenu_actionlog', true); + Dictionary::translate('submenu_ldapfilters', true); */ /* add sub-menus */ diff --git a/modules-available/dozmod/pages/ldapfilters.inc.php b/modules-available/dozmod/pages/ldapfilters.inc.php new file mode 100644 index 00000000..6b5ce2dc --- /dev/null +++ b/modules-available/dozmod/pages/ldapfilters.inc.php @@ -0,0 +1,119 @@ + $ldapfilters, + 'hasEditPermission' => User::hasPermission('ldapfilters.save') + ); + + Render::addTemplate('ldapfilters', $data); + } else if (self::$show === 'edit') { + $filterid = Request::get('filterid', false, 'int'); + + if ($filterid === false) { + Render::addTemplate('ldapfilter-add', array( + 'filterid' => 0 + )); + } else { + $ldapfilter = Database::queryFirst("SELECT * FROM sat.ldapfilter WHERE filterid=:id", array( 'id' => $filterid)); + + $data = array( + 'filterid' => $filterid, + 'filtername' => $ldapfilter['filtername'], + 'attribute' => $ldapfilter['attribute'], + 'value' => $ldapfilter['value'] + ); + Render::addTemplate('ldapfilter-add', $data); + } + } + } + + private function deleteLdapFilter() { + User::assertPermission('ldapfilters.save'); + $filterid = Request::post('filterid', false, 'int'); + if ($filterid === false) { + Message::addError('ldap-filter-id-missing'); + return; + } + $res = Database::exec("DELETE FROM sat.ldapfilter WHERE filterid=:id", array('id' => $filterid)); + if ($res !== 1) { + Message::addWarning('ldap-invalid-filter-id', $filterid); + } else { + Message::addSuccess('ldap-filter-deleted'); + } + } + + private function saveLdapFilter() { + $filterid = Request::post('filterid', '', 'int'); + $filtername = Request::post('filtername', false, 'string'); + $filterattribute = Request::post('attribute', false, 'string'); + $filtervalue = Request::post('value', false, 'string'); + + if ($filtername === false || $filterattribute === false || $filtervalue === false) { + Message::addError('ldap-filter-save-missing-information'); + return; + } + + if ($filterid === 0) { + // Insert filter in the db. + $res = Database::exec("INSERT INTO sat.ldapfilter (filtername, attribute, value) VALUES (:filtername, :attribute, :value)", array( + 'filtername' => $filtername, + 'attribute' => $filterattribute, + 'value' => $filtervalue + )); + + if ($res !== 1) { + Message::addError('ldap-filter-insert-failed'); + } else { + Message::addSuccess('ldap-filter-created'); + } + + } else { + // Update filter in the db. + $res = Database::exec("UPDATE sat.ldapfilter SET filtername=:filtername, attribute=:attribute, value=:value WHERE filterid=:filterid", array( + 'filterid' => $filterid, + 'filtername' => $filtername, + 'attribute' => $filterattribute, + 'value' => $filtervalue + )); + + if ($res !== 1) { + Message::addError('ldap-filter-insert-failed'); + } else { + Message::addSuccess('ldap-filter-created'); + } + + } + Util::redirect("?do=dozmod§ion=ldapfilters"); + } + + public static function doAjax() + { + + } + +} \ No newline at end of file diff --git a/modules-available/dozmod/permissions/permissions.json b/modules-available/dozmod/permissions/permissions.json index b9c82107..dc5a46ed 100644 --- a/modules-available/dozmod/permissions/permissions.json +++ b/modules-available/dozmod/permissions/permissions.json @@ -5,6 +5,12 @@ "actionlog.view": { "location-aware": false }, + "ldapfilters.view": { + "location-aware": false + }, + "ldapfilters.save": { + "location-aware": false + }, "mailconfig.save": { "location-aware": false }, diff --git a/modules-available/dozmod/templates/ldapfilter-add.html b/modules-available/dozmod/templates/ldapfilter-add.html new file mode 100644 index 00000000..c74fbcda --- /dev/null +++ b/modules-available/dozmod/templates/ldapfilter-add.html @@ -0,0 +1,39 @@ +

{{lang_ldapfilters}}

+ +
+
+ {{lang_ldapFilterEdit}} +
+
+ +

{{lang_ldapFilterDescription}}

+
+ + + +
+ + +
+
+ + +
+
+ + +
+ +
+ {{lang_cancel}} + +
+
+
+
+ + diff --git a/modules-available/dozmod/templates/ldapfilters.html b/modules-available/dozmod/templates/ldapfilters.html new file mode 100644 index 00000000..49ecc222 --- /dev/null +++ b/modules-available/dozmod/templates/ldapfilters.html @@ -0,0 +1,72 @@ +

{{lang_ldapfilters}}

+ + + + + + + {{#hasEditPermission}} + + + {{/hasEditPermission}} + + + + {{#ldapfilters}} + + + + + {{#hasEditPermission}} + + + {{/hasEditPermission}} + + {{/ldapfilters}} + +
{{lang_ldapFilterName}}{{lang_ldapFilterAttribute}}{{lang_ldapFilterValue}}{{lang_edit}}{{lang_delete}}
{{filtername}}{{attribute}}{{value}} + + + + + +
+ +{{#hasEditPermission}} +
+ + + {{lang_ldapFilterAdd}} + +
+{{/hasEditPermission}} + +
+ + + +
+ + -- cgit v1.2.3-55-g7522 From 541b9aae3a8f96b0a800dbccf348e360c92a292c Mon Sep 17 00:00:00 2001 From: Udo Walter Date: Fri, 23 Nov 2018 00:10:20 +0100 Subject: [dozmod] add network share submodule --- modules-available/dozmod/lang/de/messages.json | 2 + modules-available/dozmod/lang/de/module.json | 1 + modules-available/dozmod/lang/de/permissions.json | 2 + .../dozmod/lang/de/template-tags.json | 11 +++ modules-available/dozmod/lang/en/messages.json | 2 + modules-available/dozmod/lang/en/module.json | 1 + modules-available/dozmod/lang/en/permissions.json | 2 + .../dozmod/lang/en/template-tags.json | 11 +++ modules-available/dozmod/page.inc.php | 3 +- .../dozmod/pages/networkshares.inc.php | 63 ++++++++++++++ .../dozmod/permissions/permissions.json | 6 ++ .../dozmod/templates/networkshares-edit.html | 85 +++++++++++++++++++ .../dozmod/templates/networkshares.html | 95 ++++++++++++++++++++++ 13 files changed, 283 insertions(+), 1 deletion(-) create mode 100644 modules-available/dozmod/pages/networkshares.inc.php create mode 100644 modules-available/dozmod/templates/networkshares-edit.html create mode 100644 modules-available/dozmod/templates/networkshares.html (limited to 'modules-available/dozmod/lang/en/module.json') diff --git a/modules-available/dozmod/lang/de/messages.json b/modules-available/dozmod/lang/de/messages.json index 60c37927..85b8ca70 100644 --- a/modules-available/dozmod/lang/de/messages.json +++ b/modules-available/dozmod/lang/de/messages.json @@ -4,6 +4,8 @@ "dozmod-error": "Fehler bei der Kommunikation mit dem bwLehrpool-Suite server: {{0}}", "images-pending-delete-exist": "Zur L\u00f6schung markierte VM-Versionen: {{0}}", "mail-config-saved": "Mail-Konfiguration gespeichert", + "networkshare-deleted": "Netzlaufwerk gel\u00f6scht", + "networkshare-saved": "Netzlaufwerk gespeichert", "no-expired-images": "Keine Abgelaufenen VM-Versionen", "nothing-submitted": "Es wurde nichts \u00fcbermittelt", "runtimelimits-config-saved": "Einstellungen gespeichert", diff --git a/modules-available/dozmod/lang/de/module.json b/modules-available/dozmod/lang/de/module.json index c9acd4ee..7bd3e0c0 100644 --- a/modules-available/dozmod/lang/de/module.json +++ b/modules-available/dozmod/lang/de/module.json @@ -4,6 +4,7 @@ "submenu_actionlog": "Aktions-Log", "submenu_expiredimages": "Abgelaufene VM-Versionen", "submenu_mailconfig": "Email-Konfiguration", + "submenu_networkshares": "Netzlaufwerke", "submenu_runtimeconfig": "Limits und Standardwerte", "submenu_templates": "Textbausteine f\u00fcr E-Mails", "submenu_users": "Benutzer und Berechtigungen" diff --git a/modules-available/dozmod/lang/de/permissions.json b/modules-available/dozmod/lang/de/permissions.json index df913265..53cbf1d8 100644 --- a/modules-available/dozmod/lang/de/permissions.json +++ b/modules-available/dozmod/lang/de/permissions.json @@ -2,6 +2,8 @@ "actionlog.view": "Aktions-Log einsehen.", "expiredimages.delete": "Zur L\u00f6schung vorgemerkete Abbilder l\u00f6schen.", "mailconfig.save": "\u00c4nderungen an der SMTP-Konfiguration zum Versenden von Mails speichern.", + "networkshares.save": "Netzlaufwerke einsehen.", + "networkshares.view": "\u00c4nderungen an den Netzlaufwerken speichern.", "runtimeconfig.save": "\u00c4nderungen an der Laufzeit-Konfiguration speichern.", "templates.reset": "E-Mail Templates zur\u00fccksetzen.", "templates.save": "E-Mail Templates speichern.", diff --git a/modules-available/dozmod/lang/de/template-tags.json b/modules-available/dozmod/lang/de/template-tags.json index 84f6e0de..fa4b49f5 100644 --- a/modules-available/dozmod/lang/de/template-tags.json +++ b/modules-available/dozmod/lang/de/template-tags.json @@ -1,8 +1,11 @@ { "lang_actionTarget": "Aktionsziel", + "lang_active": "Aktiv", + "lang_addShare": "Netzlaufwerk hinzufügen", "lang_allowLoginByDefault": "Login standardm\u00e4\u00dfig erlauben", "lang_allowLoginDescription": "Wenn diese Option aktiviert ist, k\u00f6nnen sich alle Mitarbeiter der Einrichtung \u00fcber die bwLehrpool-Suite anmelden und VMs\/Veranstaltungen verwalten. Wenn Sie diese Option deaktivieren, m\u00fcssen Sie in der Untersektion \"Benutzer und Berechtigungen\" jeden Benutzer nach dem ersten Loginversuch manuell freischalten.", "lang_asteriskRequired": "Felder mit (*) sind erforderlich", + "lang_authMethod": "Authentifizierung", "lang_blockCount": "Anzahl Bl\u00f6cke", "lang_bwlehrpoolsuite": "bwLehrpool-Suite", "lang_canLoginOrganization": "Nutzer dieser Einrichtung k\u00f6nnen sich am Satelliten anmelden", @@ -21,6 +24,7 @@ "lang_descriptionRuntimeLimits": "Hier k\u00f6nnen Sie verschiedene Limits festlegen, z.B. wie lange eine VM nach dem Hochladen g\u00fcltig ist. Nach Ablauf dieses Zeitraums ist der Verantwortliche gezwungen, eine neue Version der VM hochzuladen. Damit k\u00f6nnen Sie das Ansammeln nicht mehr ben\u00f6tigter VMs eind\u00e4mmen. Weiterhin k\u00f6nnen Sie die maximale Anzahl gleichzeitiger Transfers pro Benutzer einschr\u00e4nken.\r\n\r\nVer\u00e4nderte Einstellungen wirken sich nicht auf bereits bestehende VMs aus.", "lang_description_delete_images": "Diese Liste zeigt VMs, die entweder abgelaufen sind, oder deren Datei besch\u00e4digt, verschoben oder gel\u00f6scht wurde. Diese Images sind zur Zeit im Lehrpool nicht verf\u00fcgbar, ihre endg\u00fcltige L\u00f6schung muss aber manuell best\u00e4tigt werden, um gr\u00f6\u00dfere Katastrophen durch Softwarefehler, verstellte Systemuhren etc. zu vermeiden.", "lang_dozmodLogHeading": "bwLehrpool-Suite Aktionslog", + "lang_editNetworkshare": "Netzlaufwerk bearbeiten", "lang_email": "EMail", "lang_emailNotifications": "EMail-Benachrichtigungen aktiviert", "lang_error": "Fehler", @@ -39,6 +43,7 @@ "lang_lecturePermissionAdmin": "Administration", "lang_lecturePermissionEdit": "Bearbeiten", "lang_loadDefaults": "Alle Texte auf Auslieferungszustand zur\u00fccksetzen", + "lang_loggedInUser": "Angemeldeter Nutzer", "lang_mailConfig": "SMTP-Konfiguration zum Versenden von Mails", "lang_mailDescription": "F\u00fcllen Sie die folgenden Felder aus, wenn sie m\u00f6chten, dass Dozierende per Mail benachrichtigt werden, falls eine von ihnen genutzte oder erstellte VM oder Veranstaltung abl\u00e4uft. Um diese Funktion zu deaktivieren, lassen Sie eines der mit (*) gekennzeichneten Felder leer. Wenn das hier angegebene E-Mail-Konto nur zum Versenden von Mails genutzt wird, sollten Sie einen Auto-Responder einrichten f\u00fcr den Fall, dass ein Dozierender auf eine der automatisch generierten Mails antwortet (bzw. eine explizit angegebene Reply-To Adresse ignoriert).", "lang_mailTemplates": "E-Mail Templates", @@ -48,11 +53,14 @@ "lang_maxTransfers": "Maximale Zahl gleichzeitiger Up-\/Downloads pro Benutzer", "lang_miscOptions": "Verschiedene Einstellungen", "lang_modified": "Modifiziert", + "lang_name": "Name", + "lang_networkshares": "Netzlaufwerke", "lang_organization": "Einrichtung", "lang_organizationListHeader": "Nutzungsrechte f\u00fcr den Satelliten festlegen", "lang_os": "Betriebssystem", "lang_owner": "Besitzer", "lang_passwordplaceholder": "SMTP Passwort", + "lang_path": "Pfad", "lang_placeholders": "Platzhalter", "lang_port": "Port", "lang_reallyResetTemplates": "Sind Sie sicher, dass Sie alle Texte l\u00f6schen und auf die Standardwerte zur\u00fccksetzen wollen?", @@ -61,15 +69,18 @@ "lang_runtimeConfig": "Laufzeit-Konfiguration", "lang_runtimeConfigLimits": "Beschr\u00e4nkungen", "lang_senderAddress": "Absenderadresse", + "lang_shareDeleteConfirm": "Willst du dieses Netzlaufwerk wirklich l\u00f6schen?", "lang_senderName": "Absender Anzeigename", "lang_size": "Gr\u00f6\u00dfe", "lang_spaceWastedDuplication": "Potentiell durch mehrfach vorkommende Bl\u00f6cke belegter Speicherplatz", + "lang_specificUser": "Spezifischer Nutzer", "lang_ssl": "SSL-Modus", "lang_sslExplicit": "Explizites SSL (\"STARTTLS\")", "lang_sslImplicit": "Implizites SSL", "lang_sslNone": "Kein SSL", "lang_superUser": "Ist SuperUser (darf alle Veranstaltungen und VMs bearbeiten\/l\u00f6schen)", "lang_system": "System", + "lang_target": "Ziel", "lang_template": "Template", "lang_templatePageDescription": "Hier k\u00f6nnen Sie die Textbausteine bearbeiten, aus denen die Mails generiert werden, die der bwLehrpool-Server bez\u00fcglich Virtueller Maschinen und Veranstaltungen versendet. Diese Funktionalit\u00e4t unterst\u00fctzt zur Zeit keine Internationalisierung.", "lang_test": "Test-Mail senden", diff --git a/modules-available/dozmod/lang/en/messages.json b/modules-available/dozmod/lang/en/messages.json index 6d7ea0ac..8d309d1d 100644 --- a/modules-available/dozmod/lang/en/messages.json +++ b/modules-available/dozmod/lang/en/messages.json @@ -4,6 +4,8 @@ "dozmod-error": "Error communicating with the bwLehrpool-Suite server: {{0}}", "images-pending-delete-exist": "VMs marked for deletion: {{0}}", "mail-config-saved": "Mail config saved", + "networkshare-deleted": "Network share deleted", + "networkshare-saved": "Network share saved", "no-expired-images": "No expired VMs", "nothing-submitted": "There was nothing submitted", "runtimelimits-config-saved": "Configuration saved successfully", diff --git a/modules-available/dozmod/lang/en/module.json b/modules-available/dozmod/lang/en/module.json index b7a04762..91ebf304 100644 --- a/modules-available/dozmod/lang/en/module.json +++ b/modules-available/dozmod/lang/en/module.json @@ -4,6 +4,7 @@ "submenu_actionlog": "action log", "submenu_expiredimages": "Expired VM versions", "submenu_mailconfig": "email configuration", + "submenu_networkshares": "Network Shares", "submenu_runtimeconfig": "limits and defaults", "submenu_templates": "templates", "submenu_users": "users and permissions" diff --git a/modules-available/dozmod/lang/en/permissions.json b/modules-available/dozmod/lang/en/permissions.json index 0827c8d2..c1e44504 100644 --- a/modules-available/dozmod/lang/en/permissions.json +++ b/modules-available/dozmod/lang/en/permissions.json @@ -2,6 +2,8 @@ "actionlog.view": "View action log.", "expiredimages.delete": "Delete images marked for deletion.", "mailconfig.save": "Save SMTP configuration for sending mails.", + "networkshares.save": "View network drives.", + "networkshares.view": "Save network drives.", "runtimeconfig.save": "Save limits and defaults of a runtime configuration.", "templates.reset": "Reset email templates.", "templates.save": "Save email templates.", diff --git a/modules-available/dozmod/lang/en/template-tags.json b/modules-available/dozmod/lang/en/template-tags.json index 3ee95e8c..9cbc7378 100644 --- a/modules-available/dozmod/lang/en/template-tags.json +++ b/modules-available/dozmod/lang/en/template-tags.json @@ -1,8 +1,11 @@ { "lang_actionTarget": "Action target", + "lang_active": "Active", + "lang_addShare": "Add Network Share", "lang_allowLoginByDefault": "Allow all staff members to login and use the bwLehrpool-Suite", "lang_allowLoginDescription": "If this option is enabled, all members of the organization marked as staff or employee are allowed to login to this server and manage VMs\/courses. Otherwise, new users need to be individually allowed access after their first login attempt by visiting the sub page \"users and permissions\" in this web interface.", "lang_asteriskRequired": "Fields marked with (*) are required", + "lang_authMethod": "Authentication", "lang_blockCount": "Block count", "lang_bwlehrpoolsuite": "bwLehrpool-Suite", "lang_canLoginOrganization": "Users from this organization can login", @@ -21,6 +24,7 @@ "lang_descriptionRuntimeLimits": "Here you can define some limits, e.g. how long a newly uploaded VM will be valid. This should make sure that you don't end up with a lot of old, unused VMs over time.\r\n\r\nModified settings won't apply for already existing VMs.", "lang_description_delete_images": "This is a list of VMs that either expired, or where the disk image is damaged or missing. These VMs are not available in bwLehrpool currently, but you have to manually confirm the deletion of the disk images for safety reasons (clock skew etc.)", "lang_dozmodLogHeading": "bwLehrpool-Suite action log", + "lang_editNetworkshare": "Edit Network Share", "lang_email": "E-Mail", "lang_emailNotifications": "E-Mail notifications enabled", "lang_error": "Error", @@ -39,6 +43,7 @@ "lang_lecturePermissionAdmin": "Administrate", "lang_lecturePermissionEdit": "Edit", "lang_loadDefaults": "Reset all templates to their defaults", + "lang_loggedInUser": "Logged in User", "lang_mailConfig": "SMTP configuration for sending mails", "lang_mailDescription": "Fill in the following fields if you want to notify tutors\/professors\/lecturers about expiring VMs and lectures. If you leave one of the required fields blank, the feature will be disabled.", "lang_mailTemplates": "E-Mail Templates", @@ -48,11 +53,14 @@ "lang_maxTransfers": "Max concurrent transfers per user", "lang_miscOptions": "Misc options", "lang_modified": "modified", + "lang_name": "Name", + "lang_networkshares": "Network Shares", "lang_organization": "Organization", "lang_organizationListHeader": "Set access permissions for organizations", "lang_os": "Operating System", "lang_owner": "Owner", "lang_passwordplaceholder": "SMTP Password", + "lang_path": "Path", "lang_placeholders": "Placeholders", "lang_port": "Port", "lang_reallyResetTemplates": "Are you sure you want to reset all texts to their default values?", @@ -62,14 +70,17 @@ "lang_runtimeConfigLimits": "Limitations", "lang_senderAddress": "Sender address", "lang_senderName": "Sender's display name", + "lang_shareDeleteConfirm": "Do you really want to delete this network share?", "lang_size": "Size", "lang_spaceWastedDuplication": "Potentially wasted space by duplicate blocks", + "lang_specificUser": "Specific User", "lang_ssl": "SSL mode", "lang_sslExplicit": "Explicit SSL (\"STARTTLS\")", "lang_sslImplicit": "Implicit SSL", "lang_sslNone": "No SSL", "lang_superUser": "Is super user (can edit\/delete all lectures and VMs)", "lang_system": "System", + "lang_target": "Target", "lang_template": "Template", "lang_templatePageDescription": "Here you can edit text fragments that are used to compose the information and reminder mails sent by the bwLehrpool server, e.g. when a lecture or VM is about to expire.", "lang_test": "Send test mail", diff --git a/modules-available/dozmod/page.inc.php b/modules-available/dozmod/page.inc.php index a8e0da0e..9fc65f5f 100644 --- a/modules-available/dozmod/page.inc.php +++ b/modules-available/dozmod/page.inc.php @@ -5,7 +5,7 @@ class Page_DozMod extends Page /** @var bool true if we have a proper subpage */ private $haveSubPage = false; - private $validSections = ['expiredimages', 'mailconfig', 'templates', 'runtimeconfig', 'users', 'actionlog']; + private $validSections = ['expiredimages', 'mailconfig', 'templates', 'runtimeconfig', 'users', 'actionlog', 'networkshares']; private $section; @@ -60,6 +60,7 @@ class Page_DozMod extends Page Dictionary::translate('submenu_runtimeconfig', true); Dictionary::translate('submenu_users', true); Dictionary::translate('submenu_actionlog', true); + Dictionary::translate('submenu_networkshares', true); */ /* add sub-menus */ diff --git a/modules-available/dozmod/pages/networkshares.inc.php b/modules-available/dozmod/pages/networkshares.inc.php new file mode 100644 index 00000000..d0bbe03a --- /dev/null +++ b/modules-available/dozmod/pages/networkshares.inc.php @@ -0,0 +1,63 @@ + $shareid]); + if ($res) Message::addSuccess('networkshare-deleted'); + } + } else if ($action === 'save') { + User::assertPermission('networkshares.save'); + $shareid = Request::post('shareid', false, 'int'); + $sharename = Request::post('sharename', false, 'string'); + $path = Request::post('path', false, 'string'); + $target = Request::post('target', null, 'string'); + $username = Request::post('username', null, 'string'); + $password = Request::post('password', null, 'string'); + if ($sharename && $path) { + if ($shareid) { + Database::exec('UPDATE sat.presetnetworkshare SET sharename = :sharename, path = :path, target = :target, username = :username, password = :password' + .' WHERE shareid = :shareid', compact('shareid', 'sharename', 'path', 'target', 'username', 'password')); + } else { + Database::exec('INSERT INTO sat.presetnetworkshare (sharename, path, target, username, password, active)' + .' VALUES (:sharename, :path, :target, :username, :password, 0)', compact('sharename', 'path', 'target', 'username', 'password')); + } + Message::addSuccess('networkshare-saved'); + } + } else if ($action === 'toggleActive') { + User::assertPermission('networkshares.save'); + $shareid = Request::post('shareid', false, 'int'); + Database::exec('UPDATE sat.presetnetworkshare SET active = !active WHERE shareid = :shareid', compact('shareid')); + } + User::assertPermission('networkshares.view'); + } + + public static function doRender() + { + $show = Request::get('show', 'list', 'string'); + if ($show === 'list') { + $res = Database::simpleQuery('SELECT * FROM sat.presetnetworkshare;'); + $rows = array(); + while ($row = $res->fetch(PDO::FETCH_ASSOC)) { + $row['specificUser'] = $row['username'] && $row['password']; + $rows[] = $row; + } + Render::addTemplate('networkshares', ['networkshares' => $rows, 'hasEditPermissions' => User::hasPermission('networkshares.save')]); + } else if ($show === 'edit') { + $shareid = Request::get('shareid', 0, 'int'); + $data = Database::queryFirst('SELECT * FROM sat.presetnetworkshare WHERE shareid = :shareid', ['shareid' => $shareid]); + if ($data['username'] && $data['password']) $data['specificUser'] = 'selected'; + else $data['loggedInUser'] = 'selected'; + Render::addTemplate('networkshares-edit', $data); + } + } + +} diff --git a/modules-available/dozmod/permissions/permissions.json b/modules-available/dozmod/permissions/permissions.json index b9c82107..db20a3c0 100644 --- a/modules-available/dozmod/permissions/permissions.json +++ b/modules-available/dozmod/permissions/permissions.json @@ -8,6 +8,12 @@ "mailconfig.save": { "location-aware": false }, + "networkshares.view": { + "location-aware": false + }, + "networkshares.save": { + "location-aware": false + }, "runtimeconfig.save": { "location-aware": false }, diff --git a/modules-available/dozmod/templates/networkshares-edit.html b/modules-available/dozmod/templates/networkshares-edit.html new file mode 100644 index 00000000..32aa902f --- /dev/null +++ b/modules-available/dozmod/templates/networkshares-edit.html @@ -0,0 +1,85 @@ +

{{lang_networkshares}}

+ +
+
+ {{lang_editNetworkshare}} +
+
+
+ + + + +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + {{lang_cancel}} + + +
+
+
+
+ + \ No newline at end of file diff --git a/modules-available/dozmod/templates/networkshares.html b/modules-available/dozmod/templates/networkshares.html new file mode 100644 index 00000000..48506b4e --- /dev/null +++ b/modules-available/dozmod/templates/networkshares.html @@ -0,0 +1,95 @@ +

{{lang_networkshares}}

+ + + + + + + + + + {{#hasEditPermissions}} + + + + {{/hasEditPermissions}} + + + + {{#networkshares}} + + + + + + + {{#hasEditPermissions}} + + + + {{/hasEditPermissions}} + + {{/networkshares}} + +
{{lang_name}}{{lang_path}}{{lang_target}}{{lang_authMethod}}{{lang_username}}{{lang_active}}{{lang_edit}}{{lang_delete}}
{{sharename}}{{path}}{{#target}}{{.}}:{{/target}}{{#specificUser}}{{lang_specificUser}}{{/specificUser}}{{^specificUser}}{{lang_loggedInUser}}{{/specificUser}}{{#specificUser}}{{username}}{{/specificUser}} +
+ + + + +
+
+ + + + + +
+{{#hasEditPermissions}} +
+ + + {{lang_addShare}} + +
+{{/hasEditPermissions}} + + +
+ + + +
+ + \ No newline at end of file -- cgit v1.2.3-55-g7522 From 1ee6bdcda1b285b24829eefc9b9e0ca14b828f77 Mon Sep 17 00:00:00 2001 From: Udo Walter Date: Tue, 12 Feb 2019 11:44:51 +0100 Subject: [dozmod] Add UI to create preset network rules --- modules-available/dozmod/lang/de/messages.json | 6 ++ modules-available/dozmod/lang/de/module.json | 1 + modules-available/dozmod/lang/de/permissions.json | 2 + .../dozmod/lang/de/template-tags.json | 4 + modules-available/dozmod/lang/en/messages.json | 6 ++ modules-available/dozmod/lang/en/module.json | 1 + modules-available/dozmod/lang/en/permissions.json | 2 + .../dozmod/lang/en/template-tags.json | 4 + modules-available/dozmod/page.inc.php | 2 +- .../dozmod/pages/networkrules.inc.php | 98 ++++++++++++++++++++++ .../dozmod/permissions/permissions.json | 6 ++ .../dozmod/templates/networkrules-edit.html | 43 ++++++++++ .../dozmod/templates/networkrules.html | 82 ++++++++++++++++++ 13 files changed, 256 insertions(+), 1 deletion(-) create mode 100644 modules-available/dozmod/pages/networkrules.inc.php create mode 100644 modules-available/dozmod/templates/networkrules-edit.html create mode 100644 modules-available/dozmod/templates/networkrules.html (limited to 'modules-available/dozmod/lang/en/module.json') diff --git a/modules-available/dozmod/lang/de/messages.json b/modules-available/dozmod/lang/de/messages.json index 4a4be923..805472d0 100644 --- a/modules-available/dozmod/lang/de/messages.json +++ b/modules-available/dozmod/lang/de/messages.json @@ -11,6 +11,12 @@ "ldap-filter-saved": "LDAP Filter wurde erfolgreich gespeichert", "ldap-invalid-filter-id": "Ung\u00fcltige LDAP Filter ID", "mail-config-saved": "Mail-Konfiguration gespeichert", + "networkrule-deleted": "Netzwerk-Regel gel\u00f6scht", + "networkrule-invalid-direction": "Ung\u00fcltige Richtung: {{0}}", + "networkrule-invalid-ruleid": "Nicht-existierende Regel: {{0}}", + "networkrule-missing-host": "Fehlende Hostangabe", + "networkrule-missing-port": "Fehlende Portangabe", + "networkrule-saved": "Netzwerk-Regel gespeichert", "networkshare-deleted": "Netzlaufwerk gel\u00f6scht", "networkshare-invalid-auth-type": "Ung\u00fcltiger Authentifizierungs-Typ: {{0}}", "networkshare-invalid-shareid": "Nicht-existierender Share: {{0}}", diff --git a/modules-available/dozmod/lang/de/module.json b/modules-available/dozmod/lang/de/module.json index 8902852a..ff4519a7 100644 --- a/modules-available/dozmod/lang/de/module.json +++ b/modules-available/dozmod/lang/de/module.json @@ -5,6 +5,7 @@ "submenu_expiredimages": "Abgelaufene VM-Versionen", "submenu_ldapfilters": "LDAP-Filter", "submenu_mailconfig": "Email-Konfiguration", + "submenu_networkrules": "Netzwerk-Regeln", "submenu_networkshares": "Netzlaufwerke", "submenu_runscripts": "Startskripte", "submenu_runtimeconfig": "Limits und Standardwerte", diff --git a/modules-available/dozmod/lang/de/permissions.json b/modules-available/dozmod/lang/de/permissions.json index a1675148..6475f7ab 100644 --- a/modules-available/dozmod/lang/de/permissions.json +++ b/modules-available/dozmod/lang/de/permissions.json @@ -4,6 +4,8 @@ "ldapfilters.save": "LDAP Filter speichern.", "ldapfilters.view": "LDAP Filter einsehen.", "mailconfig.save": "\u00c4nderungen an der SMTP-Konfiguration zum Versenden von Mails speichern.", + "networkrules.save": "Netzwerk-Regeln einsehen.", + "networkrules.view": "\u00c4nderungen an den Netzwerk-Regeln speichern.", "networkshares.save": "Netzlaufwerke einsehen.", "networkshares.view": "\u00c4nderungen an den Netzlaufwerken speichern.", "runscripts.save": "Startkripte erstellen\/bearbeiten", diff --git a/modules-available/dozmod/lang/de/template-tags.json b/modules-available/dozmod/lang/de/template-tags.json index 0a719057..320c7592 100644 --- a/modules-available/dozmod/lang/de/template-tags.json +++ b/modules-available/dozmod/lang/de/template-tags.json @@ -1,6 +1,7 @@ { "lang_actionTarget": "Aktionsziel", "lang_active": "Aktiv", + "lang_addRule": "Netzwerk-Regel hinzuf\u00fcgen", "lang_addShare": "Netzlaufwerk hinzuf\u00fcgen", "lang_allowLoginByDefault": "Login standardm\u00e4\u00dfig erlauben", "lang_allowLoginDescription": "Wenn diese Option aktiviert ist, k\u00f6nnen sich alle Mitarbeiter der Einrichtung \u00fcber die bwLehrpool-Suite anmelden und VMs\/Veranstaltungen verwalten. Wenn Sie diese Option deaktivieren, m\u00fcssen Sie in der Untersektion \"Benutzer und Berechtigungen\" jeden Benutzer nach dem ersten Loginversuch manuell freischalten.", @@ -23,7 +24,9 @@ "lang_descriptionPermissionConfig": "Dies sind die Berechtigungen, die ein Benutzer standardm\u00e4\u00dfig f\u00fcr fremde VMs\/Veranstaltungen hat. Sie werden angewandt, wenn der Besitzer keine anderweitigen Berechtigungen w\u00e4hlt.", "lang_descriptionRuntimeLimits": "Hier k\u00f6nnen Sie verschiedene Limits festlegen, z.B. wie lange eine VM nach dem Hochladen g\u00fcltig ist. Nach Ablauf dieses Zeitraums ist der Verantwortliche gezwungen, eine neue Version der VM hochzuladen. Damit k\u00f6nnen Sie das Ansammeln nicht mehr ben\u00f6tigter VMs eind\u00e4mmen. Weiterhin k\u00f6nnen Sie die maximale Anzahl gleichzeitiger Transfers pro Benutzer einschr\u00e4nken.\r\n\r\nVer\u00e4nderte Einstellungen wirken sich nicht auf bereits bestehende VMs aus.", "lang_description_delete_images": "Diese Liste zeigt VMs, die entweder abgelaufen sind, oder deren Datei besch\u00e4digt, verschoben oder gel\u00f6scht wurde. Diese Images sind zur Zeit im Lehrpool nicht verf\u00fcgbar, ihre endg\u00fcltige L\u00f6schung muss aber manuell best\u00e4tigt werden, um gr\u00f6\u00dfere Katastrophen durch Softwarefehler, verstellte Systemuhren etc. zu vermeiden.", + "lang_direction": "Richtung", "lang_dozmodLogHeading": "bwLehrpool-Suite Aktionslog", + "lang_editNetworkrule": "Netzwerk-Regel bearbeiten", "lang_editNetworkshare": "Netzlaufwerk bearbeiten", "lang_editScript": "Startscript bearbeiten", "lang_email": "EMail", @@ -66,6 +69,7 @@ "lang_miscOptions": "Verschiedene Einstellungen", "lang_modified": "Modifiziert", "lang_name": "Name", + "lang_networkrules": "Netzwerk-Regeln", "lang_networkshares": "Netzlaufwerke", "lang_networksharesIntro": "Hier k\u00f6nnen Sie vordefinierte Netzlaufwerke anlegen, die den Nutzern der bwLehrpool-Suite zur Auswahl gestellt werden. Es ist den Nutzern der bwLehrpool-Suite weiterhin m\u00f6glich, komplett eigene Netzwerkfreigaben zu definieren. Die Angaben hier sollen lediglich das Hinzuf\u00fcgen h\u00e4ufig genutzter Laufwerke vereinfachen, bzw. das \u00c4ndern eines Netzwerkpfades vereinfachen, da in diesem Fall nur der Zentrale Eintrag hier angepasst werden muss, und nicht mehr wie zuvor jede Veranstaltung einzeln.", "lang_none": "(Keiner)", diff --git a/modules-available/dozmod/lang/en/messages.json b/modules-available/dozmod/lang/en/messages.json index d09ff279..6d8296ec 100644 --- a/modules-available/dozmod/lang/en/messages.json +++ b/modules-available/dozmod/lang/en/messages.json @@ -11,6 +11,12 @@ "ldap-filter-saved": "Successfully modified LDAP filter", "ldap-invalid-filter-id": "Invalid LDAP filter id", "mail-config-saved": "Mail config saved", + "networkrule-deleted": "Network rule deleted", + "networkrule-invalid-direction": "Invalid direction: {{0}}", + "networkrule-invalid-ruleid": "Invalid rule id: {{0}}", + "networkrule-missing-host": "Missing host", + "networkrule-missing-port": "Missing port", + "networkrule-saved": "Network rule saved", "networkshare-deleted": "Network share deleted", "networkshare-invalid-auth-type": "Invalid auth type: {{0}}", "networkshare-invalid-shareid": "Invalid share id: {{0}}", diff --git a/modules-available/dozmod/lang/en/module.json b/modules-available/dozmod/lang/en/module.json index 4e3969ff..8967493d 100644 --- a/modules-available/dozmod/lang/en/module.json +++ b/modules-available/dozmod/lang/en/module.json @@ -5,6 +5,7 @@ "submenu_expiredimages": "Expired VM versions", "submenu_ldapfilters": "LDAP filters", "submenu_mailconfig": "email configuration", + "submenu_networkrules": "Network Rules", "submenu_networkshares": "Network Shares", "submenu_runtimeconfig": "limits and defaults", "submenu_templates": "templates", diff --git a/modules-available/dozmod/lang/en/permissions.json b/modules-available/dozmod/lang/en/permissions.json index d45e5207..dec3171a 100644 --- a/modules-available/dozmod/lang/en/permissions.json +++ b/modules-available/dozmod/lang/en/permissions.json @@ -4,6 +4,8 @@ "ldapfilters.save": "Save LDAP filter.", "ldapfilters.view": "View LDAP filters. ", "mailconfig.save": "Save SMTP configuration for sending mails.", + "networkrules.save": "View network rules.", + "networkrules.view": "Save network rules.", "networkshares.save": "View network drives.", "networkshares.view": "Save network drives.", "runtimeconfig.save": "Save limits and defaults of a runtime configuration.", diff --git a/modules-available/dozmod/lang/en/template-tags.json b/modules-available/dozmod/lang/en/template-tags.json index ddc89284..3f2ae1fc 100644 --- a/modules-available/dozmod/lang/en/template-tags.json +++ b/modules-available/dozmod/lang/en/template-tags.json @@ -1,6 +1,7 @@ { "lang_actionTarget": "Action target", "lang_active": "Active", + "lang_addRule": "Add Network Rule", "lang_addShare": "Add Network Share", "lang_allowLoginByDefault": "Allow all staff members to login and use the bwLehrpool-Suite", "lang_allowLoginDescription": "If this option is enabled, all members of the organization marked as staff or employee are allowed to login to this server and manage VMs\/courses. Otherwise, new users need to be individually allowed access after their first login attempt by visiting the sub page \"users and permissions\" in this web interface.", @@ -23,7 +24,9 @@ "lang_descriptionPermissionConfig": "These are the default permissions being used for VMs and lectures if the owner does not specify any.", "lang_descriptionRuntimeLimits": "Here you can define some limits, e.g. how long a newly uploaded VM will be valid. This should make sure that you don't end up with a lot of old, unused VMs over time.\r\n\r\nModified settings won't apply for already existing VMs.", "lang_description_delete_images": "This is a list of VMs that either expired, or where the disk image is damaged or missing. These VMs are not available in bwLehrpool currently, but you have to manually confirm the deletion of the disk images for safety reasons (clock skew etc.)", + "lang_direction": "Direction", "lang_dozmodLogHeading": "bwLehrpool-Suite action log", + "lang_editNetworkrule": "Edit Network Rule", "lang_editNetworkshare": "Edit Network Share", "lang_email": "E-Mail", "lang_emailNotifications": "E-Mail notifications enabled", @@ -63,6 +66,7 @@ "lang_miscOptions": "Misc options", "lang_modified": "modified", "lang_name": "Name", + "lang_networkrules": "Network Rules", "lang_networkshares": "Network Shares", "lang_networksharesIntro": "This is the list of predefined network shares. bwLehrpool-Suite users can still add custom network shares to their lectures, however having commonly used network shares as predefined entries should be much more convenient. Another advantage is that changing the path of a network share centrally avoids having to edit a dozen lectures' configuration manually.", "lang_none": "(none)", diff --git a/modules-available/dozmod/page.inc.php b/modules-available/dozmod/page.inc.php index 776109cf..b772890f 100644 --- a/modules-available/dozmod/page.inc.php +++ b/modules-available/dozmod/page.inc.php @@ -5,7 +5,7 @@ class Page_DozMod extends Page /** @var bool true if we have a proper subpage */ private $haveSubPage = false; - private $validSections = ['expiredimages', 'mailconfig', 'templates', 'runtimeconfig', 'users', 'actionlog', 'networkshares', 'ldapfilters', 'runscripts']; + private $validSections = ['expiredimages', 'mailconfig', 'templates', 'runtimeconfig', 'users', 'actionlog', 'networkshares', 'ldapfilters', 'runscripts', 'networkrules']; private $section; diff --git a/modules-available/dozmod/pages/networkrules.inc.php b/modules-available/dozmod/pages/networkrules.inc.php new file mode 100644 index 00000000..6011e3ff --- /dev/null +++ b/modules-available/dozmod/pages/networkrules.inc.php @@ -0,0 +1,98 @@ + $ruleid]); + if ($res !== false) { + Message::addSuccess('networkrule-deleted'); + } + } + } else if ($action === 'save') { + User::assertPermission('networkrules.save'); + $ruleid = Request::post('ruleid', 0, 'int'); + $rulename = Request::post('rulename', '', 'string'); + $host = Request::post('host', '', 'string'); + $port = Request::post('port', '', 'string'); + $direction = Request::post('direction', '', 'string'); + + if (!in_array($direction, ['IN', 'OUT'], true)) { + Message::addError('networkrule-invalid-direction', $direction); + } elseif (empty($host)) { + Message::addError('networkrule-missing-host'); + } elseif (empty($port)) { + Message::addError('networkrule-missing-port'); + } else { + $data = json_encode([ + 'host' => $host, + 'port' => $port, + 'direction' => $direction + ]); + if ($ruleid !== 0) { + Database::exec('UPDATE sat.presetnetworkrules SET rulename = :rulename, ruledata = :data' + .' WHERE ruleid = :ruleid', compact('ruleid', 'rulename', 'data')); + } else { + Database::exec('INSERT INTO sat.presetnetworkrules (rulename, ruledata)' + .' VALUES (:rulename, :data)', compact('rulename', 'data')); + } + Message::addSuccess('networkrule-saved'); + } + } + if (Request::isPost()) { + Util::redirect('?do=dozmod§ion=networkrules'); + } + User::assertPermission('networkrules.view'); + } + + public static function doRender() + { + $show = Request::get('show', 'list', 'string'); + if ($show === 'list') { + $res = Database::simpleQuery('SELECT ruleid, rulename, ruledata + FROM sat.presetnetworkrules ORDER BY rulename ASC'); + $rows = array(); + while ($row = $res->fetch(PDO::FETCH_ASSOC)) { + $dec = json_decode($row['ruledata'], true); + if (!is_array($dec)) { + $dec = []; + } + $rows[] = $row + $dec; + } + Render::addTemplate('networkrules', [ + 'networkrules' => $rows, + 'hasEditPermissions' => User::hasPermission('networkrules.save') + ]); + } else if ($show === 'edit') { + $ruleid = Request::get('ruleid', 0, 'int'); + if ($ruleid === 0) { + $data = []; + } else { + $data = Database::queryFirst('SELECT ruleid, rulename, ruledata + FROM sat.presetnetworkrules WHERE ruleid = :ruleid', ['ruleid' => $ruleid]); + if ($data === false) { + Message::addError('networkrule-invalid-ruleid', $ruleid); + Util::redirect('?do=dozmod§ion=networkrules'); + } + $dec = json_decode($data['ruledata'], true); + if (is_array($dec)) { + $data += $dec; + } + if ($data['direction'] === 'IN') { + $data['inSelected'] = 'selected'; + } else { + $data['outSelected'] = 'selected'; + } + } + Render::addTemplate('networkrules-edit', $data); + } + } + +} diff --git a/modules-available/dozmod/permissions/permissions.json b/modules-available/dozmod/permissions/permissions.json index 3f9cd604..c8958089 100644 --- a/modules-available/dozmod/permissions/permissions.json +++ b/modules-available/dozmod/permissions/permissions.json @@ -14,6 +14,12 @@ "mailconfig.save": { "location-aware": false }, + "networkrules.view": { + "location-aware": false + }, + "networkrules.save": { + "location-aware": false + }, "networkshares.view": { "location-aware": false }, diff --git a/modules-available/dozmod/templates/networkrules-edit.html b/modules-available/dozmod/templates/networkrules-edit.html new file mode 100644 index 00000000..c04e2825 --- /dev/null +++ b/modules-available/dozmod/templates/networkrules-edit.html @@ -0,0 +1,43 @@ +

{{lang_networkrules}}

+ +
+
+ {{lang_editNetworkrule}} +
+
+
+ + + + +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + {{lang_cancel}} + + +
+
+
+
\ No newline at end of file diff --git a/modules-available/dozmod/templates/networkrules.html b/modules-available/dozmod/templates/networkrules.html new file mode 100644 index 00000000..4344ff4f --- /dev/null +++ b/modules-available/dozmod/templates/networkrules.html @@ -0,0 +1,82 @@ +

{{lang_networkrules}}

+ +

+ {{lang_networkrulesIntro}} +

+ + + + + + + + + {{#hasEditPermissions}} + + + {{/hasEditPermissions}} + + + + {{#networkrules}} + + + + + + {{#hasEditPermissions}} + + + {{/hasEditPermissions}} + + {{/networkrules}} + +
{{lang_name}}{{lang_host}}{{lang_port}}{{lang_direction}}{{lang_edit}}{{lang_delete}}
{{rulename}}{{host}}{{port}}{{direction}} + + + + + +
+{{#hasEditPermissions}} +
+ + + {{lang_addRule}} + +
+{{/hasEditPermissions}} + + +
+ + + +
+ + \ No newline at end of file -- cgit v1.2.3-55-g7522 From 4a2c2ab41e7c29b1966d02fc40b7c7257b01f8d7 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Mon, 18 Feb 2019 15:51:27 +0100 Subject: Update translations --- modules-available/dozmod/lang/de/permissions.json | 12 ++-- .../dozmod/lang/de/template-tags.json | 4 +- modules-available/dozmod/lang/en/messages.json | 2 + modules-available/dozmod/lang/en/module.json | 1 + modules-available/dozmod/lang/en/permissions.json | 10 +-- .../dozmod/lang/en/template-tags.json | 20 ++++++ modules-available/dozmod/page.inc.php | 1 + modules-available/exams/lang/de/template-tags.json | 2 - modules-available/exams/lang/en/template-tags.json | 2 - modules-available/main/lang/de/categories.json | 3 +- modules-available/main/lang/en/categories.json | 3 +- .../serversetup-bwlp-ipxe/lang/de/messages.json | 3 +- .../serversetup-bwlp-ipxe/lang/de/permissions.json | 1 - .../lang/de/template-tags.json | 21 +----- .../serversetup-bwlp-ipxe/lang/en/messages.json | 17 ++++- .../serversetup-bwlp-ipxe/lang/en/module.json | 18 ++++- .../serversetup-bwlp-ipxe/lang/en/permissions.json | 7 +- .../lang/en/template-tags.json | 77 +++++++++++++++------- .../serversetup-bwlp-ipxe/page.inc.php | 2 +- .../sysconfig/lang/de/template-tags.json | 2 + .../sysconfig/lang/en/template-tags.json | 2 + 21 files changed, 142 insertions(+), 68 deletions(-) (limited to 'modules-available/dozmod/lang/en/module.json') diff --git a/modules-available/dozmod/lang/de/permissions.json b/modules-available/dozmod/lang/de/permissions.json index 6475f7ab..8e743e5c 100644 --- a/modules-available/dozmod/lang/de/permissions.json +++ b/modules-available/dozmod/lang/de/permissions.json @@ -4,12 +4,12 @@ "ldapfilters.save": "LDAP Filter speichern.", "ldapfilters.view": "LDAP Filter einsehen.", "mailconfig.save": "\u00c4nderungen an der SMTP-Konfiguration zum Versenden von Mails speichern.", - "networkrules.save": "Netzwerk-Regeln einsehen.", - "networkrules.view": "\u00c4nderungen an den Netzwerk-Regeln speichern.", - "networkshares.save": "Netzlaufwerke einsehen.", - "networkshares.view": "\u00c4nderungen an den Netzlaufwerken speichern.", - "runscripts.save": "Startkripte erstellen\/bearbeiten", - "runscripts.view": "Startscripte auflisten", + "networkrules.save": "\u00c4nderungen an den Netzwerk-Regeln speichern.", + "networkrules.view": "Netzwerk-Regeln einsehen.", + "networkshares.save": "\u00c4nderungen an den Netzlaufwerken speichern.", + "networkshares.view": "Netzlaufwerke einsehen.", + "runscripts.save": "Startkripte erstellen\/bearbeiten.", + "runscripts.view": "Startscripte auflisten.", "runtimeconfig.save": "\u00c4nderungen an der Laufzeit-Konfiguration speichern.", "templates.reset": "E-Mail Templates zur\u00fccksetzen.", "templates.save": "E-Mail Templates speichern.", diff --git a/modules-available/dozmod/lang/de/template-tags.json b/modules-available/dozmod/lang/de/template-tags.json index 320c7592..3e000676 100644 --- a/modules-available/dozmod/lang/de/template-tags.json +++ b/modules-available/dozmod/lang/de/template-tags.json @@ -70,6 +70,7 @@ "lang_modified": "Modifiziert", "lang_name": "Name", "lang_networkrules": "Netzwerk-Regeln", + "lang_networkrulesIntro": "Hier k\u00f6nnen Sie vordefinierte Regelsets f\u00fcr das Firewalling verwalten. Nutzer der bwLehrpool-Suite k\u00f6nnen auf diese Regelsets zur\u00fcckgreifen, um den Netzwerkzugriff ihrer Veranstaltungen einzuschr\u00e4nken.", "lang_networkshares": "Netzlaufwerke", "lang_networksharesIntro": "Hier k\u00f6nnen Sie vordefinierte Netzlaufwerke anlegen, die den Nutzern der bwLehrpool-Suite zur Auswahl gestellt werden. Es ist den Nutzern der bwLehrpool-Suite weiterhin m\u00f6glich, komplett eigene Netzwerkfreigaben zu definieren. Die Angaben hier sollen lediglich das Hinzuf\u00fcgen h\u00e4ufig genutzter Laufwerke vereinfachen, bzw. das \u00c4ndern eines Netzwerkpfades vereinfachen, da in diesem Fall nur der Zentrale Eintrag hier angepasst werden muss, und nicht mehr wie zuvor jede Veranstaltung einzeln.", "lang_none": "(Keiner)", @@ -86,6 +87,7 @@ "lang_reallyResetTemplates": "Sind Sie sicher, dass Sie alle Texte l\u00f6schen und auf die Standardwerte zur\u00fccksetzen wollen?", "lang_replaceWithOriginal": "Originaltext in Textbox laden", "lang_replyTo": "Reply-To Adresse", + "lang_ruleDeleteConfirm": "Soll dieses Regelset wirklich gel\u00f6scht werden?", "lang_runScriptAdd": "Skript hinzuf\u00fcgen", "lang_runScriptDeleteConfirmation": "Skript wirklich l\u00f6schen?", "lang_runtimeConfig": "Laufzeit-Konfiguration", @@ -129,4 +131,4 @@ "lang_usernameplaceholder": "SMTP-Benutzername", "lang_version": "Version vom", "lang_when": "Wann" -} +} \ No newline at end of file diff --git a/modules-available/dozmod/lang/en/messages.json b/modules-available/dozmod/lang/en/messages.json index 6d8296ec..2d813efc 100644 --- a/modules-available/dozmod/lang/en/messages.json +++ b/modules-available/dozmod/lang/en/messages.json @@ -24,6 +24,8 @@ "networkshare-saved": "Network share saved", "no-expired-images": "No expired VMs", "nothing-submitted": "There was nothing submitted", + "runscript-invalid-id": "Invalid script id: {{0}}", + "runscript-saved": "Script has been saved", "runtimelimits-config-saved": "Configuration saved successfully", "templates-saved": "Templates saved successfully", "timeout": "Timeout", diff --git a/modules-available/dozmod/lang/en/module.json b/modules-available/dozmod/lang/en/module.json index 8967493d..5bcee464 100644 --- a/modules-available/dozmod/lang/en/module.json +++ b/modules-available/dozmod/lang/en/module.json @@ -7,6 +7,7 @@ "submenu_mailconfig": "email configuration", "submenu_networkrules": "Network Rules", "submenu_networkshares": "Network Shares", + "submenu_runscripts": "Startup scripts", "submenu_runtimeconfig": "limits and defaults", "submenu_templates": "templates", "submenu_users": "users and permissions" diff --git a/modules-available/dozmod/lang/en/permissions.json b/modules-available/dozmod/lang/en/permissions.json index dec3171a..b0fbb071 100644 --- a/modules-available/dozmod/lang/en/permissions.json +++ b/modules-available/dozmod/lang/en/permissions.json @@ -4,10 +4,12 @@ "ldapfilters.save": "Save LDAP filter.", "ldapfilters.view": "View LDAP filters. ", "mailconfig.save": "Save SMTP configuration for sending mails.", - "networkrules.save": "View network rules.", - "networkrules.view": "Save network rules.", - "networkshares.save": "View network drives.", - "networkshares.view": "Save network drives.", + "networkrules.save": "Save network rules.", + "networkrules.view": "View network rules.", + "networkshares.save": "Save network drives.", + "networkshares.view": "View network drives.", + "runscripts.save": "Save startup scripts.", + "runscripts.view": "View startup scripts.", "runtimeconfig.save": "Save limits and defaults of a runtime configuration.", "templates.reset": "Reset email templates.", "templates.save": "Save email templates.", diff --git a/modules-available/dozmod/lang/en/template-tags.json b/modules-available/dozmod/lang/en/template-tags.json index 3f2ae1fc..c33d872b 100644 --- a/modules-available/dozmod/lang/en/template-tags.json +++ b/modules-available/dozmod/lang/en/template-tags.json @@ -28,6 +28,7 @@ "lang_dozmodLogHeading": "bwLehrpool-Suite action log", "lang_editNetworkrule": "Edit Network Rule", "lang_editNetworkshare": "Edit Network Share", + "lang_editScript": "Edit start script", "lang_email": "E-Mail", "lang_emailNotifications": "E-Mail notifications enabled", "lang_error": "Error", @@ -37,6 +38,7 @@ "lang_hasNewer": "newer version exists", "lang_hash": "Hash", "lang_heading": "Images Marked for Deletion", + "lang_hidden": "Hidden", "lang_host": "Host", "lang_image": "VM", "lang_lastEditor": "Edited by", @@ -63,13 +65,16 @@ "lang_maxLectureVisibility": "Max time lecture end date may lie in the future (days)", "lang_maxLocationsPerLecture": "Max. explicit locations per lecture", "lang_maxTransfers": "Max concurrent transfers per user", + "lang_minimized": "Minimized", "lang_miscOptions": "Misc options", "lang_modified": "modified", "lang_name": "Name", "lang_networkrules": "Network Rules", + "lang_networkrulesIntro": "This is where you can create predefined rulesets for the lecture-based firewalling. bwLehrpool-Suite users can select those rulesets to limit network access of their lectures.", "lang_networkshares": "Network Shares", "lang_networksharesIntro": "This is the list of predefined network shares. bwLehrpool-Suite users can still add custom network shares to their lectures, however having commonly used network shares as predefined entries should be much more convenient. Another advantage is that changing the path of a network share centrally avoids having to edit a dozen lectures' configuration manually.", "lang_none": "(none)", + "lang_normal": "Normal", "lang_organization": "Organization", "lang_organizationListHeader": "Set access permissions for organizations", "lang_os": "Operating System", @@ -82,8 +87,23 @@ "lang_reallyResetTemplates": "Are you sure you want to reset all texts to their default values?", "lang_replaceWithOriginal": "load original text into text box", "lang_replyTo": "Reply-To address", + "lang_ruleDeleteConfirm": "Do you want to delete this ruleset?", + "lang_runScriptAdd": "Add run-script", + "lang_runScriptDeleteConfirmation": "Do you want to delete this run-script?", "lang_runtimeConfig": "Limits and Defaults", "lang_runtimeConfigLimits": "Limitations", + "lang_scriptContent": "Script content", + "lang_scriptExtension": "Script extension", + "lang_scriptExtensionHead": "Extension", + "lang_scriptIsGlobal": "Global script, will execute in every lecture environment", + "lang_scriptIsGlobalHead": "Global", + "lang_scriptIsPredefined": "Predefined script, selectable by bwLehrpool-Suite users for individual lectures", + "lang_scriptPassCredentials": "Pass username and password to this script", + "lang_scriptPassCredentialsHead": "User\/Pass", + "lang_scriptVisibility": "Display mode", + "lang_scriptVisibilityHead": "Display", + "lang_scriptsHead": "Run-scripts for lecture environments", + "lang_scriptsIntro": "Here you can define scripts that will either forcefully run at startup of a lecture, or are selectable by bwLehrpool-Suite users.", "lang_senderAddress": "Sender address", "lang_senderName": "Sender's display name", "lang_shareDeleteConfirm": "Do you really want to delete this network share?", diff --git a/modules-available/dozmod/page.inc.php b/modules-available/dozmod/page.inc.php index b772890f..67b791d1 100644 --- a/modules-available/dozmod/page.inc.php +++ b/modules-available/dozmod/page.inc.php @@ -63,6 +63,7 @@ class Page_DozMod extends Page Dictionary::translate('submenu_networkshares', true); Dictionary::translate('submenu_ldapfilters', true); Dictionary::translate('submenu_runscripts', true); + Dictionary::translate('submenu_networkrules', true); */ /* add sub-menus */ diff --git a/modules-available/exams/lang/de/template-tags.json b/modules-available/exams/lang/de/template-tags.json index 1dd51374..0fbaf0a1 100644 --- a/modules-available/exams/lang/de/template-tags.json +++ b/modules-available/exams/lang/de/template-tags.json @@ -1,5 +1,4 @@ { - "lang_actions": "Aktionen", "lang_addExam": "Zeitraum hinzuf\u00fcgen", "lang_addingBasedOnLecture": "F\u00fcge neuen Pr\u00fcfungszeitraum basierend auf vorhandener Veranstaltung an", "lang_allExamPeriods": "Alle Pr\u00fcfungszeitr\u00e4ume", @@ -16,7 +15,6 @@ "lang_deleteConfirmation": "Wirklich l\u00f6schen?", "lang_description": "Beschreibung", "lang_duration": "Dauer", - "lang_editExam": "Zeitraum bearbeiten", "lang_end": "Ende", "lang_end_date": "Ende Datum", "lang_end_time": "Uhrzeit", diff --git a/modules-available/exams/lang/en/template-tags.json b/modules-available/exams/lang/en/template-tags.json index 23266154..52173740 100644 --- a/modules-available/exams/lang/en/template-tags.json +++ b/modules-available/exams/lang/en/template-tags.json @@ -1,5 +1,4 @@ { - "lang_actions": "Actions", "lang_addExam": "Add exam period", "lang_addingBasedOnLecture": "Adding exam period based on lecture", "lang_allExamPeriods": "All Exam Periods", @@ -16,7 +15,6 @@ "lang_deleteConfirmation": "Are you sure?", "lang_description": "Description", "lang_duration": "Duration", - "lang_editExam": "Edit exam period", "lang_end": "End", "lang_end_date": "End Date", "lang_end_time": "Time", diff --git a/modules-available/main/lang/de/categories.json b/modules-available/main/lang/de/categories.json index 71f149ec..587200ed 100644 --- a/modules-available/main/lang/de/categories.json +++ b/modules-available/main/lang/de/categories.json @@ -3,6 +3,5 @@ "content": "Inhalt", "settings-client": "Einstellungen (Client)", "settings-server": "Einstellungen (Server)", - "status": "Status", - "users": "Benutzer" + "status": "Status" } \ No newline at end of file diff --git a/modules-available/main/lang/en/categories.json b/modules-available/main/lang/en/categories.json index 9dfa0404..f73f0a15 100644 --- a/modules-available/main/lang/en/categories.json +++ b/modules-available/main/lang/en/categories.json @@ -3,6 +3,5 @@ "content": "Content", "settings-client": "Settings (Client)", "settings-server": "Settings (Server)", - "status": "Status", - "users": "Users" + "status": "Status" } \ No newline at end of file diff --git a/modules-available/serversetup-bwlp-ipxe/lang/de/messages.json b/modules-available/serversetup-bwlp-ipxe/lang/de/messages.json index 0772a7e4..8c5aab54 100644 --- a/modules-available/serversetup-bwlp-ipxe/lang/de/messages.json +++ b/modules-available/serversetup-bwlp-ipxe/lang/de/messages.json @@ -16,6 +16,5 @@ "menu-set-default": "Standardmen\u00fc wurde gesetzt", "missing-bootentry-data": "Fehlende Daten f\u00fcr den Men\u00fceintrag", "no-ip-addr-set": "Bitte w\u00e4hlen Sie die prim\u00e4re IP-Adresse des Servers", - "no-such-menu": "Men\u00fc mit ID {{0}} existiert nicht", "unknown-bootentry-type": "Unbekannter Eintrags-Typ: {{0}}" -} +} \ No newline at end of file diff --git a/modules-available/serversetup-bwlp-ipxe/lang/de/permissions.json b/modules-available/serversetup-bwlp-ipxe/lang/de/permissions.json index 5cd02119..9d7e77c6 100644 --- a/modules-available/serversetup-bwlp-ipxe/lang/de/permissions.json +++ b/modules-available/serversetup-bwlp-ipxe/lang/de/permissions.json @@ -2,7 +2,6 @@ "access-page": "Seite sehen.", "download": "USB-Image herunterladen.", "edit.address": "Boot-Adresse des Servers ausw\u00e4hlen.", - "edit.menu": "Bootmen\u00fc anpassen.", "ipxe.bootentry.edit": "Einen Boot-Eintrag bearbeiten.", "ipxe.bootentry.view": "Liste aller Boot-Eintr\u00e4ge sehen.", "ipxe.localboot.edit": "Ausnahmeliste f\u00fcr Localboot-Modus bearbeiten.", diff --git a/modules-available/serversetup-bwlp-ipxe/lang/de/template-tags.json b/modules-available/serversetup-bwlp-ipxe/lang/de/template-tags.json index 198a1517..525b1562 100644 --- a/modules-available/serversetup-bwlp-ipxe/lang/de/template-tags.json +++ b/modules-available/serversetup-bwlp-ipxe/lang/de/template-tags.json @@ -10,12 +10,7 @@ "lang_assignMenuToLocation": "Ort ein Men\u00fc zuweisen", "lang_biosOnly": "Nur BIOS", "lang_bootAddress": "Boot-Adresse des Servers", - "lang_bootBehavior": "Standard-Bootverhalten", "lang_bootEntryData": "Daten des Men\u00fceintrags", - "lang_bootHint": "Das Bootmen\u00fc muss nach einer \u00c4nderung der IP-Adresse neu generiert werden. In der Regel geschieht dies automatisch, der Vorgang kann in der Sektion Bootmen\u00fc allerdings auch manuell ausgel\u00f6st werden.", - "lang_bootInfo": "Hier k\u00f6nnen Anpassungen am Erscheinungsbild des Bootmen\u00fcs vorgenommen werden.", - "lang_bootMenu": "Bootmen\u00fc", - "lang_bootMenuCreate": "Bootmen\u00fc erzeugen", "lang_bootentryDeleteConfirm": "Sind Sie sicher, dass Sie diesen Men\u00fceintrag l\u00f6schen wollen?", "lang_bootentryHead": "Men\u00fceintr\u00e4ge", "lang_bootentryIntro": "Hier k\u00f6nnen Sie Men\u00fceintr\u00e4ge definieren, die sich sp\u00e4ter einem Men\u00fc zuweisen lassen. Ein Men\u00fceintrag besteht entweder aus einem zu ladenen Kernel\/Image plus optional initrd, oder aus einem iPXE-Script.", @@ -23,7 +18,6 @@ "lang_chooseIP": "Bitte w\u00e4hlen Sie die IP-Adresse, \u00fcber die der Server von den Clients zum Booten angesprochen werden soll.", "lang_commandLine": "Command line", "lang_count": "Anzahl", - "lang_customEntry": "Eigener Eintrag", "lang_downloadBootImage": "Boot-Image herunterladen", "lang_downloadRufus": "Rufus herunterladen", "lang_editBuiltinWarn": "Achtung! Sie bearbeiten einen der vorgegebenen Eintr\u00e4ge! Bei einem Update k\u00f6nnten Ihre \u00c4nderungen wieder \u00fcberschrieben werden", @@ -32,13 +26,11 @@ "lang_entryChooserTitle": "Men\u00fceintrag ausw\u00e4hlen", "lang_entryId": "ID", "lang_entryTitle": "Bezeichnung", - "lang_example": "Beispiel", "lang_execAutoUnload": "Nach Ausf\u00fchrung entladen (--autofree)", "lang_execReplace": "Aktuellen iPXE-Stack erstzen (--replace)", "lang_execResetConsole": "Konsole vor Ausf\u00fchrung zur\u00fccksetzen", "lang_forceRecompile": "Jetzt neu compilieren", "lang_generationFailed": "Erzeugen des Bootmen\u00fcs fehlgeschlagen. Der Netzwerkboot von bwLehrpool wird wahrscheinlich nicht funktionieren. Wenn Sie den Fehler nicht selbst beheben k\u00f6nnen, melden Sie bitte die Logausgabe an das bwLehrpool-Projekt.", - "lang_globalMenuWarning": "Dieses Men\u00fc ist keinem Raum zugeordnet", "lang_hotkey": "Hotkey", "lang_idFormatHint": "(Max. 16 Zeichen, nur a-z 0-9 - _)", "lang_imageToLoad": "Zu ladendes Image (z.B. Kernel)", @@ -50,20 +42,11 @@ "lang_localBootExceptions": "Ausnahmen, pro Rechnermodell definierbar", "lang_localBootHead": "Boot von Festplatte", "lang_localBootIntro": "Aus dem iPXE Bootmen\u00fc kann auf verschiedene Arten ein Boot von der prim\u00e4ren Festplatte ausgel\u00f6st werden. In den allermeisten F\u00e4llen ist die Einstellung \"AUTO\" ausreichend, bei bestimmten Rechnermodellen kann es allerdings erforderlich sein, eine der alternativen Methoden zu erzwingen. Falls Sie einem solchen Modell begegnen, k\u00f6nnen Sie im unteren Teil dieser Seite eine solche Ausnahme festlegen. In einigen F\u00e4llen l\u00e4sst sich das Problem auch durch ein BIOS-Update auf den entsprechenden Ger\u00e4ten beheben.", - "lang_localHDD": "Lokale HDD", "lang_locationCount": "Anzahl Orte", - "lang_masterPassword": "Master-Passwort", - "lang_masterPasswordHelp": "Das Master-Passwort wird ben\u00f6tigt, um einen Men\u00fceintrag direkt am Client tempor\u00e4r durch Dr\u00fccken der Tab-Taste zu editieren. Da dies f\u00fcr Manipulation am Client genutzt werden kann, sollte diese Funktion unbedingt mit einem Passwort gesch\u00fctzt werden.", - "lang_menuCustom": "Benutzerdefinierter Men\u00fczusatz", - "lang_menuCustomHint1": "Hier haben Sie die M\u00f6glichkeit, eigenen Men\u00fc-Code zum angezeigten PXE-Men\u00fc hinzuzuf\u00fcgen, um z.B. auf weitere PXE-Server zu verweisen. Das Format entspricht dem syslinux Men\u00fcformat.", - "lang_menuCustomHint2": "Sie k\u00f6nnen ein oder mehrere Eintr\u00e4ge erzeugen. Wenn Sie einen Eintrag erzeugen m\u00f6chten, der automatisch gestartet wird, wenn der Benutzer keine Auswahl t\u00e4tigt, vergeben Sie als", - "lang_menuCustomHint3": "und w\u00e4hlen Sie als Standard-Bootverhalten ebenfalls custom.", "lang_menuDeleteConfirm": "Sind Sie sicher, dass Sie dieses Men\u00fc l\u00f6schen wollen?", - "lang_menuDisplayTime": "Anzeigedauer des Men\u00fcs", "lang_menuEntryOverride": "Standardeintrag \u00fcberschreiben", "lang_menuGeneration": "Erzeugen des Bootmen\u00fcs", "lang_menuListIntro": "Hier sehen Sie eine Liste aller vorhandenen Men\u00fcs, deren Zuordnung zu R\u00e4umen sowie die M\u00f6glichkeit, diese zu editieren oder l\u00f6schen. Um ein Men\u00fc einem bestimmten Raum zuzuweisen, besuchen Sie bitte den Men\u00fcpunkt \"R\u00e4ume\/Orte\".", - "lang_menuLocations": "Zugewiesene Orte", "lang_menuTimeout": "Timeout", "lang_menuTitle": "Men\u00fc", "lang_moduleHeading": "iPXE \/ Boot Menu", @@ -71,7 +54,6 @@ "lang_newMenu": "Neues Men\u00fc", "lang_none": "(keine)", "lang_override": "\u00dcberschreiben", - "lang_pxeBuilt": "PXE-Binary gebaut", "lang_recompileHint": "iPXE-Binaries jetzt neu kompilieren. Normalerweise wird dieser Vorgang bei \u00c4nderungen automatisch ausgef\u00fchrt. Sollten Bootprobleme auftreten, k\u00f6nnen Sie hier den Vorgang manuell ansto\u00dfen.", "lang_refCount": "Referenzen", "lang_referencingMenus": "Verkn\u00fcpfte Men\u00fcs", @@ -83,7 +65,6 @@ "lang_title": "Titel", "lang_typeExecEntry": "Standardeintrag", "lang_typeScriptEntry": "Benutzerdefiniertes Script", - "lang_usbBuilt": "USB-Image gebaut", "lang_usbImage": "USB-Image", "lang_usbImgHelp": "Mit dem USB-Image k\u00f6nnen Sie einen bootbaren USB-Stick erstellen, \u00fcber den sich bwLehrpool an Rechnern starten l\u00e4sst, die keinen Netzwerkboot unterst\u00fctzen, bzw. f\u00fcr die keine entsprechende DHCP-Konfiguration vorhanden ist. Dies erfordert dann lediglich, dass in der BIOS-Konfiguration des Rechners USB-Boot zugelassen ist. Der Stick dient dabei lediglich als Einstiegspunkt; es ist nach wie vor ein bwLehrpool-Satellitenserver f\u00fcr den eigentlichen Bootvorgang von N\u00f6ten.", "lang_usbImgHelpBtn": "Bootbaren USB-Stick erstellen", @@ -91,4 +72,4 @@ "lang_usbImgHelpWindows": "Unter Windows muss zun\u00e4chst ein Programm besorgt werden, mit dem sich Images direkt auf einen USB-Stick schreiben lassen. Es gibt gleich mehrere kostenlose und quelloffene Programme, eines davon ist Rufus. Rufus wurde mit dem bwLehrpool-Image gestetet. Nach dem Starten des Programms ist lediglich das heruntergeladene Image zu \u00f6ffnen, sowie in der Liste der Laufwerke der richtige USB-Stick auszuw\u00e4hlen (damit Sie nicht versehentlich Daten auf dem falschen Laufwerk \u00fcberschreiben!)", "lang_useDefaultMenu": "\u00dcbergeordnetes Men\u00fc verwenden", "lang_useDefaultMenuEntry": "(Vorgabe des Men\u00fcs)" -} +} \ No newline at end of file diff --git a/modules-available/serversetup-bwlp-ipxe/lang/en/messages.json b/modules-available/serversetup-bwlp-ipxe/lang/en/messages.json index d4ba6905..dcdf4be1 100644 --- a/modules-available/serversetup-bwlp-ipxe/lang/en/messages.json +++ b/modules-available/serversetup-bwlp-ipxe/lang/en/messages.json @@ -1,5 +1,20 @@ { + "boot-entry-created": "Created menu item {{0}}", + "boot-entry-updated": "Updated menu item {{0}}", + "bootentry-deleted": "Deleted menu item", + "error-saving-entry": "Error saving item {{0}}: {{1}}", "image-not-found": "USB image not found. Try regenerating the boot menu first.", + "invalid-boot-entry": "Invalid menu item: {{0}}", "invalid-ip": "No interface is configured with the address {{0}}", - "no-ip-addr-set": "Please set the server's primary IP address" + "invalid-menu-id": "Invalid menu id: {{0}}", + "localboot-invalid-method": "Invalid localboot method: {{0}}", + "localboot-saved": "Localboot settings have been saved", + "location-menu-assigned": "Assigned menu to {{0}}", + "location-use-default": "{{0}} is now using the inherited\/default menu", + "menu-deleted": "Menu deleted", + "menu-saved": "Menu saved", + "menu-set-default": "Default menu has been set", + "missing-bootentry-data": "Missing data for menu item", + "no-ip-addr-set": "Please set the server's primary IP address", + "unknown-bootentry-type": "Unknown item type: {{0}}" } \ No newline at end of file diff --git a/modules-available/serversetup-bwlp-ipxe/lang/en/module.json b/modules-available/serversetup-bwlp-ipxe/lang/en/module.json index aeea610c..9e73e865 100644 --- a/modules-available/serversetup-bwlp-ipxe/lang/en/module.json +++ b/modules-available/serversetup-bwlp-ipxe/lang/en/module.json @@ -1,3 +1,19 @@ { - "module_name": "iPXE \/ Boot Menu" + "dl-efi": "UEFI", + "dl-hd": "HDD partition image", + "dl-i386": "32 bit", + "dl-lkrn": "wrapped in kernel header", + "dl-pcbios": "legacy BIOS", + "dl-pcinic": "with PCI(e) NIC drivers", + "dl-snp": "uses SNP\/NII interface", + "dl-usb": "thumb drive image", + "dl-usbnic": "with USB NIC drivers", + "dl-x86_64": "64 bit", + "module_name": "iPXE \/ Boot Menu", + "page_title": "iPXE and boot settings", + "submenu_address": "Server address", + "submenu_bootentry": "Manage menu items", + "submenu_download": "Downloads", + "submenu_localboot": "HDD boot", + "submenu_menu": "Manage menus" } \ No newline at end of file diff --git a/modules-available/serversetup-bwlp-ipxe/lang/en/permissions.json b/modules-available/serversetup-bwlp-ipxe/lang/en/permissions.json index 44d1c519..53ccec3a 100644 --- a/modules-available/serversetup-bwlp-ipxe/lang/en/permissions.json +++ b/modules-available/serversetup-bwlp-ipxe/lang/en/permissions.json @@ -2,5 +2,10 @@ "access-page": "View page.", "download": "Download USB Image.", "edit.address": "Choose boot address of the server.", - "edit.menu": "Customize boot menu." + "ipxe.bootentry.edit": "Edit menu items.", + "ipxe.bootentry.view": "View menu items.", + "ipxe.localboot.edit": "Edit local boot settings.", + "ipxe.menu.assign": "Assign menus to locations.", + "ipxe.menu.edit": "Edit menus.", + "ipxe.menu.view": "View menus." } \ No newline at end of file diff --git a/modules-available/serversetup-bwlp-ipxe/lang/en/template-tags.json b/modules-available/serversetup-bwlp-ipxe/lang/en/template-tags.json index 121ed3e7..ea57c522 100644 --- a/modules-available/serversetup-bwlp-ipxe/lang/en/template-tags.json +++ b/modules-available/serversetup-bwlp-ipxe/lang/en/template-tags.json @@ -1,42 +1,75 @@ { "lang_active": "Active", + "lang_add": "Add", "lang_addBootentry": "Add Bootentry", "lang_addMenu": "Add Menu", + "lang_additionalInfoLink": "Read more", + "lang_archAgnostic": "Architecture-agnostic", + "lang_archBoth": "BIOS and EFI", + "lang_archSelector": "Select architecture", + "lang_assignMenuToLocation": "Assign menu to location", + "lang_biosOnly": "BIOS only", "lang_bootAddress": "Boot Address of the Server", - "lang_bootBehavior": "Default Boot Behavior", - "lang_bootentryTitle": "Bootentry", - "lang_bootHint": "The Boot menu must be recreated after changing the IP address. Usually this is done automatically, but the process can also be triggered manually in the section of the boot menu.", - "lang_bootInfo": "Here adjustments can be made to the appearance of the boot menu.", - "lang_bootMenu": "Boot Menu", - "lang_bootMenuCreate": "Create Boot Menu", + "lang_bootEntryData": "Menu entry data", + "lang_bootentryDeleteConfirm": "Are you sure you want to delete this menu item?", + "lang_bootentryHead": "Menu items", + "lang_bootentryIntro": "This is where you can add, edit and remove menu items, which can be added to menus. A menu entry is either a combination of a kernel\/image to load (and an optional initrd), or a custom iPXE-script.", + "lang_bootentryTitle": "Menu item", "lang_chooseIP": "Please select the IP address that the client server will use to boot.", - "lang_customEntry": "Custom entry", - "lang_bootentryDeleteConfirm": "Are you sure you want to delete this bootentry?", - "lang_menuDeleteConfirm": "Are you sure you want to delete this menu?", - "lang_downloadImage": "Download USB Image", + "lang_commandLine": "Command line", + "lang_count": "Count", + "lang_downloadBootImage": "Download boot-image", "lang_downloadRufus": "Download Rufus", - "lang_example": "Example", + "lang_editBuiltinWarn": "WARNING! You're editing a predefined item. Future updates might reset your changes!", + "lang_editMenuHead": "Edit menu", + "lang_efiOnly": "EFI only", + "lang_entryChooserTitle": "Select menu item", + "lang_entryId": "ID", + "lang_entryTitle": "Title", + "lang_execAutoUnload": "Unload after execution (--autofree)", + "lang_execReplace": "Replace current iPXE stack (--replace)", + "lang_execResetConsole": "Reset console before execution", + "lang_forceRecompile": "Force recompile", "lang_generationFailed": "Could not generate boot menu. The bwLehrpool-System might not work properly. If you can't fix the problem, please report the error log below to the bwLehrpool project.", + "lang_hotkey": "Hotkey", + "lang_idFormatHint": "(16 chars max, a-z 0-9 - _)", + "lang_imageToLoad": "Image to load (e.g. kernel)", + "lang_initRd": "Optional initrd\/initramfs to load", + "lang_ipxeWikiUrl": "at the iPXE wiki", "lang_isDefault": "Default", "lang_listOfMenus": "Menulist", - "lang_localHDD": "Local HDD", + "lang_localBootDefault": "Default method to use for booting from disk", + "lang_localBootExceptions": "Exceptions to the local boot method, defined per system model", + "lang_localBootHead": "Boot from local disk", + "lang_localBootIntro": "There are several methods to trigger a local boot from the iPXE environment. In most cases, the \"AUTO\" setting will work, but with some system models it might be necessary to override the default behavior. In some instances, a BIOS update might resolve the issue as well.", "lang_locationCount": "Number of Locations", - "lang_masterPassword": "Master Password", - "lang_masterPasswordHelp": "The master password is required to edit a boot menu entry. This should be set for security reasons.", - "lang_menuCustom": "Custom Extra Menu", - "lang_menuCustomHint1": "Here you have the opportunity to add your own menu code to the displayed PXE menu, eg to refer to other PXE server. The format corresponds to the syslinux menu format.", - "lang_menuCustomHint2": "You can create one or more entries. If you want to create an entry that starts automatically when the user makes a selection, assign as", - "lang_menuCustomHint3": "and select as the default boot behavior custom as well.", - "lang_menuDisplayTime": "Menu Display Time", + "lang_menuDeleteConfirm": "Are you sure you want to delete this menu?", + "lang_menuEntryOverride": "Override default selection", "lang_menuGeneration": "Generating boot menu...", + "lang_menuListIntro": "This is the list of iPXE menus, with information about assigned locations. You can create, edit and delete additional menus.", + "lang_menuTimeout": "Timeout", "lang_menuTitle": "Menu", "lang_moduleHeading": "iPXE \/ Boot Menu", - "lang_pxeBuilt": "Built PXE binary", + "lang_newBootEntryHead": "New menu item", + "lang_newMenu": "New menu", + "lang_none": "(none)", + "lang_override": "Override", + "lang_recompileHint": "Recompile iPXE binaries now. Usually this happens automatically on changes, but if you suspect problems caused by outdated binaries, you can trigger recompilation here.", + "lang_refCount": "References", + "lang_referencingMenus": "Referencing menus", + "lang_scriptContent": "Script content", "lang_seconds": "Seconds", "lang_set": "Set", - "lang_usbBuilt": "Built USB image", + "lang_spacer": "Spacer", + "lang_systemmodel": "System model", + "lang_title": "Title", + "lang_typeExecEntry": "Standardeintrag", + "lang_typeScriptEntry": "Custom script", "lang_usbImage": "USB image", "lang_usbImgHelp": "The USB image can be used to create a bootable USB stick, which enables you to boot bwLehrpool without changing your DHCP settings or enabling network boot in the clients. The only requirement is that you enable USB boot in the client's BIOS. The USB stick is only used for bootstrapping, the actual bwLehrpool system is still loaded via network from your local bwLehrpool server.", + "lang_usbImgHelpBtn": "Create bootable thumb drive", "lang_usbImgHelpLinux": "On Linux you can simply use dd to write the image to a usb stick. The image already contains a partition table, so make sure you write the image to the device itself and not to an already existing partition (e.g. to \/dev\/sdx not \/dev\/sdx1)", - "lang_usbImgHelpWindows": "On Windows you need to use a 3rd party tool that can directly write to usb sticks. There are several free and open source soltions, one of them being Rufus. Rufus has been tested with the bwLehrpool image and is very simple to use. After launching Rufus, just open the downloaded USB image, select the proper USB stick to write to (be careful not to overwrite the wrong drive!), and you're ready to go." + "lang_usbImgHelpWindows": "On Windows you need to use a 3rd party tool that can directly write to usb sticks. There are several free and open source soltions, one of them being Rufus. Rufus has been tested with the bwLehrpool image and is very simple to use. After launching Rufus, just open the downloaded USB image, select the proper USB stick to write to (be careful not to overwrite the wrong drive!), and you're ready to go.", + "lang_useDefaultMenu": "Inherit from parent location", + "lang_useDefaultMenuEntry": "(Menu default)" } \ No newline at end of file diff --git a/modules-available/serversetup-bwlp-ipxe/page.inc.php b/modules-available/serversetup-bwlp-ipxe/page.inc.php index bb69fecf..6f95d754 100644 --- a/modules-available/serversetup-bwlp-ipxe/page.inc.php +++ b/modules-available/serversetup-bwlp-ipxe/page.inc.php @@ -552,7 +552,7 @@ class Page_ServerSetup extends Page FROM serversetup_menu m WHERE menuid = :id", compact('id')); if ($menu === false) { - Message::addError('no-such-menu', $id); + Message::addError('invalid-menu-id', $id); return; } $insertParams['menuid'] = $id; diff --git a/modules-available/sysconfig/lang/de/template-tags.json b/modules-available/sysconfig/lang/de/template-tags.json index 1a09abbd..2a7a02d6 100644 --- a/modules-available/sysconfig/lang/de/template-tags.json +++ b/modules-available/sysconfig/lang/de/template-tags.json @@ -47,6 +47,8 @@ "lang_fixNumeric": "Numerischen Account-Namen muss ein 's' vorangestellt werden", "lang_fixNumericDescription": "Wenn Sie diese Option aktivieren, m\u00fcssen Benutzer, deren Account-Name nur aus Ziffern besteht, diesem ein 's' voranstellen beim Login. Diese Option ist beim alten Login-Manager (KDM) zwingend erforderlich, da sonst der Loginvorgang fehlschl\u00e4gt. Mit dem neuen lightdm-basierten Login-Screen lassen sich numerische Account-Namen jedoch direkt verwenden. Wenn Sie an Ihrer Einrichtung keine numerischen Account-Namen verwenden, hat diese Option keine Auswirkung.", "lang_folderRedirection": "Folder Redirection", + "lang_genUid": "uid-Nummern generieren", + "lang_genUidDescription": "Wenn aktiviert, generiert der Satellitenserver nummerische IDs f\u00fcr die Benutzer, anstatt diese aus dem LDAP\/AD zu extrahieren.", "lang_generateModule": "Modul erzeugen", "lang_handlingNotes": "Hier k\u00f6nnen Sie festlegen, wie Netzwerk-Shares (inkl. des Home-Verzeichnisses) an Virtuelle Maschinen durchgereicht werden. In \u00e4lteren Versionen von bwLehrpool wurden die VMware Shared Folders genutzt, was mit bestimmten file servern Probleme verursachen konnte. Der neue native Modus funktioniert deutlich besser, ist aber bei Windows-G\u00e4sten darauf angewiesen, dass (1) der file server smb\/cifs spricht (z.B. Windows Server, Samba unter Linux) und (2) die openslx.exe im Autostart eingebunden ist (bei den bwLehrpool Vorlagen bereits der Fall).", "lang_helpHomeAttrHead": "Name des Home-Verzeichnis-Attributs", diff --git a/modules-available/sysconfig/lang/en/template-tags.json b/modules-available/sysconfig/lang/en/template-tags.json index e98038a9..fb02cf42 100644 --- a/modules-available/sysconfig/lang/en/template-tags.json +++ b/modules-available/sysconfig/lang/en/template-tags.json @@ -47,6 +47,8 @@ "lang_fixNumeric": "Numeric account names have to be prefixed by 's'", "lang_fixNumericDescription": "If enabled, users with account names that consist entirely of digits have to prefix their user id by 's' when logging in. This is required with the old login manager (KDM) to prevent crashes. The new lightdm-based login manager will accept numeric account names, so you can leave this option disabled. If your organization doesn't have any numeric account names, this option will have no effect.", "lang_folderRedirection": "Folder Redirection", + "lang_genUid": "Generate uid numbers", + "lang_genUidDescription": "When selected, the satellite server will generate numeric IDs for the users, instead of extracting them from AD\/LDAP.", "lang_generateModule": "Generating module", "lang_handlingNotes": "Here you can configure how network shares (like the user's home directory) are mapped inside the VM. Old Versions of bwLehrpool used the VMware Shared Folder technique, which could cause problems with certain file servers. The new \"native mode\" works much better, but on Windows guests, it requires that you (1) use an smb\/cifs file server (Windows Server, Linux with Samba) and (2) have openslx.exe setup to autorun in the VM (this is already configured for bwLehrpool templates).", "lang_helpHomeAttrHead": "Name of the home directory attribute", -- cgit v1.2.3-55-g7522