Modernes MRBS Template

Hi Zusammen,

Ich habe vor ein paar Tagen MRBS bei uns aufgesetzt. Weil die Funktionen mir gefallen, das Aussehen aber nicht habe ich mal ein neues Template gebastelt. Es basiert auf bootstrap und ist auch sehr gut für Handys geeignet. Außerdem sind einige, nicht immer nötige Felder, ausblendbar, was das UI weniger verwirrend macht. Und da manche von euch ja auch MRBS nutzen ist es vielleicht hilfreich :slight_smile:

Hier ein paar Screenshots:

Falls es jemand benutzen will, es findet sich hier: https://github.com/Itsblue/modern-mrbs-theme

VG, Dorian

2 „Gefällt mir“

Sieht auf jedenfall mal sehr gut aus! :slight_smile: Werde es mir die Tage mal auf einem Testserver anschauen! DANKE!

Super, danke!
basierend auf welcher Version? Ich habe noch 0.7.3.

Hi Tobias,

Bei mir läuft die neuste Version. Ob es mit einer alten auch funktioniert kann ich leider nicht versprechen.

Aber es gibt noch ein kleines Update:
Man kann mrbs jetzt als PWA auf dem Handy „installieren“ und dann direkt von Home-Bildschirm starten :slight_smile:.
(Ist noch mich auf GitHub, aber ich lade es heute Abend hoch)

VG,
Dorian

Ich hoffe, dass du eigentlich 1.7.x und nicht 0.7.x meintest?

Hi Dorian,
ich hab das gerade getestet – wir haben hier mrbs-1.7.1.
Wenn ich es in der config.inc.php von default auf modern umschalte, erhalte ich leider einen „white screen of death“. Liegt das an der Version oder hast Du eine andere Idee?
Viele Grüße und vielen Dank für das elegante neue Theme!
Michael

Hi Michael,

Du musst noch das Theme von github auf deinen Server kopieren.
Einfach den Ordner „modern“ aus dem Repo im mrbs Root in den Themes ordner legen :slight_smile:

Vg, Dorian

(Ein install script kommt vielleicht noch)

:slight_smile: Das habe ich selbstverständlich gemacht. Hier sieht es so aus:

root@nextcloud:/var/www/mrbs-1.7.1/web/Themes# ll
total 20
drwxr-xr-x  5 root root 4096 Feb  1 09:54 ./
drwxr-xr-x 18 root root 4096 Feb  1 09:57 ../
drwxr-xr-x  2 root root 4096 Jun 14  2018 classic126/
drwxr-xr-x  2 root root 4096 Sep 29 12:15 default/
drwxr-xr-x  2 root root 4096 Feb  1 09:50 modern/

und darin:

...www/mrbs-1.7.1/web/Themes/modern# ll
total 96
drwxr-xr-x 2 root root  4096 Feb  1 09:50 ./
drwxr-xr-x 5 root root  4096 Feb  1 09:54 ../
-rw-r--r-- 1 root root   742 Feb  1 09:50 footer.inc
-rw-r--r-- 1 root root   742 Feb  1 09:50 footer.inc.php
-rw-r--r-- 1 root root 17987 Feb  1 09:50 header.inc
-rw-r--r-- 1 root root 17987 Feb  1 09:50 header.inc.php
-rw-r--r-- 1 root root 16623 Feb  1 09:50 patch.js
-rw-r--r-- 1 root root  1967 Feb  1 09:50 style.css
-rw-r--r-- 1 root root  6868 Feb  1 09:50 styling.inc
-rw-r--r-- 1 root root  6868 Feb  1 09:50 styling.inc.php

Leserechte sind also auch vorhanden…
Viele Grüße,
Michael

Merkwürdig… kannst du mal in deinen Webserver logs nach php Fehlern schauen?

VG, Dorian

