smile chat: Eine Mehrbenutzer-Netzwerkanwendung in C++ und Java


Kapitel 3: Konfiguration


Kapitelinhalt

Dieser Inhalt ist unter einer Creative Commons-Lizenz lizensiert.


3.1 Allgemeines

Feintuning

Der smile chat bietet zahlreiche Einstellungsmöglichkeiten. Wirklich wichtig ist jedoch nur die zentrale Konfigurationsdatei scd.cfg. Sie enthält Einstellungen, ohne die der smile chat-Server nicht starten kann.

Wenn es Probleme gibt, protokolliert sie der smile chat-Server in einer Logdatei. Das sollte Ihre erste Anlaufstelle sein, wenn irgendetwas nicht so funktioniert wie von Ihnen gedacht. Die Logdatei wird entweder im gleichen Verzeichnis erstellt, in dem sich der smile chat-Server befindet. Oder - wenn der smile chat-Server die Konfigurationsdatei scd.cfg soweit lesen und verstehen konnte - sie wird dort gespeichert, wo sie gemäß der Angabe file.log angelegt werden soll.


3.2 Einstellungen in scd.cfg

Ohne scd.cfg geht nichts

Der smile chat-Server sucht nach einer Konfigurationsdatei scd.cfg, wenn er gestartet wird. Er erwartet, dass die Konfigurationsdatei standardmäßig im gleichen Verzeichnis liegt. Soll eine andere Konfigurationsdatei verwendet werden oder sollte sie in einem anderen Verzeichnis liegen, kann der Pfad der Konfigurationsdatei als einziges Befehlszeilenargument mitangegeben werden.

Die Datei scd.cfg ist die wichtigste Konfigurationsdatei. Auf andere Konfigurationsdateien - sollten weitere verwendet werden - wird in scd.cfg verwiesen. Ohne scd.cfg kann der smile chat-Server nicht gestartet werden. Er bricht in diesem Fall automatisch ab und schreibt eine Fehlermeldung in die Logdatei scd.log, die automatisch im gleichen Verzeichnis erstellt wird.

In der Datei scd.cfg können zahlreiche Einstellungen vorgenommen werden. Die folgende Tabelle gibt Ihnen einen Überblick.

