kallcenter ist bei den Anforderungen an die Hardware ausgesprochen genügsam.
Für die Clients sollte wegen des darunterliegenden SuSE 9.2 ein Arbeitsspeicher von 256 MB RAM (SD-RAM oder DDR-RAM) vorhanden sein. Die CPU-Leistung ist weniger wichtig; ein Pentium III 1 GHz ist vollkommen ausreichend, kallcenter wurde auch schon auf langsameren Rechnern mit ausreichender Performance betrieben.
Die Netzwerkverbindung sollte wegen der Update-Dienste 100 MBit/s betragen. Dabei ist nicht nur kcupdate, sondern auch der Update-Dienst von SuSE gemeint – Paket-Installationen übers Netz via YaST und Internet-Updates über einen Proxy-Server via YOU transportieren noch erheblich größere Datenmengen über das Netz.
Auch beim Server ist ein Pentium III 1 GHz ausreichend, wobei der Arbeitsspeicher hier großzügiger bemessen sein sollte (512MB RAM) und keine grafische Oberfläche laufen sollte. Eine solche Maschine zeigte mit zehn gleichzeitig telefonierenden Clients im Normalbetrieb nur eine unbedeutende CPU-Belastung.
Daten-Importe belasten den Server natürlich massiv. So dauerte der Import einer über zwei Millionen Telefonnummern umfassenden CSV-Datei über einen in Perl geschriebenen, sehr gründlich arbeitenden Filter auf der genannten Maschine knapp 50 Minuten – was ebenfalls noch ausreichend ist.
Der freie Plattenplatz sollte mindestens 20 bis 30 GB betragen, was nach heutigen Maßstäben ebenfalls sehr klein ist. So benötigt eine Datenbank mit knapp über zwei Millionen Einträgen ca. 500 Megabyte Platz. Allerdings wird für den Import einer zwei Millionen Einträge umfassenden Datei abermals 500 Megabyte temporärer Platz benötigt, unabhängig davon, wieviele Einträge hinterher tatsächlich übernommen werden. Entsprechend kann man hochrechnen, wieviel für den Import des Klicktel-Pools mit seinen ca. 30 Millionen Nummern benötigt würde: ca. 7,5 Gigabyte für die Datenbank, und mindestens noch einmal 500 Megabytes temporärer Platz, falls der Pool in Teilen von maximal zwei Millionen Nummern importiert wird; falls alles auf einmal importiert werden soll, sind 15 Gigabytes notwendig, nicht gerechnet das Betriebssystem und andere Anwendungen sowie die Transaktions-Logs von mySQL, falls diese eingeschaltet sind. Diese Logs haben aber eine der Datenbank vergleichbare Größe, da sie alle Import-Aktionen mitschreiben. Wobei es natürlich möglich ist, die Transaktions-Logs zwischenzeitlich immer wieder zu löschen.
Größte Sorgfalt sollte bei der Auswahl der Soundsysteme der Clients angewendet werden.
Hier gibt es kein Patentrezept. Es gibt verschiedene Anlaufstellen im Internet, um herauszufinden, ob ein Sound-System (Soundcard oder On-Board-Chipset) von Linux unterstützt wird oder nicht. Leider gibt es keine gute Anlaufstelle. Als Extremwerte können einerseits die SuSE/Novell-Hardware-Datenbank gelten (http://hardwaredb.suse.de/searchForm.php?searchtype=extended&LANG=de_DE), in der nur wenige unterstützte Karten und fast keine On-Board-Chipsets bzw. Hauptplatinen als „unterstützt“ vermerkt sind. So ist beispielsweise der relativ neue Chipset nVidia nForce2 nirgendwo gelistet, obwohl er unter SuSE 9.2 tadellos funktioniert (Sound ebenso wie alle anderen Funktionen). Interessanterweise ist die Hauptplatine GA-7N400 von Gigabyte, die diesen Chipset benutzt, als voll unterstützt gekennzeichnet, aber andere Hauptplatinen derselben Baureihe wie GA-7N400-L werden als „Unterstützung unbekannt“ gelistet, und die (voll unterstützte) Hauptplatine GA-7N400S-L wird gar nicht gelistet. Das entgegengesetzte Extrem ist die Soundcard-Liste auf der ALSA-Seite (http://www.alsa-project.org/alsa-doc/), in der man beispielsweise über die Sound Blaster Live 24 erfährt, daß sie über das Kernel-Modul ca0106 unterstützt wird, aber nicht, daß dieses Modul a) erst seit Kernel 2.6.11 zum Standardumfang gehört (also in SuSE 9.2 nicht vorhanden ist), und b) dieses Modul den Mikrofoneingang nicht unterstützt.
Es sind also bei jeder neuen Hardware-Kombination umfangreiche Recherchen und nach Möglichkeit ein Test nötig. Bei den Recherchen sollte man nach Möglichkeit nach Berichten von Anwendern suchen. Das Sound-System darf nicht alleine berücksichtigt werden; so kann ein voll funktionsfähiges Sound-System für Voice over IP untauglich sein, falls es zwischen Sound-System und Netzwerk-Schnittstelle einen Interrupt-Konflikt gibt.
Ein Beispiel für ein taugliches System aus aktuellen Komponenten ist folgende Kombination:
Hauptplatine Gigabyte GA-7N400S-L (Sound, IDE und S-ATA on board, alles durch nVidia nForce2; LAN 100MBit/s on board, durch RTL8139)
Prozessor AMD Athlon XP 3200+, FSB 400, Barton
Hauptspeicher Kingston DDR400, CL3
Festplatte Maxtor 6Y080MO (80 GB, 7200U/min, S-ATA/150)
Grafikkarte GeForce FX5200, 128MB, DDR
Dieses System ist natürlich für einen Callcenter-Client, der mehr oder weniger nur als Telefon fungiert, deutlich überdimensioniert. Noch ungetestet, aber vermutlich zu empfehlen ist die Kombination GA-7N400L (ohne S-ATA), AMD Sempron 2200+ und einer kleineren IDE-Festplatte.
Für kallcenter gibt es zwei RPM-Pakete, kallcenter-client und kallcenter-server. Zur Zeit gibt es lediglich eine Version für SuSE Linux 9.2 und Pentium-kompatible Prozessoren. Die Installation unter SuSE Linux ist so komfortabel, wie man es auch von der mitgelieferten Software kennt. Wer sich der RPM-Pakete bedient, kann die Abschnitte Systemvoraussetzungen und Installation der Datenbank überspringen.
Erste Voraussetzung ist natürlich ein funktionierendes Netzwerk; Server und Clients müssen untereinander und mit dem Internet verbunden sein.
Nach dem Download der Pakete können diese mit dem Konqueror geöffnet und über YaST installiert werden. Die von kallcenter benötigten SuSE-Pakete werden von YaST automatisch nachinstalliert.
Idealerweise beginnt man mit der Installation des Servers; die Clients sind ohne Kontakt zum kallcenter-Server nicht arbeitsfähig.
Auf dem Server muss zunächst das Paket kallcenter-client installiert werden; es enthält die Binärprogramme, die vom Server aus auf die Clients verteilt werden. Anschließend folgt das Paket kallcenter-server. (Download der Pakete ist möglich von: http://fourier.mylinuxproject.de/kallcenter).
Nach Installation von kallcenter-server erscheint im Startmenü unter „Büroprogramme“ der Eintrag „kallcenter Setup“. (Der ebenfalls dort sichtbare Eintrag „kallcenter“ startet lediglich den Client.) Startet man dieses Programm als normaler Benutzer, so wird zunächst nach dem root-Passwort gefragt.
Danach erfolgt Schritt für Schritt das Setup. Sollten mySQL und Apache nicht laufen, so startet das Setup sie und erinnert den Benutzer daran, sie als Dienste zu aktivieren. Das durch das RPM-Paket bereits erzeugte Verzeichnis /SuSE92 wird über Apache mit der URL /SuSE92 freigegeben.
Das Setup bietet die Möglichkeit, eine bereits existierende kallcenter-Datenbank einzubinden oder sie (inklusive Benutzer) neu anzulegen. Benutzer, Datenbankname und Passwort werden abgefragt.
Anschließend wird nach der IP-Adresse des Servers gefragt. Das Setup gibt als Voreinstellung die Adresse des ersten gefundenen Netzwerk-Interfaces an. Wird kein aktives Interface (außer Loopback) gefunden, warnt das Setup, dass das Netzwerk noch eingerichtet werden muss.
Falls das root-Passwort von mySQL noch nicht gesetzt wurde, wird es vom Setup gesetzt. Ein leeres Passwort wird nicht akzeptiert.
Das Setup erzeugt die Konfigurationsdateien der kallcenter-Clients, plaziert sie in der Web-Freigabe „/SuSE92/kallcenter“ und öffnet abschließend eine Seite mit einer Beschreibung, wie die Clients eingerichtet werden können.
Anmerkung: die Web-Freigabe /SuSE92 ist uneingeschränkt verfügbar. Daher sollte der kallcenter-Server vom Internet her nicht über Port 80 (WWW) erreichbar sein – wofür natürlich im allgemeinen auch kein Grund besteht –, oder der Zugriff muss manuell auf das lokale Netz eingeschränkt werden.
Anmerkung: beim Passwort für die kallcenter-Datenbank macht das Setup-Programm einen Vorschlag. Dieser Vorschlag ist eine zufällige Buchstaben/Zahlen-Kombination. Je nach Anforderungen kann es sinnvoll sein, diesen Vorschlag zu ändern; dies hängt von der Art und Anzahl der externen Applikationen ab, die auf die kallcenter-Datenbank zugreifen sollen. Da das Setup die Konfigurationsdateien der kallcenter-Clients mit erstellt, ist es nicht notwendig, für die Einrichtung der Clients das Passwort zu kennen. Wohl aber wird es derzeit für die Reports gebraucht.
Hinweis: Es ist vorgesehen, einige Standard-Reports ebenfalls über das Setup zu generieren, derzeit aber nicht realisiert.
Anmerkung: Sollte der Server eine dynamische, via DHCP zugeordnete Adresse haben, kann im Setup statt einer IP-Adresse auch ein Name angegeben werden. Empfehlenswert ist dies jedoch nicht, Server sollten keine DHCP-Clients sein und schon gar nicht dynamische Adressen haben. Anderenfalls entstehen unnötige Abhängigkeiten und sogar Sicherheitslücken.
Wer sich der RPM-Pakete bedient, kann diesen Abschnitt überspringen. RPM stellt sicher, dass die benötigten Pakete installiert sind.
Die folgenden Shared Object Files werden vom Programm kallcenter eingebunden (bestimmbar mit „ldd kallcenter“):
Paket |
SO File |
|
Paket |
SO File |
fontconfig |
libfontconfig.so.1 |
|
openssl |
libcrypto.so.0.9.7 |
freetype2 |
libfreetype.so.6 |
|
openssl |
libssl.so.0.9.7 |
glibc |
libc.so.6 |
|
qt3 |
libqt-mt.so.3 |
glibc |
libdl.so.2 |
|
xorg-x11-libs |
libICE.so.6 |
glibc |
/lib/ld-linux.so.2 |
|
xorg-x11-libs |
libSM.so.6 |
glibc |
libm.so.6 |
|
xorg-x11-libs |
libX11.so.6 |
glibc |
libpthread.so.0 |
|
xorg-x11-libs |
libXcursor.so.1 |
glibc |
libresolv.so.2 |
|
xorg-x11-libs |
libXext.so.6 |
Kernel 2.6 |
linux-gate.so.1 |
|
xorg-x11-libs |
libXft.so.2 |
expat |
libexpat.so.0 |
|
xorg-x11-libs |
libXi.so.6 |
libgcc |
libgcc_s.so.1 |
|
xorg-x11-libs |
libXrandr.so.2 |
libpng |
libpng.so.3 |
|
xorg-x11-libs |
libXrender.so.1 |
libstdc++ |
libstdc++.so.5 |
|
xorg-x11-libs |
libXt.so.6 |
libz |
libz.so.1 |
|
|
|
Des weiteren rufen kallcenter und der kallcenter-Update-Dienst kcupdate folgende andere Programme auf:
Paket |
Programm |
Anmerkung |
wget |
wget |
nur Update-Dienst kcupdate |
alsa |
alsactl |
Speichern und Wiederherstellen der Sound-Einstellungen durch kallcenter |
kdemultimedia3-mixer |
kmix |
Ändern der Sound-Einstellungen durch kallcenter |
kdelibs3 |
dcop |
Öffnen des kmix-Hauptfensters |
psmisc |
killall |
Beenden anderer Sound-benutzender Programme (artsd, kmix) |
psmisc |
fuser |
Ermitteln/beenden anderer Sound-benutzender Programme |
coreutils |
env |
Löschen des Environments |
Auf dem Server muss eine mySQL Datenbank existieren. Getestet wurde das System mit mySQL 4.0.21. Für den weiter unten beschriebenen Update-Dienst sollte ein Webserver existieren, beispielsweise Apache. Schließlich werden für die Import-Skripte der mySQL-Kommandozeilen-Client und Perl5 gebraucht. Unter SuSE Linux wären dies folgende Pakete:
Paket |
Anmerkung |
mysql |
Datenbank-Server |
mysql-client |
Kommandozeilen-Client, für die Installations- und Import-Skripte |
perl |
Perl5, für die Import-Skripte |
apache2 |
Webserver, für den Update-Dienst |
Auf dem Server muss zunächst die Datenbank erstellt werden. Dafür werden folgende Skripte ausgeführt:
cat create-database.sql | mysql -u root -p
Dieses Kommando fragt nach dem Passwort des Datenbank-Administrators. Es erstellt eine leere Datenbank callcenter, den Benutzer callcenter mit dem Passwort hd6wUKgc89h, und gibt dem Benutzer callcenter Vollzugriff auf die Datenbank callcenter.
cat cc-db.sql | mysql -u callcenter -phd6wUKgc89h
Dieses Kommando legt die Tabellenstruktur an und füllt die Tabelle states.
Weiterhin müssen die folgenden Skripte kopiert werden:
Quelle |
Ziel |
Anmerkung |
import-unique.pl |
/root/ |
Importiert Telefonnummern aus CSV-Dateien im Klicktel-Format |
negative-import.pl |
/root/ |
Noch zu erstellen! Import-Format bislang unbekannt. Erweitert die Negativliste um Einträge aus externen Quellen |
Anmerkung: Bei der jetzigen Architektur wird das Datenbank-Passwort in den Skripten selbst gespeichert. Daher müssen diese an einem für normale Benutzer unzugänglichen Ort abgelegt werden.
Anmerkung: Das Passwort für die Datenbank sollte ausgetauscht werden. Zunächst in der Datei create-database.sql, dann im Befehl zum Einspielen von cc-db.sql (siehe oben), dann in den beiden gerade genannten Perl-Scripts. Es steht außerdem noch an einer weiteren Stelle, nämlich im Installations-Skript des Update-Dienstes; dieses trägt es dann auf sämtlichen Clients bei der Erstinstallation von kallcenter in die Konfigurationsdatei ein. Siehe auch Update-Dienst / Installations-Skript.
Folgende Tabellen müssen zumindest einen Eintrag enthalten, um arbeiten zu können:
agents – mindestens ein Agent muss existieren, um sich einloggen zu können; vorzugsweise ein Agent mit normal = 1 (Bedeutung siehe kallcenter Datenbank),
contracts – mindestens ein Auftrag muss existieren,
agentcontracts – der Agent muss diesen Auftrag sehen können,
numbers – eine anzurufende Telefonnummer muss vorhanden sein, die in der Hauptmaske angezeigt werden kann; falls der oben erzeugte Agent den Wert normal = 1 hat, sollte auch die Telefonnummer den Wert normal = 1 haben,
sip – es muss für jeden Rechner, auf dem das Softphone läuft, ein Eintrag in der Tabelle sip existieren; natürlich muss dieser einen funktionsfähigen SIP-Account beschreiben.
Neue Programmversionen können von einem Update-Server aus automatisch auf allen Clients eingespielt werden. Der Update-Server muss ein Webserver sein (z.B. Apache). Da seine Belastung minimal ist, kann er auf derselben Maschine laufen wie die Datenbank.
Bei der ersten Installation von kallcenter auf den Clients muss zunächst eine Konfigurationsdatei „/etc/kcupdaterc“ angelegt werden, die den Update-Dienst steuert. Wird kcupdate ausgeführt, ohne daß diese Datei existiert, so wird die Datei automatisch mit Default-Werten erstellt.
Die Datei enthält folgende Einträge:
Variable |
Default-Wert |
Anmerkung |
KCSERVER |
192.168.0.1 |
Adresse des Update-Servers |
PATH |
/bin:/usr/bin:/usr/local/bin |
Mit diesem Pfad werden die Shellscripts des Update-Servers auf den Clients ausgeführt – Sicherheitswarnung: die Scripts laufen mit root-Rechten |
HOME |
/home/local |
Mit diesem Home-Directory werden die Shellscripts des Update-Servers auf den Clients ausgeführt – Sicherheitswarnung: die Scripts laufen mit root-Rechten |
VERSIONFILE |
/home/local/VERSION |
In dieser Datei wird das Erstellungsdatum (entspricht der Versionskennzeichnung) des Programms kallcenter abgelegt |
LOADPATH |
SuSE92/kallcenter |
Dies ist die Web-Freigabe auf dem Update-Server (Verzeichnis) |
MAINFILE |
kallcenter.bz2 |
Name der Datei in der Freigabe auf dem Update-Server, deren Erstellungsdatum mit dem Wert in der Datei $VERSIONFILE verglichen wird, um zu entscheiden, ob ein Update vorgenommen werden muss |
INSTALLFILE |
INSTALL.update-tmp |
Dieses Shellscript wird aus der Freigabe auf dem Update-Server geladen und lokal mit root-Rechten ausgeführt, um die Installation abzuschließen |
INDEXHTML |
index.html |
wget lädt das Inhaltsverzeichnis der Web-Freigabe in eine Datei dieses Namens herunter. Der Name ist beispielsweise bei Linux/Apache index.html, bei Windows/IIS hingegen index.htm oder default.htm. |
Auf dem Server muss eine Web-Freigabe existieren, die ein Auslesen des Verzeichnis-Inhaltes erlaubt (Apache: Option Indexes). Die Freigabe muss über die in der Konfigurationsdatei /etc/kcupdaterc angegebene URL http://$KCSERVER/$LOADPATH erreichbar sein.
In dieser Freigabe müssen die folgenden Dateien stehen:
Datei |
Beschreibung |
kallcenter.bz2 |
bzip2-komprimierte Fassung des Programmes kallcenter, nach Möglichkeit Übersetzt mit der Option –enable-debug=yes. Wichtig ist das Erstellungsdatum dieser Datei. Jede Änderung an diesem Datum erzwingt eine Neuinstallation auf allen Clients. |
kallcenter-latest.tar.bz2 |
bzip2-komprimiertes tar-Archiv mit den Quellen von kallcenter. Hierin befinden sich auch Icons, Konfigurationsdateien und anderes, was außer dem Binärprogramm für die Installation gebraucht werden könnte. |
kcupdate |
Das Binärprogramm des Update-Dienstes. |
INSTALL.update-tmp |
Dieses Shellscript wird vom Update-Dienst mit root-Rechten ausgeführt. Das Environment wird dabei vollständig durch die Datei /etc/kcupdaterc bestimmt. Siehe Installations-Skript. |
Das Installations-Skript INSTALL.update-tmp führt folgende Aufgaben durch:
Herunterfahren aller existierenden kallcenter-Instanzen (es sollten keine laufen, da der Update-Dienst von der kallcenter-Startroutine aktiviert wird),
Umbenennen der Log-Datei $HOME/kallcenter.log in kallcenter-<Jahr>-<Monat>-<Tag>-<Stunde>-<Minute>-<Sekunde>.log mit der aktuellen Systemzeit des Clients,
anlegen der Verzeichnisse /opt/kde3/share/apps/kallcenter/translations (für die Sprach-Lokalisierung) und /opt/kde3/share/apps/kallcenter/icons (für das Desktop-Icon, den Splash-Screen, verschiedene Icons in den Schaltflächen und Titelzeilen von kallcenter) sowie notfalls der darüberliegenden Verzeichnisse,
Herunterladen der aktuellen kcupdate-Version in das Arbeitsverzeichnis /tmp (Bemerkung: das aktuelle Arbeitsverzeichnis wird von kcupdate selbst auf /tmp gesetzt),
setzen von suid-root für kcupdate,
verschieben von kcupdate in das Heimatverzeichnis des Benutzers local,
löschen eventuell vorhandener Archive in /tmp (Arbeitsverzeichnis),
Herunterladen von kallcenter-latest.tar.bz2 und kallcenter.bz2,
Entpacken von kallcenter-latest.tar.bz2 im Arbeitsverzeichnis /tmp,
kopieren der Icons aus dem Sourcen-Verzeichnis (kallcenter/) nach /opt/kde3/share/apps/kallcenter/icons/,
kopieren der Sprach-Lokalisierung aus dem Sourcen-Verzeichnis nach /opt/kde3/share/apps/kallcenter/translations/,
setzen der Zugriffsrechte dieser Verzeichnisse – nur root darf dort schreiben,
entpacken von kallcenter.bz2,
setzen von suid-root für kallcenter,
verschieben von kallcenter in das Heimatverzeichnis des Benutzers local,
erzeugen eines Start-Skriptes (Desktop-Icon) für kallcenter auf dem Desktop des Benutzers local (Details zu diesem Skript siehe weiter unten),
Freigabe von Schreibrechten für den Benutzer local (und nur ihn) für das Desktop-Icon,
und schließlich: falls noch keine Konfigurationsdatei /etc/X11/kallcenterrc für kallcenter existiert, kopieren dieser Datei aus dem Sourcen-Verzeichnis mit gleichzeitigem Verändern des Eintrags für den Datenbank-Server, und zwar in den Wert $KCSERVER (also den Update-Server).
Abschließend werden die Archive und das entpackte Sourcen-Verzeichnis wieder gelöscht.
Das erstellte Startskript (Desktop-Icon) wurde folgendermaßen angepaßt:
das dargestellte Icon ist /opt/kde3/share/apps/kallcenter/icons/icon.png,
der Startbefehl führt zunächst kcupdate aus und lenkt Standard-Output und -Error auf die Log-Datei kcupdate.log um,
dann wird der Core Dump-Mechanismus eingeschaltet (hier mit einer Maximalgröße von 400 MB – beim Ressourcenverbrauch von kallcenter werden die Core Dumps allerdings wohl nicht über 10 MB anwachsen),
dann wird kallcenter gestartet und Standard-Output und -Error auf die Log-Datei kallcenter.log umgelenkt.
Die Pfade zu den Programm- und Log-Dateien sind durch die Variable $HOME (Heimatverzeichnis des Benutzers) gegeben.
Arbeitsverzeichnis ist ebenfalls das Heimatverzeichnis des Benutzers.
Sicherheitslücke: Momentan ist das Passwort für die Datenbank in der Konfigurationsdatei „/etc/X11/kallcenterrc“ gespeichert. Diese kann zwar theoretisch als nur „les-/schreibbar für root“ gespeichert werden. Aber jeder Schreibzugriff durch die Anwendung kallcenter (speziell durch Lautstärkeänderungen) führt zu einem Rücksetzen der Zugriffsrechte auf „schreibbar für root, lesbar für jeden“. Das Setzen von Zugriffsrechten wird von der Klasse QSettings nicht unterstützt. In einer späteren Version wird das Passwort in eine zweite Datei ausgelagert werden.