Ich habe unter /var/log/apache2/error.log nachgesehen … da seht nichts wildes – außer vielleicht:
[Mon Feb 01 11:17:49.852378 2021] [reqtimeout:info] [pid 3892] [client 95.xxx.xxx.xxx:62950] AH01382: Request header read timeout

Wenn ich zurück auf default stelle, erscheint das alte Theme sofort wieder!

Hmm… da sollte eigentlich irgendeine Fehlermeldung stehen.
Es kann sein, dass es an irgendeiner Variable liegt, kannst du mal

$disable_room_menu_for_non_admins = TRUE;
$disable_user_menu_for_non_admins = TRUE;

in deine config.inc.php schreiben?

VG, Dorian

Leider ohne Änderung … ich habe es mittlerweile auch mit Chrome ausprobiert … der meldet im Gegensatz zum FF:

Diese Seite funktioniert nicht
meine-domain.de kann diese Anfrage momentan nicht verarbeiten.
HTTP ERROR 500

Ich hab grad nochmal in die 1.7.1 reingeschut und ich habe so das Gefühl, dass es daran liegt.
Das Problem ist, dass es Funktionen und Variablen, die ich benutze, in der Version noch nicht zu geben scheint…
Wenn du Lust und Zeit hast, kannst du mal probieren, ob das default Template der neusten mrbs Version bei dir funktioniert, falls nicht liegt es daran :slight_smile:
(Hier ist die Neuste: https://sourceforge.net/projects/mrbs/files/mrbs/MRBS%201.9.2/ )

VG, Dorian

Hoppla … 1.9.2 ist mittlerweile der Stand der Dinge … dann wäre ein vollständiges Upgrade vermutlich eh sinnvoll(er)?! Ich habe die 1.9.2 gerade neben der alten Version auf dem Weberver entpackt – leider will der an der Datenbank Änderungen vornehmen. Das ist mir im Moment zu heiß … die schon bestehenden Einträge sind offenbar in einer DB eingetragen und könnten direkt übernommen werden…!?!

Und wo wir gerade beim Thema sind: Hat jemand die richtigen Settings für die LDAP/AD-Anbindung an den v7-Server griffbereit?

Hi Michael,

Jap :slight_smile:

So habe ich es verstanden und sie schreiben auch, dass Datenbankänderungen rückwärtskompatibel sein sollen, siehe: https://mrbs.sourceforge.io/view_text.php?section=Documentation&file=UPGRADE

Ja, hab ich:

/**********************
* LDAP configuration *
*********************/

$auth["type"] = "ldap";
// Many of the LDAP parameters can be specified as arrays, in order to
// specify multiple LDAP directories to search within. Each item below
// will specify whether the item can be specified as an array. If any
// parameter is specified as an array, then EVERY array configuration
// parameter must have the same number of elements. You can specify a
// parameter as an array as in the following example:
//
// $ldap_host = array('localhost', 'otherhost.example.com');

// Where is the LDAP server.
// This can be an array.
$ldap_host = "10.0.0.1";

// If you have a non-standard LDAP port, you can define it here.
// This can be an array.
$ldap_port = 389;

// If you do not want to use LDAP v3, change the following to false.
// This can be an array.
$ldap_v3 = true;

// If you want to use TLS, change the following to true.
// This can be an array.
$ldap_tls = false;

// Support configuring a TLS client certificate/key from within MRBS.
// Requires PHP 7.1.0 or later
//$ldap_client_cert = 'path-to-cert.crt';
//$ldap_client_key = 'path-to-key.key';

// LDAP base distinguish name.
// This can be an array.
// Works: OU=mlm,OU=Students,OU=default-school,OU=SCHOOLS,DC=linuxmuster,DC=lan
$ldap_base_dn = "OU=SCHOOLS,DC=linuxmuster,DC=lan";

// Attribute within the base dn that contains the username
// This can be an array.
$ldap_user_attrib = "sAMAccountName";

// If you need to search the directory to find the user's DN to bind
// with, set the following to the attribute that holds the user's
// "username". In Microsoft AD directories this is "sAMAccountName"
// This can be an array.
$ldap_dn_search_attrib = "sAMAccountName";

// If you need to bind as a particular user to do the search described
// above, specify the DN and password in the variables below
// These two parameters can be arrays.
// BINDUSER!
$ldap_dn_search_dn = "CN=global-binduser,OU=Management,OU=GLOBAL,DC=linuxmuster,DC=lan"; // Any compliant LDAP
// $ldap_dn_search_dn = "searchuser@example.com"; // A form which could work for AD LDAP
$ldap_dn_search_password = "<Dein LDAP binduser Passwort>";

// 'auth_ldap' extra configuration for ldap configuration of who can use
// the system
// If it's set, the $ldap_filter will be used to determine whether a
// user will be granted access to MRBS
// This can be an array.
// An example for Microsoft AD:
// HIER 
$ldap_filter = "|(memberof=CN=role-student,OU=Groups,OU=GLOBAL,DC=linuxmuster,DC=lan)(memberof=CN=role-teacher,OU=Groups,OU=GLOBAL,DC=linuxmuster,DC=lan)";

// If you need to filter a user by the group a user is in with an LDAP
// directory which stores group membership in the group object
// (like OpenLDAP) then you need to search for the groups they are
// in. If you want to do this, define the following two variables, an
// an appropriate $ldap_filter. e.g.:
// $ldap_filter_base_dn = "ou=Groups,dc=example,dc=com";
// $ldap_filter_user_attr = "member";
// $ldap_filter = "cn=MRBS Users";

// If you need to disable client referrals, this should be set to true.
// Note: Active Directory for Windows 2003 forward requires this.
// $ldap_disable_referrals = true;

// LDAP option for dereferencing aliases
// LDAP_DEREF_NEVER = 0 - (default) aliases are never dereferenced.
// LDAP_DEREF_SEARCHING = 1 - aliases should be dereferenced during the search
//      but not when locating the base object of the search.
// LDAP_DEREF_FINDING = 2 - aliases should be dereferenced when locating the base object but not during the search.
// LDAP_DEREF_ALWAYS = 3 - aliases should be dereferenced always.
//$ldap_deref = LDAP_DEREF_ALWAYS;

// Set to true to tell MRBS to look up a user's email address in LDAP.
// Utilises $ldap_email_attrib below
$ldap_get_user_email = true;
// The LDAP attribute which holds a user's email address
// This can be an array.
$ldap_email_attrib = 'mail';
// The LDAP attribute which holds a user's name. Another common attribute
// to use (with Active Directory) is 'displayname'.
// This can be an array.
$ldap_name_attrib = 'displayName';

// The DN of the LDAP group that MRBS admins must be in. If this is defined
// then the $auth["admin"] is not used.
// This can be an array.
$ldap_admin_group_dn = 'CN=role-teacher,OU=Groups,OU=GLOBAL,DC=linuxmuster,DC=lan';

// The LDAP attribute that holds group membership details. Used with
// $ldap_admin_group_dn, above.
// This can be an array.
$ldap_group_member_attrib = 'memberof';

// Set to true if you want MRBS to call ldap_unbind() between successive
// attempts to bind. Unbinding while still connected upsets some
// LDAP servers
$ldap_unbind_between_attempts = false;

// By default MRBS will suppress "invalid credentials" error messages when binding
// in order to avoid the log filling up with warning messages when a user enters
// an incorrect username/password combination.  Set this to FALSE if you want these
// errors to be logged, eg in order to be able spot brute force attack attempts.
$ldap_suppress_invalid_credentials = true;

// Output debugging information for LDAP actions
$ldap_debug = false;

Damit sollten sich Schüler und Lehrer anmelden können und die Lehrer sind Admins.
(Ldap Binduser passwort musst du noch ersetzen)

Ich denke, ich werde mich mal an eine Dokumentation für alle LDAP Anbindungen setzten.

VG,
Dorian

2 „Gefällt mir“

Hi Dorian,
die linuxmuster-mrbs-image
Dockerversion, die ich seit einem Jahr jetzt „pflege“ ist noch auf Version 1.7.3. Ich glaube beim Update auf 1.8.x bin ich hängen geblieben, weil irgendwas mit LDAP nicht klappte.
eine lauffähige „latest“ zu haben - da wäre ich auch dafür…
Und ein standardtemplate für linuxmuster wäre natürlich auch cool…

VG, Tobias

Hi Tobias,

Du kannst es ja nochmal mit der 1.9 probieren, das funktioniert bei mir alles einwandfrei :slight_smile:

VG, Dorian

Bevor ich das mache, wüsste ich ja doch noch gerne, was aus bereits vorhandenen Einträgen wird. Ich habe gesehen, dass im 1.9-Ordner lauter kleine SQL-Dateien liegen, um den jeder Eintrag offenbar erweitert wird. Das sieht in etwa so aus:

/www/mrbs-1.9.2/web/upgrade# ll
total 320
drwxr-xr-x 80 root root 4096 Feb  1 12:01 ./
drwxr-xr-x 16 root root 4096 Feb  1 12:14 ../
drwxr-xr-x  2 root root 4096 Feb  1 12:01 1/
drwxr-xr-x  2 root root 4096 Feb  1 12:01 10/
drwxr-xr-x  2 root root 4096 Feb  1 12:01 11/
drwxr-xr-x  2 root root 4096 Feb  1 12:01 12/
drwxr-xr-x  2 root root 4096 Feb  1 12:01 13/
... usw usw 

und darin befindet sich dann:

root@nextcloud: ... www/mrbs-1.9.2/web/upgrade/1# ll
total 16
drwxr-xr-x  2 root root 4096 Feb  1 12:01 ./
drwxr-xr-x 80 root root 4096 Feb  1 12:01 ../
-rw-r--r--  1 root root  277 Feb  1 12:04 mysql.sql
-rw-r--r--  1 root root  240 Feb  1 12:04 pgsql.sql


root@nextcloud:... www/mrbs-1.9.2/web/upgrade/1# cat mysql.sql 

CREATE TABLE %DB_TBL_PREFIX%variables
(
  id               int NOT NULL auto_increment,
  variable_name    varchar(80),
  variable_content text,
      
  PRIMARY KEY (id)
);
INSERT INTO %DB_TBL_PREFIX%variables (variable_name, variable_content)
  VALUES ( 'db_version', '1');

… also mit anderen Worten: Es scheint nichts dramatisches zu sein – aber trotzdem fraglich, ob das mit diesen Einträgen abwärtskompatibel bleibt?

Hi Michael,

Mach doch einfach einen SQL-dumb, installier das neue MRBS in ein neues Verzeichnis und probier aus, ob alles noch geht, wenn nicht stellst du den dumb wieder her :slight_smile:

VG, Dorian

Hi. Alles richtig … außer das Wort „einfach“ :slight_smile:
Ich könnte die DB auch komplett kopieren und für v1.9 „einfach“ anders nennen. Wäre vermutlich noch sicherer…

Ich könnte auch „einfach“ ein Backup zurückholen, wenn’s schief geht … da auf dem gleichen Host aber auch die Nextcloud läuft, wäre das im Moment keine gute Idee.

… ach ja: Ich habe mir Deine LDAP-Config angesehen: Du stellst die Anfragen bei Dir offenbar direkt / intern an den v7-Server. Hier läuft der mrbs-Host in einem anderen VLAN – daher stellt sich mal wieder die Frage, ob es schlau ist, Port 389 zu nehmen: unverschlüsselt? In meiner alten Config verwende ich ldaps und Port 636 (aber ohne TLS und ohne Angabe weiterer .crt)