Modernes MRBS Template

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: MRBS: Documentation : 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)

Bei mir ist es ein internes Netz (nur im Hypervisor) sobald es öffentlich ist, würde ich auf jeden Fall verschlüsseln.

Also ein MySQL dumb ist tatsächlich schnell erstellt:
mysqldump --user=admin_backup --password --lock-tables --databases db1 > /data/backup/db1.sql

Aber kopieren und für die 1.9 eine neue nehmen klingt auch gut :wink:

VG, Dorian

MySQL: Cloning a MySQL database on the same MySql instance - Stack Overflow

1 „Gefällt mir“

Ach ja – das linuXmuster-Logo im Header wäre natürlich echt noch der Knaller!

Mach ich vielleicht, wenn ich Zeit hab :wink:
Dann dürfen wir es aber nur noch „Muster RaumBuchungs System“ nennen

EDIT: Wobei… Die Codebase ist furchtbar, ob wir uns sowas wirklich auf die Fahne schreiben wollen …

Die Option –lock-tables gleich abgespeichert.

VG Andre

… eigentlich gibt/gab es ja die Idee, mrbs gleich „ready to run“ per docker anzudocke(r)n. Daher: falls das neue Template default werden sollte, müsste es imho doch auch gleich in den Container, oder?

Dass die Codebase nicht der allerletzte Schrei ist, dachte ich mir übrigens auch schon…

Ich würde jetzt gerne Jaa rufen, aber ich hab folgende Bedenken:

  1. MRBS hat keinen vernünftigen Theme-Engine, deshalb funktioniert das Theme im Moment so: Es wird einfach eine Javascript Datei eingebaut die dann im Nachhinein über jede Seite drüberläuft und sie so anpasst, dass es eben vernünftig aussieht. Das heißt, sobald sich was an MRBS ändert muss ich auch das Script vermutlich wieder anpassen.
  2. Ich weiß nicht, ob ich das auf Dauer maintainen kann.

VG, Dorian

Ok, ich weiß auch nicht, wie die Roadmap von MRBS aussieht … oder ob irgendwann mit v2.0 „alles“ anders wird … wie der Upgrade-Prozess da gedacht ist, wäre sowieso mal eine Frage, die hier offenbar einige betrifft?!

Wenn Dein Theme einfach nur on top eingebunden werden muss, ist das auch nicht sooo schlimm.

Genau so ist es, also man könnte es bei Problemen auch jederzeit wieder rauswerfen.

VG, Dorian