Dies ist eine alte Version des Dokuments!


Generisches Modul

'Generische Module' ermöglichen es, beliebige Dateien in das Linux-Grundsystem der Clients einzubringen bzw. vorhandene Dateien zu überschreiben. Notwendig ist dies, wenn Sie z.B. spezielle iptables-Regeln, Druckkonfigurationen oder ähnliche Anpassungen innerhalb des Grundsystems vornehmen möchten.

Um Generische Module anzulegen sind folgende Schritte nötig:

1. Archiv vorbereiten

Legen Sie ein Archiv an, dessen gegebene Verzeichnisstruktur eins zu eins in das gebootete Linux extrahiert wird - eine im Archiv enthaltene Datei etc/beispiel.conf wird im gebooteten System also auch unter /etc/beispiel.conf erscheinen.

Fangen Sie zunächst mit der nötigen Ordnerhierarchie für unser Beispiel an:

mkdir -p ~/generic_module/etc/
cd ~/generic_module/etc/


Legen Sie dort folgende Beispieldatei ab

beispiel.conf
# Ich bin ein Beispiel :)


Wechseln Sie dann in das von Ihnen angelegte Verzeichnis ~/generic_module:

cd ~/generic_module


und packen Sie diese Datei als tar-gz-basiertes Archiv (Endung .tgz) so ein, dass das Verzeichnis 'etc' direkt im Archiv erscheint:

tar czf beispiel.tgz etc/


Prüfen Sie sicherheitshalber das Archiv:

tar tvf beispiel.tgz

So sollte das Archiv aussehen (Ausklappen)

Dieses tgz-Archiv kann dann im nächsten Schritt als Generisches Modul auf den Satellitenserver geladen werden.

2. Neues Modul hochladen

Das Archiv muss anschließend über das Webinterface Ihres Satellitenservers hochgeladen werden. Wechseln Sie dazu zur Seite 'Lokalisierung + Integration' und wählen 'Neues Modul'. Dort können Sie als letzten Punkt ein 'Generisches Modul' hinzufügen. Wählen Sie dort Ihr vorbereitetes Archiv aus und vergeben einen eindeutigen Namen. Nach dem Hochladen wird zur Kontrolle der Inhalt des Archivs angezeigt.

3. Client neustarten und überprüfen

Starten Sie einen bwLehrpool-Client, loggen sich ein und wählen unter 'Natives Linux' die 'Openbox' aus. Wenn alles funktioniert hat, sollte Ihre Datei nun verfügbar sein. Überprüfen Sie dies z.B. folgendermaßen:

cat /etc/beispiel.conf

Spezialfall: Client-basierte Konfiguration

Generische Module werden immer an alle Clients ausgeliefert. Manchmal möchten Sie jedoch nur bestimmte Clients mit Konfigurationen versorgen. Durch einen kleinen Umweg ist auch dies möglich.

Alle Ordner für lokale Konfigurationen innerhalb Ihres vorbereiteten Archivs, müssen unter 'openslx-configs/<Modulname>' abgelegt werden. Im Beispiel heißt das Modul 'spezialfall1'.

Die Ordnerhierarchie verändert sich für unser Beispiel also fogendermaßen:

mkdir -p ~/generic_module/openslx-configs/spezialfall1/etc/
cd ~/generic_module/openslx-configs/spezialfall1/etc/

Zusätzlich müssen Sie die Datei '/srv/openslx/www/slx-admin/client_config_additional.php' im Satellitenserver anpassen bzw. anlegen

client_config_additional.php
<?php
$ip = $_SERVER['REMOTE_ADDR'];
if (substr($ip, 0, 7) === '::ffff:') {
	$ip = substr($ip, 7);
}
 
 
// Client X
// Config = spezialfall1
if ($ip === '192.168.192.50') {
        echo "SLX_LOCAL_CONFIG='spezialfall1'\n";
}
 
// Raum A
// 192.168.192.[1-10]
// Config = spezialfall1 und spezialfall2 (es sind auch mehrere Konfigurationen kombinierbar)
if (preg_match('/^192\.168\.192\.(1|2|3|4|5|6|7|8|9|10)/', $ip)) {
       echo  "SLX_LOCAL_CONFIG='spezialfall1 spezialfall2'\n";
}
 
// Client Y, Z
// Config = spezialfall2
if ($ip === '192.168.192.250' || $ip === '192.168.192.112') {
       echo "SLX_LOCAL_CONFIG='spezialfall2'\n";
}
Achtung: Syntaxfehler in dieser Datei können bwLehrpool am Booten hindern. Überprüfen Sie nach dem Editieren auf jeden Fall mit „php -l /srv/openslx/www/slx-admin/client_config_additional.php“ die korrekte Syntax und veranlassen Sie ggf. einen Testboot eines Clienten.
Drucken/exportieren