Tab. 3-1: Konfigurationsdatei scd.cfg
Einstellung Beschreibung Beispiel
all.host Name des Servers smilechat.de
all.www Name des Webservers www.smilechat.de
all.webpath Absoluter Pfad zu Dateien auf Webserver /pub2/
all.path Absoluter Pfad zu Dateien auf Server /home/boris/
all.links Links werden automatisch anklickbar 1
all.onlyreg Nur registrierte Chatter dürfen sich einloggen 0
all.search Suchmaschine für den Chat-Befehl srch: www.google.de/search?hl=de&q=
file.welcome Datei mit Willkommensnachricht welcome.txt
file.permissions Konfigurationsdatei für Ränge perm.cfg
file.rooms Konfigurationsdatei für Räume rooms.cfg
file.security Konfigurationsdatei für Sicherheitseinstellungen security.cfg
file.replace Konfigurationsdatei für automatische Zeichenersetzung replace.cfg
file.log Pfad zur Logdatei log/sc.log
file.js Pfad zur Javascript Standard Bibliothek js/stdlib.js
file.help Pfad zur Hilfe-Webseite /help.html
file.kill Pfad zur Kill-Webseite html/kill.html
nick.min Minimale Länge für Nicknames 1
nick.max Maximale Länge für Nicknames 15
nick.valid Gültige Zeichen für Nicknames abcdefghijklmnopqrstuvwxyz
nick.color Standardfarbe für Chatter 0000FF
pwd.max Maximale Länge für Passwörter 15
ua.max Maximale Länge für User-Agent-Bezeichner 100
comment.max Maximale Länge für Kommentare 100
ref.max Maximale Länge für Referer 200
room.max Maximale Länge für Raumnamen 15
room.valid Gültige Zeichen für Raumnamen abcdefghijklmnopqrstuvwxyz
photo.default Standardfoto für Chatter img/photo.jpg
photo.width Breite von Fotos (in Pixel) 50
photo.height Höhe von Fotos (in Pixel) 50
photo.html img-Tags von Fotos hinzuzufügendes HTML  
info.out Standard-Schaltfläche für Info img/info_out.gif
info.over Hover-Schaltfläche für Info img/info_over.gif
info.clicked Angeklickte Schaltfläche für Info img/info_clicked.gif
info.width Breite der Info-Schaltfläche (in Pixel) 15
info.height Höhe der Info-Schaltfläche (in Pixel) 15
info.html img-Tags von Info hinzuzufügendes HTML  
mark.out Standard-Schaltfläche zum Markieren img/mark_out.gif
mark.over Hover-Schaltfläche zum Markieren img/mark_over.gif
mark.clicked Angeklickte Schaltfläche zum Markieren img/info_clicked.gif
mark.width Breite der Markier-Schaltfläche (in Pixel) 15
mark.height Höhe der Markier-Schaltfläche (in Pixel) 15
mark.html img-Tags der Markier-Schaltfläche hinzuzufügenes HTML  
unmark.out Standard-Schaltfläche zum Demarkieren img/unmark_out.gif
unmark.over Hover-Schaltfläche zum Demarkieren img/unmark_over.gif
unmark.clicked Angeklickte Schaltfläche zum Demarkieren img/unmark_clicked.gif
unmark.width Breite der Demarkier-Schaltfläche (in Pixel) 15
unmark.height Höhe der Demarkier-Schaltfläche (in Pixel) 15
unmark.html img-Tags der Demarkier-Schaltfläche hinzuzufügendes HTML  
go.out Standard-Schaltfläche zum Raumwechseln img/go_out.gif
go.over Hover-Schaltfläche zum Raumwechseln img/go_over.gif
go.clicked Angeklickte Schaltfläche zum Raumwechseln img/go_clicked.gif
go.width Breite der Raumwechsel-Schaltfläche (in Pixel) 15
go.height Höhe der Raumwechsel-Schaltfläche (in Pixel) 15
go.html img-Tags der Raumwechsel-Schaltfläche hinzuzufügendes HTML  
ban.out Standard-Schaltfläche zum Bannen img/ban_out.gif
ban.over Hover-Schaltfläche zum Bannen img/ban_over.gif
ban.clicked Angeklickte Schaltfläche zum Bannen img/ban_clicked.gif
ban.width Breite der Bannen-Schaltfläche (in Pixel) 15
ban.height Höhe der Bannen-Schaltfläche (in Pixel) 15
ban.html img-Tags der Bannen-Schaltfläche hinzuzufügendes HTML  
banner.default Pfad zum Standard-Banner  
banner.width Breite des Banners (in Pixel) 468
banner.height Höhe des Banners (in Pixel) 60
banner.html img-Tags des Banners hinzuzufügendes HTML  
css.basic Pfad zur Standard-CSS-Datei css/default.css
css.startskin Standard-Skin Smile
css.startskinpath Pfad zum Standard-Skin skins/smile.css
db.connection Verbindungsparameter für Datenbank uid=boris;pwd=12345;dsn=smile
db.cache Einstellung für Datenbankcache pass
db.clean Beim Start alte Datenbankeinträge löschen 1

Mit die am wichtigste Einstellung ist all.path. Während Sie all.host normalerweise leer lassen können - dann wird automatisch auf Dateien auf dem aktuellen Server zugegriffen - können viele Dateien nur dann gefunden werden, wenn all.path richtig gesetzt ist. So sind sämtliche Dateiangaben in den obigen Beispielen relativ: Die Dateien welcome.txt, perm.cfg, rooms.cfg, security.cfg, replace.cfg und log/sc.log werden alle relativ zu all.path geladen. Die Datei welcome.txt muss sich also für obige Beispielangaben unter /home/boris/welcome.txt befinden.

Beachten Sie, dass sich Dateien, die über den Webserver geladen werden - dazu gehören alle Dateien mit den Endungen .html, .js, .gif und .css - relativ zur Angabe all.webpath befinden müssen. Sie können durch eine absolute Pfadangabe die Abhängigkeit von all.webpath aufheben. So würde gemäß obigen Beispieleinstellungen die Hilfedatei help.html von www.smilechat.de/help.html geladen werden, die Javascript Standard Bibliothek jedoch von www.smilechat.de/pub2/js/stdlib.js.


3.3 Ränge und Rechte

Die Hackordnung muss stimmen

Ränge und Rechte werden in einer separaten Datei konfiguriert, die für gewöhnlich perm.cfg heißt. Damit Chatter längerfristig einen Rang besitzen können, müssen Rangnamen jedoch zusätzlich in die Datenbank eingetragen werden. Ein Rang, der ausschließlich in perm.cfg definiert ist, kann von niemandem benutzt werden, wenn er nicht über die Datenbank mit Chatter-Profilen verknüpft werden kann.

