summaryrefslogtreecommitdiffstats
path: root/modules-available/baseconfig_bwidm
diff options
context:
space:
mode:
authorSimon Rettberg2016-08-29 17:13:19 +0200
committerSimon Rettberg2016-08-29 17:13:19 +0200
commite2c1c6265b43d64442473225b0b01f829f7dec67 (patch)
treed4d55e9aa0ece5b91c97d5d7cff47be2ea593183 /modules-available/baseconfig_bwidm
parent[property] Make generic getter and setter public; seems best option for modul... (diff)
downloadslx-admin-e2c1c6265b43d64442473225b0b01f829f7dec67.tar.gz
slx-admin-e2c1c6265b43d64442473225b0b01f829f7dec67.tar.xz
slx-admin-e2c1c6265b43d64442473225b0b01f829f7dec67.zip
[baseconfig_bwidm] New module: baseconfig hook for bwidm configuration
Diffstat (limited to 'modules-available/baseconfig_bwidm')
l---------modules-available/baseconfig_bwidm/baseconfig/settings.json1
-rw-r--r--modules-available/baseconfig_bwidm/config.json3
-rw-r--r--modules-available/baseconfig_bwidm/hooks/cron.inc.php39
-rw-r--r--modules-available/baseconfig_bwidm/hooks/translation.inc.php41
-rw-r--r--modules-available/baseconfig_bwidm/lang/de/config-variables.json4
-rw-r--r--modules-available/baseconfig_bwidm/lang/en/config-variables.json4
6 files changed, 92 insertions, 0 deletions
diff --git a/modules-available/baseconfig_bwidm/baseconfig/settings.json b/modules-available/baseconfig_bwidm/baseconfig/settings.json
new file mode 120000
index 00000000..c29f3e82
--- /dev/null
+++ b/modules-available/baseconfig_bwidm/baseconfig/settings.json
@@ -0,0 +1 @@
+/var/cache/slx-admin/baseconfig-bwidm_settings.json \ No newline at end of file
diff --git a/modules-available/baseconfig_bwidm/config.json b/modules-available/baseconfig_bwidm/config.json
new file mode 100644
index 00000000..af67a188
--- /dev/null
+++ b/modules-available/baseconfig_bwidm/config.json
@@ -0,0 +1,3 @@
+{
+ "dependencies": ["baseconfig"]
+}
diff --git a/modules-available/baseconfig_bwidm/hooks/cron.inc.php b/modules-available/baseconfig_bwidm/hooks/cron.inc.php
new file mode 100644
index 00000000..32c1bd73
--- /dev/null
+++ b/modules-available/baseconfig_bwidm/hooks/cron.inc.php
@@ -0,0 +1,39 @@
+<?php
+
+define('PROP_KEY_BWIDM', 'bwlp.bwidm.fetcher');
+define('BWLP_SETTINGS_JSON', '/var/cache/slx-admin/baseconfig-bwidm_settings.json');
+
+call_user_func(function()
+{
+ if (Property::get(PROP_KEY_BWIDM) !== false && file_exists(BWLP_SETTINGS_JSON))
+ return;
+ Property::set(PROP_KEY_BWIDM, true, 240);
+ $ret = Download::asString('https://bwlp-masterserver.ruf.uni-freiburg.de/webif/pam.php', 10, $code);
+ if (!preg_match_all('/^([^=]+)=/m', $ret, $out))
+ return;
+ $data = array("SLX_BWIDM_AUTH" => array(
+ "catid" => "sysconfig",
+ "defaultvalue" => "no",
+ "permissions" => "2",
+ "validator" => "list:no|selective|yes",
+ "shadows" => array(
+ "no" => array(
+ "SLX_BWIDM_ORGS"
+ ),
+ "yes" => array(
+ "SLX_BWIDM_ORGS"
+ )
+ )
+ ),
+ "SLX_BWIDM_ORGS" => array(
+ "catid" => "sysconfig",
+ "defaultvalue" => "",
+ "permissions" => "2",
+ "validator" => "multilist:" . implode('|', $out[1])
+ )
+ );
+ if (!file_put_contents(BWLP_SETTINGS_JSON, json_encode($data))) {
+ $error = error_get_last();
+ EventLog::warning('Could not write bwIDM data to ' . BWLP_SETTINGS_JSON, $error['message']);
+ }
+}); \ No newline at end of file
diff --git a/modules-available/baseconfig_bwidm/hooks/translation.inc.php b/modules-available/baseconfig_bwidm/hooks/translation.inc.php
new file mode 100644
index 00000000..00898075
--- /dev/null
+++ b/modules-available/baseconfig_bwidm/hooks/translation.inc.php
@@ -0,0 +1,41 @@
+<?php
+
+$HANDLER = array();
+
+/**
+ * List of valid subsections
+ */
+$HANDLER['subsections'] = array(
+ 'config-variable-categories', 'config-variables'
+);
+
+/*
+ * Handlers for the subsections that will return an array of expected tags.
+ * This is optional, if you don't want to define expected tags, don't create a function.
+ */
+
+/**
+ * Configuration categories
+ */
+$HANDLER['grep_config-variable-categories'] = function($module) {
+ if (!$module->activate())
+ return array();
+ $want = BaseConfigUtil::getCategories($module);
+ foreach ($want as &$entry) {
+ $entry = true;
+ }
+ return $want;
+};
+
+/**
+ * Configuration variables
+ */
+$HANDLER['grep_config-variables'] = function($module) {
+ if (!$module->activate())
+ return array();
+ $want = BaseConfigUtil::getVariables($module);
+ foreach ($want as &$entry) {
+ $entry = true;
+ }
+ return $want;
+};
diff --git a/modules-available/baseconfig_bwidm/lang/de/config-variables.json b/modules-available/baseconfig_bwidm/lang/de/config-variables.json
new file mode 100644
index 00000000..5e03eca4
--- /dev/null
+++ b/modules-available/baseconfig_bwidm/lang/de/config-variables.json
@@ -0,0 +1,4 @@
+{
+ "SLX_BWIDM_AUTH": "Anmeldung am Client mittels bwIDM zulassen.\r\n\r\nWenn Sie hier *yes* w\u00e4hlen, k\u00f6nnen sich alle Nutzer, die Mitglieder einer Organisation im bwIDM-Verbund sind, an einem bwLehrpool-Rechner einloggen.\r\n\r\nMit der Option *selective* k\u00f6nnen Sie die Gruppe der zugelassenen Einrichtungen weiter einschr\u00e4nken, indem Sie in der Option *SLX_BWIDM_ORGS* nur bestimmte Einrichtungen ausw\u00e4hlen.",
+ "SLX_BWIDM_ORGS": "Wenn die Option *SLX_BWIDM_AUTH* auf *selective* steht, sind nur die hier ausgew\u00e4hlten Einrichtungen zu einem Login via bwIDM berechtigt."
+} \ No newline at end of file
diff --git a/modules-available/baseconfig_bwidm/lang/en/config-variables.json b/modules-available/baseconfig_bwidm/lang/en/config-variables.json
new file mode 100644
index 00000000..4ea264cc
--- /dev/null
+++ b/modules-available/baseconfig_bwidm/lang/en/config-variables.json
@@ -0,0 +1,4 @@
+{
+ "SLX_BWIDM_AUTH": "Enable logging in on clients using bwIDM credentials.\r\n\r\nSetting this to *yes* means that all members of an organization in the bwIDM federation can log in to bwLehrpool machines.\r\nSelecting *selective* means you can explicitly pick the organizations which are entitled to login via bwIDM. The organizations can be specified in the *SLX_BWIDM_ORGS* setting.",
+ "SLX_BWIDM_ORGS": "If you set *SLX_BWIDM_AUTH* to *selective* this list will be used to determine which organizations are allowed to login via bwIDM on the client computers."
+} \ No newline at end of file