In die Datenbank wird jedoch ausschließlich der Rangname eingetragen. Alle Einstellungen zu Rängen werden in perm.cfg vorgenommen. Dabei wird pro Zeile ein Rang definiert. Im Folgenden sehen Sie die Definition von einigen Beispielrängen.

Tab. 3-2: Konfigurationsdatei perm.cfg
Name visitor member sheriff
Label Visitor Member Sheriff
Angriff 4 8 12
Verteidigung 4 8 8
Nicht kickbar 0 0 0
Alarmsender 0 1 0
Alarmempfänger 0 0 1
Ranghöhe 10 20 30
Darf kicken 0 0 1
Max. Bannzeit (in Minuten) 0 0 30
Darf killen 0 0 0
Max. Sperrzeit (in Stunden) 0 0 1
Darf Systeminfos abfragen 0 0 0

Die Punkte für Angriff und Verteidigung sind entscheidend für die Funktion des demokratischen Kickens. Grundsätzlich gilt: Wer mehr Angriffspunkte auf sich vereint als die Hälfte der Summe der Verteidigungspunkte, wird automatisch gekickt. Durch die Punktvergabe kann das demokratische Kicken sehr gezielt eingestellt werden.

Die Einstellungen bezüglich Alarmsender und -empfänger beziehen sich auf den Chat-Befehl .alarm.


3.4 Räume

Hereinspaziert

Die Einstellungen zu Räumen sind bei weitem die einfachsten: Es werden lediglich Raumnamen zeilenweise angegeben. Dies geschieht für gewöhnlich in einer Datei namens rooms.cfg. Wenn der smile chat-Server diese Datei lädt, legt er automatisch die in dieser Datei angegebenen Räume an. Mindestens ein Raum muss angegeben werden - in irgendeinen Raum müssen Chatter gelangen, wenn sie sich einloggen.


3.5 Sicherheitseinstellungen

Sicherheit geht vor

Sicherheitseinstellungen werden für gewöhnlich in der Datei security.cfg vorgenommen. Hierzu zählt vor allem die Möglichkeit, Aufzeichnungen vom Chatgeschehen anzufertigen. Darüberhinaus kann zum Beispiel auch Chattern der Zutritt zum Chat verweigert werden.

Die Einstellungen in security.cfg werden zeilenweise vorgenommen. Ein Buchstabe am Zeilenanfang legt fest, auf wen sich die entsprechende Regel bezieht.

Tab. 3-3: Konfigurationsdatei security.cfg
Kennung Gültigkeitsbereich
r Räume
u Chatter (User)
w Websites
c Zensierte Wörter

Dem Buchstaben folgt eine genauere Bezeichnung. So kann entweder ein Raum- oder Nickname angegeben werden, wenn sich die Regel entsprechend auf Räume oder Chatter bezieht. Die Bezeichnung kann auch ein regulärer Ausdruck und somit recht weit gefasst sein. Außerdem ist es möglich, durch ein @ auf eine andere Datei zu verweisen, die ihrerseits zeilenweise Bezeichnungen enthält.

Hinter der Bezeichnung folgt eine Aktion. Wenn ein Dateiname hinter > angeben wird, wird in die entsprechende Datei aufgezeichnet. So könnte mit folgender Regel ein Chatter mit dem Nickname spinner überwacht werden: u spinner >spinner.log

Es ist darüberhinaus möglich, Chattern den Zugang zum Chat zu verweigern: u spinner noaccess

Für zensierte Wörter kann angegeben werden, dass Chatter automatisch gekickt werden: c @zensur.txt exit

Diese Regel kann mit einer gleichzeitigen Protokollierung versehen werden: c @zensur.txt >zensur.log exit

Für diese Regel müssten in der Datei zensur.txt zeilenweise Wörter aufgelistet werden, die der Zensur unterliegen. Auch hier ist es möglich, reguläre Ausdrücke zu verwenden.


3.6 Automatische Zeichenersetzung

Ein wenig Schmuck schadet nicht

Die Zeichenersetzung wird verwendet, um zum Beispiel anstatt eines Smileys wie :-) eine entsprechende Grafik einzublenden. Dazu müssen die drei Zeichen :-) durch HTML-Code ersetzt werden, der auf die Grafik verweist.

Die entsprechenden Einstellungen werden für gewöhnlich in einer Datei namens replace.cfg vorgenommen. Sie enthält durch ein Gleichheitszeichen getrennt einen regulären Ausdruck und Zeichen wie HTML-Code, der den regulären Ausdruck ersetzt. Alle Eingaben von Chattern werden automatisch gefiltert, wenn der reguläre Ausdruck zutrifft.