LiveConfig Referenzhandbuch (1.4)

Referenzhandbuch
Version 1.8
LiveConfig® Referenzhandbuch
für LiveConfig 1.8.3
Keppler IT GmbH
LiveConfig® Referenzhandbuch: für LiveConfig 1.8.3
Keppler IT GmbH
Erzeugt aus SVN-Revision 3572
Veröffentlicht Fri May 8 10:03:47 CEST 2015
Copyright © 2009, 2010, 2011, 2012, 2013, 2014, 2015 Keppler IT GmbH, Erlangen
Dieses Handbuch ist urheberrechtlich geschützt. Alle Rechte vorbehalten. Kein Teil dieses Handbuchs
darf ohne vorherige schriftliche Genehmigung der Keppler IT GmbH in irgendeiner Form reproduziert
werden. Druck und Vervielfältigung sind lediglich für den persönlichen Gebrauch des Nutzers gestattet.
LiveConfig ist ein eingetragenes Markenzeichen der Keppler IT GmbH, Erlangen.
Alle anderen in diesem Handbuch erwähnten Hardware- und Softwarebezeichnungen sind in der Regel
Warenzeichen oder eingetragene Markenzeichen ihrer jeweiliger Inhaber, auch wenn diese hier nicht
unbedingt als solche gekennzeichnet sind.
Inhaltsverzeichnis
Vorwort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix
1. Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1. Philosophie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2. Verwaltungsstruktur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.3. Architektur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4. Vorteile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.5. Sicherheit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.6. Lizenzmodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2. LiveConfig-Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.1. Voraussetzungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.1.1. Firewall-Einstellungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.1.2. Dateisystem-Quota . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2. Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.1. Debian GNU/Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.2. Ubuntu Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2.3. OpenSUSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.2.4. CentOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.3. Datenbank . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.3.1. MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.4. Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.4.1. Allgemeine Einstellungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.4.2. Datenbank-Einstellungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.4.3. HTTP-Protokoll-Einstellungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.4.4. LCCP-Protokoll-Einstellungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.5. SSL-Zertifikat verwenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.6. Lizenz-Aktivierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.7. Passwort-Initialisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.8. Programme und Dateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.8.1. LiveConfig Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.8.2. Hilfsprogramme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3. LiveConfig-Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.1. Voraussetzungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.1.1. Firewall-Einstellungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.1.2. Dateisystem-Quota . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.2. Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.2.1. Debian GNU/Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.2.2. Ubuntu Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.2.3. OpenSUSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
v
LiveConfig® Referenzhandbuch
3.2.4. CentOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.3. Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.3.1. Allgemeine Einstellungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.3.2. LCCP-Protokoll-Einstellungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.4. Lizenz-Aktivierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.5. Programme und Dateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.5.1. LiveConfig Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.5.2. Hilfsprogramme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4. Erste Schritte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.1. Anmeldung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.2. Einstellungen verwalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.2.1. Sprache und Zeitzone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.2.2. Passwort ändern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.2.3. Zwei-Faktor-Authentifizierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.3. Wiederverkäufer-Einstellungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.4. Server verwalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.4.1. Webserver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.4.2. FTP-Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.4.3. Mailserver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.4.4. Datenbankserver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.4.5. Nameserver (DNS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
4.5. Hosting-Angebote . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
4.6. Kunden verwalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.6.1. Kundendetails . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.6.2. Verträge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
4.6.3. Domains . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
4.7. Benutzerverwaltung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
4.8. Webspace-Verwaltung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
4.9. Domaineinstellungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
4.10. E-Mail-Postfächer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
4.11. Datenbanken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
4.12. Cron-Jobs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
4.13. Application Installer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
4.14. SSL-Zertifikate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
4.14.1. Privater Schlüssel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
4.14.2. Zertifikatsanforderung (CSR) erzeugen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
4.14.3. Zertifikat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
4.14.4. CA-Zwischenzertifikate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
4.15. Nameserver (DNS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
4.15.1. DNS-Vorlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
4.15.2. Externe DNS-Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
vi
4.16. Verzeichnisstruktur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
5. Fortgeschrittene Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
5.1. LiveConfig-Standardwerte ändern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
5.2. Webspace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
5.2.1. ProFTPD-Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
5.3. E-Mail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
5.3.1. Autokonfiguration (Autodiscovery) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
5.3.2. Quota-Warnung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
5.3.3. Postfix-Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
5.3.4. Dovecot-Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
6. Wartung und Pflege . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
6.1. Backup und Wiederherstellung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
6.1.1. Backup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
6.1.2. Wiederherstellung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
6.2. Monitoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
6.2.1. Nagios® / Icinga® . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
7. Deinstallation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
7.1. LiveConfig-Server deinstallieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
7.1.1. Debian GNU/Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
7.1.2. Ubuntu Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
7.1.3. OpenSUSE, CentOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
7.2. LiveConfig-Client deinstallieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
7.2.1. Debian GNU/Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
7.2.2. Ubuntu Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
7.2.3. OpenSUSE, CentOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
8. Programmierschnittstellen (APIs) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
8.1. SOAP Webservice API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
8.1.1. Voraussetzungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
8.1.2. Authentifizierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
8.1.3. WSDL Servicebeschreibung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
8.1.4. Programmbeispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
8.1.5. SOAP-Referenz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
8.2. Lua API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
8.2.1. Organisation und Funktionsweise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
8.2.2. Testen eigener Programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
8.2.3. Programmbeispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
8.2.4. Lua-Referenz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
8.3. IFRAME API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
8.3.1. Einrichtung „eigener Links“ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
8.3.2. Programmierung eigener Inhalte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
A. Fehlerbehebung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
vii
LiveConfig® Referenzhandbuch
A.1. LiveConfig-Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
A.1.1. Serverzugriff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
A.2. LiveConfig-Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
B. Copyright-Hinweise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
B.1. LiveConfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
B.2. Verwendete Bibliotheken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
B.3. Verwendete Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
Stichwortverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
viii
Vorwort
Vielen Dank, dass Sie sich für LiveConfig® entschieden haben. Mit LiveConfig haben Sie eine gute
Wahl getroffen: Ihre Server werden somit durch eines der modernsten und schnellsten Controlpanel-Systeme verwaltet. LiveConfig verfolgt dabei einen anderen Ansatz als bisher erhältliche
Controlpanel-Produkte. Es erkennt automatisch auf welcher Distribution es eingesetzt wird und
verwaltet die Softwarepakete der jeweiligen Distribution, statt dem gesamten System seine eigenen Pakete aufzudrücken.
Dieses Handbuch umfasst alle Aspekte von LiveConfig - von der Installation und den ersten Schritten über Monitoring und Backup bis hin zu Programmierschnittstellen und Erweiterungsmöglichkeiten.
Wir hoffen, dass Ihnen dieses Handbuch bei allen Fragen zur Seite steht. Sollten Sie Informationen
vermissen oder sonstige Anmerkungen haben, freuen wir uns jederzeit über Ihr Feedback!
Ihr LiveConfig-Entwicklerteam
Wissensdatenbank
Spezielle Anleitungen für konkrete Fragestellungen halten wir in unserer Wissensdatenbank unter
http://www.liveconfig.com/de/kb bereit. Dort finden Sie beispielsweise Anleitungen zu folgenden
Themen:
• Installation eines Hosting-Servers mit Debian GNU/Linux 6.0 (Lenny) (KB#8)
• Integration der LiveConfig-Anmeldung in eigene Webseiten (KB#2)
• Einrichten eines SSL-Zertifikats für den LiveConfig-Server (KB#3)
• Migration von Parallels® Confixx zu LiveConfig (KB#5)
Häufige Fragen
Besonders häufig gestellte Fragen (FAQ - Frequently Asked Questions) haben wir unter der Adresse http://www.liveconfig.com/de/faq gesammelt und beantwortet. Diese Liste wird ständig erweitert.
Allgemeine Fragen
Für alle Fragen rund um LiveConfig steht unter http://www.liveconfig.com/de/forum/ ein umfangreiches Forum bereit. Von technischen Fragen zur Installation bis hin zur Wunschliste für zukünftige Versionen sollten Sie dort für jedes Thema das richtige Diskussionsforum finden.
ix
Vorwort
Alle sonstigen Anfragen richten Sie bitte per E-Mail an <[email protected]>. Bitte
erlauben Sie uns 1-2 Tage Zeit um Ihre Anfrage zu bearbeiten.
Per Post erreichen Sie uns unter folgender Anschrift: Keppler IT GmbH, Am Weichselgarten 7, 91058
Erlangen.
Konventionen
In dieser Dokumentation werden folgende typographische Konventionen benutzt:
• Befehle, Programmnamen und Benutzereingaben werden so geschrieben: „Führen Sie liveconfig mit dem Parameter --help aus.“
• Datei- und Verzeichnisnamen werden so geschrieben: „Die Datei liveconfig.cfg befindet
sich im Verzeichnis /opt/liveconfig/etc/“
• Allgemeine Hervorhebungen, Produktnamen etc. sehen so aus: „Sie können diese Datei nicht
mit Microsoft Word öffnen.“
Bildschirmausgaben sehen so aus:
$> liveconfig --help
Das ist eine
Bildschirmausgabe...
Programmbeispiele sehen so aus:
#!/usr/bin/perl
print "Hallo, Welt!\n";
exit(0);
Weiterhin werden folgende Symbole verwendet:
Das hier ist eine Bemerkung.
Das hier ist ein wichtiger Hinweis!
x
Feedback
Feedback
Sollten Sie einen Fehler in dieser Anleitung entdecken oder sonstige Verbesserungsvorschläge
haben, so freuen wir uns von Ihnen zu hören! Senden Sie uns dazu bitte einfach eine E-Mail an
<[email protected]>. Vielen Dank!
xi
xii
Kapitel 1. Einführung
LiveConfig ist eine Software zur Verwaltung von Linux/Unix-basierten Serversystemen. Die Entwickler von LiveConfig greifen auf über zehn Jahre Fachwissen aus der Hostingbranche zurück,
daher verfolgt LiveConfig einige neuartige Ansätze, welche im Folgenden näher beschrieben werden.
1.1. Philosophie
LiveConfig verwaltet Server - das heißt, die Software erleichtert dem jeweiligen Administrator die
tagtägliche Arbeit, indem Routine-Tätigkeiten vereinfacht oder gar automatisiert werden.
LiveConfig überlässt es dabei dem Benutzer, welches Betriebssystem oder welche Distribution
er einsetzt. Üblicherweise hat es seinen Grund, warum sich ein Anwender für oder gegen eine
bestimmte Distribution entscheidet - wie beispielsweise persönliche Erfahrung, Support-Verträge
oder Unternehmensrichtlinien. Das bedeutet auch, dass LiveConfig für bestimmte Einsatzzwecke
(z.B. als Hosting-Webserver) nicht auf proprietäre Pakete zurückgreift, sondern die Softwarepakete der jeweiligen Distribution entsprechend konfiguriert. LiveConfig verhält sich somit minimal-invasiv - würde LiveConfig irgendwann wieder deinstalliert werden, würden alle Dienste auf
dem zuletzt konfigurierten Stand weiterlaufen.
Gleichzeitig ist LiveConfig bewusst kompakt gehalten - es bestehen keine Abhängigkeiten zu
bestimmten Bibliotheken oder Anwendungen. Alles was LiveConfig für seine Weboberfläche
benötigt, ist bereits enthalten. Es macht schließlich keinen Sinn, wenn eine Software zur Verwaltung von Webservern bereits einen fertig konfigurierten Webserver mit PHP und MySQL-Datenbank voraussetzt.
1.2. Verwaltungsstruktur
Die Organisation von Administratoren, Wiederverkäufern und Endkunden ist flexibel gehalten: ein
„Administrator“ (also der Betreiber eines Servers) kann auch direkt Webspaces einrichten, genauso kann ein Wiederverkäufer selbst weitere Wiederverkäufer anlegen - vorausgesetzt natürlich, er
hat die dazu nötigen Berechtigungen. Innerhalb eines Kunden können weitere Benutzer angelegt
werden, die nur Berechtigungen für die Verwaltung ausgewählter Hostingverträge erhalten. Einzelnen Benutzern können indivuell Berechtigungen zugewiesen oder entfernt werden. Die starre
dreigliedrige Hierarchie „Administrator - Wiederverkäufer - Endkunde“ gibt es bei LiveConfig also
nicht. Somit eignet sich LiveConfig auch hervorragend für die Verwaltung eines „eigenen“ dedizierten Webservers, ohne Pseudo-Wiederverkäufer anlegen zu müssen oder für die Konfiguration
des Webspaces in eine andere Controlpanel-Oberfläche wechseln zu müssen.
1
Einführung
Kunden, Benutzer, Verträge und Kontakte
In LiveConfig wird zwischen Kunden, Benutzern und Verträgen unterschieden. Ein Kunde (beispielsweise ein Firma) kann mehrere Benutzer und mehrere Verträge haben. Dabei kann genau
festgelegt werden, welcher Benutzer welche Berechtigungen für welchen Vertrag besitzt. Alle
Kontaktdaten (Name, Anschrift, E-Mail-Adresse etc.) werden separat verwaltet, damit diese zentral aktualisiert werden können. Einem Kunden können so auch verschiedene Kontakte (Vertragspartner, technischer Ansprechpartner und Buchhaltung) zugewiesen werden.
Die nachfolgende Grafik zeigt ein Beispiel für eine komplexere Kundenstruktur, wie diese mit
LiveConfig möglich ist:
Abbildung 1.1. Beispiel für eine komplexere Kundenstruktur
2
Architektur
• Der LiveConfig-Administrator hat zwei Benutzer angelegt: admin und support. Außerdem hat er
sich einen „eigenen“ Webspace (myweb1, z.B. für die eigene Website) eingerichtet. Außerdem
hat er drei Kunden angelegt: Resale GmbH, Bert Beispiel und Muster GmbH.
• Der Kunde Muster GmbH hat mehrere Webspace-Verträge (in diesem Beispiel einen für die
Firmen- und einen für eine Produktwebsite). Die einzelnen Verträge können sich bei einem
Multi-Server-Setup auch auf verschiedenen Webservern befinden und dennoch zentral unter
einer Adresse verwaltet werden.
• Der Kunde Resale GmbH hat einen klassischen Wiederverkäufer-Vertrag, mit dem die Kunden
Daniel Demo und Musterfrau KG angelegt wurden.
• Der Kunde Musterfrau KG hat ebenfalls einen Reseller-Vertrag, in dessen Rahmen ein „eigener“
Webspace (z.B. für die Website der Firmenzentrale) sowie ein weiterer Kunde (z.B. für eine
Niederlassung) eingerichtet wurde.
Lassen Sie sich durch diese vielen Begriffe und Möglichkeiten bitte nicht abschrecken. Im einfachsten Fall legen Sie als Administrator einfach Ihre selbst genutzten Webspaces (Verträge) direkt
an, oder greifen auf aus anderen Controlpanels gewohnte Strukturen („admin“ - „res1“ - „web1“
etc.) zurück.
1.3. Architektur
LiveConfig ist modular aufgebaut und somit langfristig an neue Anforderungen anpassbar. Es
wurde von Anfang zur Verwaltung von mehreren Servern entwickelt, kann aber genauso auch
auf nur einem einzigen Server eingesetzt werden.
3
Einführung
Abbildung 1.2. LiveConfig-Architektur
In einer LiveConfig-Installation wird zwischen dem Server und den Clients unterschieden. Der
LiveConfig-Server (siehe Kapitel 2, LiveConfig-Server) stellt die Weboberfläche und die SOAPSchnittstelle zur Verfügung, und steht mit allen Clients in Kontakt. Diese wiederrum kümmern
sich um die tatsächliche Systemverwaltung: sie steuern Prozesse, liefern Statistik-Informationen
an den LiveConfig-Server, legen neue Benutzer an, und so weiter. Der LiveConfig-Server enthält
einen integrierten Client, um den lokalen Server zu verwalten, für weitere Server reicht die Installation eines LiveConfig-Clients (siehe Kapitel 3, LiveConfig-Client).
Die eigentliche Serversteuerung, also beispielsweise die Erzeugung von Konfigurationsdateien
oder das Starten von Diensten, wird mit Hilfe eigener Scripte durchgeführt. Diese Scripte sind
in der freien Programmiersprache „Lua“ geschrieben, und liegen LiveConfig im Quelltext bei. Für
spezielle Anforderungen können Sie diese Scripte entsprechend Ihrer Bedürfnisse anpassen - Sie
müssen sich also nicht mit verschlüsselten Programmen herumärgern, sondern bleiben unabhängig und flexibel. Weitere Informationen finden Sie in Abschnitt 8.2, „ Lua API “.
4
Vorteile
1.4. Vorteile
Die Vorteile von LiveConfig im Vergleich zu anderen Produkten sind:
• Unabhängigkeit von PHP: PHP-Updates haben keinen Einfluss auf LiveConfig. Bieten Sie Ihren
Kunden die PHP-Version an, die nachgefragt wird - nicht die, die Ihr Control Panel benötigt um
zu funktionieren.
• Maximale Effizienz: LiveConfig ist in C/C++ programmiert - es benötigt keinen Interpreter und
keine Datenbank. Somit bleiben Ihnen mehr Ressourcen für die eigentlichen Serveranwendungen.
• Minimal-Invasive Installation: Für alle unterstützten Distributionen liegen native Installationspakete (.deb/.rpm/.ebuild/...) vor. Sie könnten LiveConfig jederzeit wieder rückstandslos
deinstallieren (falls Sie das wirklich möchten ;-). LiveConfig erkennt und berücksichtigt die
jeweilige Distribution und verhält sich genau so, wie es auf dieser Distribution „üblich“ ist.
• Sichere Weboberfläche: Jede einzelne Formulareingabe auf der Weboberfläche wird durch
LiveConfig untersucht, bevor die Daten weiterverarbeitet werden. XSS und SQL-Injections
haben somit keine Chance.
• Zwei-Faktor-Authentifizierung: Für mehr Sicherheit bei der Anmeldung kann eine ZweiFaktor-Authentifizierung aktiviert werden. Diese ist kompatibel mit dem kostenlosen Google
Authenticator und erfordert keine Hardware-Tokens oder externe Dienstleister.
• Benutzer- und Rechteverwaltung: Mit LiveConfig können einem Kunden mehrere Benutzer
zugeordnet werden. Die Berechtigungen jedes Benutzers können wiederum individuell verwaltet werden. Und zwar ohne komplexe ACL-Strukturen, sondern mit einem absolut intuitiv
bedienbarem „Rechte-Baum“.
• Transparente Konfigurationsverwaltung: Die Erstellung der einzelnen Konfigurationsdateien
erfolgt durch quelloffene Lua-Scripte. Lua ist eine kompakte und sehr einfach erlernbare Programmiersprache - Sie haben somit die Möglichkeit, auf den gesamten Prozess der Dateierzeugung Einfluß zu nehmen.
• Einzigartiger Datenschutz: Alle Objekte, welche mit LiveConfig bearbeitet werden, haben individuell verschlüsselte IDs. Somit ist es Außenstehenden nicht möglich herauszufinden, wie
viele der jeweiligen Objekte (Kunden, Domains, Server, ...) mit LiveConfig verwaltet werden.
• Reines HTML: LiveConfig „spricht“ reines HTML. Für die dynamische Datenaktualisierung im
Browser kommen Ajax und HTML5 zum Einsatz. Die Weboberfläche kommt ohne Adobe®
Flash® aus, und funktioniert somit z.B. auch auf dem iPad® oder dem iPhone™.
5
Einführung
• SOAP-Schnittstelle: Über die standardmäßig enthaltene SOAP-Schnittstelle können neue Kunden, Benutzer, Domains und vieles mehr automatisiert angelegt werden. Ideal für die Anbindung an eigene Bestellsysteme.
• Volle IPv6-Unterstützung: Sowohl LiveConfig selbst als auch alle damit erzeugten Konfigurationsdateien sind komplett IPv6-fähig (natürlich auch die Website und Lizenzserver von LiveConfig selbst)
• Internationalisierte Domainnamen (IDNs): „Umlaut-Domains“ werden ebenfalls vollständig
unterstützt. Bei der Suche nach Domainnamen wird beispielsweise nach der Punycode- und
der Unicode-Darstellung gleichzeitig gesucht.
• Unterstützung mehrerer Webserver: mit LiveConfig können Sie sowohl Apache httpd als auch
NGINX konfigurieren - und sogar beide Server parallel nutzen, so dass einzelne Subdomains
wahlweise auf einem der beiden Webserver deployed werden.
1.5. Sicherheit
Da LiveConfig einen „root-Zugriff“ auf allen damit verwalteten Servern besitzt, wurde bei der Entwicklung besonders viel Wert auf die Sicherheit gelegt. So werden beispielsweise sämtliche Eingaben in Web-Formularen mittels sogenannter „regulärer Ausdrücke“ vorab auf ihre Plausibilität
geprüft. Die integrierte Datenbank-Schnittstelle arbeitet mit „Prepared Statements“, was klassische „SQL Injections“ praktisch unmöglich macht.
Ein weiterer Schwerpunkt liegt in der Vermeidung von Information Leakage. Alle Objekt-IDs werden dem Benutzer nur verschlüsselt angezeigt - man kann also anhand der IDs von Objekten
nicht auf deren Anzahl schließen. So ist es beispielsweise einem Reseller nicht möglich herauszufinden, wie viele andere Kunden oder Domains dessen Lieferant mit LiveConfig verwaltet.
Nicht zuletzt speichert LiveConfig alle Passwörter und sonstige sensible Informationen (z.B. private Schlüssel für SSL-Zertifikate) ausschließlich als „gesalzene“ Hashes oder stark verschlüsselt.
Die Anmeldung an LiveConfig erkennt und blockiert automatisch Brute-Force-Angriffe und kann
mittels Zwei-Faktor-Authentifizierung zusätzlich abgesichert werden.
1.6. Lizenzmodell
LiveConfig ist in drei verschiedenen Versionen erhältlich:
• Die Basic-Lizenz richtet sich an private Endkunden und Nutzer von (kleinen) virtuellen Servern.
Mit dieser Lizenz können u.a. bis zu 10 Benutzer verwaltet werden, aber keine zentralen Dienste,
Hosting-Angebote, Reseller oder Kunden.
• Die Standard-Lizenz erlaubt die unbegrenzte Verwaltung eines Servers - egal, wie viele Benutzer oder Domains damit eingerichtet werden.
6
Lizenzmodell
• Die Business-Lizenz ermöglicht zusätzlich die Verwaltung mehrerer Server (welche auch
jeweils eine gültige Basic- oder Standard-Lizenz benötigen) über eine zentrale Weboberfläche.
Genauere Informationen zum jeweiligen Funktionsumfang zeigt folgende Tabelle:
LiveConfig Basic
LiveConfig Standard
LiveConfig Business
Kunden verwalten
-
Ja
Ja
Benutzer verwalten
Ja (max. 10)
Ja
Ja
mehrere Server verwalten
-
-
Ja a
Hosting-Angebote
verwalten
-
Ja
Ja
Webspace konfigurieren
Ja
Ja
Ja
E-Mail konfigurieren
Ja
Ja
Ja
SOAP-API
-
Ja
Ja
a
Für jeden zu verwaltenden Server ist eine eigene Basic- oder Standard-Lizenz erforderlich.
Ein LiveConfig-Server mit einer Business-Lizenz kann beispielsweise auch einen Server mit einer
Basic-Lizenz verwalten, auf welchem dann aber u.a. keine weiteren Kunden eingerichtet werden
können.
7
8
Kapitel 2. LiveConfig-Server
Der LiveConfig-Server ist das Herzstück einer LiveConfig-Installation. Zum einen stellt dieser die
Web-Oberfläche zur Programmsteuerung bereit, zum anderen koordiniert dieser die Konfigurations-Aufgaben auf den jeweiligen Servern. Außerdem sammelt der LiveConfig-Server von allen
verwalteten Servern laufend Statistik-Informationen und stellt diese grafisch aufbereitet zur Verfügung.
2.1. Voraussetzungen
Für die Installation eines LiveConfig-Servers benötigen Sie:
• „root-Zugriff“ auf den zu installierenden Server (über Konsole oder SSH)
• etwa 30 MB freien Speicherplatz
• einen aktuellen Web-Browser (z.B. Mozilla Firefox® ab Version 3.0, Apple Safari® ab Version 3.0,
Microsoft® Internet Explorer® ab Version 8)
Es werden keine besonderen Softwarepakete benötigt, insbesondere kein PHP, Apache httpd oder
MySQL. LiveConfig nutzt lediglich die standardmäßig installierten C-Bibliotheken (libc).
Achten Sie bitte auch auf folgende allgemeine Voraussetzungen:
• Korrekte Uhrzeit: die Uhrzeit auf dem Server muss korrekt eingestellt sein, da es sonst zu Problemen insbesondere bei SSL-Verbindungen, beim Mailversand/-Empfang oder mit der Gültigkeit von LiveConfig-Lizenzen kommen kann. Am besten installieren Sie das Paket ntp (zur
automatischen Aktualisierung der Uhrzeit über das Network Time Protocol).
• Gültiger Hostname & Reverse-DNS: der Server muss einen korrekten Hostnamen besitzen. Mit
dem Befehl hostname -f wird der vollständige (qualifizierte) Name angezeigt; dieser sollte
aus einem Rechnernamen und einem Domainnamen bestehen.
Beispiel: für einen Webserver mit dem Namen www.example.org sollte in der Datei /etc/
hostname lediglich „www“ eingetragen sein; in /etc/hosts sollte ein Eintrag in der Form
„<IP-Adresse> <vollständiger Name> <Kurzname>“ stehen, in diesem Fall also z.B. „12.34.56.78
www.example.org www“. Wenn alles richtig konfiguriert ist, liefert der Befehl hostname lediglich „www“ zurück, der Befehl hostname -f dann „www.example.org“.
Einen korrekten Reverse-DNS-Namen brauchen Sie vor allem dann, wenn Sie mit dem Server
auch E-Mails versenden möchten. Viele Mailserver prüfen standardmäßig, ob der Name des
einlieferndes Mailservers mit dessen Reverse-DNS-Namen übereinstimmt.
9
LiveConfig-Server
2.1.1. Firewall-Einstellungen
Falls der zu installierende Server von einer vorgeschalteten Firewall geschützt wird, müssen folgende Ports für eingehende Verbindungen freigegeben werden:
• TCP Port 8443 (für HTTPS-Zugriff)
• Optional: TCP Port 788 (falls sich LiveConfig-Clients mit diesem Server verbinden sollen)
• Optional: TCP Port 8080 (falls Sie auch einen unverschlüsselten Zugriff via HTTP erlauben möchten)
Die Port-Einstellungen können über die Konfigurationsdatei beliebig geändert werden (siehe
Abschnitt 2.4.3, „HTTP-Protokoll-Einstellungen“ und Abschnitt 2.4.4, „ LCCP-Protokoll-Einstellungen “).
Außerdem müssen folgende ausgehenden Verbindungen möglich sein:
• TCP Port 443 (HTTPS) zum Lizenzserver (license.liveconfig.com)
• Optional: TCP Port 443 (HTTPS) zum Update-Server (update.liveconfig.com) zur Installation von
Web-Anwendungen, sowie Port 80 (HTTP) zu den Downloadservern der jeweiligen Anwendungen
2.1.2. Dateisystem-Quota
Damit der Speicherplatz für die einzelnen Webspaces begrenzt werden kann, muss das Quota-System eingerichtet werden. Installieren Sie hierzu das Paket quota und aktivieren für
das unter /var/www/ (bzw. bei OpenSUSE /srv/www/) gemountete Dateisystem die Gruppen-Quotas.
• bei
ext3/ext4-Dateisystemen
tragen
Sie
in
/etc/fstab
grpjquota=aquota.group,jqfmt=vfsv0 ein, z.B. so:
UUID=[...]
/
ext3
errors=remount-ro,grpjquota=aquota.group,jqfmt=vfsv0
Mounten Sie das Dateisystem anschließend neu:
mount -vo remount <Dateisystem>
Danach muss das Quota berechnet werden:
quotacheck -vgm <Dateisystem>
Schließlich kann das Quota-System aktiviert werden:
10
die
Optionen
0
1
Dateisystem-Quota
quotaon -vg <Dateisystem>
• bei XFS-Dateisystemen kommt es darauf an, ob das Quota auf einem root-Dateisystem (/) oder
auf einem anderen Dateisystem aktiviert werden soll. Falls es sich nicht um das root-Dateisystem handelt, fügen Sie in /etc/fstab einfach die Option grpquota an, und mounten es
anschließend neu:
UUID=[...]
/var
xfs
errors=remount-ro,grpquota
0
1
mount -vo remount <Dateisystem>
Falls das Quota aber für das root-Filesystem aktiviert werden soll, müssen Sie die Option
rootflags=grpquota in die Boot-Parameter des Kernels mit aufnehmen! Wenn der Server direkt über einen Bootloader wie z.B. Grub startet, tragen Sie diese Option in die entsprechende Konfigurationsdatei ein; beim Start einer virtuellen Maschine muss das ggf. in deren
Konfigurationsdatei eingetragen werden (bei Xen beispielsweise mit dem Befehl extra =
'rootflags=grpquota'.
• bei Virtuozzo-/OpenVZ-Containern muss das sogenannte Second-Level-Quota für den
gewünschten Container aktiviert werden, was nur der Administrator des Host-Systems einrichten kann. Weitere Informationen finden Sie in der Virtuozzo-Dokumentation oder im OpenVZWiki.
Setzen Sie hierzu die Option quotaugidlimit auf die maximale Anzahl von Benutzern
und Gruppen in dem gewünschten Container, inklusive aller Systembenutzer und -Gruppen.
Anschließend muss der Container neu gestartet werden, damit die Änderungen wirksam werden.
Folgendes Beispiel zeigt, wie für den Container 101 das Quota für maximal 500 Benutzer/Gruppen eingerichtet wird:
#> vzctl set 101 --quotaugidlimit 500 --save
Unable to apply new quota values: ugid quota not initialized
Saved parameters for CT 101
#> vzctl restart 101
Restarting container
Stopping container ...
Container was stopped
Container is unmounted
Starting container ...
Container is mounted
Adding IP address(es): 192.168.100.101
Setting CPU units: 1000
Configure meminfo: 65536
File resolv.conf was modified
Container start in progress...
Ob das Gruppen-Quota erfolgreich aktiviert ist, können Sie mit dem Befehl repquoa -ag prüfen:
11
LiveConfig-Server
#> repquota -ag
*** Report for group quotas on device /dev/disk/by-uuid/[...]
Block grace time: 7days; Inode grace time: 7days
Block limits
File limits
Group
used
soft
hard grace
used soft hard grace
---------------------------------------------------------------------root
-- 1203900
0
0
51406
0
0
[...]
LiveConfig funktioniert auch ohne Quota-System, allerdings können dann keine Webspace-Limits
eingerichtet sowie keine Informationen über die Anzahl und Größe der von einem Kunden belegten Dateien angezeigt werden.
2.2. Installation
Wir empfehlen prinzipiell, LiveConfig auf einem „leeren“ (also frisch installiertem) System aufzusetzen. Sollten Sie bereits Benutzerdaten auf dem Server haben, erstellen Sie vor der Installation
bitte eine Sicherungskopie aller Benutzerdaten und Konfigurationsdateien.
Die für die Installation von LiveConfig benötigten Dateien können Sie unter der Adresse http://
www.liveconfig.com/de/downloads herunterladen. LiveConfig können Sie entweder direkt installieren (z.B. als .deb- oder .rpm-Paket) oder über ein Repository. Wir empfehlen die Repository-Variante, weil Sie so auch automatisch die neuesten Updates erhalten.
In den LiveConfig-Repositories steht auch ein Meta-Paket zur Verfügung, mit welchem alle für
einen Webserver üblichen Dienste automatisch installiert werden können. Dieses Paket enthält
keine eigenen Dateien, sondern lediglich die Abhängigkeiten zu den von der Distribution bereitgestellten Paketen.
Im Folgenden wird jeweils die Installation über die Repositories beschrieben. Ausführliche Informationsanleitungen für eine vollständig „manuelle“ Installation sowie mit weiteren Hinweisen
zum „Tuning“ finden Sie in der LiveConfig-Wissensdatenbank unter http://www.liveconfig.com/
de/kb.
2.2.1. Debian GNU/Linux
Mit folgenden Befehlen importieren Sie den LiveConfig-GPG-Schlüssel und fügen das Repository
hinzu:
wget -O - https://www.liveconfig.com/liveconfig.key | apt-key add cd /etc/apt/sources.list.d
wget http://repo.liveconfig.com/debian/liveconfig.list
Aktualisieren Sie nun die Repository-Informationen des Systems:
aptitude update
12
Debian GNU/Linux
Wenn Sie einen typischen Webserver (mit Apache httpd, MySQL-Datenbank, PHP und Postfix/
Dovecot) installieren möchten, setzen Sie das Paket liveconfig-meta auf:
aptitude install liveconfig-meta
LiveConfig selbst installieren Sie schließlich über das Paket liveconfig:
aptitude install liveconfig
Die Installations-Funktion fragt Sie dann nach einem admin-Passwort für LiveConfig:
Zuletzt werden Sie gefragt, ob Sie bereits einen Lizenzschlüssel für LiveConfig besitzten. Wenn ja,
dann geben Sie ihn hier einfach ein, ansonsten lassen Sie die Eingabe leer.
LiveConfig wird anschließend automatisch gestartet und ist per Browser unter https://<Server-IP>:8443/ erreichbar.
13
LiveConfig-Server
2.2.2. Ubuntu Linux
Mit folgenden Befehlen importieren Sie den LiveConfig-GPG-Schlüssel und fügen das Repository
hinzu:
wget -O - https://www.liveconfig.com/liveconfig.key | sudo apt-key add cd /etc/apt/sources.list.d
sudo wget http://repo.liveconfig.com/debian/liveconfig.list
Aktualisieren Sie nun die Repository-Informationen des Systems:
sudo aptitude update
Wenn Sie einen typischen Webserver (mit Apache httpd, MySQL-Datenbank, PHP und Postfix/
Dovecot) installieren möchten, setzen Sie das Paket liveconfig-meta auf:
sudo aptitude install liveconfig-meta
LiveConfig selbst installieren Sie schließlich über das Paket liveconfig:
sudo aptitude install liveconfig
Die Installations-Funktion fragt Sie dann nach einem admin-Passwort für LiveConfig:
Zuletzt werden Sie gefragt, ob Sie bereits einen Lizenzschlüssel für LiveConfig besitzten. Wenn ja,
dann geben Sie ihn hier einfach ein, ansonsten lassen Sie die Eingabe leer.
14
OpenSUSE
LiveConfig wird anschließend automatisch gestartet und ist per Browser unter https://<Server-IP>:8443/ erreichbar.
2.2.3. OpenSUSE
Mit folgenden Befehlen importieren Sie den LiveConfig-GPG-Schlüssel und fügen das Repository
hinzu:
rpm --import https://www.liveconfig.com/liveconfig.key
zypper addrepo -f http://repo.liveconfig.com/opensuse/liveconfig.repo
Wenn Sie einen typischen Webserver (mit Apache httpd, MySQL-Datenbank, PHP und Postfix/
Dovecot) installieren möchten, setzen Sie das Paket liveconfig-meta auf:
zypper install liveconfig-meta
Wenn Sie das Meta-Paket installiert haben, rufen Sie bitte anschließend das Programm /usr/
bin/mysql_secure_installation auf, um unnötige Testzugänge zur MySQL-Datenbank
zu löschen und ein MySQL-root-Passwort einzurichten.
Falls Sie suPHP nutzen möchten, gehen Sie bitte wie folgt vor:
• Installieren Sie das Paket suphp mit folgendem Befehl:
rpm -i http://download.opensuse.org/repositories/server:/php/openSUSE_12.1/x86_64/
suphp-0.7.1-4.1.x86_64.rpm
• Korrigieren Sie in der Datei /etc/suphp.conf die Einstellungen für docroot,
check_vhost_docroot, umask und die Handler-Funktion wie folgt:
15
LiveConfig-Server
;Path all scripts have to be in
docroot=/srv/www
[...]
;Check whether script is within DOCUMENT_ROOT
check_vhost_docroot=false
[...]
;Umask to set, specify in octal notation
umask=0022
[...]
[handlers]
;Handler for php-scripts
application/x-httpd-php="php:/usr/bin/php-cgi"
• Zuletzt nehmen Sie das suPHP-Modul noch in die Liste der Apache-Module mit auf und starten
Apache neu:
sysconf_addword /etc/sysconfig/apache2 APACHE_MODULES suphp
systemctl restart apache2.service
LiveConfig selbst installieren Sie schließlich über das Paket liveconfig:
zypper install liveconfig
LiveConfig wird anschließend automatisch gestartet und ist per Browser unter https://<Server-IP>:8443/ erreichbar. Melden Sie sich umgehend dort an und ändern Sie das Standard-Passwort!
2.2.4. CentOS
Mit folgenden Befehlen importieren Sie den LiveConfig-GPG-Schlüssel und fügen das Repository
hinzu:
rpm --import https://www.liveconfig.com/liveconfig.key
cd /etc/yum.repos.d
curl -Os http://repo.liveconfig.com/centos/liveconfig.repo
Wenn Sie einen typischen Webserver (mit Apache httpd, MySQL-Datenbank, PHP und Postfix/
Dovecot) installieren möchten, setzen Sie das Paket liveconfig-meta auf:
yum install liveconfig-meta
Wenn Sie das Meta-Paket installiert haben, rufen Sie bitte anschließend das Programm /usr/
bin/mysql_secure_installation auf, um unnötige Testzugänge zur MySQL-Datenbank
zu löschen und ein MySQL-root-Passwort einzurichten. Sofern Sie die lokale CentOS-Firewall nutzen, müssen Sie außerdemnoch noch die entsprechenden Ports für den Zugriff auf den Apache-Webserver freigeben:
lokkit --service=http --service=https
16
Datenbank
Falls Sie suPHP nutzen möchten, gehen Sie bitte wie folgt vor:
• Fügen Sie das Repository von Repoforge hinzu:
rpm -Uvh http://pkgs.repoforge.org/rpmforge-release/rpmforgerelease-0.5.2-2.el6.rf.x86_64.rpm
• Installieren Sie das Paket mod_suphp:
yum install mod_suphp
• Korrigieren
Sie
in
der
Datei
/etc/suphp.conf
die
Einstellungen
check_vhost_docroot, umask und die Handler-Funktion wie folgt:
für
;Path all scripts have to be in
;Check whether script is within DOCUMENT_ROOT
check_vhost_docroot=false
[...]
;Umask to set, specify in octal notation
umask=0022
[...]
[handlers]
;Handler for php-scripts
x-httpd-php="php:/usr/bin/php-cgi"
• Zuletzt starten Sie den Apache-Webserver neu:
service httpd restart
LiveConfig selbst installieren Sie schließlich über das Paket liveconfig:
zypper install liveconfig
Um auf LiveConfig zugreifen zu können, müssen Sie den Port 8443 noch in der Firewall freigeben:
lokkit -p 8443:tcp
LiveConfig wird anschließend automatisch gestartet und ist per Browser unter https://<Server-IP>:8443/ erreichbar. Melden Sie sich umgehend dort an und ändern Sie das Standard-Passwort!
2.3. Datenbank
LiveConfig enthält eine integrierte Datenbank auf Basis von SQLite und benötigt daher prinzipiell
keine externe Datenbank. Interne Lasttests haben gezeigt, dass sich auch größere Kundenzahlen
(z.B. 2.000 Kunden mit 5.000 Domains) problemlos mit der integrierten Datenbank verwalten
lassen.
Selbstverständlich können Sie LiveConfig aber auch mit einer anderen Datenbank als Backend
betreiben. Derzeit wird MySQL als externe Datenbank unterstützt.
17
LiveConfig-Server
2.3.1. MySQL
LiveConfig kann zur Verwendung von MySQL als Datenbank-Backend konfiguriert werden. Hierbei
sind folgende Hinweise zu beachten:
• Für eine optimale Performance empfehlen wir, mindestens MySQL 5.1.17 einzusetzen. Frühere
Versionen unterstützen keinen Query-Cache für die von LiveConfig verwendete Schnittstelle
(siehe MySQL Referenzhandbuch, „Wie der Query Cache funktioniert“).
• Für die Transaktionssicherheit muss MySQL den Storage-Typ „InnoDB“ unterstützen - standardmäßig ist das in MySQL aktiviert.
Verwenden Sie LiveConfig nicht mit MyISAM-Tabellen! LiveConfig ist auf Transaktionssicherheit angewiesen.
• LiveConfig enthält bereits die notwendige MySQL-Client-Bibliothek (/usr/lib/liveconfig/libmysqlclient_r.so) - zumindest für LiveConfig muss also kein Client-Paket der
Distribution installiert werden.
Melden Sie sich als root-Benutzer an der MySQL-Konsole an, und erzeugen Sie eine neue Datenbank für LiveConfig. Sie können dafür einen beliebigen Datenbanknamen verwenden:
mysql> create database LIVECONFIG;
Erstellen Sie anschließend einen neuen Datenbank-Benutzer mit einem beliebigen, sicheren (!)
Passwort:
mysql> grant all on LIVECONFIG.* to "liveconfig"@"localhost"
identified by "SaFePaSsWoRd";
Falls MySQL auf einem anderen Server als LiveConfig läuft, tragen Sie statt localhost die entsprechende IP-Adresse ein.
Nun importieren Sie die vorbereitete MySQL-Tabellenstruktur. Im Verzeichnis /usr/share/doc/liveconfig liegt diese als komprimierter SQL-Dump bereit:
Bitte beachten Sie, dass beim Import des Datenbank-Dumps eventuell bereits vorhandene Tabellen ohne
Rückfrage gelöscht werden! Sollten Sie LiveConfig bereits mit MySQL genutzt haben, erstellen Sie vorher
entsprechend ein Backup Ihrer Daten.
$> cd /usr/share/doc/liveconfig
$> gunzip db-mysql.sql.gz
$> mysql -u liveconfig -p -h localhost LIVECONFIG < db-mysql.sql
Enter password: ************
18
Konfiguration
Zum Schluß öffnen Sie die Konfigurationsdatei /etc/liveconfig/liveconfig.conf und
bearbeiten die Datenbank-Einstellungen, z.B.:
db_driver
db_host
db_name
db_user
db_password
=
=
=
=
=
mysql
localhost
LIVECONFIG
liveconfig
SaFePaSsWoRd
Starten Sie LiveConfig nun neu (/etc/init.d/liveconfig restart) - und alles sollte funktionieren.
Falls LiveConfig nicht startet, werfen Sie einen Blick in die Logdatei (/var/log/liveconfig/liveconfig.log).
2.4. Konfiguration
Die Konfigurationsdatei liegt normalerweise unter /etc/liveconfig/liveconfig.conf
oder kann mit der Option -c DATEI (bzw. --config=DATEI) ausgewählt werden.
Die Konfigurationsdatei enthält üblicherweise Anweisungen der Form Befehl = Wert. Ein Befehl
darf nur aus Buchstaben und dem Unterstrich (_) bestehen. Unbekannte Befehle werden nicht
akzeptiert (eine Fehlermeldung wird dann beim Lesen der Konfigurationsdatei ausgegeben). Ein
Wert kann nur dann Leerzeichen enthalten, wenn der komplette Wert mit doppelten Anführungszeichen umgeben wird.
Wenn eine Zeile ein „#“-Zeichen enthält, wird der Rest der Zeile ignoriert (außer das „#“ ist in
einem Wert innerhalb der Anführungszeichen enthalten).
2.4.1. Allgemeine Einstellungen
Die allgemeinen Einstellungen sind:
• base_path = VERZEICHNIS
Legt den Basis-Verzeichnisnamen für relative Pfad-/Dateinamen in der Konfigurationsdatei
fest. Wenn Sie einen relativen Pfadnamen (wie z.B. „.“) für base_path verwenden, wird der
Ort der LiveConfig-Programmdatei als Startpunkt verwendet.
• license_file = DATEI
Legt den Namen der Lizenzdatei fest. Diese sollte nur von dem Benutzer lesbar sein, unter
welchem LiveConfig ausgeführt wird. Siehe auch Abschnitt 2.6, „ Lizenz-Aktivierung “.
• log_file = DATEI | syslog
19
LiveConfig-Server
Legt den Namen der Logdatei fest. Diese Datei (oder das Verzeichnis in welchem diese Datei
erzeugt werden soll) muss von dem Benutzer schreibbar sein, unter welchem liveconfig ausgeführt wird. Wenn bereits eine Datei mit diesem Namen existiert, dann darf diese keine Spezialdatei sein (wie etwa ein symbolischer Link, eine Pipe, etc.).
Wird log_file auf den Wert syslog gesetzt, dann sendet LiveConfig alle Log-Meldungen
an den System-Protokolldienst syslog.
• log_level = emerg | alert | crit | err | warning | notice | info | debug
Setzt den Wert, ab dem Log-Meldungen protokolliert werden. Standard-Einstellung ist info.
• pid_file = DATEI
Legt den Namen der PID-Datei fest. Diese Datei (oder das Verzeichnis in welchem diese Datei
erzeugt werden soll) muss von dem Benutzer schreibbar sein, unter welchem liveconfig ausgeführt wird. Die PID-Datei wird verwendet, um die Prozess-ID des aktuell laufenden LiveConfig-Prozesses darin zu speichern. Unter WIN32 wird diese Option stillschweigend ignoriert
(unter Windows werden keine PID-Dateien erzeugt).
• resource_path = VERZEICHNIS
Legt den Verzeichnisnamen fest, in welchem sich die Ressourcen-Dateien von LiveConfig befinden.
• library_path = VERZEICHNIS
Legt den Verzeichnisnamen fest, in welchem sich zusätzliche Bibliotheks-Dateien (z.B. Datenbank-Treiber) befinden.
• libexec_path = VERZEICHNIS
Legt den Verzeichnisnamen fest, in welchem sich zusätzliche Skripte und Hilfsprogramme (z.B.
Lua-Scripte, lclogsplit-Programm) befinden. Auf Linux-Systemen ist das üblicherweise das selbe Verzeichnis wie library_path.
• user = BENUTZER
Legt den Systembenutzer fest, auf den zur Ausführung aller unprivilegierten Operationen
gewechselt wird (z.B. Frontend-Webserver, Abfrage von Systemstatistiken, etc.). Falls dieser
nicht definiert wird, wird die Benutzer-ID -1 verwendet. LiveConfig muss als root-Benutzer
gestartet werden, um später zu einem weniger privilegierten Benutzer wechseln zu können.
Wird LiveConfig als nicht-root-Benutzer gestartet, wird dieses weiterhin als dieser Benutzer
laufen.
20
Datenbank-Einstellungen
• group = GRUPPE
Legt die Systemgruppe fest, auf die zur Ausführung aller unprivilegierten Operationen gewechselt wird (siehe user). Falls diese nicht definiert wird, wird die Standard-Gruppe des unter
user gesetzten Benutzers verwendet.
2.4.2. Datenbank-Einstellungen
Die folgenden Optionen dienen zur Konfiguration des Datenbank-Zugriffs für LiveConfig:
• db_driver = TREIBER
Legt den zu verwendenden Datenbanktreiber fest. Gültige Werte sind:
• mysql - zur Verbindung mit einer MySQL-Datenbank (mind. Version 5.0) - siehe
Abschnitt 2.3.1, „ MySQL “
• sqlite - zur Verwendung der integrierten SQLite-Datenbank (datei-basiert)
• db_host = SERVERNAME
[MYSQL] Einstellung des Datenbank-Servers.
• db_name = NAME
[MYSQL, SQLite] Einstellung des zu verwendenden Datenbank-Namens. Bei SQLite legt diese
Einstellung den Dateinamen der Datenbank fest.
• db_user = BENUTZER
[MYSQL] Benutzername für die Datenbank-Anmeldung.
• db_password = PASSWORT
[MYSQL] Passwort für die Datenbank-Anmeldung.
2.4.3. HTTP-Protokoll-Einstellungen
Die HTTP-Protokoll-spezifischen Einstellungen sind:
• http_socket = ADRESSE[:PORT]
Bestimmt die Netzwerkadresse, auf der auf eingehende HTTP-Verbindungen gewartet wird.
Optional kann eine Portnummer angegeben werden. Sowohl IPv4- als auch IPv6-Adressen sind
erlaubt. Wird die Adresse * angegeben, so nimmt LiveConfig sowohl auf allen IPv4- als auch auf
21
LiveConfig-Server
allen IPv6-Adressen Verbindungen an (bei :: nur auf allen IPv6-Schnittstellen, bei 0.0.0.0
nur auf allen IPv4-Schnittstellen!). Beispiele für gültige Adressen sind:
*:8888
# warte auf jeder IPv4- und IPv6 Adresse auf Port 8888
[::]:8888
# warte auf jeder IPv6 Adresse auf Port 8888
0.0.0.0
# warte auf jeder IPv4-Adresse auf dem Standard-Port (8080)
::
# warte auf jeder IPv6-Adresse auf dem Standard-Port (8080)
12.34.56.78 # warte nur auf der IPv4-Adresse 12.34.56.78 (Port 8080)
Der Befehl http_socket kann mehrfach verwendet werden, um mehrere (verschiedene)
Ports zu öffnen.
• http_ssl_socket = ADRESSE[:PORT]
Das selbe wie http_socket, außer das ein Port für eingehende HTTPS-Verbindungen (SSL) geöffnet wird. Das SSL-Zertifikat wird aus der Datei geladen, die mit
http_ssl_certificate spezifiziert wird. Der Standard-Port für SSL-Verbindungen ist 8443.
Wird weder ein http_socket- noch ein http_ssl_socket-Befehl angegeben, dann öffnet LiveConfig standardmäßig einen HTTPS-Port an der Adresse *:8443.
• http_access_log = DATEINAME
Legt die Log-Datei für HTTP-Zugriffe fest. Das Log-Format ist das selbe wie das „Combined Log
Format“ (CLF) beim Apache httpd Webserver.
• http_htdocs_path = VERZEICHNIS
Verzeichnis für statische Web-Dateien (z.B. Kunden-Logos, APS Icons, etc.). LiveConfig muss
Schreibrechte für dieses Verzeichnis haben.
• http_read_timeout = TIMEOUT
Setzt das Lese-Timeout für HTTP-Zugriffe auf TIMEOUT Sekunden.
• http_keepalive_timeout = TIMEOUT
Setzt das HTTP Keep-Alive Timeout auf TIMEOUT Sekunden.
• http_keepalive_requests = ANZAHL
Setzt die maximale Anzahl von Keep-Alive-Requests auf ANZAHL Zugriffe pro HTTP-Verbindung.
• http_max_connections = ANZAHL
22
HTTP-Protokoll-Einstellungen
Begrenzt die maximale Anzahl gleichzeitig geöffneter HTTP-Verbindungen auf ANZAHL.
• http_ssl_certificate = DATEINAME
Spezifiziert die Datei, aus welcher das SSL-Zertifikat und der private SSL-Schlüssel (PEMcodiert) geladen werden. Weitere Informationen zum Einrichten eines SSL-Zertifikats siehe
Abschnitt 2.5, „SSL-Zertifikat verwenden“
• http_redirect = STATUS URI ZIEL
Leitet Anfragen für URI um zu ZIEL, und verwendet dabei den HTTP-Status STATUS. Gültige
Werte für STATUS sind 301 (dauerhafte Umleitung) oder 302 (vorübergehende Umleitung).
Alle URIs müssen mit einem Schrägstrich beginnen. Umleitungen und Umschreibungen (s.u.)
haben bei der Verarbeitung von HTTP-Zugriffen die höchste Priorität, somit kann praktisch jede
URI umgeleitet werden. Die URI muss jedoch exakt mit der Anfrage übereinstimmen; eine
Weiterleitung von Zugriffen mit einem bestimmten Präfix ist nicht möglich.
Meistens wird eine Weiterleitung auf die Anmeldeseite gewünscht:
http_redirect = 301
/
/liveconfig/login
Zugriffe können auch auf eine beliebige externe Webseite umgeleitet werden:
http_redirect = 301
/
http://www.example.test/customer-login/
• http_rewrite = URI ZIEL
Schreibt Anfragen für URI um auf ZIEL, ohne eine HTTP-Weiterleitung zu erzeugen. Alle URIs
müssen mit einem Schrägstrich beginnen, ein Umschreiben auf ein externes Ziel ist nicht möglich. Umleitungen und Umschreibungen haben bei der Verarbeitung von HTTP-Zugriffen die
höchste Priorität, somit kann praktisch jede URI umgeschrieben werden. Die URI muss jedoch
exakt mit der Anfrage übereinstimmen; eine Weiterleitung von Zugriffen mit einem bestimmten Präfix ist nicht möglich.
Häufig möchte man eine "robots.txt"-Datei direkt erreichbar haben:
http_rewrite = /robots.txt
/res/m/liveconfig/robots.txt
• http_canonical_host = HOSTNAME
Verwende HOSTNAME als offiziellen Servernamen für die LiveConfig-Weboberfläche.
• http_canonical_redirect = URL
Wenn http_canonical_host definiert ist und ein Benutzer sich über einen anderen Servernamen mit LiveConfig verbindet, kann er an die hier angegebene URL weitergeleitet werden.
23
LiveConfig-Server
• http_hsts_time = ZEIT
Aktiviert HTTP Strict Transport Security (HSTS) für SSL-Verbindungen. Der Parameter TIME definiert die Zeit in Sekunden, für die Besucher nur über eine SSL-gesicherte Verbindung auf LiveConfig zugreifen dürfen (empfohlen: 31536000 Sekunden = 12 Monate). Die Standardeinstellung
ist 0 (aus).
Wenn die Einstellung http_canonical_host gesetzt ist, dann gilt HSTS nur für diesen
Namen - Weiterleitungen mittels http_canonical_redirect sind also weiterhin möglich.
Zum Testen der Einstellung empfehlen wir, erst mal einen „kleinen“ Wert für ZEIT zu setzen,
beispielsweise 600 Sekunden (= 10 Minuten). Sollte etwas nicht richtig funktionieren werden
so die LiveConfig-Besucher nicht für einen womöglich längeren Zeitraum ausgesperrt.
2.4.4. LCCP-Protokoll-Einstellungen
Das LiveConfig Client Protokoll (LCCP) wird für die Kommunikation zwischen einem LiveConfig-Server und einem LiveConfig-Client verwendet. Die Übertragung erfolgt komplett verschlüsselt und
ist auf Performance optimiert.
Damit ein LiveConfig-Server mehrere LiveConfig-Clients verwalten kann, muss dieser mit einer Business-Lizenz betrieben werden - siehe Abschnitt 1.6, „Lizenzmodell“. Ein LiveConfig-Server mit einer Basicoder Standard-Lizenz ignoriert eventuelle LCCP-Einstellungen der Konfigurationsdatei.
Die LCCP-spezifischen Einstellungen sind:
• lccp_socket = ADRESSE[:PORT]
Bestimmt die Netzwerkadresse, auf der eingehende LCCP-Verbindungen erwartet werden.
Optional kann eine Portnummer angegeben werden. Sowohl IPv4- als auch IPv6-Adressen sind
erlaubt. Beispiele für gültige Adressen sind:
[::]:7888
0.0.0.0
::
12.34.56.78
#
#
#
#
warte
warte
warte
warte
auf
auf
auf
nur
jeder IPv4- und IPv6 Adresse auf Port 7888
jeder IPv4-Adresse auf dem Standard-Port 788
jeder IPv4- und IPv6-Adresse auf dem Standard-Port (788)
auf der IPv4-Adresse 12.34.56.78 (Port 788)
Der Befehl lccp_socket kann mehrfach verwendet werden, um mehrere (verschiedene)
Ports zu öffnen. Sie brauchen nur dann eine LCCP-Adresse einrichten, wenn Sie mindestens
einen LiveConfig-Client haben der sich mit diesem Server verbinden soll.
2.5. SSL-Zertifikat verwenden
Die Verwendung eines SSL-Zertifikats für LiveConfig wird über die Konfigurations-Einstellung
http_ssl_certificate gesteuert. Dabei verhält sich LiveConfig wie folgt:
24
Lizenz-Aktivierung
• Ist http_ssl_certificate auskommentiert aber mindestens ein HTTPS-Port konfiguriert,
dann erzeugt LiveConfig bei jedem Start automatisch ein temporäres, selbst-signiertes SSLZertifikat.
• Ist http_ssl_certificate definiert, aber die angegebene Datei existiert nicht, dann
erzeugt LiveConfig ein selbst-signiertes SSL-Zertifikat und schreibt es (mit dem dazugehörigem
Schlüssel) in die angegebene Datei (Sie müssen somit nicht nach jedem LiveConfig-Neustart
in Ihrem Browser ein neues temporäres Zertifikat akzeptieren).
• Ist http_ssl_certificate definiert und die angegebene Datei vorhanden, so wird aus
dieser das SSL-Zertifikat und der dazugehörige private Schlüssel gelesen und verwendet.
Die Zertifikats-Datei muss folgende Daten PEM-codiert in der angegebenen Reihenfolge enthalten:
1. den privaten Schlüssel für das SSL-Zertifikat (ohne Passwortschutz)
2. das eigentliche SSL-Zertifikat (X.509)
3. eventuelle Zwischenzertifikate, falls der Aussteller des SSL-Zertifikates solche erfordert („Chained SSL“)
Bitte achten Sie darauf, dass der private Schlüssel keinen Passwortschutz enthält, da LiveConfig sonst
nicht automatisch starten kann!
Eine ausführliche Anleitung zum Erstellen und Einrichten eines eigenen SSL-Zertifikats finden Sie
im Knowledgebase-Artikel KB#3.
2.6. Lizenz-Aktivierung
So lange keine Lizenz für LiveConfig aktiviert wurde, läuft dieses im Demo-Modus. Das bedeutet, dass keine Änderungen vorgenommen werden können, keine Konfigurationsdateien erzeugt
werden, etc.. Außerdem wird ein entsprechender Warn-Hinweis auf der Anmelde-Seite dargestellt.
Zur Aktivierung Ihrer Lizenz rufen Sie LiveConfig einfach mit der Option --activate auf. Es wird
daraufhin geprüft ob eventuell schon eine aktivierte Lizenz vorliegt, ansonsten werden Sie nach
dem Aktivierungs-Code gefragt.
Zur Lizenz-Aktivierung sendet LiveConfig eine verschlüsselte Anfrage an den Lizenzserver
(license.liveconfig.com). Dabei wird ausschließlich der von Ihnen eingegebene Lizenzcode sowie Ihre
(externe) IP-Adresse übermittelt - mehr nicht.
25
LiveConfig-Server
#> /usr/sbin/liveconfig --activate
_
_
___
__ _
(R)
| | (_)_ _____ / __|___ _ _ / _(_)__ _
| |__| \ V / -_) (__/ _ \ ' \| _| / _` |
|____|_|\_/\___|\___\___/_||_|_| |_\__, |_____________________________________
|___/
Welcome to the LiveConfig license activation.
License key file: '/etc/liveconfig/liveconfig.key'
Please enter your license key: #####-#####-#####
Generating license activation request, please wait... ok.
Connecting to license.liveconfig.com ([62.146.188.68]:443)... ok.
Sending license activation request... ok.
=> License successfully activated.
War die Lizenz-Aktivierung erfolgreich, dann wird der vom Lizenzserver erhaltene Lizenzschlüssel
abgespeichert (siehe Konfigurations-Einstellung license_file). Ansonsten wird eine aussagekräftige Fehlermeldung angezeigt.
Falls LiveConfig zum Zeitpunkt der Aktivierung bereits läuft, starten Sie den Prozess bitte neu,
damit die neuen Lizenzdaten eingelesen werden: /etc/init.d/liveconfig restart.
Der Lizenzschlüssel ist einen Monat lang gültig, LiveConfig verlängert diesen jeweils automatisch.
Für eine automatisierte Lizenzaktivierung kann der Lizenzschlüssel auch in einer Umgebungsvariable namens LCLICENSEKEY übergeben und LiveConfig mit dem Argument --activate
aufgerufen werden - in diesem Fall erfolgt keine interaktive Abfrage.
Lizenzcode austauschen
Wenn Sie einen Lizenzcode austauschen möchten - beispielsweise wenn Sie bisher eine Testlizenz genutzt haben und nun einen eigenen Lizenzcode besitzen - gehen Sie wie folgt vor:
1. löschen Sie die alte Lizenzdatei (üblicherweise /etc/liveconfig/liveconfig.key)
2. aktivieren Sie den neuen Lizenzcode (siehe oben: liveconfig --activate)
3. starten Sie LiveConfig neu, um den neuen Lizenzcode einzulesen (z.B. via /etc/init.d/
liveconfig restart)
2.7. Passwort-Initialisierung
Zur Änderung des Passworts für den admin-Account kann LiveConfig mit der Option --init aufgerufen werden. Dabei muss in der Umgebungsvariable LCINITPW das neue Passwort übergeben werden. Analog kann in der Umgebungsvariablen LCINITSOAP ein Passwort für die SOAPAPI eingerichtet werden.
Das Initialisieren/Zurücksetzen dieser Passwörter funktioniert nur solange der Hauptbenutzer das
Login admin und die Standard-Kontaktdaten System Administrator besitzt.
26
Programme und Dateien
Beispiel:
#> LCINITPW=PaSsWoRt /usr/sbin/liveconfig --init
/usr/sbin/liveconfig: LiveConfig initialization; using configuration from /etc/
liveconfig/liveconfig.conf
/usr/sbin/liveconfig: Database driver loaded: SQLite (3.7.9)
/usr/sbin/liveconfig: Password updated successfully.
2.8. Programme und Dateien
2.8.1. LiveConfig Server
Der LiveConfig-Server wird üblicherweise unter /usr/sbin/liveconfig installiert. Das Programm unterstützt folgende Kommandozeilen-Optionen:
• --activate
Aktivierung der LiveConfig-Lizenz. Siehe auch Abschnitt 2.6, „ Lizenz-Aktivierung “.
• --config=FILE, -c FILE
Verwendet die Konfigurationsdatei FILE. Siehe auch Abschnitt 2.4, „Konfiguration“.
• --diag
Aufruf einiger Selbsttest/Diagnose-Funktionen (wird eventuell für Support-Anfragen benötigt).
• --foreground, -f
Startet LiveConfig im Vordergrund.
• --help, -h
Zeigt eine Übersicht der verfügbaren Kommandozeilen-Parameter an.
• --init
Initialisierung des Passworts für den admin-Account - siehe Abschnitt 2.7, „ Passwort-Initialisierung “.
• -k <Befehl>
Steuerung des LiveConfig-Prozesses. Mögliche Befehle:
start
reload
shutdown
Prozess starten...
Neu laden... (=SIGHUP)
beenden... (=SIGINT)
27
LiveConfig-Server
stop
Stop... (=SIGTERM)
• --status, -s
Zeigt den aktuellen Serverstatus und ggf. Informationen zum laufenden Serverprozess an.
• --configtest, -t
Testet nur die Konfigurationsdatei (LiveConfig wird nicht gestartet). Siehe auch Abschnitt 2.4,
„Konfiguration“.
• --version, -v
Zeigt die Versionsnummer der LiveConfig-Server-Software an.
2.8.2. Hilfsprogramme
LiveConfig installiert eine Reihe kleiner Hilfsprogramme, welche im Abschnitt 3.5.2, „ Hilfsprogramme “ näher beschrieben werden. Da der LiveConfig-Server auch einen integrierten Client
enthält, werden diese Programme auch mit dem Server-Paket installiert. Es handelt sich dabei um:
• lclogparse zur Echtzeit-Analyse von Log-Dateien
• lclogsplit zur Aufteilung und Echtzeit-Analyse von Webserver-Zugriffs-Logdateien
• lclua, ein Lua-Interpreter mit LiveConfig-Erweiterungen, für das Entwickeln und Testen eigener
Lua-Scripte (siehe auch Abschnitt 8.2, „ Lua API “)
Außerdem wird mit dem LiveConfig-Server noch folgendes Programm installiert:
2.8.2.1. lcdbbackup
Das Programm lcdbbackup ermöglicht das sichere Kopieren von SQLite-Datenbanken. Wenn der
LiveConfig-Server mit der integrierten SQLite-Datebank genutzt wird, sollte die Datenbank-Datei
(Konfigurations-Anweisung db_name) regelmäßig mit lcdbbackup gesichert werden. Dieses Programm stellt sicher, dass die erzeugte Datenbank-Kopie konsistent ist (bei einem „normalen“ copy
kann die Datenbank-Datei eventuell in einem inkonsistenten Zustand kopiert werden, das Backup
ist dann wertlos).
Aufruf: lcdbbackup <Quelldatei> <Zieldatei>
28
Kapitel 3. LiveConfig-Client
Ein mit einer Business-Lizenz ausgestatteter LiveConfig-Server kann beliebig viele weitere Server verwalten, auf welchen lediglich der LiveConfig-Client installiert werden muss. Die Benutzer
greifen auf die Web-Oberfläche des zentralen LiveConfig-Servers zu, und dieser koordiniert die
Aufgaben auf den LiveConfig-Clients über ein eigenes Kommunikationsprotokoll (LCCP).
3.1. Voraussetzungen
Für die Installation eines LiveConfig-Clients benötigen Sie:
• „root-Zugriff“ auf den zu installierenden Server (über Konsole oder SSH)
• etwa 15 MB freien Speicherplatz
• einen LiveConfig-Server (mit dem sich der Client verbinden soll)
• einen Lizenzcode für den LiveConfig-Client (Basic- oder Standard-Lizenz)
Es werden keine besonderen Softwarepakete benötigt, insbesondere kein PHP, Apache httpd oder
MySQL. LiveConfig nutzt lediglich die standardmäßig installierten C-Bibliotheken (libc).
3.1.1. Firewall-Einstellungen
Der LiveConfig-Client benötigt keine Firewall-Einstellungen für eingehende Verbindungen; lediglich ausgehende Verbindungen zu folgenden Zielen müssen erlaubt sein:
• TCP Port 788 zum LiveConfig-Server (für LCCP-Verbindung)
• TCP Port 443 (HTTPS) zum Lizenzserver (license.liveconfig.com)
3.1.2. Dateisystem-Quota
Damit der Speicherplatz für die einzelnen Webspaces begrenzt werden kann, muss das Quota-System eingerichtet werden. Installieren Sie hierzu das Paket quota und aktivieren für
das unter /var/www/ (bzw. bei OpenSUSE /srv/www/) gemountete Dateisystem die Gruppen-Quotas. Eine ausführliche Anleitung hierzu finden Sie in Abschnitt 2.1.2, „ Dateisystem-Quota
“.
LiveConfig funktioniert auch ohne Quota-System, allerdings können dann keine Webspace-Limits
eingerichtet sowie keine Informationen über die Anzahl und Größe der von einem Kunden belegten Dateien angezeigt werden.
29
LiveConfig-Client
3.2. Installation
Für den LiveConfig-Client gelten im Prinzip die selben Hinweise wie für den LiveConfig-Server:
die Installation sollte idealerweise auf einem „leeren“ (also frisch installiertem) System durchgeführt und vorhandene Daten ggf. gesichert werden. Die für die Installation des LiveConfig-Clients
benötigten Dateien können Sie unter der Adresse http://www.liveconfig.com/de/downloads herunterladen. Der Client kann wahlweise direkt (z.B. als .deb- oder .rpm-Paket) oder über ein
Repository installiert werden. Wir empfehlen die Repository-Variante, weil Sie so auch automatisch die neuesten Updates erhalten.
In den LiveConfig-Repositories steht auch ein Meta-Paket zur Verfügung, mit welchem alle für
einen Webserver üblichen Dienste automatisch installiert werden können. Dieses Paket enthält
keine eigenen Dateien, sondern lediglich die Abhängigkeiten zu den von der Distribution bereitgestellten Paketen.
Im Folgenden wird jeweils die Installation über die Repositories beschrieben. Ausführliche Informationsanleitungen für eine vollständig „manuelle“ Installation sowie mit weiteren Hinweisen
zum „Tuning“ finden Sie in der LiveConfig-Wissensdatenbank unter http://www.liveconfig.com/
de/kb.
3.2.1. Debian GNU/Linux
Mit folgenden Befehlen importieren Sie den LiveConfig-GPG-Schlüssel und fügen das Repository
hinzu:
wget -O - https://www.liveconfig.com/liveconfig.key | apt-key add cd /etc/apt/sources.list.d
wget http://repo.liveconfig.com/debian/liveconfig.list
Aktualisieren Sie nun die Repository-Informationen des Systems:
aptitude update
Wenn Sie einen typischen Webserver (mit Apache httpd, MySQL-Datenbank, PHP und Postfix/
Dovecot) installieren möchten, setzen Sie das Paket liveconfig-meta auf:
aptitude install liveconfig-meta
Den LiveConfig-Client installieren Sie schließlich über das Paket lcclient:
aptitude install lcclient
Die Installations-Funktion fragt Sie zuerst nach dem LiveConfig-Server mit dem sich dieser Client
verbinden soll. Geben Sie dessen Hostnamen oder IP-Adresse an:
30
Debian GNU/Linux
Anschließend werden Sie aufgefordert eine eindeutige „Host-ID“ anzugeben. Mit dieser ID kann
der neue Client eindeutig vom LiveConfig-Server identifiziert werden; in der Regel sollten Sie
hierfür den offiziellen Hostnamen des Clients verwenden:
Zuletzt werden Sie gefragt, ob Sie bereits einen Lizenzschlüssel für diesen LiveConfig-Client
besitzten. Wenn ja, dann geben Sie ihn hier einfach ein, ansonsten lassen Sie die Eingabe leer.
31
LiveConfig-Client
Vor dem ersten Start des LiveConfig-Clients müssen Sie noch die Konfiguration anpassen indem
Sie u.a. eine eindeutige Host-ID sowie den zuständigen LiveConfig-Server angeben (siehe
Abschnitt 3.3.2, „LCCP-Protokoll-Einstellungen“).
3.2.2. Ubuntu Linux
Mit folgenden Befehlen importieren Sie den LiveConfig-GPG-Schlüssel und fügen das Repository
hinzu:
wget -O - https://www.liveconfig.com/liveconfig.key | sudo apt-key add cd /etc/apt/sources.list.d
sudo wget http://repo.liveconfig.com/debian/liveconfig.list
Aktualisieren Sie nun die Repository-Informationen des Systems:
sudo aptitude update
Wenn Sie einen typischen Webserver (mit Apache httpd, MySQL-Datenbank, PHP und Postfix/
Dovecot) installieren möchten, setzen Sie das Paket liveconfig-meta auf:
sudo aptitude install liveconfig-meta
Den LiveConfig-Client installieren Sie schließlich über das Paket lcclient:
sudo aptitude install lcclient
Die Installations-Funktion fragt Sie zuerst nach dem LiveConfig-Server mit dem sich dieser Client
verbinden soll. Geben Sie dessen Hostnamen oder IP-Adresse an:
32
Ubuntu Linux
Anschließend werden Sie aufgefordert eine eindeutige „Host-ID“ anzugeben. Mit dieser ID kann
der neue Client eindeutig vom LiveConfig-Server identifiziert werden; in der Regel sollten Sie
hierfür den offiziellen Hostnamen des Clients verwenden:
Zuletzt werden Sie gefragt, ob Sie bereits einen Lizenzschlüssel für diesen LiveConfig-Client
besitzten. Wenn ja, dann geben Sie ihn hier einfach ein, ansonsten lassen Sie die Eingabe leer.
33
LiveConfig-Client
Vor dem ersten Start des LiveConfig-Clients müssen Sie noch die Konfiguration anpassen indem
Sie u.a. eine eindeutige Host-ID sowie den zuständigen LiveConfig-Server angeben (siehe
Abschnitt 3.3.2, „LCCP-Protokoll-Einstellungen“).
3.2.3. OpenSUSE
Mit folgenden Befehlen importieren Sie den LiveConfig-GPG-Schlüssel und fügen das Repository
hinzu:
rpm --import https://www.liveconfig.com/liveconfig.key
zypper addrepo -f http://repo.liveconfig.com/opensuse/liveconfig.repo
Wenn Sie einen typischen Webserver (mit Apache httpd, MySQL-Datenbank, PHP und Postfix/
Dovecot) installieren möchten, setzen Sie das Paket liveconfig-meta auf:
zypper install liveconfig-meta
Wenn Sie das Meta-Paket installiert haben, rufen Sie bitte anschließend das Programm /usr/
bin/mysql_secure_installation auf, um unnötige Testzugänge zur MySQL-Datenbank
zu löschen und ein MySQL-root-Passwort einzurichten.
Falls Sie suPHP nutzen möchten, gehen Sie bitte wie folgt vor:
• Installieren Sie das Paket suphp mit folgendem Befehl:
rpm -i http://download.opensuse.org/repositories/server:/php/openSUSE_12.1/x86_64/
suphp-0.7.1-4.1.x86_64.rpm
• Korrigieren Sie in der Datei /etc/suphp.conf die Einstellungen für docroot,
check_vhost_docroot, umask und die Handler-Funktion wie folgt:
34
CentOS
;Path all scripts have to be in
docroot=/srv/www
[...]
;Check whether script is within DOCUMENT_ROOT
check_vhost_docroot=false
[...]
;Umask to set, specify in octal notation
umask=0022
[...]
[handlers]
;Handler for php-scripts
application/x-httpd-php="php:/usr/bin/php-cgi"
• Zuletzt nehmen Sie das suPHP-Modul noch in die Liste der Apache-Module mit auf und starten
Apache neu:
sysconf_addword /etc/sysconfig/apache2 APACHE_MODULES suphp
systemctl restart apache2.service
Den LiveConfig-Client installieren Sie schließlich über das Paket lcclient:
zypper install lcclient
Vor dem ersten Start des LiveConfig-Clients müssen Sie noch die Konfiguration anpassen indem
Sie u.a. eine eindeutige Host-ID sowie den zuständigen LiveConfig-Server angeben (siehe
Abschnitt 3.3.2, „LCCP-Protokoll-Einstellungen“).
3.2.4. CentOS
Mit folgenden Befehlen importieren Sie den LiveConfig-GPG-Schlüssel und fügen das Repository
hinzu:
rpm --import https://www.liveconfig.com/liveconfig.key
cd /etc/yum.repos.d
curl -Os http://repo.liveconfig.com/centos/liveconfig.repo
Wenn Sie einen typischen Webserver (mit Apache httpd, MySQL-Datenbank, PHP und Postfix/
Dovecot) installieren möchten, setzen Sie das Paket liveconfig-meta auf:
yum install liveconfig-meta
Wenn Sie das Meta-Paket installiert haben, rufen Sie bitte anschließend das Programm /usr/
bin/mysql_secure_installation auf, um unnötige Testzugänge zur MySQL-Datenbank
zu löschen und ein MySQL-root-Passwort einzurichten. Sofern Sie die lokale CentOS-Firewall nutzen, müssen Sie außerdemnoch noch die entsprechenden Ports für den Zugriff auf den Apache-Webserver freigeben:
lokkit --service=http --service=https
Falls Sie suPHP nutzen möchten, gehen Sie bitte wie folgt vor:
35
LiveConfig-Client
• Fügen Sie das Repository von Repoforge hinzu:
rpm -Uvh http://pkgs.repoforge.org/rpmforge-release/rpmforgerelease-0.5.2-2.el6.rf.x86_64.rpm
• Installieren Sie das Paket mod_suphp:
yum install mod_suphp
• Korrigieren
Sie
in
der
Datei
/etc/suphp.conf
die
Einstellungen
check_vhost_docroot, umask und die Handler-Funktion wie folgt:
für
;Path all scripts have to be in
;Check whether script is within DOCUMENT_ROOT
check_vhost_docroot=false
[...]
;Umask to set, specify in octal notation
umask=0022
[...]
[handlers]
;Handler for php-scripts
x-httpd-php="php:/usr/bin/php-cgi"
• Zuletzt starten Sie den Apache-Webserver neu:
service httpd restart
Den LiveConfig-Client installieren Sie schließlich über das Paket lcclient:
zypper install lcclient
Vor dem ersten Start des LiveConfig-Clients müssen Sie noch die Konfiguration anpassen indem
Sie u.a. eine eindeutige Host-ID sowie den zuständigen LiveConfig-Server angeben (siehe
Abschnitt 3.3.2, „LCCP-Protokoll-Einstellungen“).
3.3. Konfiguration
Die Konfigurationsdatei liegt normalerweise unter /etc/liveconfig/lcclient.conf oder
kann mit der Option -c DATEI (bzw. --config=DATEI) ausgewählt werden.
Die Konfigurationsdatei enthält üblicherweise Anweisungen der Form Befehl = Wert. Ein Befehl
darf nur aus Buchstaben und dem Unterstrich (_) bestehen. Unbekannte Befehle werden nicht
akzeptiert (eine Fehlermeldung wird dann beim Lesen der Konfigurationsdatei ausgegeben). Ein
Wert kann nur dann Leerzeichen enthalten, wenn der komplette Wert mit doppelten Anführungszeichen umgeben wird.
Wenn eine Zeile ein „#“-Zeichen enthält, wird der Rest der Zeile ignoriert (außer das „#“ ist in
einem Wert innerhalb der Anführungszeichen enthalten).
36
Allgemeine Einstellungen
3.3.1. Allgemeine Einstellungen
Die allgemeinen Einstellungen sind:
• base_path = VERZEICHNIS
Legt den Basis-Verzeichnisnamen für relative Pfad-/Dateinamen in der Konfigurationsdatei
fest. Wenn Sie einen relativen Pfadnamen (wie z.B. „.“) für base_path verwenden, wird der
Ort der LiveConfig-Programmdatei als Startpunkt verwendet.
• license_file = DATEI
Legt den Namen der Lizenzdatei fest. Diese sollte nur für den root-Benutzer lesbar sein. Siehe
auch Abschnitt 3.4, „Lizenz-Aktivierung“.
• log_file = DATEI | syslog
Legt den Namen der Logdatei fest. Diese Datei (oder das Verzeichnis in welchem diese Datei
erzeugt werden soll) darf nur für den root-Benutzer schreibbar sein. Wenn bereits eine Datei
mit diesem Namen existiert, dann darf diese keine Spezialdatei sein (wie etwa ein symbolischer
Link, eine Pipe, etc.).
Wird log_file auf den Wert syslog gesetzt, dann sendet LiveConfig alle Log-Meldungen
an den System-Protokolldienst syslog.
• pid_file = DATEI
Legt den Namen der PID-Datei fest. Diese Datei (oder das Verzeichnis in welchem diese Datei
erzeugt werden soll) darf nur für den root-Benutzer schreibbar sein. Die PID-Datei wird verwendet, um die Prozess-ID des aktuell laufenden LiveConfig-Client-Prozesses darin zu speichern. Unter WIN32 wird diese Option stillschweigend ignoriert (unter Windows werden keine
PID-Dateien erzeugt).
• library_path = VERZEICHNIS
Legt den Verzeichnisnamen fest, in welchem sich zusätzliche Bibliotheks-Dateien (z.B. Datenbank-Treiber) befinden.
• libexec_path = VERZEICHNIS
Legt den Verzeichnisnamen fest, in welchem sich zusätzliche Skripte und Hilfsprogramme (z.B.
Lua-Scripte, lclogsplit-Programm) befinden. Auf Linux-Systemen ist das üblicherweise das selbe Verzeichnis wie library_path.
• user = BENUTZER
37
LiveConfig-Client
Legt den Systembenutzer fest, auf den zur Ausführung aller unprivilegierten Operationen
gewechselt wird (z.B. Abfrage von Systemstatistiken, etc.). Falls dieser nicht definiert wird, wird
die Benutzer-ID -1 verwendet. Der LiveConfig-Client muss als root-Benutzer gestartet werden,
um später zu einem weniger privilegierten Benutzer wechseln zu können. Wird der LiveConfig-Client als nicht-root-Benutzer gestartet, läuft dieser durchgehend mit dessen Rechten.
• group = GRUPPE
Legt die Systemgruppe fest, auf die zur Ausführung aller unprivilegierten Operationen gewechselt wird (siehe user). Falls diese nicht definiert wird, wird die Standard-Gruppe des unter
user gesetzten Benutzers verwendet.
3.3.2. LCCP-Protokoll-Einstellungen
Das LiveConfig Client Protokoll (LCCP) wird für die Kommunikation zwischen dem LiveConfig-Client
und einem LiveConfig-Server verwendet.
Die LCCP-spezifischen Einstellungen sind:
• host_id = HOST_ID
Legt die eindeutige Identifikationskennung für diesen Rechner fest. Sie können eine IP-Adresse,
den Rechnernamen oder eine beliebige Zeichenkette mit maximal 128 Zeichen verwenden.
Nur ASCII-Zeichen sind erlaubt (keine Umlaute), der Name darf nicht ausschließlich aus Zahlen
bestehen.
Falls sich die Host-ID ändert, muss die LiveConfig-Lizenz neu aktiviert werden, und die Host-ID ebenfalls beim LiveConfig-Server aktualisiert werden.
• server = ADRESSE[:PORT]
Legt die Adresse des LiveConfig-Servers fest, zu dem die Verbindung aufgebaut werden soll.
Erlaubt sind ein Rechnername, eine IPv4- oder eine IPv6-Adresse. Optional kann eine Portnummer angegeben werden. Beispiele für gültige Adressen sind:
[2001:db8::1]:7888 # verbinde zu IPv6-Adresse 2001:db8::1 an Port 7888
192.168.0.10
# verbinde zu IPv4-Adresse 192.168.0.10 an Standard-Port 788
my.host.domain:7888 # verbinde zum Server "my.host.domain" an Port 7888
38
Lizenz-Aktivierung
3.4. Lizenz-Aktivierung
Ein LiveConfig-Client kann sich nur mit einer gültigen Lizenz an einem LiveConfig-Server anmelden. Die Lizenzdatei ist digital signiert - somit kann der LiveConfig-Server überprüfen, dass es
sich nicht um einen „böswilligen“ Client handelt.
Zur Aktivierung muss der LiveConfig-Client mit der Option --activate aufgerufen werden.
Sollte bereits eine Lizenzdatei existieren, wird mit einer entsprechenden Fehlermeldung abgebrochen. Ansonsten wird der Lizenzcode abgefragt, an den Lizenzserver gesendet und das Lizenzzertifikat installiert:
#> /usr/sbin/lcclient --activate
_
_
___
__ _
(R) ___ _ _
_
| | (_)_ _____ / __|___ _ _ / _(_)__ _
/ __| (_)___ _ _| |_
| |__| \ V / -_) (__/ _ \ ' \| _| / _` | | (__| | / -_) ' \ _|
|____|_|\_/\___|\___\___/_||_|_| |_\__, |
\___|_|_\___|_||_\__|_____________
|___/
Welcome to the LiveConfig license activation.
License key file: '/etc/liveconfig/lcclient.key'
Please enter your license key: #####-#####-#####
Generating license activation request, please wait... ok.
Connecting to license.liveconfig.com ([62.146.188.68]:443)... ok.
Sending license activation request... ok.
=> License successfully activated.
War die Lizenz-Aktivierung erfolgreich, dann wird der vom Lizenzserver erhaltene Lizenzschlüssel
abgespeichert (siehe Konfigurations-Einstellung license_file). Ansonsten wird eine aussagekräftige Fehlermeldung angezeigt.
Falls der LiveConfig-Client zum Zeitpunkt der Aktivierung bereits läuft, starten Sie den Prozess bitte
neu, damit die neuen Lizenzdaten eingelesen werden: /etc/init.d/lcclient restart.
Der Lizenzschlüssel ist einen Monat lang gültig, LiveConfig verlängert diesen jeweils automatisch.
Für eine automatisierte Lizenzaktivierung kann der Lizenzschlüssel auch in einer Umgebungsvariable namens LCLICENSEKEY übergeben und LiveConfig mit dem Argument --activate
aufgerufen werden - in diesem Fall erfolgt keine interaktive Abfrage.
3.5. Programme und Dateien
3.5.1. LiveConfig Client
Der LiveConfig-Client wird üblicherweise unter /usr/sbin/lcclient installiert. Das Programm unterstützt folgende Kommandozeilen-Optionen:
• --activate
39
LiveConfig-Client
Aktivierung der LiveConfig-Lizenz. Siehe auch Abschnitt 3.4, „Lizenz-Aktivierung“.
• --config=FILE, -c FILE
Verwendet die Konfigurationsdatei FILE. Siehe auch Abschnitt 3.3, „Konfiguration“.
• --diag
Aufruf einiger Selbsttest/Diagnose-Funktionen (wird eventuell für Support-Anfragen benötigt).
• --foreground, -f
Startet LiveConfig im Vordergrund.
• --help, -h
Zeigt eine Übersicht der verfügbaren Kommandozeilen-Parameter an.
• -k <Befehl>
Steuerung des LiveConfig Client-Prozesses. Mögliche Befehle:
start
reload
shutdown
stop
Prozess starten...
Neu laden... (=SIGHUP)
beenden... (=SIGINT)
Stop... (=SIGTERM)
• --status, -s
Zeigt den aktuellen Status und ggf. Informationen zum laufenden Clientprozess an.
• --configtest, -t
Testet nur die Konfigurationsdatei (der LiveConfig-Client wird nicht gestartet). Siehe auch
Abschnitt 3.3, „Konfiguration“.
• --version, -v
Zeigt die Versionsnummer der LiveConfig-Client-Software an.
3.5.2. Hilfsprogramme
LiveConfig installiert zusätzlich eine Reihe kleiner Hilfsprogramme, welche in diesem Abschnitt
näher beschrieben werden. In den meisten Fällen werden Sie diese Tools nicht direkt ausführen,
sondern finden diese lediglich in der Prozessliste.
40
Hilfsprogramme
3.5.2.1. lclogparse
Das Programm lclogparse wird von LiveConfig intern zur Echtzeit-Analyse von Log-Dateien verwendet.
3.5.2.2. lclogsplit
Mit lclogsplit werden die Logdateien für Web-Zugriffe (das klassische access.log) in Echtzeit für alle einzelnen Kunden erzeugt. lclogsplit wird als „Log-Pipe“ im Webserver konfiguriert und verteilt die Log-Dateien gemäß der Konfiguration einer Map-Datei (z.B. /etc/
apache2/accesslog.map). lclogsplit wird automatisch mit dem Webserver gestartet und
gestoppt.
3.5.2.3. lclua
lclua ist ein Interpreter für Lua-Scripte. Dieses Programm enthält alle LiveConfig-spezifischen
Bibliotheken und Erweiterungen, so dass damit Lua-Programme so ausgeführt werden können,
wie es der LiveConfig-Client intern auch macht. lclua wird in der Regel nur zur Entwicklung und
zum Testen von Lua-Scripten für LiveConfig benötigt.
41
42
Kapitel 4. Erste Schritte
Nachdem LiveConfig installiert wurde, öffnen Sie einen Browser und geben Sie die Adresse des
LiveConfig-Servers ein. Sofern Sie die Standard-Einstellungen der Konfigurationsdatei beibehalten haben, lautet die Adresse:
https://<Server-IP-Adresse>:8443/
Statt der IP-Adresse können Sie - falls bereits vorhanden - auch einen DNS-Namen des Servers
verwenden. Falls Sie über eine IPv6-Adresse auf den LiveConfig-Server zugreifen möchten, setzen
Sie diese in eckige Klammern, z.B. so: https://[2001:db8::1]:8443/.
Falls Sie versehentlich über (unverschlüsseltes) HTTP auf einen SSL-geschützten HTTPS-Port von LiveConfig zugreifen möchten, erkennt LiveConfig das automatisch und erzeugt eine Fehlerseite mit einem
Link auf die „richtige“ URL.
4.1. Anmeldung
Wenn die Installation erfolgreich war, bekommen Sie die Anmeldeseite präsentiert:
Tragen Sie als Benutzername admin ein. Falls Sie bei der Installation nicht ein anderes Passwort
eingetragen haben, verwenden Sie hierfür ebenfalls admin. Nach der erfolgreichen Anmeldung
erhalten Sie die Übersichtsseite:
43
Erste Schritte
4.2. Einstellungen verwalten
Die Verwaltung Ihrer persönlichen Einstellungen erfolgt über den Menüpunkt Verwaltung - Einstellungen:
44
Sprache und Zeitzone
4.2.1. Sprache und Zeitzone
Die Sprache, die Sie hier einstellen, wird automatisch dann gewählt, wenn Sie bei der Anmeldung
an LiveConfig nicht ausdrücklich eine andere Sprache wählen.
Die eingestellte Zeitzone wird immer dann verwendet, wenn irgendwelche Daten/Uhrzeiten
angezeigt werden. LiveConfig speichert intern alle Zeitangaben in Weltzeit (UTC) und passt diese
dann bei der Ausgabe individuell an.
4.2.2. Passwort ändern
Sofern Sie sich noch mit dem Standard-Passwort (admin) angemeldet haben, sollten Sie dieses
umgehend ändern. Mit einem Klick auf Passwort ändern... öffnet sich ein Fenster, in dem Sie Ihr
altes Passwort sowie das gewünschte neue Passwort angeben können.
4.2.3. Zwei-Faktor-Authentifizierung
Um die Sicherheit Ihrer persönlichen LiveConfig-Zugangsdaten zu erhöhen, können Sie die ZweiFaktor-Authentifizierung aktivieren. Hierzu wird neben den bisherigen Informationen (Benutzername und Passwort) ein zusätzlicher Code zur Anmeldung benötigt, der sich alle 30 oder 60
Sekunden ändert. Die Erzeugung dieses Einmal-Passworts (OTP - One Time Password) kann beispielsweise mit einer (kostenlosen) App auf dem Smartphone erfolgen oder mit einem günstigen
Hardware-Token am Schlüsselbund.
45
Erste Schritte
LiveConfig setzt dabei auf das im Internet-Standard RFC6238 beschriebene TOTP-Verfahren. Dieses
ist offen dokumentiert, benötigt keine externen Authentifizierungsserver und kann ohne zusätzliche Kosten genutzt werden.
Wir empfehlen hierzu, auf einem Smartphone die kostenlose App Google Authenticator zu installieren. Ein Google-Account wird dazu nicht benötigt, die App läuft lokal auf dem Smartphone und
übermittelt auch keine Anmeldedaten an Google.
Wenn Sie die App erfolgreich installiert haben, klicken Sie bei Zwei-Faktor-Authentifizierung auf
den Button bearbeiten...:
Die Bezeichnung dient dazu, bei eventuell mehreren konfigurierten Einmal-Passwörtern im Google Authenticator den Richtigen zu finden; LiveConfig schlägt hier automatisch eine Bezeichnung in der Form „Benutzername (Servername)“ vor. Der Code muss 16 Zeichen lang sein und
Base32-konform codiert sein; mit dem Zufall-Button können auch automatisch neue Vorschläge
erzeugt werden. Der angezeigte QR-Code enthält die Bezeichnung und den Code; mit dem Google
Authenticator können Sie diesen einfach scannen und somit die Daten übernehmen. Schließlich
müssen Sie noch Ihr aktuelles Passwort eingeben sowie einen mit den eben angelegten Daten
frisch erzeugten OTP-Code - damit wird sichergestellt, dass Sie nur dann die Zwei-Faktor-Authentifizierung aktivieren können, wenn der Token-Generator korrekt funktioniert.
Zur Anmeldung an LiveConfig fügen Sie dann ab sofort den jeweils aktuellen Token an Ihr
Passwort an. Wenn Ihr Passwort beispielsweise „PaSsWoRt“ lautet und Ihr Token-Generator die Zahl „123456“ anzeigt, dann geben Sie auf der LiveConfig-Anmeldeseite als Passwort
„PaSsWoRt123456“ ein.
46
Wiederverkäufer-Einstellungen
Es ist absolut wichtig, dass sowohl auf dem Smartphone als auch auf dem LiveConfig-Server die Uhrzeit
möglichst exakt eingestellt ist - eine Abweichung von mehr als 30 Sekunden führt dazu, dass keine Tokenbasierte Anmeldung möglich ist! Es wird daher dringend empfohlen, auf dem Server beispielsweise einen
NTP Daemon zu installieren, der die Systemzeit laufend korrigiert.
Passwort zurücksetzen
Wenn Sie Ihren OTP-Token-Generator verlieren sollten, ist eine direkte Anmeldung an LiveConfig
nicht mehr möglich. In diesem Fall müssen Sie über die Funktion Passwort vergessen ein neues
LiveConfig-Passwort einrichten - dabei wird die Zwei-Faktor-Authentifizierung für den betroffenen Account automatisch deaktiviert.
4.3. Wiederverkäufer-Einstellungen
Benutzer mit der Wiederverkäufer-Berechtigung (i.d.R. Server-Administratoren und Reseller) können zusätzliche Einstellungen verwalten.
E-Mail-Einstellungen
Geben Sie hier an, mit welcher Absenderadresse Mails von LiveConfig versendet werden sollen.
Diese Adresse wird z.B. beim Versand einer Passwort-Anforderung verwendet. Die optionale EMail-Signatur wird automatisch an jede Mail angefügt und standardkonform mit zwei Bindestrichen (--) vom Mail-Text getrennt.
47
Erste Schritte
Kunden-/Vertragsnummern
Legen Sie hier fest, nach welchem Schema neue Kunden- und Vertragsnummern erzeugt bzw.
hochgezählt werden sollen:
• Präfix für Vertragsnummern: muss mit einem Buchstaben beginnen und darf nur aus Buchstaben, Bindestrich und Unterstrich bestehen; wird automatisch vor neue Vertragsnummern
gesetzt (Standard: web).
• nächste Vertragsnummer: darf nur aus Zahlen bestehen; diese Nummer wird als nächste automatisch erzeugte Vertragsnummer verwendet (sofern Sie nicht manuell eine andere Nummer
beim Anlegen eines neuen Vertrages vergeben)
• Nummer erhöhen um: wird eine automatisch erzeugte Vertragsnummer verwendet, so wird
für die nächste verfügbare Vertragsnummer automatisch dieser Wert aufaddiert. Ist die Option
zufällig aktiviert, wird ein Zufallswert zwischen 1 und dem eingestellten Wert addiert.
• nächste Kundennummer: darf nur aus Zahlen bestehen; diese Nummer wird als nächste automatisch erzeugte Kundennummer verwendet
• Nummer erhöhen um: hat die selbe Funktion wie bei den Vertragsnummern
• Präfix für Benutzernamen: dieses Präfix wird verwendet wenn ein Kunde weitere LiveConfig-Benutzer anlegt.
• Präfix für FTP-Zugänge: dieses Präfix wird für zusätzliche FTP-Zugänge verwendet, die ein
Kunde anlegt. Erlaubt sind nur Kleinbuchstaben, Zahlen, Bindestrich und Unterstrich.
• Präfix für Datenbank-Zugänge: dieses Präfix wird für zusätzliche Datenbank-Zugänge eines
Kunden verwendet.
Wenn ein Präfix für Benutzer-, FTP- oder Datenbank-Zugänge mit „%c“ beginnt, dann wird dieser Platzhalter durch die jeweilige Vertragsnummer (bei FTP und Datenbanken) bzw. durch den
Namen des Haupt-Logins (bei Benutzernamen) ersetzt.
Logo
Sie können ein eigenes Logo hochladen, welches links oben statt des normalen LiveConfig-Logos
angezeigt wird. Dies gilt sowohl für die Anmeldung mit Ihren eigenen Benutzern, als auch für all
Ihre Kunden und Wiederverkäufer, so lange diese nicht ggf. ein eigenes Logo einrichten.
Das Logo muss eine 32bit PNG-Datei (mit 8bit Alpha-Kanal) sein, darf maximal 50 Pixel hoch sein,
maximal 600 Pixel breit und maximal 100 kB groß.
48
Server verwalten
4.4. Server verwalten
Über den Menüpunkt Serververwaltung erreichen Sie die Übersicht aller konfigurierten Server:
Der lokale Server (also der, auf dem LiveConfig betrieben wird), ist immer automatisch mit der
ID localhost eingetragen. Mit der Business-Lizenz können Sie durch einen Klick auf den Server
hinzufügen-Button weitere Server für die Verwaltung durch LiveConfig vorbereiten.
Mit einem Klick auf einen Listeneintrag öffnen Sie die Detailansicht des gewählten Servers:
49
Erste Schritte
Sie erhalten hier eine Übersicht über alle technischen Details des Servers, die CPU-Auslastung,
die IP- und MAC-Adressen sowie die Netzwerklast.
Auf den Folgeseiten können die einzelnen Serverdienste für die Steuerung durch LiveConfig aktiviert und konfiguriert werden.
4.4.1. Webserver
Auf dieser Seite werden alle Einstellungen rund um die Webserver-Software verwaltet. Sollten
Sie die Meldung „Keine unterstützten Webserver gefunden“ erhalten, dann installieren Sie bitte die entsprechenden Pakete Ihrer Distribution und starten LiveConfig erneut (/etc/init.d/
liveconfig restart).
50
Webserver
Für jede Webserver-Software können Sie festlegen, auf welchen IP-Adressen diese laufen soll.
Klicken Sie hiezu einfach auf den „bearbeiten“-Button und klicken die gewünschten IPs an. Der
Webserver wird dann nur auf diesen IP-Adressen erreichbar sein; die Zuordnung, welche IPs ggf.
für welchen Kunden genutzt werden, erfolgt im Abschnitt „IP-Adressen“ (siehe unten).
Apache httpd und NGINX
LiveConfig erlaubt auch den gleichzeitigen Betrieb verschiedener Webserver-Software. Sie können also Apache httpd und NGINX optional auch gleichzeitig konfigurieren - aktivieren Sie diese
beiden Dienste einfach mit verschiedenen IP-Adressen. Beim Anlegen neuer IP-Gruppen (s.u.)
können Sie dann jeweils auswählen, mit welcher Software eine IP-Gruppe genutzt werden soll;
bei den Domaineinstellungen können Sie wiederum entscheiden, mit welcher IP-Gruppe (und
somit mit welcher Software) eine Subdomain konfiguriert werden soll.
Web-Statistiken
An dieser Stelle können die Erstellung von Zugriffsstatistiken zentral aktiviert oder deaktiviert
sowie die URI festgelegt werden, unter der die Statistiken jeweils erreichbar sein sollen. Außerdem
müssen im jeweiligen Kundenvertrag die Zugangsdaten zu den Statistiken eingerichtet werden.
Die Erstellung von Zugriffsstatistiken hat keinen Einfluss auf die Berechnung des Web-Traffics
durch LiveConfig.
51
Erste Schritte
IP-Adressen
LiveConfig verwaltet IP-Adressen in Gruppen („IP-Gruppen“). Eine Gruppe kann aus einer oder
mehreren Adressen bestehen - eine Domain/Subdomain wird auf dem Webserver dann mit allen
IP-Adressen der gewählten IP-Gruppe konfiguriert. Somit können beispielweise multihomed oder
IPv6-Dualstack-Adressen bequem und flexibel verwaltet werden.
Für jede IP-Gruppe können Sie auswählen, ob diese gemeinsam oder exklusiv genutzt werden
soll. Eine gemeinsam genutzte Gruppe steht allen Ihrer Kunden zur Verfügung, eine exklusive
Gruppe nur im auszuwählenden Vertrag (egal ob Endkunden- oder Wiederverkäufer-Vertrag).
Beispiel: um den Endkunden die Umstellung ihrer Websites auf IPv6 zu vereinfachen, legen Sie einfach
eine zweite, „gemeinsame“ IP-Gruppe an, die ebenfalls die bisherige IPv4-Adresse des Servers sowie eine
IPv6-Adresse enthält. Die Kunden können dann beim Anlegen einer Subdomain wählen, mit welcher IPGruppe diese konfiguriert werden soll und können diese so wahlweise nur über IPv4 oder über IPv4/IPv6
(DualStack) erreichbar machen.
SSL-Zugriff
Über die IP-Gruppen wird ebenfalls festgelegt, ob über diese auch HTTPS (SSL) möglich sein darf.
Bei gemeinsam genutzten Gruppen muss der verwendete Webserver dabei „SNI“ (Server Name
Indication) unterstützen, damit mehrere SSL-Zertifikate auf der selben IP-Adresse genutzt werden
können (dies ist aktuell mit allen gängigen Browsern möglich, bis auf den Internet Explorer unter
Windows XP, egal welche Version). SNI wird serverseitig normalerweise ab Debian 7 (Wheezy),
OpenSUSE 12.1 und CentOS 6 unterstützt. Für kommerzielle Websites wird daher weiterhin die
Verwendung einer eigenen, exklusiven IP-Adresse pro SSL-Zertifikat empfohlen.
SSL-Server-Chiffres: hier können Sie festlegen, welche Methoden zur SSL-Verschlüsselung vom
Webserver unterstützt werden. Die Einstellung „kompatibel“ unterstützt praktisch alle (auch ältere) Browser. Falls Sie eine Zertifizierung nach dem PCI-DSS-Standard benötigen, stellen Sie „PCIkonform“ ein. (Diese Einstellung ist nicht in der LiveConfig-Basic-Version verfügbar)
4.4.2. FTP-Server
Für den Betrieb als Webserver wird üblicherweise auch ein FTP-Zugriff auf den Webserver benötigt. LiveConfig ermöglicht die Verwaltung mehrerer FTP-Accounts pro Kunde (bzw. pro Webspace-Vertrag); hierzu muss LiveConfig allerdings die Konfiguration der FTP-Server-Software
anpassen.
52
FTP-Server
Derzeit unterstützt LiveConfig die FTP-Server ProFTPd und vsftpd.
Folgende Einstellungen können vorgenommen werden:
• TLS (FTPS): wenn ein SSL-Zertifikat vorhanden ist, kann SSL-Unterstützung für den FTP-Server aktiviert werden. Damit kann ein SSL-fähiger FTP-Client die Anmelde- und Nutzdaten verschlüsselt zum Server übertragen.
• nur verschlüsselte Verbindungen: mit dieser Einstellung sind nur verschlüsselte Verbindungen
zum FTP-Server erlaubt.
• „SSL session reuse“ erforderlich: mit dieser Option erfordert der FTP-Server, dass für SSLDatenverbindungen die Informationen der Anmelde-Session wiederverwendet werden. Nur
mit dieser Einstellung sind auch Datenverbindungen zuverlässig abgesichert, allerdings unterstützen einige FTP-Programme diese leider nicht.
• Max. Verbindungen: diese Einstellung legt fest, wie viele Verbindungen zum FTP-Server
gleichzeitig aufgebaut werden dürfen. Damit kann verhindert werden, dass durch zu viele Verbindungen alle Serverressourcen aufgebraucht werden (DoS).
• Max. Verbindungen pro IP: diese Einstellungen begrenzt die Anzahl an gleichzeitigen FTPVerbindungen von der selben IP-Adresse aus. Damit kann verhindert werden, dass ein einziger
Benutzer alle erlaubten Verbindungen selbst besetzt (DoS).
53
Erste Schritte
• PASV-Port-Bereich: wenn eine Firewall zum Einsatz kommt, kann hiermit der Port-Bereich
für passive FTP-Verbindungen eingeschränkt werden. Der Port-Bereich muss zwischen 1024
und 65535 liegen, empfohlen wird ein Wert innerhalb von 49152 und 65534 (IANA-registrierter
Bereich für temporäre Ports).
4.4.3. Mailserver
Für den Betrieb als Mailserver muss in LiveConfig ein SMTP-Server (Postfix) sowie ein POP3/IMAPServer (Dovecot) eingerichtet werden. Nur wenn beide Dienste konfiguriert sind können Postfächer korrekt angelegt werden.
Beim SMTP-Server (Postfix) können Sie zusätzliche folgende Einstellungen bearbeiten:
• max. Mail-Größe: legt fest, wie groß eine E-Mail (inklusive aller Anhänge) maximal sein darf,
bevor diese von Postfix abgewiesen wird. Bitte beachten Sie, dass aufgrund der Codierung von
E-Mails angefügte Anlagen beim Versand knapp 15% größer werden - eine E-Mail mit 20 MB
Anlagen würde also zur Übertragung rund 24 MB groß sein. Im Internet sind maximale Mailgrößen von 25-50 MB üblich, manche Systeme nehmen auch nur Mails bis 10 MB an. Allgemein sollten E-Mails möglichst klein sein; zur Übertragung großer Dateien gibt es geeignetere
Verfahren (z.B. FTP).
• Virenschutz: wenn ein Virenscanner installiert ist (konkret: ClamAV-Milter) dann können einund ausgehende E-Mails automatisch auf Viren untersucht werden. Sollte eine E-Mail ver-
54
Mailserver
dächtige Daten enthalten, so wird diese noch während der SMTP-Verbindung abgewiesen, d.h.
der Absender bekommt automatisch eine Fehlermeldung durch seinen eigenen Mailserver.
• Spam-Filter: wenn SpamAssassin installiert ist, können eingehende E-Mails einer automatischen Spam-Analyse unterzogen werden. Pro Postfach können individuelle Schwellwerte für
die Ablehnung bzw. Markierung verdächtiger Mails eingestellt werden. Eine eventuelle Ablehnung einer Spam-Mail wird noch zum SMTP-Zeitpunkt durchgeführt, so dass der Absender
darüber informiert wird.
• DNS-Blacklists: hier können Sie DNS-Blacklists angeben, bei denen die IP-Adressen eintreffender SMTP-Verbindungen in Echtzeit überprüft werden. Blacklists können nur global aktiviert/deaktiviert werden. Um mehrere Blacklist-Server anzugeben, trennen Sie diese nur mit
einem Komma (ohne Leerzeichen). Einige häufig genutzte Dienste sind:
• ix.dnsbl.manitu.net - Projekt NiX Spam der Zeitschrift „iX“.
• sbl-xbl.spamhaus.org - die kombinierte Spamhaus Block List und Exploit Block List
vom Spamhaus-Projekt (bitte beachten Sie die Nutzungsbedingungen - eine kommerzielle
Verwendung kann kostenplichtig sein).
• Greylisting: wenn Postgrey installiert ist, können eingehende E-Mails zwecks Spam-Filterung
mittels Greylisting-Verfahren (siehe Wikipedia) „ausgebremst“ werden. Diese Methode benötigt
vergleichsweise wenige Ressourcen und ist (zumindest bei IPv4) derzeit noch relativ effizient.
Greylisting kann individuell pro Postfach aktiviert/deaktiviert werden.
• DNS-Whitelists: wenn Postgrey installiert und aktiviert ist sowie Postfix mindestens in Version
2.8 vorliegt, können optional DNS-Whitelists konfiguriert werden, deren Server als „vertrauenswürdig“ gelten. Befindet sich ein einliefernder Mailserver auf einer DNS-Whitelist, findet
kein Greylisting (=Verzögerung der ersten Mail-Annahme) statt. Die Analyse auf Spam- und
Viren (falls aktiviert) bleibt davon aber unbeführt.
• SMTPS aktivieren: mit dieser Option erlauben Sie einen SSL-verschlüsselten SMTP-Zugriff über
Port 465. Dieser Zugriff ist jedoch nicht standardkonform.
• SSL zur Anmeldung erforderlich: mit dieser Einstellung dürfen sich Benutzer ausschließlich
über verschlüsselte Verbindungen zum Mailversand am Server anmelden. Somit ist sichergestellt, dass keine Benutzernamen und Passwörter unverschlüsselt übertragen werden.
• SSL-Server-Chiffres: hier können Sie festlegen, welche Methoden zur SSL-Verschlüsselung
vom Server unterstützt werden. Die Einstellung „kompatibel“ unterstützt die meisten (auch
älteren) Endgeräte. Falls Sie eine Zertifizierung nach dem PCI-DSS-Standard benötigen, stellen
Sie „PCI-konform“ ein. (Diese Einstellung ist nicht in der LiveConfig-Basic-Version verfügbar)
• IP-Adressen: Sie können festlegen, auf welchen IP-Adressen eingehende E-Mails akzeptiert
werden sollen, bzw. mit welchen IP-Adressen ausgehende Mail-Verbindungen aufgebaut wer-
55
Erste Schritte
den sollen. Beachten Sie bei der Auswahl der ausgehenden IP-Adressen, dass Sie gültige Reverse-DNS-Einträge für die verwendete(n) Adresse(n) eingerichtet haben.
Da leider einige Mailserver (insbesondere Google Mail) bei SMTP-Verbindungen über IPv6 häufig E-Mails als Spam ablehnen, empfiehlt es sich ggf. ausgehende IPv6-Verbindungen vorerst
komplett zu deaktivieren.
4.4.4. Datenbankserver
Zur automatisierten Konfiguration von Datenbanken benötigt LiveConfig die root-Zugangsdaten
zu einem lokal installierten MySQL-Server:
Weitere Einstellmöglichkeiten sind:
• Zugriff erlaubt: hier können Sie festlegen, von welchen IP-Netzen aus Zugriffe auf mit LiveConfig erzeugte MySQL-Accounts erlaubt sein soll.
• phpMyAdmin: wenn Sie irgendwo eine zentrale Instanz von phpMyAdmin installiert und konfiguriert haben, können Sie hier dessen URL angeben. Kunden wird dann der entsprechende
Link in der Liste ihrer Datenbanken mit angezeigt.
Folgende Konfigurationseinstellungen werden unmittelbar nach dem Verbindungsaufbau zum
MySQL-Server ausgelesen:
56
Nameserver (DNS)
• SSL: zeigt an, ob für den MySQL-Server ein SSL-Zertifikat konfiguriert ist und er somit in der
Lage ist, SSL-verschlüsselte Verbindungen anzunehmen. In der MySQL-Konfiguration müssen hierfür die Werte ssl-ca, ssl-cert und ssl-key definiert sein (siehe MySQL-Handbuch). Für PCI-Compliance sollte zudem ssl-cipher=!aNULL:!eNULL:!EXPORT:!ADH:!
DES:!DSS:!LOW:!SSLv2:RC4-SHA:RC4-MD5:ALL gesetzt sein.
Wenn SSL erfolgreich konfiguriert ist, können mit LiveConfig angelegte Datenbanken so eingerichtet werden, dass ein externer Zugriff nur über SSL-Verbindungen erlaubt ist.
Diese Einstellungen müssen Sie ggf. direkt in der MySQL-Konfigurationsdatei bearbeiten. Damit
diese dann wirksam und von LiveConfig erkannt werden, starten Sie anschließend zuerst MySQL
neu, und danach LiveConfig (bei einem Multi-Server-Setup reicht es, den betroffenen LiveConfig-Client neu zu starten).
4.4.5. Nameserver (DNS)
Wenn Sie eigene Nameserver betreiben möchten, aktivieren Sie in LiveConfig die Verwaltung des
DNS-Servers:
LiveConfig unterstützt die Software ISC BIND in der Version 9.x. Sobald Sie mindestens einen
Nameserver in LiveConfig verwalten, erscheint im Hauptmenü der zusätzliche Punkt „DNS-Verwaltung“. Weitere Informationen zur DNS-Konfiguration finden Sie in Abschnitt 4.15, „ Nameserver (DNS) “
57
Erste Schritte
4.5. Hosting-Angebote
Über den Menüpunkt „Angebote“ im Abschnitt „Hosting“ können Sie (ebenfalls ab der Standard-Lizenz) eigene Hosting-Angebote verwalten. Zum Erstellen eines neuen Angebots klicken
Sie auf „Neues Angebot...“. Sie werden anschließend nach dem Namen für das Angebot gefragt,
sowie ob es sich um ein Endkunden- oder ein Wiederverkäufer-Angebot handelt.
Beim Anlegen eines Vertrages mit einem Endkunden-Angebot wird sofort ein entsprechender Account auf dem Server eingerichtet - beim Wiederverkäufer-Angebot (oder auch Reseller-Angebot) wird dagegen kein Account angelegt, sonder der jeweilige Kunde kann mit diesen
Ressourcen eigene Endkunden-Verträge einrichten und verwalten.
Die Eigenschaften eines Hosting-Angebots sind im einzelnen:
• Name: ein völlig frei wählbarer Name für das Hosting-Angebot. Dieser muss auch nicht
zwangsweise einmalig sein.
• Benutzer: die maximale Anzahl an LiveConfig-Benutzern, welche in diesem Angebot angelegt
werden dürfen. Muss mindestens 1 sein.
• Webspace: falls aktiviert, wird mit dem Vertrag ein Systemmaccount auf dem entsprechenden
Server eingerichtet, mit dem Webseiten bereitgestellt werden können. Bei Angeboten, die beispielsweise ausschließlich Datenbanken oder E-Mail-Postfächer enthalten braucht also kein
Webspace aktiviert werden.
58
Kunden verwalten
Wird eine Beschränkung angegeben, dann muss auf dem jeweiligen Server die Filesystem-Quota für Benutzergruppen aktiviert sein.
• SSI: sogenannte Server-Side Includes (z.B. .shtml-Dateien) sind erlaubt.
• PHP: die Ausführung von PHP-Skripten ist erlaubt.
• CGI: die Ausführung von CGI-Programmen (Common Gateway Interface, z.B. Perl-Skripte) ist
erlaubt.
• SSL: SSL-verschlüsselter Zugriff (via HTTPS) ist erlaubt.
• Cron Jobs: die Verwaltung von regelmäßig auszuführenden Programmen ist erlaubt.
• FTP-Zugang: maximale Anzahl von FTP-Accounts, die in diesem Angebot angelegt werden dürfen.
• SSH-Zugriff: ### in Arbeit ###
• Datenbanken: maximale Anzahl an (MySQL-)Datenbanken, welche in diesem Angebot angelegt werden dürfen.
• Subdomains: die Verwaltung zusätzlicher Subdomains ist erlaubt. (die Subdomain www. ist bei
jeder Domain automatisch enthalten und zählt somit nicht als weitere Subdomain)
• Externe Domains: maximale Anzahl extern registrierter Domains, welche ein Kunde mit diesem
Hostingvertrag verwalten darf.
• E-Mail: maximale Anzahl an E-Mail-Adressen bzw. -Postfächern.
• Gesamt-Mail-Quota: maximale Gesamtgröße aller Postfächer. Wenn Sie hier z.B. „1 GB“ eintragen, kann der Kunde beispielsweise maximal 5 Postfächer á 200 MB anlegen.
• Traffic: Menge des in der Grundgebühr enthaltenen IP-Traffics pro Monat.
4.6. Kunden verwalten
Ab der Standard-Lizenz können Sie mit LiveConfig eigene Kunden verwalten. Zum Anlegen eines
neuen Kunden klicken Sie auf den Menüpunkt „Kunden“ und dann auf den Button „Neuer Kunde...“:
59
Erste Schritte
Es öffnet sich ein Popup-Fenster, mit dem die notwendigen Informationen zum neuen Kunden
abgefragt werden:
• Kundennummer: eine völlig frei wählbare Nummer; darf nur aus Ziffern bestehen und nicht
doppelt vergeben werden
• Vertragspartner: wählen Sie hier den Vertragspartner aus (bei Firmenkunden ist das beispielsweise die jeweilige GmbH)
• Kontaktperson: die kann die selbe Person sein wie der Vertragspartner, kann aber z.B. auch
der Geschäftsführer oder der IT-Ansprechpartner beim Kunden sein
• Rechnungskontakt: für den Rechnungsempfänger kann ebenfalls ein abweichender Kontakt
ausgewählt werden
• Benutzername/Passwort: die Zugangsdaten zu LiveConfig für den neuen Kunden. Der Benutzername kann frei gewählt und später auch jederzeit geändert werden. Dieser Benutzername
hat nichts mit den FTP-Zugangsdaten zu einem Hostingvertrag zu tun. Unter Kontaktdaten
können Sie die Person auswählen, mit der diese Zugangsdaten verknüpft werden sollen (standardmäßig ist das ebenfalls der Vertragspartner).
60
Kundendetails
4.6.1. Kundendetails
Wenn Sie den neuen Kunden gespeichert oder einen Kunden aus der Übersichtsseite ausgewählt
haben, öffnet sich die Detail-Ansicht für den Kunden. Es werden die Kundenstammdaten, die
dem Kunden zugeordneten Benutzer sowie die Berechtigungen angezeigt:
Admin-Sitzung
In der Benutzer-Liste können Sie einen Benutzer auswählen und mittels Klick auf „Passwort
ändern“ dessen LiveConfig-Passwort ändern (FTP- oder Datenbankpasswörter bleiben davon
unberührt). Mit einem Klick auf „Verbindung starten“ öffnet sich ein neues Browserfenster (bzw.
ein neuer Tab), in welchem Sie nun praktisch als dieser Benutzer angemeldet sind. Sie erhalten
exakt die selben Informationen auf dem Bildschirm wie der jeweilige Benutzer, wenn er sich
direkt angemeldet hätte - der einzige Unterschied besteht im Hinweis auf eine „Admin-Sitzung“
in der Kopfzeile.
Kunden sperren
Um einen Kunden zu sperren, klicken Sie auf den Button „Kunde bearbeiten“. Dort kann in der
Dropdown-Box „Status“ der gewünschte Zustand eingestellt werden:
• aktiv: der Kunde ist ganz normal aktiviert
61
Erste Schritte
• gesperrt: der Kunde ist gesperrt - Anmeldungen über LiveConfig und FTP sind nicht mehr
erlaubt, alle anderen Dienste funktionieren aber noch
• deaktiviert: der Kunde ist deaktiviert - alle Domains werden deaktiviert, Anmeldungen über
LiveConfig und FTP sind nicht mehr möglich, Abruf und Versand von E-Mails ist nicht mehr
möglich
Bei Wiederverkäufern wirkt sich diese Einstellung auch auf alle untergeordneten Kunden aus.
4.6.2. Verträge
Der Karteireiter „Verträge“ zeigt alle dem Kunden zugeordneten Verträge an. Wird ein Vertrag ausgewählt, werden zusätzlich die Eigenschaften und Berechtigungen für diesen Vertrag dargestellt.
Über einen Klick auf „Neuer Vertrag...“ kann dem Kunden ein neuer Vertrag eingerichtet werden.
Vertrag neu zuordnen
Wenn Sie einen normalen Endkunden-Vertrag bearbeiten, können Sie diesen über den Button
neu zuordnen einem anderen Kunden zuweisen. Bei der Neuzuordnung wird der Vertrag beim
neuen Kunden als „individueller Vertrag“ angelegt, da das zugrunde liegende Hostingangebot
nicht mit kopiert oder verschoben wird. Nach dem Speichern der neuen Zuordnung wird der
Vertrag im Kontext des neuen Kunden angezeigt und kann direkt bearbeitet werden.
62
Domains
Die Zuordnung zum neuen Kunden findet immer in Form eines „normalen“ Vertrags statt; das
Verschieben in einen bestehenden Wiederverkäufer-Vertrag hinein ist derzeit nicht möglich.
Wiederverkäufer-Verträge können nicht verschoben werden, da es zu viele zu berücksichtigende
Abhängigkeiten und mögliche Probleme gäbe (u.a. müssten auch alle entsprechenden Endkunden des Wiederverkäufers mit verschoben werden; ein Endkunde könnte aber noch einen zweiten
Vertrag haben der nicht verschoben werden sollte, usw...).
4.6.3. Domains
Unter dem Karteireiter „Domains“ können den einzelnen Verträgen Domains zugeordnet werden:
IDN-Domains werden automatisch erkannt und in die entsprechende Punycode-Darstellung
umgerechnet. Falls der gewählte Vertrag des Kunden auch Webspace enthält, werden außerdem
automatisch zwei Subdomains (einmal mit „leerem“ Hostnamen und einmal mit „www“) angelegt.
DNSSEC
Wenn Nameserver mit LiveConfig verwaltet werden und diese DNSSEC unterstützen, dann können Sie beim Anlegen oder Bearbeiten einer Domain entsprechend DNSSEC aktivieren:
63
Erste Schritte
Zuerst müssen Sie einen sogenannten Key Signing Key (KSK) anlegen und die Domain anschließend speichern. Wenn Sie die Domain danach wieder zum Bearbeiten öffnen, können Sie den
gespeicherten KSK auch anzeigen lassen (auf diese Weise wird sichergestellt, dass ein neuer KSK
tatsächlich gespeichert wurde, bevor Sie diesen verwenden).
Der angezeigte öffentliche Schlüssel muss als sogenannter Delegation Signer Resource Record (DSRR, DS-Record) beim Domainregistrar hinterlegt werden. Wichtig ist hier, dass Sie als Algorithmus
RSASHA1-NSEC3-SHA1 angeben.
LiveConfig bzw. der BIND-Nameserver kümmern sich selbständig um die Erstellung und regelmäßige Rotation der notwendigen Zone Signing Keys (ZSK) sowie um die Signatur der DNS-Daten.
Wenn Änderungen an den DNS-Daten vorgenommen werden (z.B. Hinzufügen einer Subdomain oder Anlegen eigener DNS-Einträge) so werden diese nahezu ohne Verzögerung von BIND
64
Benutzerverwaltung
signiert und mittels dynamischer Zonenupdates (IXFR) an die zuständigen Slave-Server weitergegeben.
4.7. Benutzerverwaltung
Wenn der aktuelle Benutzer die nötigen Berechtigungen besitzt, so können unter dem Menüpunkt Benutzer weitere Benutzer engelegt und verwaltet werden:
In der Box Berechtigungen können die Rechte für zusätzliche Benutzer genau eingestellt werden.
Wenn ein Kunde beispielsweise mehrere Verträge hat, können die Zugriffsrechte eines Benutzers auf nur einen bestimmten Vertrag oder gar nur einzelne Funktionen eines Vertrags begrenzt
werden.
4.8. Webspace-Verwaltung
Wenn einem Kunden ein Webspace-Vertrag zugewiesen wurde oder als Administrator/Wiederverkäufer ein Vertrag unter Mein Hosting eingerichtet wurde, wird eine Übersicht aller Hostingverträge gezeigt:
65
Erste Schritte
Neben einer Übersicht über alle zur Verfügung stehenden Leistungen und Funktionen sowie
den Verbrauch der verschiedenen Ressourcen kann auch die Erzeugung von Zugriffsstatistiken
aktiviert und konfiguriert werden. Nach der Aktivierung von Web-Statistiken (mit AWStats oder
Webalizer) dauert es bis zu 24 Stunden, bis diese erstmals zur Verfügung stehen; üblicherweise
werden die Statistiken nur 1x täglich aktualisiert.
Sofern im gewählten Vertrag weitere FTP-Benutzer enthalten sind, können die zusätzlichen
Accounts hier verwaltet werden. Für jeden FTP-Account kann festgelegt werden, in welchem Verzeichnis dieser „startet“; auf übergeordnete Verzeichnisse kann damit nicht zugegriffen werden.
Eine Änderung des Benutzernamens oder des Startverzeichnisses ist derzeit noch nicht möglich;
hierzu löschen Sie den gewünschten Account bitte und legen ihn neu an.
Im Abschnitt Datenverbrauch werden Statistikwerte der Webserver-Software angezeigt (Anzahl
der Zugriffe sowie übertragene Datenmengen). Diese Statistik wird alle fünf Minuten aktualisiert.
4.9. Domaineinstellungen
Alle Formen von Domains (Subdomains, externe Domains) werden unter dem Punkt Domains
verwaltet. Unter einer externen Domain versteht LiveConfig eine Domain, die der Kunde bei irgend
einem Drittanbieter registriert hat und deren DNS-Einträge auf die IP-Adressen seines mit LiveConfig verwalteten Webspace-Accounts zeigen. Subdomains sind praktisch alle Einträge inner-
66
Domaineinstellungen
halb einer Domain (bzw. einer sogenannten „Zone“) - auch ein leerer Hostname oder „www“ sind
jeweils eigene Subdomains.
Je nach Vertragseigenschaften stehen verschiedene Einstellungsmöglichkeiten für eine Subdomain zur Verfügung:
• Webspace: diese Subdomain wird auf dem Webserver konfiguriert. Falls mehrer IP-Gruppen
verfügbar sind, kann die gewünschte Gruppe (und somit ggf. die gewünschte Webserver-Software) ausgewählt werden; alle damit assoziierten IP-Adressen werden angezeigt (bei externen
Domains müssen auf den zuständigen Nameservern entsprechende A/AAAA-Einträge angelegt
werden).
Der Zugriff über HTTP (unverschlüsselt) und HTTPS (SSL-geschützt) kann getrennt konfiguriert
werden. HTTPS/SSL setzt voraus, dass sowohl für den Hosting-Vertrag die Eigenschaft „HTTPS
(SSL)“ aktiviert ist, als auch dass für die gewählte IP-Gruppe der SSL-Zugriff erlaubt ist (siehe IPVerwaltung). Ein eventuelles SSL-Zertifikat muss vorab unter dem Punkt SSL-Zertifikate angelegt worden sein.
Falls auf dem Server verschiedene PHP-Versionen verfügbar sind, kann zudem ausgewählt werden, mit welcher Version die PHP-Scripte auf einer bestimmten Subdomain ausgeführt werden
(ab LiveConfig 1.7.4). Wenn Sie nicht ganz genau wissen was Sie tun, lassen Sie diese Einstellung
am besten auf „Standard“.
Die möglichen Einstellungen für die HTTP(S)-Konfiguration sind:
67
Erste Schritte
• Webspace: Aufrufe der Subdomain werden aus dem gewählten Webspace-Verzeichnis
beantwortet. Das Verzeichnis stellt dabei das „Startverzeichnis“ der Domain dar; wenn beispielsweise für die Domain www.example.org das Verzeichnis /example/ eingestellt wird
und ein Besucher im Browser die Adresse http://www.example.org/index.html öffnet, so wird
im Verzeichnis (/var/www/webxxx)/htdocs/example/ nach der Datei index.html
gesucht.
• Weiterleitung: Aufrufe der Subdomain werden mit dem gewählten HTTP-Statuscode (301
oder 302) an die eingestellte Zieladresse weitergeleitet, oder (falls Reverse Proxy gewählt wurde) von der angegebenen Zieladresse abgerufen und zurückgeliefert. Mit der Reverse ProxyMethode können Inhalte von einer anderen Domain abgerufen werden, ohne dass der Besucher in der Adresszeile deren URL sieht. Der Nachteil ist jedoch ein deutlich langsamerer
Seitenaufbau (da nun mindestens zwei Server am Abruf einer Website beteiligt sind) sowie
eventuelle Nachteile bei der Authentifizierung mit Cookies etc.
Um bei Weiterleitungen (301/302) den Pfad der ursprünglichen URL beizubehalten, fügen Sie
an die Zieladresse einfach „/*“ an. (Beispiel: zur Weiterleitung der Aufrufe von http://
www.alte-domain.de/datei.html nach http://www.neue-domain.de/neu/
datei.html geben Sie als Zieladresse http://www.neue-domain.de/neu/* an.)
• Deaktiviert: es erscheint eine Fehlermeldung, dass die aufgerufene Subdomain nicht
erreichbar ist; diese Einstellung ist ideal für vorübergehende Wartungsarbeiten auf Ihrer
Website.
• E-Mail: wenn diese Option aktiviert wird, können E-Mail-Adressen mit dieser Subdomain
angelegt werden.
68
HTTPS (SSL) mit SNI
HTTPS (SSL) mit SNI
Bei gemeinsam genutzten IP-Gruppen muss der verwendete Webserver „SNI“ (Server Name Indication) unterstützen, damit mehrere SSL-Zertifikate auf der selben IP-Adresse genutzt werden
können (dies ist aktuell mit allen gängigen Browsern möglich, bis auf den Internet Explorer unter
Windows XP, egal welche Version). SNI wird serverseitig normalerweise ab Debian 7 (Wheezy),
OpenSUSE 12.1 und CentOS 6 unterstützt. Für kommerzielle Websites wird daher weiterhin die
Verwendung einer eigenen, exklusiven IP-Adresse pro SSL-Zertifikat empfohlen.
4.10. E-Mail-Postfächer
Endkunden mit mindestens einem Hosting-Vertrag mit Postfächern können unter dem Menüpunkt „E-Mail“ ihre E-Mail-Adressen und -Postfächer verwalten:
69
Erste Schritte
• Alias: Sie können dieser E-Mail-Adresse bis zu 10 Alias-Namen hinzufügen. Wenn Sie z.B. die
Adresse [email protected] und [email protected] mit dem selben Postfach nutzen möchten,
dann reicht es, wenn Sie ein Postfach mit dem Namen info anlegen und dort als Alias mail
hinzufügen.
• Postfach: aktivieren Sie diese Option, wenn Sie die E-Mail-Adresse als POP3/IMAP-Postfach
nutzen möchten (ansonsten kann die Adresse ausschließlich zur Weiterleitung von E-Mails
verwendet werden).
• Passwort: geben Sie hier das gewünschte Passwort für die E-Mail-Adresse ein. Das Passwort
darf aus technischen Gründen keine Umlaute enthalten (viele E-Mail-Programme kommen
damit nicht zurecht).
• Quota-Limit: dieser Wert bestimmt, wie groß das E-Mail-Postfach maximal sein darf. Sobald
das Postfach diese Größe zu 80% bzw. zu 95% erreicht, wird automatisch eine Warnung per EMail zugestellt (siehe Abschnitt 5.3.2, „ Quota-Warnung “).
• Greylisting: wenn auf dem Mailserver Greylisting verfügbar ist, kann diese Methode zur SpamAbwehr individuell pro Postfach aktiviert werden. Bei diesem Verfahren „merkt“ sich der Mailserver das Triple aus Absender, Empfänger und IP-Adresse des einliefernden Mailservers. Ist
für eine Maileinlieferung noch kein solches Triple erfasst, wird die Mail vorübergehend abgewiesen und erst beim nächsten Zustellversuch akzeptiert (weitere Mails werden dann immer
70
Catch-All-Adressen
ohne Verzögerung entgegen genommen). Jeder normale Mailserver versucht autmatisch eine
erneute Zustellung nach wenigen Minuten.
• Spam-Prüfung: wenn SpamAssassin auf dem Mailserver verfügbar ist, können eingehende
Mails auf Spam hin untersucht und ggf. markiert oder abgewiesen werden. Jede Mail erhält
dabei durch den Spamfilter eine individuelle Punktzahl, welche die Wahrscheinlichkeit für
Spam widerspiegelt.
Wir empfehlen, Mails ab 3,0 Punkten als Spam markieren zu lassen (in der Betreff einer E-Mail
wird dann „*** Spam-Verdacht ***“ eingefügt) und Mails ab 5,0 Punkten komplett abzulehnen.
• Web-Anmeldung: diese Option erlaubt es, sich mit der E-Mail-Adresse und dem angegebenen Passwort direkt in LiveConfig anzumelden und Postfacheinstellungen selbst zu verwalten
(Passwort ändern, Automatische Antwort bearbeiten, Spam-Filter konfigurieren).
• Weiterleitung: eintreffende E-Mails werden an die hier angegebenen E-Mail-Adressen weitergeleitet. Es können maximal 25 Weiterleitungs-Ziele angegeben werden.
Falls die E-Mail-Adresse auch als POP3/IMAP-Postfach genutzt wird, werden eintreffende EMails sowohl in das Postfach zugestellt als auch gleichzeitig an die angegebenen Adressen
weitergeleitet.
• Automatische Antwort: wenn aktiviert, dann wird auf jede eintreffende E-Mail eine automatische Antwort gesendet. Dabei erhält jeder Absender nur eine automatische Antwort (so lange
bis die Auto-Antwort wieder abgeschaltet oder geändert wird).
Derzeit werden automatische Antworten nur mit POP3/IMAP-Postfächern und nicht mit
reinen E-Mail-Weiterleitungen unterstützt.
Catch-All-Adressen
Sie können sogenannte „Catch-All-Adressen“ einrichten, mit denen alle E-Mails verarbeitet werden die sonst keinem anderen Postfach zugeordnet werden konnten. Die einzige Einschränkung
hierbei ist, dass Sie eine Catch-All-Adresse nur zur Weiterleitung von E-Mails nutzen können und
nicht direkt als POP3/IMAP-Postfach.
Um eine Catch-All-Adresse einzurichten, verwenden Sie als Postfachname einfach nur ein SternSymbol (*). Zusätzliche Alias-Namen sind überflüssig (wird ja alles mit „*“ abgedeckt). Außerdem
müssen Sie mindestens ein Weiterleitungs-Ziel angeben. Optional können Sie auch den Autoresponder (automatische Antwort) aktivieren.
Wir empfehlen, nach Möglichkeit keine Catch-All-Adressen zu nutzen, da diese erfahrungsgemäß ziemlich anfällig für Spam-Nachrichten sind. Viele Spam-Versender schicken die Mails nämlich an zufällige
bzw. geratene Adressen. Nicht zuletzt verlieren Sie so schnell den Überblick darüber, welche Mailadressen Sie nun „nach außen“ offiziell verwenden.
71
Erste Schritte
Sofern keine Catch-All-Adresse für eine Domain eingerichtet ist und jemand sendet an eine ungültige
Adresse dorthin eine E-Mail, so wird dieser normalerweise durch seinen Absender-Mailserver darüber
informiert, dass die E-Mail aufgrund einer ungültigen Zieladresse nicht zugestellt werden konnte.
4.11. Datenbanken
Endkunden mit mindestens einem Hosting-Vertrag mit Datenbanken können diese unter dem
Menüpunkt „Datenbanken“ verwalten:
Es gelten folgende Einschränkungen:
• Der Datenbankname und der Benutzername müssen mit einem Buchstaben beginnen und
können alle Zeichen von A-Z, Ziffern von 0-9 sowie Unterstriche (_) und Bindestriche (-) enthalten. Die Länge muss zwischen 2 und 16 Buchstaben betragen. Die Groß-/Kleinschreibung
beim Datenbank-/Benutzername und Passwort ist zu beachten.
• Das Passwort muss mindestens fünf und maximal 50 Zeichen lang sein.
• Die Anmeldung an die über LiveConfig angelegten Datenbanken ist derzeit nur lokal vom jeweiligen Server (localhost) aus erlaubt!
Beim Löschen von Datenbanken wird jeweils die Datenbank sowie der dazugehörige Benutzer
gelöscht. Falls Sie manuell weitere Benutzer für eine Datenbank oder weitere Datenbanken für
einen Benutzer angelegt haben, müssen diese ebenfalls manuell gelöscht werden.
72
Externer Zugriff
Externer Zugriff
Grundsätzlich werden Datenbankbenutzer so angelegt, dass nur ein lokaler Zugriff (innerhalb des
Servers) sowie ggf. von ausdrücklich freigeschalteten IPs/Netzen aus erlaubt ist. Mit der Option
„externen Zugriff erlauben“ darf auch von einem bliebigen (externen) Server aus eine Verbindung
zu dieser MySQL-Datenbank aufgebaut werden - vorausgesetzt, der Datenbankserver an sich ist
extern erreichbar (Firewall).
Sofern SSL auf dem Datenbankserver aktiviert ist, kann mit der Option „externer Zugriff nur mit
SSL“ ein verschlüsselter Verbindungsaufbau erzwungen werden. Diese Option wird bei externen
Zugriffen dringend empfohlen, da nur so die Anmelde- sowie Nutzdaten verschlüsselt übertragen
werden.
4.12. Cron-Jobs
Regelmäßig auf dem Server auszuführende Befehle - sogenannte Cron-Jobs - können über den
gleichnamigen Menüpunkt konfiguriert werden:
Der angegebene Befehl wird exakt so auf dem Server ausgeführt; soll also ein PHP-Script gestartet werden, muss der dazugehörige Interpreter (z.B. /usr/bin/php) vorangestellt und der
vollständige (absolute) Dateiname zum Script angegeben werden. Falls eine URL regelmäßig aufgerufen werden soll, muss z.B. wget verwendet werden (Beispiel: wget -q -O /dev/null
"http://www.example.org/...").
73
Erste Schritte
4.13. Application Installer
Über den Application Installer können häufig genutzte Webanwendungen mit wenigen
Mausklicks installiert werden:
4.14. SSL-Zertifikate
Wenn ein Webspace-Vertrag die Eigenschaft „HTTPS (SSL)“ enthält, dann hat der jeweilige Kunde
die Möglichkeit entsprechende SSL-Zertifikate zu verwalten. Die einzelnen Komponenten für ein
SSL-Zertifikat können wahlweise über LiveConfig selbst erzeugt oder aber importiert werden.
74
Privater Schlüssel
4.14.1. Privater Schlüssel
Für ein SSL-Zertifikat wird immer ein Schlüsselpaar - bestehend aus privatem und öffentlichem
Schlüssel - benötigt. Diese Schlüssel können in LiveConfig erzeugt werden; als Algorithmus steht
RSA zur Verfügung (DSA kommt in der Praxis eher selten zum Einsatz). Die Schlüssellänge sollte
mindestens 2048 Bit betragen, wahlweise kann auch ein 4096-Bit-Schlüssel erzeugt werden, was
allerdings deutlich länger dauert.
Falls bereits ein RSA-Schlüssel vorhanden ist, kann dieser importiert werden. Wenn der Schlüssel
mit einem Passwort geschützt ist, muss dieses dabei mit angegeben werden - LiveConfig braucht
zwangweise Zugriff auf den „uncodierten“ Schlüssel. Intern speichert LiveConfig diesen aber wieder verschlüsselt ab ( jedoch mit einem anderen Passwort).
4.14.2. Zertifikatsanforderung (CSR) erzeugen
Für die Bestellung eines SSL-Zertifikats wird normalerweise eine Zertifikatsanforderung (Certificate
Signing Request - kurz CSR) benötigt. Diese CSR enthält unter anderem den öffentlichen Schlüssel
für das gewünschte SSL-Zertifikat, sowie einige Angaben zum Antragsteller. Welche Angaben hier
im einzelnen benötigt werden kommt auf den Zertifikatsaussteller (CA) sowie das jeweils bestellte
Produkt an.
In jedem Fall muss das Feld Allgemeiner Name (Common Name, kurz CN) exakt den Domainnamen enthalten, für den später das SSL-Zertifikat genutzt werden soll. Wenn Sie das Zertifikat bei-
75
Erste Schritte
spielsweise für https://www.example.org nutzen möchten, tragen Sie hier www.example.org ein
- und nicht nur example.org!
Die weiteren Eingabefelder sind:
• Organisation (O): Organisation, Firma oder Einrichtung, auf deren Namen das SSL-Zertifikat
ausgestellt werden soll
• Organisationseinheit (OU): Abteilung innerhalb der o.g. Organisation; kann im Zweifelsfall auch
einfach leer gelassen werden
• Stadt (L): die Stadt, in der sich die o.g. Organisation befindet
• Bundesland (ST): das Bundesland, Kanton oder die Provinz, in der sich die o.g. Organisation
befindet
• Land (C): das Land, in dem sich die o.g. Organisation befindet
• E-Mail-Adresse: eine (allgemeine) E-Mail-Adresse zur Kontaktaufnahme
4.14.3. Zertifikat
Wenn der private Schlüssel vorliegt kann wahlweise mit eventuell erfassten CSR-Informationen
ein selbst-signiertes Zertifikat erzeugt oder ein „offizielles“ SSL-Zertifikat importiert werden. Wenn
der private Schlüssel unverändert bleibt kann das Zertifikat auch jederzeit ersetzt werden; so kann
man beispielsweise mit einem selbst-signierten Zertifikat eine neue Website testen und dann zu
einem späteren Zeitpunkt ein normales SSL-Zertifikat bestellen.
4.14.4. CA-Zwischenzertifikate
Bei aktuellen SSL-Zertifikaten von offiziellen Zertifizierungsstellen (Certification Authorities, kurz
CA) ist in den meisten Fällen die Verwendung von einem oder mehreren sogenannten „Zwischenzertifikaten“ notwendig, damit Browser keine Fehlermeldung erzeugen. Falls also entsprechende
Zwischenzertifikate vorliegen, können diese hier importiert werden.
4.15. Nameserver (DNS)
4.15.1. DNS-Vorlagen
Damit LiveConfig Ihre Domains automatisch auf eigenen Nameservern anlegen kann, müssen Sie
als erstes mindestens eine DNS-Vorlage definieren. Die DNS-Vorlagen ( „Templates“) beschreiben,
auf welchen Nameservern eine Domain jeweils eingerichtet werden soll sowie alle restlichen
SOA-Parameter.
76
DNS-Vorlagen
Eine Domain muss im Internet üblicherweise auf mindestens zwei verschiedenen Nameservern
konfiguriert sein. Der primäre Nameserver muss dabei direkt durch LiveConfig verwaltet werden.
Weitere (sekundäre) Nameserver können wahlweise direkt mit LiveConfig verwaltet oder extern
genutzt werden (siehe Abschnitt 4.15.2, „ Externe DNS-Server “).
Folgende Einstellungen können für DNS-Vorlagen vorgenommen werden:
• Primärer DNS: Auswahl des primären Nameservers. Dieser muss direkt durch LiveConfig verwaltet werden. Alle DNS-Änderungen (Hinzufügen/Löschen von Subdomains etc.) werden
auf diesem Nameserver ausgeführt und automatisch über Zonenupdates (AXFR/IXFR) an die
sekundären Nameserver weitergeleitet.
• Name: legt den Namen fest, der im SOA-Record sowie bei NS-Records für diesen Server verwendet werden soll. Sie können also auch abweichend vom Hostnamen des Nameservers einen
„eigenen“ Servernamen festlegen.
• Hidden Primary: mit dieser Option richten Sie ein sogenanntes „Hidden-Primary-Setup“ ein
(siehe Wikipedia); der primäre DNS-Server wird dann nicht als zuständiger Nameserver für
die Domains veröffentlich. In diesem Fall müssen Sie mindestens zwei sekundäre Nameserver
angeben.
• TTL: Gültigkeitsdauer („time to live“) für diesen Nameserver-Eintrag; dieser Wert wird für die
NS Resource Records verwendet.
77
Erste Schritte
• SOA-Einstellungen: diverse Parameter für den SOA Resource Record (Start of Authority). Die
vorgeschlagenen Standardwerte richten sich nach den Empfehlungen der RIPE.
• E-Mail-Adresse: diese Mailadresse wird in allen SOA-Records der mit dieser Vorlage verwalteten Domains eingetragen. Üblicherweise wird hier eine Adresse genutzt, unter welcher der
Betreiber des primären DNS-Servers erreichbar ist, häufig so etwas wie hostmaster@....
4.15.2. Externe DNS-Server
Mit LiveConfig können Sie auch ganz bequem Nameserver von externen Anbietern (z.B. von Ihrem
Domainanbieter) nutzen:
Sie müssen lediglich beachten, dass LiveConfig auf externen Nameservern keine DNS-Zonen
anlegen oder löschen kann. Neue Domains bzw. Domainlöschungen müssen Sie also manuell
auf den externen Servern vornehmen. In Kürze wird es für LiveConfig eine Erweiterung der SOAPAPI geben, mit der Sie diesen Vorgang aber teilweise automatisieren können.
Wenn Ihr Anbieter TSIG (Transaction Signatures) zur Absicherung von Zonentransfers anbietet,
tragen Sie hier den Namen sowie den Schlüsselcode ein. Der Schlüsselname muss dabei exakt
so auch auf dem externen Nameserver eingetragen sein.
4.16. Verzeichnisstruktur
Die Verzeichnisse für die Kundendaten sind wie folgt organisiert:
78
Verzeichnisstruktur
• Webspace: /var/www/<Vertrag>/
• <Webspace>/apps/ - Verzeichnis für über den Application Installer installierte Anwendungen
• <Webspace>/conf/ - Konfigurationsdateien, php.ini-Dateien, FastCGI-PHP-Sockets, etc.
(nur LiveConfig-intern)
• <Webspace>/htdocs/ - Web-Dateien
• <Webspace>/htdocs/cgi-bin/ - Verzeichnis für CGI-Scripte (falls im jeweiligen Hostingvertrag erlaubt)
• <Webspace>/logs/ - Log-Dateien
• <Webspace>/priv/ - Platz für „private“ Dateien außerhalb des Webspaces (für sensible
PHP-Includes, für FTP-Accounts ohne Webspace, etc.)
• <Webspace>/stats/ - grafisch aufbereitete Statistikdaten
• <Webspace>/tmp/ - temporäre Dateien (PHP-Uploads, PHP-Sessions, etc.)
• E-Mail: /var/mail/<Vertrag>/
79
80
Kapitel 5. Fortgeschrittene Konfiguration
In diesem Kapitel werden Konfigurationsmöglichkeiten für erfahrene Benutzer vorgestellt.
5.1. LiveConfig-Standardwerte ändern
Viele Standardwerte und Limitierungen verwaltet LiveConfig in seiner eigenen Datenbank in der
Tabelle LCDEFAULTS. Steht ein Schlüssel nicht in dieser Datenbanktabelle, dann gilt automatisch
der Standardwert.
Wenn Sie Änderungen an diesen Einträgen vornehmen, müssen Sie LiveConfig anschließend neu
starten.
Schlüssel
Version
Standard
Beschreibung
db.password.minScore
1.8.0
4
Erforderliche
Passwort-Komplexität
für Datenbank-Benutzer (Integer-Zahl, 0-8)
ftp.login.minLength
1.8.0
5
Minimale Länge für
FTP-Login-Namen
ftp.password.minScore
1.8.0
4
Erforderliche
Passwort-Komplexität für FTP-Accounts
(Integer-Zahl, 0-8)
liveconfig.web.template
1.8.0
default
Name des Web-Templates für die LiveConfig-Oberfläche (/usr/
share/liveconfig/name.tmpl)
login.concurrent 1.8.3
login.help.url
Enthält eine mit Leerzeichen getrennte
Liste von LiveConfig-Accounts, die sich
gleichzeitig anmelden
dürfen (normalerweise darf jeder Account
nur einmal gleichzeitig angemeldet sein)
1.8.0
81
Fortgeschrittene Konfiguration
Schlüssel
Version
Standard
Beschreibung
Wenn vorhanden,
dann wird auf der
Anmeldeseite von
LiveConfig ein Link mit
dem Titel „Hilfe“ eingeblendet, der auf die
angegebene URL verweist.
Aktiviert die Registrierung und Verwendung
von fido-U2F Hardware-Tokens zur Anmeldung an LiveConfig.
login.u2f.enabled1.9.0
mail.aliases.limit
1.8.1
10
Maximale Anzahl an
Alias-Namen für ein
E-Mail-Postfach (Integer-Zahl, 1-65535)
mail.forwards.limit
1.8.1
25
Maximale Anzahl an
Weiterleitungs-Zieladressen für ein EMail-Postfach (Integer-Zahl, 1-65535)
mail.greylisting.enabled
1.8.0
0
Legt fest, ob Greylisting bei neuen Postfächern standardmäßig aktiviert werden
soll („0“ oder „1“)
mail.password.minScore
1.8.0
4
Erforderliche
Passwort-Komplexität
für E-Mail-Postfächer
(Integer-Zahl, 0-8)
mail.spam.enabled1.8.0
0
Legt fest, ob der
Spamfilter bei neuen
Postfächern standardmäßig aktiviert werden soll („0“ oder „1“)
82
Webspace
Schlüssel
Standard
Beschreibung
mail.spam.reject 1.8.0
5.0
Standard-Schwellwert
für die Ablehnung
von Mails durch den
Spamfilter (Fließkomma-Zahl, 0.0-999)
1.8.0
3.0
Standard-Schwellwert für die Markierung von verdächtigen Mails durch den
Spamfilter (Fließkomma-Zahl, 0.0-999)
mail.weblogin.enabled
1.8.0
0
Legt fest, ob die WebAnmeldung für neue
Postfächer standardmäßig aktiviert werden soll („0“ oder „1“)
user.password.minScore
1.8.0
4
Erforderliche
Passwort-Komplexität
für LiveConfig-Benutzeraccounts (Integer-Zahl, 0-8)
webspace.password.minScore
1.8.0
2
Erforderliche
Passwort-Komplexität für Webspace-Verzeichnisschutz (Integer-Zahl, 0-8)
mail.spam.warn
Version
5.2. Webspace
Webspace-Hauptverzeichnis ändern: LiveConfig legt alle Webspaces unter /var/www/ (bzw.
bei OpenSUSE unter /srv/www/) an. Um diesen Pfad zu ändern, fügen Sie in die custom.lua
folgende Zeilen ein:
function LC.web.getWebRoot()
return "/home/htdocs"
end
Diese Einstellung muss vor dem Anlegen eines ersten Hosting-Vertrags vorgenommen werden
und kann später nicht mehr ohne Weiteres geändert werden!
83
Fortgeschrittene Konfiguration
Webspace-Verzeichnis ändern: innerhalb der Kundenverzeichnisse liegen alle Webspace-Dateien bei LiveConfig üblicherweise im Verzeichnis /htdocs/. Um dieses zu ändern (z.B. auf /html/
) fügen Sie in die custom.lua folgende Zeile hinzu:
web.HTDOCS_PATH = 'html'
Diese Einstellung muss vor dem Anlegen eines ersten Hosting-Vertrags vorgenommen werden
und kann später nicht mehr ohne Weiteres geändert werden! Außerdem müssen Sie dann unbedingt in den PHP-Einstellungen den Eintrag open_basedir entsprechend anpassen (z.B. von %HOME
%/htdocs auf %HOME/html).
Zusätzliche Konfigurationen pflegen: wenn Sie zusätzliche, vertragsspezifische Konfigurationen
pflegen wollen, biegen Sie über custom.lua die Funktion apache.configureVHost auf
eine eigene Funktion um und rufen die Original-Funktion danach auf.
Das folgende Beispiel zeigt, wie Sie über eine eigene Funktion individuelle suexec-Konfigurationsdateien verwalten können (unter Debian mit dem Paket apache2-suexec-custom):
old_configureVHost = apache.configureVHost
function apache.configureVHost(cfg, opts)
-- 'cfg' enthält die von Lua erkannte Server-Konfiguration,
-- 'opts' enthält alle vHost-spezifischen Einstellungen, u.a.:
-- opts.name -> Vertragname (z.B. "web123")
-- Beispiel für eine Log-Meldung
LC.log.print(LC.log.INFO, "Eigene configureVHost()-Funktion aufgerufen")
-- Datei öffnen:
local filename = "/etc/apache2/suexec/" .. opts.name
local fh, msg = io.open(filename, "w")
if fh == nil then
LC.log.print(LC.log.ERR, "Can't open '", filename, "' for writing: ", msg)
return false, "Can't open '" .. filename .. "' for writing: " .. msg
end
-- suexec document root:
fh:write(opts.path .. "/" .. LC.web.HTDOCS_PATH .. "\n")
-- suexec userdir suffix:
fh:write("# public_html/cgi-bin\n")
fh:close()
-- nun noch den Original-Handler aufrufen und dessen
-- Rückgabewert zurück geben
return old_configureVHost(cfg, opts)
end
5.2.1. ProFTPD-Konfiguration
Um eigene Anweisungen in die ProFTPD-Konfiguration aufzunehmen, haben Sie zwei Möglichkeiten:
84
E-Mail
• legen Sie eine Datei namens /etc/proftpd/proftpd.local.conf an, oder
• wenn das Verzeichnis /etc/proftpd/conf.d/ existiert, erstellen Sie darin Ihre eigene(n)
Konfigurationsdatei(en). Diese müssen mit der Dateiendung .conf enden.
Klicken Sie anschließend im LiveConfig in der ProFTPD-Verwaltung auf den Button neu konfigurieren. LiveConfig aktualisiert darauf hin die proftpd.conf und nimmt die o.g. Dateien per
Include-Anweisung auf.
5.3. E-Mail
5.3.1. Autokonfiguration (Autodiscovery)
LiveConfig unterstützt die Autokonfigurations-Protokolle von Mozilla Thunderbird und Microsoft
Outlook (ab Version 2007). Damit muss ein Benutzer zur Einrichtung seines E-Mail-Accounts
lediglich seine Mailadresse und -Passwort eingeben - alle restlichen Einstellungen (Mailserver,
Verschlüsselung etc.) findet das E-Mail-Programm dann automatisch heraus.
Eine ausführliche Anleitung finden Sie in der Wissensdatenbank unter Artikel Nr. 13.
5.3.2. Quota-Warnung
Damit E-Mail-Benutzer eine Information darüber erhalten wenn der Speicherplatz ihres Postfachs
aufgebraucht ist, versendet LiveConfig automatisch eine entsprechende Warnmeldung sobald das
Postfach zu 80% bzw. zu 95% gefüllt ist. Diese Mail wird auch dann dem Postfach zugestellt, falls
dieses komplett „voll“ ist.
Als Vorlage für diese Warnmeldung dient die Datei /etc/liveconfig/mailquota.txt. Folgende Ersetzungen werden dabei vorgenommen:
Platzhalter
Ersetzung
%USER%
E-Mail-Adresse des betroffenen Postfachs
%DATE%
aktuelles Datum/Uhrzeit (RFC822-konform)
%PERCENT%
überschrittener Füllstand („80“ oder „95“)
Die Warnmeldung wird nur bei erstmaliger Überschreitung der jeweiligen Schwelle (80% bzw.
95%) versendet. Wird der Füllstand von 80% wieder unterschritten, erfolgt keine Benachrichtigung. Wird der Füllstand von 80/95% danach wieder irgendwann erreicht, erfolgt wieder eine
Benachrichtigung.
85
Fortgeschrittene Konfiguration
5.3.3. Postfix-Konfiguration
Sie haben die Möglichkeit, eigene Einstellungen in die Postfix-Konfigurationdatei main.cf
aufzunehmen. Erstellen Sie hierzu eine Tabelle namens postfix.LOCALCONFIG in der
custom.lua.
Beispiel:
postfix.LOCALCONFIG = {
["authorized_mailq_users"] = "root, nrpe, $mail_owner"
}
Anschließend müssen Sie LiveConfig neu starten (damit die custom.lua neu eingelesen wird)
sowie unter Serververwaltung - E-Mail die Postfix-Einstellungen erneut speichern. Die Werte aus
der postfix.LOCALCONFIG-Tabelle überschreiben dabei ggf. auch von LiveConfig generierte
Einstellungen.
Komplett eigene Konfiguration verwenden: wenn Sie eine komplett eigene Postfix-Konfiguration verwenden möchten (bzw. wenn also LiveConfig die master.cf und main.cf nicht überschreiben soll), dann nehmen Sie in die custom.lua folgende Anweisung auf:
postfix.NOUPDATE = true
Die Tabellen (virtual_alias, virtual_domains etc.) werden trotzdem weiter durch LiveConfig aktualisiert.
5.3.4. Dovecot-Konfiguration
Um eigene Optionen in die Dovecot-Konfiguration aufzunehmen, erstellen Sie eine Datei
namens /etc/dovecot/dovecot.local.conf. Anschließend speichern Sie im LiveConfig
in der Dovecot-Verwaltung die Einstellungen noch mal neu ab. LiveConfig erzeugt somit die
dovecot.conf neu und nimmt die dovecot.local.conf per include-Anweisung auf.
86
Kapitel 6. Wartung und Pflege
Dieses Kapitel widmet sich der professionellen Betreuung einer LiveConfig-Installation. Sobald
LiveConfig mit größeren Benutzerzahlen oder strengen Verfügbarkeitsanforderungen eingesetzt
wird, stellen die Bereiche Datensicherung (Backup), Wiederherstellung (Restore/Recovery) und
Überwachung (Monitoring) ein wichtiges Thema dar.
6.1. Backup und Wiederherstellung
6.1.1. Backup
LiveConfig speichert alle eigenen Daten und Einstellungen ausschließlich auf dem LiveConfig-Server. Das bedeutet, dass auch bei der Verwaltung mehrerer Server auf den Clients keine zu sichernden LiveConfig-Daten vorliegen.
Auf dem LiveConfig-Server sollten folgende Dateien und Verzeichnisse in ein regelmäßiges
Backup aufgenommen werden:
• /etc/liveconfig/ (Konfiguration, Lizenzschlüssel, SSL-Zertifikate, etc.)
• /var/lib/liveconfig/liveconfig/htdocs/ (hochgeladene Dateien, Logos, etc.)
• SQLite- oder MySQL-Datenbank (s.u.)
Zur Erstellung eines Backups muss LiveConfig nicht beendet werden - das kann problemlos im
laufenden Betrieb erfolgen.
LiveConfig speichert intern zwar alle Passwörter verschlüsselt bzw. gehashed, aber dennoch enthalten die Datenbanken alle Kundendaten (Namen, Anschriften, E-Mail-Adressen, usw.) im Klartext. Aus diesem Grund dürfen die Backup-Dateien niemals unverschlüsselt auf einen anderen
Server kopiert oder abgelegt werden - insbesondere also nicht per FTP. Wir empfehlen dringend,
die Sicherungskopie vor der Übertragung zu verschlüsseln (z.B. mit GPG).
Bewahren Sie alle Backups grundsätzlich an einem anderen Ort, vor allem aber auf einem anderen Server
auf, als auf welchem diese erstellt werden! Nur so können Sie auch im Falle von Festplatten-Defekten
oder größeren Schäden (Brand etc.) eine Wiederherstellung durchführen.
Sicherung der internen SQLite-Datenbank
Normalerweise speichert LiveConfig alle internen Daten in der SQLite-Datenbank /var/lib/
liveconfig/liveconfig.db. Diese Datenbank kann mit dem Hilfsprogramm lcdbbackup
gesichert werden.
Beispiel zur Sicherung der SQLite-Datenbank:
87
Wartung und Pflege
$> cd /var/lib/liveconfig
$> /usr/lib/liveconfig/lcdbbackup liveconfig.db liveconfig.db.bak
Creating SQLite Database Backup
Input File: liveconfig.db
Output File: liveconfig.db.bak
Done.
Sicherung einer internen MySQL-Datenbank
Falls Sie LiveConfig so konfiguriert haben, dass die internen Daten in einer MySQL-Datenbank
gespeichert werden (siehe Abschnitt 2.3.1, „ MySQL “), dann muss für ein Backup ein regelmäßiger
Dump dieser Datenbank erzeugt werden.
Beispiel zur Sicherung der MySQL-Datenbank:
$> mysql -u liveconfig --password=SaFePaSsWoRd --add-drop-table LIVECONFIG >
LiveConfig.sql
6.1.2.
Wiederherstellung
Zur Wiederherstellung eines LiveConfig-Backups verfahren Sie wie folgt:
1. Sollte LiveConfig nicht oder nicht mehr installiert sein, dann installieren Sie am besten die selbe
Version, mit der auch die Backups erzeugt wurden. Alternativ können Sie auch eine neuere
Version installieren (LiveConfig ist immer abwärtskompatibel mit älteren Datenbanken).
2. Falls LiveConfig noch läuft, beenden Sie dieses (z.B. liveconfig -k stop).
3. Entpacken Sie die Dateien aus dem Backup an ihren ursprünglichen Orten.
4. Für SQLite-Datenbanken: benennen Sie den Datenbank-Dump in den Original-Namen um
(z.B. mv liveconfig.db.bak liveconfig.db).
Für MySQL-Datenbanken: importieren Sie den MySQL-Dump (z.B. mysql -u liveconfig
--password=SaFePaSsWoRd LIVECONFIG < LiveConfig.sql).
5. Starten Sie LiveConfig erneut (z.B. /etc/init.d/liveconfig start).
6. Prüfen Sie die Start-Meldungen sowie die LiveConfig-Logdatei (/var/log/liveconfig/liveconfig.log) ob alles in Ordnung ist.
6.2. Monitoring
6.2.1. Nagios® / Icinga®
Zur Überwachung der Verfügbarkeit von LiveConfig mit Nagios (http://www.nagios.org) oder kompatiblen Programmen (z.B. Icinga, http://www.icinga.org) definieren Sie folgende Prüfbefehle:
88
Nagios® / Icinga®
# Pruef-Befehl fuer LiveConfig
define command{
command_name check_liveconfig
command_line /usr/lib/nagios/plugins/check_http -H '$ARG1$' -I '$HOSTADDRESS$' -p
'$ARG2$' -w '$ARG3$' -c '$ARG4$' --ssl -u /liveconfig/nagios-check -s "Status: OK"
}
# Pruef-Befehl fuer das LiveConfig SSL-Zertifikat
define command{
command_name check_liveconfig_cert
command_line /usr/lib/nagios/plugins/check_http -H '$ARG1$' -I '$HOSTADDRESS$' -p
'$ARG2$' -C '$ARG3$'
}
Mit folgenden Service-Definitionen richten Sie schließlich die Überwachung ein:
# Erreichbarkeit von LiveConfig pruefen:
# Parameter:
# (1) Hostname (auf den auch das SSL-Zertifikat ausgestellt ist)
# (2) HTTPS-Port (meist 8443)
# (3) Dauer (Sekunden) für Status "WARNING" (5)
# (4) Dauer (Sekunden) für Status "CRITICAL" (10)
define service {
host_name
ihr.liveconfig.server
service_description LiveConfig Status
check_command
check_liveconfig!liveconfig.example.org!8443!5!10
use
generic-service
}
# SSL-Zertifikat für LiveConfig pruefen:
# Parameter:
# (1) Hostname (auf den auch das SSL-Zertifikat ausgestellt ist)
# (2) HTTPS-Port (meist 8443)
# (3) Ablaufdauer (Tage) für SSL-Zertifikat (10)
define service {
host_name
ihr.liveconfig.server
service_description LiveConfig Status
check_command
check_liveconfig_cert!liveconfig.example.org!8443!10
use
generic-service
}
Tragen Sie beim Befehl host_name den Namen des zu prüfenden Servers ein (so wie Sie
diesen in Nagios konfiguriert haben; hier beispielsweise ihr.liveconfig.server), und
als ersten Parameter beim check_command (also nach check_liveconfig) den Namen
oder die IP-Adresse, unter der Sie LiveConfig normalerweise aufrufen - das sollte in der Regel
der selbe Servername sein, auf den auch das SSL-Zertifikat ausgestellt ist (hier beispielsweise
liveconfig.example.org).
Der erste Test prüft, ob LiveConfig und dessen intern verwendete Datenbank erreichbar sind. Hierfür wird die spezielle Test-URL /liveconfig/nagios-check aufgerufen, welche bei Erfolg
die Meldung „Status: OK“ ausgibt.
89
Wartung und Pflege
Der zweite Test prüft die Gültigkeit des SSL-Zertifikats. Vor allem dann, wenn Sie ein „offizielles“
SSL-Zertifikat verwenden, sollte die Gültigkeit sichergestellt sein, da die Benutzer von LiveConfig
bei abgelaufenem SSL-Zertifikat eine Warnmeldung im Browser erhalten (die Daten werden aber
dennoch verschlüsselt übertragen).
90
Kapitel 7. Deinstallation
Für den unwahrscheinlichen Fall, dass Sie LiveConfig wieder von Ihrem Server entfernen möchten,
sind in den folgenden Abschnitten die notwendigen Schritte beschrieben.
Da sich LiveConfig „minimal-invasiv“ verhält, ist eine rückstandsfreie Deinstallation möglich.
7.1. LiveConfig-Server deinstallieren
7.1.1. Debian GNU/Linux
Mit folgendem Befehl wird LiveConfig deinstalliert:
aptitude remove liveconfig
Dabei werden die Konfigurationsdateien auf dem Server belassen. Sollen diese auch entfernt werden, verwenden Sie aptitude purge liveconfig. In diesem Fall werden Sie sicherheitshalber noch einmal gefragt, ob die LiveConfig-Datenbank (SQLite) wirklich gelöscht werden soll:
7.1.2. Ubuntu Linux
Mit folgendem Befehl wird LiveConfig deinstalliert:
sudo aptitude remove liveconfig
Dabei werden die Konfigurationsdateien auf dem Server belassen. Sollen diese auch entfernt
werden, verwenden Sie sudo aptitude purge liveconfig. In diesem Fall werden Sie
sicherheitshalber noch einmal gefragt, ob die LiveConfig-Datenbank (SQLite) wirklich gelöscht
werden soll:
91
Deinstallation
7.1.3. OpenSUSE, CentOS
LiveConfig wird unter rpm-basierten Distributionen mit dem Befehl rpm -e liveconfig deinstalliert.
7.2. LiveConfig-Client deinstallieren
7.2.1. Debian GNU/Linux
Mit folgendem Befehl wird der LiveConfig-Client deinstalliert:
aptitude remove lcclient
Dabei werden die Konfigurationsdateien auf dem Server belassen. Sollen diese auch entfernt
werden, verwenden Sie aptitude purge lcclient.
7.2.2. Ubuntu Linux
Mit folgendem Befehl wird der LiveConfig-Client deinstalliert:
sudo aptitude remove lcclient
Dabei werden die Konfigurationsdateien auf dem Server belassen. Sollen diese auch entfernt
werden, verwenden Sie sudo aptitude purge lcclient.
7.2.3. OpenSUSE, CentOS
Der LiveConfig-Client wird unter rpm-basierten Distributionen mit dem Befehl rpm -e lcclient deinstalliert.
92
Kapitel 8. Programmierschnittstellen (APIs)
Über die in diesem Abschnitt beschriebenen Schnittstellen können externe Anwendungen mit
LiveConfig kommunizieren sowie die Funktionen von LiveConfig angepasst und erweitert werden.
Hierdurch ist eine Anpassung an spezielle Umgebungen sowie die Anbindung an eigene Systeme
wie z.B. Auftragsverwaltung oder Abrechnungssystem möglich.
Bitte beachten Sie, dass über die APIs ausgeführte Aktionen i.d.R. nicht rückgängig gemacht werden
können. Für die Entwicklung und den Test Ihrer eigenen Anwendungen richten Sie am besten eine TestUmgebung mit LiveConfig ein.
LiveConfig bietet drei Schnittstellen:
• SOAP API - für die Fernsteuerung
Diese Schnittstelle eignet sich besonders für den Import von Kundendaten, die Anbindung an
bestehende Bestell-, Abrechnungs- und Verwaltungssysteme.
• Lua API - für die Anpassungen
Über diese Schnittstelle steuert und konfiguriert LiveConfig die verwalteten Server - Anpassungen an eigene Hosting-Umgebungen können hierüber vorgenommen werden.
• IFRAME API - für die Erweiterungen
Mit Hilfe „eigener Links“ können Sie eigene Webseiten über einen <IFRAME> in LiveConfig
einbinden.
8.1. SOAP Webservice API
Die Abkürzung SOAP steht für das Simple Object Access Protocol. Die meisten aktuellen Programmiersprachen unterstützen SOAP. Zusätzlich dient eine von LiveConfig bereitgestellte WSDL-Datei
(Web Service Description Language) zur automatischen Erkennung der zur Verfügung stehenden
Funktionen und Datentypen, so dass oft eine nahtlose Integration in eigene Anwendungen möglich ist.
Die Kommunikation für den SOAP-Zugriff erfolgt in Form von XML-Nachrichten über „ganz normale“ HTTP(S)-Verbindungen. Beispielsweise sieht der Aufruf der SOAP-Funktion TestSayHello
so aus:
93
Programmierschnittstellen (APIs)
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns1="urn:LiveConfig">
<SOAP-ENV:Body>
<ns1:TestSayHello>
<ns1:auth>
<ns1:login>admin</ns1:login>
<ns1:timestamp>2009-12-22T19:20:59.000Z</ns1:timestamp>
<ns1:token>7juGMfg7N/F1G4t+S7XW99nRidg=</ns1:token>
</ns1:auth>
<ns1:firstname>Manfred</ns1:firstname>
<ns1:lastname>Mustermann</ns1:lastname>
</ns1:TestSayHello>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Bei einem erfolgreichen Aufruf sieht die Antwort so aus:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Body>
<TestSayHelloResponse xmlns="urn:LiveConfig">
<greeting>Hello, Manfred Mustermann</greeting>
</TestSayHelloResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Tritt während der Verarbeitung einer Anfrage ein Fehler auf, wird eine SOAP-Exception erzeugt.
Diese enthält eine aussagekräftige Fehlermeldung. Die Fehlermeldung für einen abgelaufenen
(ungültigen) Zeitstempel sieht beispielsweise so aus:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/
encoding/">
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>SOAP-ENV:Server</faultcode>
<faultstring>Authentication timestamp too far in past or future</faultstring>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
8.1.1. Voraussetzungen
Die SOAP-Schnittstelle von LiveConfig ist über die URL /liveconfig/soap zu erreichen. Die
SOAP-Aufrufe müssen im document/literal-Stil formuliert sein (nicht als RPC/encoded).
94
Authentifizierung
Zudem müssen Sie LiveConfig mit einer Standard- oder Business-Lizenz betreiben. Mit der BasicLizenz steht die SOAP-API nicht zur Verfügung.
8.1.2. Authentifizierung
Zur Authentifizierung von SOAP-Zugriffen ist ein spezielles Token erforderlich - eine Prüfsumme
aus Uhrzeit, Funktionsnamen und einem eigenen SOAP-Passwort. Zu jedem Benutzer in LiveConfig kann neben dem „normalen“ Passwort ein davon unabhängiges SOAP-Passwort hinterlegt
werden (siehe auch Abschnitt 2.7, „ Passwort-Initialisierung “.
Alle SOAP-Funktionen erfordern die Übermittlung eines auth-Parameters, welcher den Benutzernamen, einen Zeitstempel und das SOAP-Token enthält. Das Token ist eine Base64-codierte
HMAC-SHA1-Prüfsumme über den Begriff „LiveConfig“, den eigenen Benutzernamen, den aufzurufenden Funktionsnamen und den Zeitstempel; als Schlüssel wird das SOAP-Passwort verwendet.
Folgendes Beispiel demonstriert die Erzeugung des auth-Parameters in PHP 5:
$user = 'admin';
$pass = 'PaSsWoRt';
$func = 'TestSayHello';
# Benutzername
# SOAP-Passwort
# aufzurufende SOAP-Funktion
# Zeitstempel erzeugen; Beispiel: '2009-12-07T11:05:00.000Z'
$ts = gmdate("Y-m-d") . "T" . gmdate("H:i:s") . ".000Z";
# Token erzeugen:
$token = base64_encode(hash_hmac('sha1',
'LiveConfig' . $user . $func . $ts,
$pass,
true
)
);
# auth-Parameter erzeugen:
$auth = array('login'
=> $user,
'timestamp' => $ts,
'token'
=> $token
);
Der im auth-Parameter angegebene Zeitstempel darf nicht mehr als 15 Minuten von der aktuellen Serverzeit auf dem LiveConfig-Server abweichen - ansonsten erfolgt eine Fehlermeldung. Die
Uhrzeit muss als UTC/GMT-Zeit angegeben werden.
Wiederverkäufer: Funktionen mit Kundenrechten ausführen
Wiederverkäufer (Reseller) können alle SOAP-Funktionen auch mit den Rechten eines beliebigen ihrer Kunden ausführen. Das ist beispielsweise dann sinnvoll, wenn einem Kunden weitere
untergeordnete Kunden zugeordnet werden sollen.
95
Programmierschnittstellen (APIs)
Für diesen Fall wird vor Berechnung des Tokens noch die (codierte) Kundennummer angefügt,
und das optionale Feld customer im auth-Parameter gesetzt.
Der Kunde, mit dessen Rechten eine Funktion ausgeführt werden soll, muss für die jeweilige Funktion
auch berechtigt sein - unabhängig von dem für die SOAP-Authentifizierung verwendeten Benutzer.
Beispiel in PHP5 für Ausführung mit Kundenrechten:
$user
$pass
$func
$cust
=
=
=
=
'admin';
'PaSsWoRt';
'TestSayHello';
'c9R4hQp.T-rF';
#
#
#
#
Benutzername
SOAP-Passwort
aufzurufende SOAP-Funktion
codierte Kunden-ID
# Zeitstempel erzeugen; Beispiel: '2009-12-07T11:05:00.000Z'
$ts = gmdate("Y-m-d") . "T" . gmdate("H:i:s") . ".000Z";
# Token erzeugen:
$token = base64_encode(hash_hmac('sha1',
'LiveConfig' . $user . $func . $ts . $cust,
$pass,
true
)
);
# auth-Parameter erzeugen:
$auth = array('login'
=>
'timestamp' =>
'token'
=>
'customer' =>
);
$user,
$ts,
$token,
$cust
8.1.3. WSDL Servicebeschreibung
LiveConfig kann eine WSDL-Beschreibung mit allen für den jeweiligen Benutzer erlaubten Funktionen und den dazugehörigen Datentypen erzeugen. Hierfür werden an die SOAP-URL der Parameter ?wsdl sowie Benutzername und SOAP-Passwort angefügt. Eventuelle Sonderzeichen im
Passwort müssen natürlich entsprechend URL-codiert werden.
Das folgende Beispiel zeigt die Erzeugung eines SOAP-Clients mit PHP5 anhand einer automatisch
generierten WSDL-Datei:
96
Programmbeispiele
$user = 'admin';
$pass = 'PaSsWoRt';
# Benutzername
# SOAP-Passwort
# WSDL-URL erzeugen:
$url = 'https://your.liveconfig.server:8443/liveconfig/soap'
.'?wsdl' # WSDL anfordern
.'&l=' . urlencode($user)
.'&p=' . urlencode($pass);
# SOAP-Client erzeugen:
$client = new SoapClient($url,
array('style' => SOAP_DOCUMENT,
'use'
=> SOAP_LITERAL,
)
);
Derzeit wird das SOAP-Passwort für den WSDL-Abruf im Klartext an die WSDL-URL angefügt. Die Übertragung zum Server erfolgt über das HTTPS-Protokoll dennoch verschlüsselt, und im access_log von LiveConfig wird das Passwort ausgeblendet. In einer späteren Version von LiveConfig soll statt des Passworts
auch ein Hash verwendet werden. Da jedoch in manchen Programmiersprachen (z.B. beim WebService-Wizzard von C#) die direkte Eingabe einer WSDL-URL erwartet wird, wäre eine manuelle HashBerechnung unzumutbar.
8.1.4. Programmbeispiele
Im Folgenden finden Sie für die gängigsten Programmiersprachen kleine Beispielprogramme,
welche die Verwendung der SOAP-Schnittstelle demonstrieren.
8.1.4.1. PHP 5
PHP5 unterstützt SOAP nativ und benötigt (im Gegensatz zu PHP4) keine weiteren PEAR/PECLPakete. Einzige Bedingung ist, dass PHP mit der Option --enable-soap übersetzt wurde. Ob
die SOAP-Unterstützung aktiviert ist erkennt man an der phpinfo()-Ausgabe:
Das folgende Beispielprogramm zeigt alle notwendigen Schritte zur Ausführung einer SOAPAnfrage an LiveConfig:
97
Programmierschnittstellen (APIs)
<?php
# Configuration parameters:
$user = 'admin';
$pass = 'PaSsWoRd';
$url = 'https://your.liveconfig.server:8443/liveconfig/soap';
# Construct WSDL URL
$wsdl_url = $url
.'?wsdl'
.'&l=' . urlencode($user)
.'&p=' . urlencode($pass);
# Create SOAP client
$client = new SoapClient($wsdl_url,
array('style'
'use'
)
);
=> SOAP_DOCUMENT,
=> SOAP_LITERAL,
# Construct SOAP token:
$ts = gmdate("Y-m-d") . "T" . gmdate("H:i:s") . ".000Z";
$token = base64_encode(hash_hmac('sha1',
'LiveConfig' . $user . 'TestSayHello' . $ts,
$pass,
true
)
);
$auth = array('login'
=> $user,
'timestamp' => $ts,
'token'
=> $token);
$params = array('auth'
=> $auth,
'firstname' => 'John',
'lastname' => 'Doe');
try {
$response = $client->TestSayHello($params);
} catch (SoapFault $soapFault) {
die("Error while calling Web Service: " . $soapFault->faultstring . "\n");
}
echo "Response: " . $response->greeting . "\n";
?>
8.1.4.2. Perl
Die bei Perl häufig für WebServices genutzte Bibliothek SOAP::Lite unterstützt leider nicht das
document/literal-Format, welches sich inzwischen als De-Facto-Standard für WebServices durchgesetzt hat.
98
Programmbeispiele
Statt dessen empfehlen wir das Paket SOAP::WSDL, welches sich ebenfalls via CPAN installieren
lässt.
Das folgende Beispielprogramm zeigt alle notwendigen Schritte zur Ausführung einer SOAPAnfrage an LiveConfig:
99
Programmierschnittstellen (APIs)
#!/usr/bin/perl -w -t
use
use
use
use
use
strict;
SOAP::WSDL;
MIME::Base64;
Digest::HMAC_SHA1;
URI::Escape;
# Configuration parameters:
my $user = 'admin';
my $pass = 'PaSsWoRd';
my $url = 'http://your.liveconfig.server/liveconfig/soap';
# Construct WSDL URL
my $wsdl_url = $url
.'?wsdl'
.'&l=' . uri_escape($user)
.'&p=' . uri_escape($pass);
my $firstname = 'John';
my $lastname = 'Doe';
# Create SOAP client
my $soap = SOAP::WSDL->new( wsdl => $wsdl_url);
# Construct SOAP token:
my ($sec,$min,$hour,$mday,$mon,$year)=gmtime(time);
my $ts = sprintf('%4d-%02d-%02dT%02d:%02d:%02d.000Z',
$year+1900, $mon+1, $mday, $hour, $min, $sec);
my $token = MIME::Base64::encode(
Digest::HMAC_SHA1::hmac_sha1(
'LiveConfig' . $user . 'TestSayHello' . $ts,
$pass
),
''
);
my %auth = ('login'
=> $user,
'timestamp' => $ts,
'token'
=> $token
);
my %params = ('auth'
=> \%auth,
'firstname' => $firstname,
'lastname' => $lastname
);
my $som = $soap->call('TestSayHello', TestSayHello => \%params);
if ($som->fault) {
die "Error while calling Web Service: " . $som->faultstring . "\n";
}
print "Response: " . $som->result() . "\n";
100
SOAP-Referenz
8.1.5. SOAP-Referenz
In der nachfolgenden Referenz sind alle SOAP-Funktionen aufgeführt.
Funktion
Beschreibung
TestSayHello
Test-Funktion zur Prüfung der SOAP-API
LiveConfigVersion
Versionsnummer des LiveConfig-Servers abfragen
ContactAdd
Kontaktdaten anlegen
ContactEdit
Kontaktdaten bearbeiten
ContactGet
Kontaktdaten abrufen
CustomerAdd
Kunden anlegen
CustomerEdit
Kunden bearbeiten
CustomerGet
Kundendaten auslesen
HostingPlanAdd
Webhosting-Angebot anlegen
HostingPlanGet
Webhosting-Angebot abrufen
HostingSubscriptionAdd
Webhosting-Vertrag anlegen
HostingSubscriptionDelete Webhosting-Vertrag löschen
HostingSubscriptionGet
Details zu einem Webhosting-Vertrag auslesen
HostingSubscriptionEdit
Webhosting-Vertrag bearbeiten
HostingDomainAdd
Domain für Webhosting anlegen
HostingSubdomainAdd
Subdomain für Webhosting anlegen
HostingDatabaseAdd
Hosting-Vertrag eine bestehende Datenbank hinzufügen
HostingMailboxAdd
E-Mail-Postfach einrichten
HostingMailboxEdit
E-Mail-Postfach bearbeiten
HostingCronAdd
neuen Cron-Job erstellen
HostingPasswordUserAdd
neuen Benutzer für Verzeichnis-Passwortschutz anlegen
HostingPasswordPathAdd
Verzeichnispfad mit Passwort schützen
HostingFtpAdd
zusätzlichen FTP-Account anlegen
UserAdd
Benutzer anlegen
UserGet
Benutzerdaten abrufen
SessionCheck
Session-ID prüfen
101
Programmierschnittstellen (APIs)
TestSayHello
TestSayHello — Test-Funktion zum Prüfen der SOAP-Schnittstelle
Beschreibung
Mit dieser Funktion kann der Zugriff auf die SOAP-Schnittstelle getestet werden. Diese Funktion
steht jedem Benutzer mit SOAP-Berechtigung zur Verfügung.
Aufruf
Field
auth
firstname
lastname
Type
AuthData
string
string
RegExp
^\w{1,30}$
^\w{1,30}$
NULL?
no
no
no
Description
Authentifizierungsdaten
Vorname
Nachname
Type
string
RegExp
-
NULL? Description
no
Antwortmeldung
Antwort
Field
greeting
Die Antwortmeldung wird zusammengesetzt aus „Hello, <firstname> <lastname>“.
LiveConfigVersion
LiveConfigVersion — Versionsnummer des LiveConfig-Servers abfragen
Beschreibung
Diese Funktion liefert die genaue Versionsnummer des LiveConfig-Servers zurück. Diese kann
beispielsweise zur Prüfung der Kompatiblität mit eigenen Programmen verwendet werden.
Aufruf
Field
auth
Type
AuthData
RegExp
NULL? Description
no
Authentifizierungsdaten
Field
version
revision
Type
string
string
RegExp
-
major
minor
patch
integer
integer
integer
-
NULL? Description
no
Versionsnummer (z.B. 1.3.2)
no
Revisionsnummer (z.B. 1379 - kann in Ausnahmefällen auch Buchstaben enthalten)
no
Haupt-Versionsnummer (z.B. 1)
no
Unter-Versionsnummer (z.B. 3)
no
Patch-Versionsnummer (z.B. 2)
Antwort
102
SOAP-Referenz
ContactAdd
ContactAdd — Neuen Kontaktdatensatz anlegen
Beschreibung
Mit dieser Funktion kann ein neuer Kontaktdatensatz angelegt werden. Rückgabewert ist die
ID des neuen Datensatzes. Existiert bereits ein identischer Kontaktdatensatz, so wird dessen ID
zurückgegeben.
Aufruf
Field
auth
type
salutation
title
firstname
lastname
company
address1
address2
zipcode
city
country
phone
fax
mobile
email
Type
AuthData
integer
integer
string
string
string
string
string
string
string
string
string
string
string
string
string
RegExp
website
string
NULL?
no
yes
^[01]$
no
^.{1,50}$
yes
^.{1,128}$
no
^.{1,128}$
no
^.{1,128}$
yes
^.{1,128}$
yes
^.{1,128}$
yes
^.{1,10}$
yes
^.{1,64}$
yes
^\w\w$
no
^.{1,30}$
yes
^.{1,30}$
yes
^.{1,30}$
yes
(?=^([\.a-z0-9_\- yes
+]+@([a-z0-9\-]+
\.)+[a-z]{2,6})?$)
(^.{6,128}$)$
^.{1,128}$
yes
Type
string
RegExp
-
Description
Authentifizierungsdaten
Typ (0=Person, 1=Firma/Organisation)
Anrede (0=Herr, 1=Frau)
Titel (z.B. Dr.)
Vorname
Nachname
Firma
Anschrift
Anschrift (Forts.)
Postleitzahl
Stadt
Land (als ISO 3166-1 Code)
Telefonnummer
Faxnummer
Handynummer
E-Mail-Adresse
Website
Antwort
Field
id
NULL? Description
no
Datensatz-ID
Die Datensatz-ID ist kundenspezifisch verschlüsselt.
ContactEdit
ContactEdit — Bestehende Kontaktdaten bearbeiten
Beschreibung
Mit dieser Funktion kann ein bestehender Kontaktdatensatz bearbeitet werden.
103
Programmierschnittstellen (APIs)
Aufruf
Field
auth
id
type
salutation
title
firstname
lastname
company
address1
address2
zipcode
city
country
phone
fax
mobile
email
Type
AuthData
string
integer
integer
string
string
string
string
string
string
string
string
string
string
string
string
string
RegExp
website
string
NULL?
no
^[\w.-]{12}$
yes
no
^[01]$
no
^.{1,50}$
yes
^.{1,128}$
no
^.{1,128}$
no
^.{1,128}$
yes
^.{1,128}$
yes
^.{1,128}$
yes
^.{1,10}$
yes
^.{1,64}$
yes
^\w\w$
no
^.{1,30}$
yes
^.{1,30}$
yes
^.{1,30}$
yes
(?=^([\.a-z0-9_\- yes
+]+@([a-z0-9\-]+
\.)+[a-z]{2,6})?$)
(^.{6,128}$)$
^.{1,128}$
yes
Type
string
RegExp
-
Description
Authentifizierungsdaten
ID des Kontaktdatensatzes
Typ (0=Person, 1=Firma/Organisation)
Anrede (0=Herr, 1=Frau)
Titel (z.B. Dr.)
Vorname
Nachname
Firma
Anschrift
Anschrift (Forts.)
Postleitzahl
Stadt
Land (als ISO 3166-1 Code)
Telefonnummer
Faxnummer
Handynummer
E-Mail-Adresse
Website
Antwort
Field
status
NULL? Description
no
Status („ok“)
ContactGet
ContactGet — Bestehende Kontaktdaten abrufen
Beschreibung
Mit dieser Funktion können Kontaktdaten abgerufen werden.
Aufruf
Field
auth
id
Type
AuthData
string
RegExp
^[\w.-]{12}$
NULL? Description
no
Authentifizierungsdaten
no
ID des Kontaktdatensatzes
Type
integer
integer
string
string
RegExp
-
NULL?
no
no
yes
no
Antwort
Field
type
salutation
title
firstname
104
Description
Typ (0=Person, 1=Firma/Organisation)
Anrede (0=Herr, 1=Frau)
Titel (z.B. Dr.)
Vorname
SOAP-Referenz
Field
lastname
company
address1
address2
zipcode
city
country
phone
fax
mobile
email
website
Type
string
string
string
string
string
string
string
string
string
string
string
string
RegExp
-
NULL?
no
yes
yes
yes
yes
yes
no
yes
yes
yes
yes
yes
Description
Nachname
Firma
Anschrift
Anschrift (Forts.)
Postleitzahl
Stadt
Land (als ISO 3166-1 Code)
Telefonnummer
Faxnummer
Handynummer
E-Mail-Adresse
Website
CustomerAdd
CustomerAdd — Neuen Kunden anlegen
Beschreibung
Mit dieser Funktion kann ein neuer Kunde angelegt werden. Rückgabewert ist die ID des neuen
Datensatzes sowie die Kundennummer (cid). Existiert bereits ein identischer Kunde, so wird
dessen ID zurückgegeben.
Die Kundennummer (cid) darf nur aus Zahlen bestehen und muss eindeutig sein. Wird dieses
Feld leer gelassen, vergibt LiveConfig automatisch die nächste verfügbare Kundennummer.
Aufruf
Field
auth
cid
owner_c
admin_c
billing_c
locked
Type
AuthData
long
string
string
string
integer
RegExp
^\d{1,18}$
^[\w.-]{12}$
^[\w.-]{12}$
^[\w.-]{12}$
^[012]$
NULL?
no
yes
no
no
no
no
Description
Authentifizierungsdaten
Kundennummer
Kontakt-ID des Kunden
Kontakt-ID des Ansprechpartners
Kontakt-ID des Rechnungsempfängers
Status (0=aktiv, 1=gesperrt, 2=deaktiviert)
Type
string
long
RegExp
-
NULL? Description
no
Datensatz-ID
no
Kundennummer
Antwort
Field
id
cid
Die Datensatz-ID ist kundenspezifisch verschlüsselt.
CustomerEdit
CustomerEdit — Bestehenden Kunden bearbeiten
105
Programmierschnittstellen (APIs)
Beschreibung
Mit dieser Funktion können die Daten eines bestehenden Kunden bearbeitet werden (z.B. Kunde
sperren, neue Kontaktdaten angeben, etc.). Die Kundennummer kann derzeit noch nicht über die
SOAP-API geändert werden (bitte nutzen Sie dazu die Weboberfläche).
Aufruf
Field
auth
cid
owner_c
admin_c
billing_c
locked
Type
AuthData
long
string
string
string
integer
RegExp
^\d{1,18}$
^[\w.-]{12}$
^[\w.-]{12}$
^[\w.-]{12}$
^[012]$
NULL?
no
no
yes
yes
yes
yes
Description
Authentifizierungsdaten
Kundennummer
ggf. neue Kontakt-ID des Kunden
ggf. neue Kontakt-ID des Ansprechpartners
ggf. neue Kontakt-ID des Rechnungsempfängers
ggf. neuer Status (0=aktiv, 1=gesperrt, 2=deaktiviert)
Type
string
RegExp
-
NULL? Description
no
Status („ok“)
Antwort
Field
status
CustomerGet
CustomerGet — Kundendaten auslesen
Beschreibung
Mit dieser Funktion können die Stammdaten einzelner oder aller Kunden ausgelesen werden.
Wird das Feld cid leer gelassen, werden die Daten aller eigenen Kunden zurückgegeben, ansonsten nur die des angegebenen Kunden. Wird kein passender Datensatz gefunden, wird eine leere
Liste zurückgegeben.
Die in subscription zurückgegebenen Vertragsnamen können für den Aufruf von HostingSubscriptionGet verwendet werden.
Aufruf
Field
auth
cid
Type
AuthData
long
RegExp
^\d{1,18}$
NULL? Description
no
Authentifizierungsdaten
yes
Kundennummer
Antwort
Field
customers
Type
RegExp
CustomerDe- tails[]
Die Kundendetails sind wie folgt aufgebaut:
106
NULL? Description
yes
Array mit Kundendatensätzen
SOAP-Referenz
Field
id
cid
owner_c
admin_c
billing_c
locked
subscription
Type
string
long
string
string
string
integer
string[]
RegExp
-
NULL?
no
no
no
no
no
no
yes
Description
Datensatz-ID
Kundennummer
Kontakt-ID des Kunden
Kontakt-ID des Kunden
Kontakt-ID des Kunden
Status (0=aktiv, 1=gesperrt, 2=deaktiviert)
Liste mit Vertragsnamen, die dem Kunden zugeordnet sind
HostingPlanAdd
HostingPlanAdd — Neues Webhosting-Angebot anlegen
Beschreibung
Mit dieser Funktion kann ein neues Webhosting-Angebot angelegt werden. Rückgabewert ist
die ID des neuen Datensatzes. Existiert für diesen Kunden bereits ein Angebot mit dem selben
Namen, so wird ein Ausnahmefehler erzeugt.
Aufruf
Field
auth
name
maxcustomers
Type
AuthData
string
integer
RegExp
^.{1,50}$
^-?\d{1,8}$
NULL?
no
no
yes
maxusers
integer
^-?\d{1,8}$
no
webspace
integer
^-?\d{1,8}$
yes
ssi
php
cgi
integer
integer
integer
^[01]$
^[0123]$
^[012]$
yes
yes
yes
ssl
integer
^[01]$
yes
cronjobs
apps
ftpaccounts
shellaccess
integer
integer
integer
integer
^-?\d{1,8}$
^-?\d{1,8}$
^-?\d{1,8}$
^[012]$
yes
yes
yes
yes
databases
subdomains
extdomains
integer
integer
integer
^-?\d{1,8}$
^-?\d{1,8}$
^-?\d{1,8}$
yes
yes
yes
mailboxes
integer
^-?\d{1,8}$
yes
Description
Authentifizierungsdaten
Name/Titel des Angebots
Maximale Kundenzahl für Reseller (NULL: kein
Reseller-Paket, -1: unbegrenzt)
Maximale Anzahl an Benutzern (muss >= 1 sein,
oder -1: unbegrenzt)
Enthaltener Webspace (MB) (NULL: kein Webspace, -1: unbegrenzt)
Server-Side Includes (SSI)
PHP (0=nein, 1=suPHP, 2=FastCGI, 3=mod_php)
CGI-Scripte (0: nein, 1: ja, in /cgi-bin/, 2: ja,
in jedem Verzeichnis)
SSL-Verschlüsselung (HTTPS-Zugriff) (0: nein, 1:
ja)
Anzahl Cron-Jobs (-1: unbegrenzt)
Anzahl installierbarer Apps (-1: unbegrenzt)
Enthaltene FTP-Zugänge (-1: unbegrenzt)
Shell-Zugriff erlaubt? (0: nein, 1: scponly/sftp, 2:
ja (Bash))
Enthaltene Datenbanken (-1: unbegrenzt)
Enthaltene Subdomains (-1: unbegrenzt)
Max. Anzahl externer Domains (NULL: keine, -1:
unbegrenzt)
Enthaltene E-Mail-Postfächer (-1: unbegrenzt)
107
Programmierschnittstellen (APIs)
Field
mailaddrs
mailquota
Type
integer
integer
RegExp
^-?\d{1,8}$
^-?\d{1,8}$
traffic
integer
^-?\d{1,8}$
NULL? Description
yes
Enthaltene E-Mail-Adressen (-1: unbegrenzt)
yes
E-Mail-Speicherplatz (insgesamt) (-1: unbegrenzt)
no
Enthaltener IP-Traffic (-1: unbegrenzt)
Type
string
RegExp
-
NULL? Description
no
Datensatz-ID
Antwort
Field
id
Die Datensatz-ID ist kundenspezifisch verschlüsselt.
HostingPlanGet
HostingPlanGet — Eigenschaften eines oder mehrerer Hosting-Angebote abrufen
Beschreibung
Mit dieser Funktion können die Eigenschaften eines oder mehrerer Hosting-Angebote abgerufen
werden. Wird ein Name in name angegeben, werden nur die Daten dieses Angebots zurückgegeben, ansonsten alle Daten. Wird ein Name angegeben, zu dem kein Angebot gefunden werden
kann, wird eine leere Liste zurückgegeben.
Die Rückgabe der Angebotsdaten erfolgt stets als Liste, auch wenn nur ein Angebot abgerufen
wird.
Aufruf
Field
auth
name
Type
AuthData
string
RegExp
^.{1,50}$
NULL? Description
no
Authentifizierungsdaten
yes
Name/Titel des Angebots
Antwort
Field
plans
Type
RegExp
HostingPlan- Details
NULL? Description
no
Array mit Angebots-Details
Die Angebots-Details sind wie folgt aufgebaut:
Field
name
maxcustomers
Type
string
integer
RegExp
-
maxusers
integer
-
webspace
integer
-
ssi
integer
-
108
NULL? Description
no
Name/Titel des Angebots
yes
Maximale Kundenzahl für Reseller (NULL: kein
Reseller-Paket, -1: unbegrenzt)
no
Maximale Anzahl an Benutzern (muss >= 1 sein,
oder -1: unbegrenzt)
yes
Enthaltener Webspace (MB) (NULL: kein Webspace, -1: unbegrenzt)
yes
Server-Side Includes (SSI) erlaubt? (1: ja)
SOAP-Referenz
Field
php
Type
integer
RegExp
-
cgi
integer
-
ssl
cronjobs
apps
ftpaccounts
shellaccess
integer
integer
integer
integer
integer
-
databases
subdomains
extdomains
integer
integer
integer
-
mailboxes
mailaddrs
mailquota
integer
integer
integer
-
traffic
integer
-
NULL? Description
yes
PHP erlaubt? (0=nein, 1=suPHP, 2=FastCGI,
3=mod_php)
yes
CGI-Scripte erlaubt? (1: ja, in /cgi-bin/, 2: ja,
in jedem Verzeichnis)
yes
SSL-Zugriff (HTTPS) erlaubt? (1: ja)
yes
Anzahl Cron-Jobs (-1: unbegrenzt)
yes
Anzahl installierbarer Apps (-1: unbegrenzt)
yes
Enthaltene FTP-Zugänge (-1: unbegrenzt)
yes
Shell-Zugriff erlaubt? (0:nein, 1: scponly/sftp, 2:
ja (Bash))
yes
Enthaltene Datenbanken (-1: unbegrenzt)
yes
Enthaltene Subdomains (-1: unbegrenzt)
yes
Maximale Anzahl externer Domains (-1: unbegrenzt)
yes
Enthaltene E-Mail-Postfächer (-1: unbegrenzt)
yes
Enthaltene E-Mail-Adressen (-1: unbegrenzt)
yes
E-Mail-Speicherplatz (insgesamt) (-1: unbegrenzt)
yes
Enthaltener IP-Traffic (-1: unbegrenzt)
HostingSubscriptionAdd
HostingSubscriptionAdd — Neuen Webhosting-Vertrag anlegen
Beschreibung
Mit dieser Funktion kann ein neuer Webhosting-Vertrag angelegt werden.
Wird der neue Webhosting-Vertrag innerhalb eines Reseller-Vertrags angelegt, so muss der Name
des jeweiligen Reseller-Vertrags in resalecontract angegeben werden. Wird resalecontract leer gelassen, dann müssen in den Feldern webserver, mailserver und dbserver
die Namen der Server angegeben werden, auf denen die jeweiligen Dienste (Webspace, E-Mail,
Datenbanken) eingerichtet werden sollen, sofern diese im Hostingvertrag enthalten sind.
Wird das Feld plan leer gelassen, dann wird ein individuelles Hosting-Paket eingerichtet. Ansonsten wird das angegebene Hostingangebot als Basis verwendet, und ggf. abweichende Parameter
(Webspace, Datenbanken etc.) als „Sonderausstattung“ verwaltet.
Der Vertragsname (subscriptionname) muss systemweit eindeutig sein.
Wenn das Passwort mit $1$ beginnt, dann geht LiveConfig davon aus dass es sich bereits um
einen MD5-Passwort-Hash und nicht um ein Klartext-Passwort handelt. Dieses wird dann unverändert als Passwort in /etc/shadow geschrieben. Auf Systemen mit aktiviertem SELinux funktioniert das allerdings nicht!
109
Programmierschnittstellen (APIs)
Wenn das Feld customerid leer gelassen wird, dann legt LiveConfig diesen Hostingvertrag unter
„Mein Hosting“ an.
Aufruf
Field
Type
auth
AuthData
subscriptionname string
RegExp
^[a-z][a-z0-9_-]
{0,63}$
^.{5,63}$
password
string
resalecontract
string
webserver
string
^[a-z][a-z0-9_-]
{0,63}$
^[\w.-]{1,255}$
mailserver
string
^[\w.-]{1,255}$
dbserver
string
^[\w.-]{1,255}$
customerid
string
^[\w.-]{12}$
plan
maxcustomers
string
integer
^.{1,50}$
^-?\d{1,8}$
maxusers
integer
^-?\d{1,8}$
webspace
integer
^-?\d{1,8}$
ssi
php
integer
integer
^[01]$
^[0123]$
cgi
ssl
integer
integer
^[012]$
^[012]$
cronjobs
integer
^-?\d{1,8}$
apps
integer
^-?\d{1,8}$
ftpaccounts
shellaccess
integer
integer
^-?\d{1,8}$
^[012]$
databases
integer
^-?\d{1,8}$
subdomains
integer
^-?\d{1,8}$
extdomains
integer
^-?\d{1,8}$
mailboxes
integer
^-?\d{1,8}$
110
NULL? Description
no
Authentifizierungsdaten
no
eindeutiger Vertragsname (Auftragsnummer
o.ä.)
yes
Passwort für den Vertrags-Account (i.d.R. FTPAccount)
yes
Name des Reseller-Vertrages, in dessen Rahmen
dieser Hosting-Vertrag erzeugt wird
yes
ggf. Name des Servers, auf dem der Webspace
eingerichtet werden soll
yes
ggf. Name des Servers, auf dem E-Mail eingerichtet werden soll
yes
ggf. Name des Servers, auf dem Datenbanken
eingerichtet werden sollen
yes
ID des Kunden, dem der Vertrag zugewiesen
wird (NULL: „Mein Hosting“)
yes
Name des Webhosting-Angebots
yes
Maximale Kundenzahl für Reseller (NULL: kein
Reseller-Paket, -1: unbegrenzt)
yes
ggf. abweichende Anzahl an Benutzern (-1:
unbegrenzt)
yes
ggf. abweichender Webspace (MB) (-1: unbegrenzt)
yes
ggf. abweichende Server-Side Includes (SSI)
yes
ggf. abweichende PHP-Erlaubnis (0: kein PHP, 1:
suPHP, 2: FastCGI, 3: mod_php)
yes
ggf. abweichende CGI-Erlaubnis
yes
ggf. abweichende SSL-Erlaubnis (HTTPS) (0:
nein, 1: ja, 2 ja (mit Zertifikatsverwaltung)
yes
ggf. abweichende Anzahl Cron-Jobs (-1: unbegrenzt)
yes
ggf. abweichende Anzahl installierbarer Apps
(-1: unbegrenzt)
yes
ggf. abweichende FTP-Zugänge (-1: unbegrenzt)
yes
ggf. abweichender Shell-Zugriff (0: nein, 1:
scponly/sftp, 2: Ja (bash))
yes
ggf. abweichende Datenbank-Anzahl (-1: unbegrenzt)
yes
ggf. abweichende enthaltene Subdomains (-1:
unbegrenzt)
yes
ggf. abweichende Anzahl externer Domains (-1:
unbegrenzt)
yes
ggf. abweichende Anzahl an E-Mail-Postfächern
(-1: unbegrenzt)
SOAP-Referenz
Field
mailaddrs
Type
integer
RegExp
^-?\d{1,8}$
mailquota
integer
^-?\d{1,8}$
traffic
webstats
integer
integer
^-?\d{1,8}$
^[012]$
comment
string
^.{1,100}$
NULL? Description
yes
ggf. abweichende Anzahl an E-Mail-Adressen
(-1: unbegrenzt)
yes
ggf. abweichender E-Mail-Speicherplatz (-1:
unbegrenzt)
yes
ggf. abweichender IP-Traffic (-1: unbegrenzt)
yes
Webstatistik-Einstellung (0: keine Statistik, 1:
Webalizer, 2: AWStats)
yes
optionaler Kommentar
RegExp
-
NULL? Description
no
Datensatz-ID
no
Vertragsname
Antwort
Field
Type
id
string
subscriptionname string
Die Datensatz-ID ist kundenspezifisch verschlüsselt.
HostingSubscriptionDelete
HostingSubscriptionDelete — Webhosting-Vertrag löschen
Beschreibung
Mit dieser Funktion kann ein Webhosting-Vertrag gelöscht werden.
Alle Objekte dieses Vertrags (Postfächer, Datenbanken, Domains, FTP-Accounts etc.) werden automatisch mit gelöscht.
Um einen Wiederverkäufer-Vertrag zu löschen, müssen vorab all dessen Endkunden-Verträge
gelöscht sein.
Aufruf
Field
Type
auth
AuthData
subscriptionname string
RegExp
^[a-z][a-z0-9_-]
{0,63}$
NULL? Description
no
Authentifizierungsdaten
no
Name des zu löschenden Vertrags
Antwort
Field
status
Type
string
RegExp
-
NULL? Description
no
Ausführungsstatus (ok)
HostingSubscriptionGet
HostingSubscriptionGet — Details zu einem Webhosting-Vertrag auslesen
111
Programmierschnittstellen (APIs)
Beschreibung
Mit dieser Funktion können Details zu einem Hosting-Vertrag ausgelesen werden.
Aufruf
Field
Type
auth
AuthData
subscriptionname string
RegExp
^[a-z][a-z0-9_-]
{0,63}$
NULL? Description
no
Authentifizierungsdaten
no
Vertragsname
Antwort
Field
hostname
Type
string
RegExp
-
customerid
string
-
plan
maxcustomers
string
integer
-
maxusers
webspace
integer
integer
-
ssi
php
integer
integer
-
cgi
ssl
integer
integer
-
cronjobs
apps
integer
integer
-
ftpaccounts
shellaccess
integer
integer
-
databases
subdomains
extdomains
mailboxes
mailaddrs
mailquota
traffic
comment
domains
integer
integer
integer
integer
integer
integer
integer
string
HostingSubs- criptionDomain[]
HostingData- base[]
databaseList
112
NULL? Description
yes
Name des Servers, auf dem das Hosting-Paket
eingerichtet ist
yes
ID des Kunden, dem der Vertrag zugewiesen
ist (ist NULL, wenn es sich um einen „eigenen“
Hostingvertrag handelt)
yes
Name des Webhosting-Angebots
yes
Maximale Kundenzahl für Reseller (NULL: kein
Reseller-Paket, -1: unbegrenzt)
no
Maximale Anzahl an Benutzern (-1: unbegrenzt)
yes
Webspace (MB) (NULL: kein Webspace, -1:
unbegrenzt)
no
SSI (Server-Side Includes) erlaubt (0: nein, 1: ja)
no
PHP erlaubt (0: nein, 1: suPHP, 2: FastCGI, 3:
mod_php)
no
CGI erlaubt (0: nein, 1: ja)
no
SSL (HTTPS) erlaubt (0: nein, 1: ja, 2: ja (mit Zertifikatsverwaltung))
no
Anzahl Cron-Jobs (-1: unbegrenzt)
no
Anzahl installierbarer Web-Anwendungen (-1:
unbegrenzt)
no
Anzahl FTP-Zugänge (-1: unbegrenzt)
no
Shell-Zugriff erlaubt (0: nein, 1: scponly/sftp, 2:
bash)
no
Datenbanken (-1: unbegrenzt)
no
Subdomains (-1: unbegrenzt)
no
Externe Domains (-1: unbegrenzt)
no
Anzahl Postfächer (-1: unbegrenzt)
no
Anzahl E-Mail-Adressen (-1: unbegrenzt)
no
E-Mail-Speicherplatz (-1: unbegrenzt)
no
Enthaltener IP-Traffic (-1: unbegrenzt)
yes
optionaler Kommentar
yes
zugeordnete Domains
yes
Datenbanken
SOAP-Referenz
Wird kein entsprechender Vertrag gefunden (weil er nicht existiert, oder der SOAP-Benutzer nicht
für diesen berechtigt ist), wird ein Ausnahmefehler erzeugt.
HostingSubscriptionDomain
Field
name
Type
string
RegExp
-
NULL? Description
no
Domain-Name
NULL? Description
no
Datenbank-Typ (MySQL)
no
Name des Servers, auf dem die Datenbank eingerichtet ist
no
Datenbank-Name
no
Datenbank-Login
HostingDatabase
Field
type
server
Type
string
string
RegExp
-
name
login
string
string
-
HostingSubscriptionEdit
HostingSubscriptionEdit — Hosting-Vertrag bearbeiten
Beschreibung
Mit dieser Funktion können die Eigenschaften eines bestehenden Hosting-Vertrags bearbeitet
werden. Es werden nur die Werte geändert, die mit dem SOAP-Request übermittelt werden.
Wenn der bearbeitete Vertrag nicht auf einem Reseller-Vertrag basiert und Ressourcen wie Webspace, E-Mail oder Datenbanken erstmals hinzugefügt werden, dann müssen Sie zusätzlich den
Namen des Server für die jeweiligen Dienste angeben.
Aufruf
Field
Type
auth
AuthData
subscriptionname string
RegExp
NULL? Description
no
Authentifizierungsdaten
no
Vertragsname
plan
maxusers
string
integer
^[a-z][a-z0-9_-]
{0,63}$
^.{1,50}$
^-?\d{1,8}$
webspace
integer
^-?\d{1,8}$
yes
ssi
php
integer
integer
^[01]$
^[01]$
yes
yes
cgi
ssl
cronjobs
integer
integer
integer
^[012]$
^[012]$
^-?\d{1,8}$
yes
yes
yes
yes
yes
Name des Webhosting-Angebots
ggf. abweichende Anzahl an Benutzern (-1:
unbegrenzt)
ggf. abweichender Webspace (MB) (-1: unbegrenzt)
ggf. abweichende Server-Side Includes (SSI)
ggf. abweichende PHP-Erlaubnis (0: kein PHP, 1:
suPHP, 2: FastCGI, 3: mod_php)
ggf. abweichende CGI-Erlaubnis
ggf. abweichende SSL-Erlaubnis (HTTPS)
ggf. abweichende Anzahl Cron-Jobs (-1: unbegrenzt)
113
Programmierschnittstellen (APIs)
Field
apps
Type
integer
RegExp
^-?\d{1,8}$
ftpaccounts
shellaccess
integer
integer
^-?\d{1,8}$
^[012]$
databases
integer
^-?\d{1,8}$
dbserver
string
^[\w.-]{1,255}$
subdomains
integer
^-?\d{1,8}$
extdomains
integer
^-?\d{1,8}$
mailboxes
integer
^-?\d{1,8}$
mailaddrs
integer
^-?\d{1,8}$
mailquota
integer
^-?\d{1,8}$
traffic
webstats
integer
integer
^-?\d{1,8}$
^[012]$
comment
string
^.{1,100}$
NULL? Description
yes
ggf. abweichende Anzahl installierbarer Apps
(-1: unbegrenzt)
yes
ggf. abweichende FTP-Zugänge (-1: unbegrenzt)
yes
ggf. abweichender Shell-Zugriff (0: nein, 1:
scponly/sftp, 2: Ja (bash))
yes
ggf. abweichende Datenbank-Anzahl (-1: unbegrenzt)
yes
ggf. Name des Servers, auf dem Datenbanken
eingerichtet werden sollen
yes
ggf. abweichende enthaltene Subdomains (-1:
unbegrenzt)
yes
ggf. abweichende Anzahl externer Domains (-1:
unbegrenzt)
yes
ggf. abweichende Anzahl an E-Mail-Postfächern
(-1: unbegrenzt)
yes
ggf. abweichende Anzahl an E-Mail-Adressen
(-1: unbegrenzt)
yes
ggf. abweichender E-Mail-Speicherplatz (-1:
unbegrenzt)
yes
ggf. abweichender IP-Traffic (-1: unbegrenzt)
yes
Webstatistik-Einstellung (0: keine Statistik, 1:
Webalizer, 2: AWStats)
yes
optionaler Kommentar
Type
string
RegExp
-
NULL? Description
no
Status („ok“)
Antwort
Field
status
HostingDomainAdd
HostingDomainAdd — Neue Domain für Webhosting anlegen
Beschreibung
Mit dieser Funktion kann dem Webhosting-Vertrag eines Kunden eine weitere Domain zugeordnet werden. Rückgabewert ist die ID des neuen Datensatzes. Existiert bereits eine identische
Domain im Vertrag, so wird deren ID zurückgegeben.
Wird das Feld web auf NULL gesetzt, dann ist der Webspace für diese Domain deaktiviert. Für
„normalen“ (aktivierten) Webspace muss das Feld web auf einen leeren String („“) oder auf ein
beliebiges Verzeichnis (z.B. „/“) gesetzt werden.
Aufruf
Field
114
Type
RegExp
NULL? Description
SOAP-Referenz
Field
auth
subscription
Type
AuthData
string
RegExp
NULL? Description
no
Authentifizierungsdaten
no
Name des Webhosting-Vertrags (siehe
HostingSubscriptionAdd)
no
Domainname (inkl. TLD)
domain
string
mail
web
integer
string
^[a-z][a-z0-9_-]
{1,63}$
^[^+<>&%\s]
{1,255}$
^[01]$
^.{1,255}$
dnstemplate
string
^.{1,255}$
yes
Type
string
string[]
RegExp
-
NULL? Description
no
Datensatz-ID
yes
IP-Adressen, auf denen diese Domain konfiguriert ist
yes
yes
Domain für E-Mail nutzbar? (0=nein, 1=ja)
Webspace-Ziel (Verzeichnis, oder URL für Weiterleitung)
ggf. Name des DNS-Templates, mit dem diese Domain auf eigenen Nameservern angelegt
werden soll
Antwort
Field
id
webip
Die Datensatz-ID ist kundenspezifisch verschlüsselt.
HostingSubdomainAdd
HostingSubdomainAdd — Neue Subdomain für Webhosting anlegen
Beschreibung
Mit dieser Funktion kann dem Webhosting-Vertrag eines Kunden eine weitere Subdomain zugeordnet werden. Rückgabewert ist die ID des neuen Datensatzes. Existiert bereits eine identische
Subdomain im Vertrag, so wird deren ID zurückgegeben. Bevor eine Subdomain angelegt werden
kann, muss eine entsprechende Domain bereits existieren.
Wird das Feld web auf NULL gesetzt, dann ist der Webspace für diese Subdomain deaktiviert. Für
„normalen“ (aktivierten) Webspace muss das Feld web auf einen leeren String („“) oder auf ein
beliebiges Verzeichnis (z.B. „/“) gesetzt werden.
Aufruf
Field
auth
subscription
Type
AuthData
string
subdomain
string
mail
web
integer
string
RegExp
^[a-z][a-z0-9_-]
{1,63}$
^[^+<>&%\s]
{1,100}$
^[01]$
^.{1,255}$
NULL? Description
no
Authentifizierungsdaten
no
Name des Webhosting-Vertrags (siehe
HostingSubscriptionAdd)
no
vollständige Subdomain (inkl. TLD)
yes
yes
Domain für E-Mail nutzbar? (0=nein, 1=ja)
115
Programmierschnittstellen (APIs)
Field
Type
RegExp
ipgroup
string
^.{1,50}$
Type
string
string[]
RegExp
-
NULL? Description
Webspace-Ziel (Verzeichnis, oder URL für Weiterleitung)
yes
optional: Name der IP-Gruppe (für Webspace)
(ab v1.8.1)
Antwort
Field
id
webip
NULL? Description
no
Datensatz-ID
yes
IP-Adressen, auf denen diese Domain konfiguriert ist
Die Datensatz-ID ist kundenspezifisch verschlüsselt.
HostingDatabaseAdd
HostingDatabaseAdd — Webhosting-Vertrag eine weitere (bestehende) Datenbank zuordnen
Beschreibung
Mit dieser Funktion kann dem Webhosting-Vertrag eines Kunden eine Datenbank zugeordnet
werden. Rückgabewert ist die ID des neuen Datensatzes. Existiert bereits eine identische Datenbank im Vertrag, so wird deren ID zurückgegeben.
Nur wenn der Parameter create auf 1 gesetzt ist, wird die Datenbank auch angelegt - in diesem
Fall ist das Feld password obligatorisch. Ist create=0 (Standard), dann wird die Datenbank
nur in LiveConfig aufgenommen, aber nicht auf dem Datenbank-Server erzeugt - das wird dann
benötigt, wenn die Datenbank-Accounts anderweitig angelegt werden/wurden.
Das Passwort (falls angegeben) darf maximal 40 Zeichen lang sein. Als Ausnahme darf ein 41
Zeichen langes, vor-gehashtes MySQL-Password (beginnt mit „*“) übergeben werden. Falls das
Passwort genau 22 Zeichen lang ist und mit „MYSQL:“ beginnt, dann wird dieses als MySQL-4.xPasswort-Hash interpretiert und ebenfalls unverändert übernommen.
Aufruf
Field
auth
subscription
Type
AuthData
string
name
login
comment
extern
string
string
string
integer
116
RegExp
^[a-z][a-z0-9_-]
{1,63}$
^[\w_-]{1,64}$
^[\w_-]{1,16}$
^.{0,255}$
^[012]$
NULL? Description
no
Authentifizierungsdaten
no
Name des Webhosting-Vertrags (siehe
HostingSubscriptionAdd)
no
Datenbankname
no
Datenbank-Login
yes
Beschreibung (optional)
yes
Datenbank extern erreichbar (0=nein (Standard),
1=ja, 2=nur mit SSL)
SOAP-Referenz
Field
create
password
Type
integer
string
RegExp
^[01]$
^.{0,41}$
NULL? Description
yes
Datenbank erzeugen? (0=nein (Standard), 1=ja)
yes
Passwort (Pflichtfeld, wenn create!=0)
Type
string
RegExp
-
NULL? Description
no
Datensatz-ID
Antwort
Field
id
Die Datensatz-ID ist kundenspezifisch verschlüsselt.
HostingMailboxAdd
HostingMailboxAdd — E-Mail-Postfach einrichten
Beschreibung
Diese Funktion ermöglicht das Anlegen neuer E-Mail-Adressen bzw. -Postfächer.
Das Passwort kann optional als gesalzener MD5-Passwort-Hash (z.B. $1$abcdefgh$abcdefghijklmnopqrstuv) übergeben werden; dieses wird dann unverändert in die PasswortDatenbank übernommen (wichtig für den Import von Postfach-Passwörtern aus anderen Control
Panels). In diesem Fall sollte aber der Authentifikations-Mechanismus CRAM-MD5 auf dem Server
deaktiviert werden, da es sonst zu Problemen bei der Anmeldung kommen kann.
Aufruf
Field
auth
subscription
Type
AuthData
string
RegExp
NULL? Description
no
Authentifizierungsdaten
no
Name des Webhosting-Vertrags (siehe
HostingSubscriptionAdd)
no
Name der E-Mail-Adresse (links vom „@“)
no
vollständiger Domainname (rechts vom „@“)
name
domain
string
string
alias
string[]
^[a-z][a-z0-9_-]
{1,63}$
^[\w_]{1,64}$
^[^+<>&%\s]
{1,255}$
^[\w_]{1,64}$
mailbox
password
integer
string
^[01]$
^.{5,40}$
no
yes
weblogin
quota
integer
integer
^[01]?$
^\d{1,6}$
yes
yes
forward
autoresponder
autosubject
string[]
integer
string
EMAIL(128)
^[01]$
^.{5,80}$
yes
no
yes
automessage
string
^.{5,4096}$
yes
yes
Array mit Alias-Namen für diese Adresse (max.
10)
0=nur Weiterleitung, 1=POP3/IMAP-Postfach
Passwort (bei POP3/IMAP ein Pflichtfeld, sonst
optional)
Anmeldung an LiveConfig erlaubt? (1=ja)
maximale Postfachgröße in MB (Pflichtfeld bei
POP3/IMAP-Postfach)
Array mit E-Mail-Adressen für Weiterleitungen
Autoresponder aktiviert? (0=nein, 1=ja)
Betreff für den Autoresponder (Pflichtfeld wenn
der Autoresponder aktiviert ist)
117
Programmierschnittstellen (APIs)
Field
Type
RegExp
greylisting
integer
^[01]?$
spamfilter
integer
^[01]?$
spamwarn
integer
spamreject
integer
^(\\d+([.,]\\d
+)?)?$
^(\\d+([.,]\\d
+)?)?$
NULL? Description
Text für den Autoresponder (Pflichtfeld wenn
der Autoresponder aktiviert ist)
yes
Greylisting aktiviert? (nur wenn Greylisting
unterstützt wird!) (1=ja)
yes
Spam-Analyse aktiviert? (nur wenn Spamfilter
unterstützt wird!) (1=ja)
yes
Schwellwert für Spam-Warnung (nur wenn
Spamfilter aktiviert ist)
yes
Schwellwert für Spam-Ablehnung (nur wenn
Spamfilter aktiviert ist)
Antwort
Field
id
folder
Type
string
string
RegExp
-
NULL? Description
no
Datensatz-ID
yes
Verzeichnis, in dem das POP3/IMAP-Postfach
angelegt wurde (das Postfach liegt dann i.d.R.
unter /var/mail/<Vertrag>/<Verzeichnis>/)
Die Datensatz-ID ist kundenspezifisch verschlüsselt.
HostingMailboxEdit
HostingMailboxEdit — E-Mail-Postfach bearbeiten
Beschreibung
Mit dieser Funktion können Einstellungen eines E-Mail-Postfachs bearbeitet werden.
Das Passwort kann optional als gesalzener MD5-Passwort-Hash (z.B. $1$abcdefgh$abcdefghijklmnopqrstuv) übergeben werden; dieses wird dann unverändert in die PasswortDatenbank übernommen (wichtig für den Import von Postfach-Passwörtern aus anderen Control
Panels). In diesem Fall sollte aber der Authentifikations-Mechanismus CRAM-MD5 auf dem Server
deaktiviert werden, da es sonst zu Problemen bei der Anmeldung kommen kann.
Aufruf
Field
auth
address
mailbox
password
Type
AuthData
string
integer
string
RegExp
EMAIL(128)
^[01]$
^.{5,40}$
NULL?
no
no
yes
yes
weblogin
quota
integer
integer
^[01]?$
^\d{1,6}$
yes
yes
118
Description
Authentifizierungsdaten
zu bearbeitende E-Mail-Adresse
0=nur Weiterleitung, 1=POP3/IMAP-Postfach
Passwort (bei POP3/IMAP ein Pflichtfeld, sonst
optional)
Anmeldung an LiveConfig erlaubt? (1=ja)
SOAP-Referenz
Field
Type
RegExp
autoresponder
autosubject
integer
string
^[01]$
^.{5,80}$
automessage
string
^.{5,4096}$
greylisting
integer
^[01]?$
spamfilter
integer
^[01]?$
spamwarn
integer
spamreject
integer
^(\\d+([.,]\\d
+)?)?$
^(\\d+([.,]\\d
+)?)?$
NULL? Description
maximale Postfachgröße in MB (Pflichtfeld bei
POP3/IMAP-Postfach)
yes
Autoresponder aktiviert? (0=nein, 1=ja)
yes
Betreff für den Autoresponder (Pflichtfeld wenn
der Autoresponder aktiviert ist)
yes
Text für den Autoresponder (Pflichtfeld wenn
der Autoresponder aktiviert ist)
yes
Greylisting aktiviert? (nur wenn Greylisting
unterstützt wird!) (1=ja)
yes
Spam-Analyse aktiviert? (nur wenn Spamfilter
unterstützt wird!) (1=ja)
yes
Schwellwert für Spam-Warnung (nur wenn
Spamfilter aktiviert ist)
yes
Schwellwert für Spam-Ablehnung (nur wenn
Spamfilter aktiviert ist)
RegExp
-
NULL? Description
no
Status („ok“)
Antwort
Field
status
Type
string
HostingCronAdd
HostingCronAdd — Neuen Cron-Job erstellen
Beschreibung
Mit dieser Funktion kann zu einem Webhosting-Vertrag ein neuer Cron-Job eingerichtet werden.
Aufruf
Field
auth
subscription
active
minute
hour
day
month
weekday
command
Type
AuthData
string
integer
string
string
string
string
string
string
RegExp
^.{1,64}$
^[01]$
^.{1,50}$
^.{1,50}$
^.{1,50}$
^.{1,50}$
^.{1,50}$
^.{1,250}$
NULL?
no
no
no
no
no
no
no
no
no
Description
Authentifizierungsdaten
Name des Webhosting-Vertrags
Cron-Job aktiv? 0=nein, 1=ja
Minuten-Angabe (z.B. */5 oder 10,20,30)
Stunden-Angabe
Tages-Angabe
Monats-Angabe
Wochentag-Angabe
auszuführender Befehl
Type
string
RegExp
-
NULL? Description
no
Status
Antwort
Field
status
Ausführungs-Status (ok)
119
Programmierschnittstellen (APIs)
HostingPasswordUserAdd
HostingPasswordUserAdd — Neuen Benutzer für Verzeichnis-Passwortschutz anlegen
Beschreibung
Mit dieser Funktion kann ein neuer Benutzer (mit Passwort) für einen Passwort-Verzeichnisschutz
angelegt werden. Die Groß-/Kleinschreibung beim Login wird berücksichtigt (Test ist also ein
anderer Benutzer als test).
Wenn das Passwort mit $1$ beginnt und 34 Zeichen lang ist, wird es als gesalzener MD5-Hash
interpretiert - in allen anderen Fällen wird es als Klartext-Passwort interpretiert und automatisch
in einen Hash umgewandelt.
Aufruf
Field
auth
subscription
login
password
Type
AuthData
string
string
string
RegExp
^.{1,64}$
^.{1,40}$
^.{1,64}$
NULL?
no
no
no
no
Description
Authentifizierungsdaten
Name des Webhosting-Vertrags
Benutzername
Passwort
Type
string
RegExp
-
NULL? Description
no
Status
Antwort
Field
status
Ausführungs-Status (ok)
HostingPasswordPathAdd
HostingPasswordPathAdd — Passwort-Schutz für Webspace-Verzeichnis einrichten
Beschreibung
Diese Funktion erlaubt das Einrichten eines Passwort-Schutzes (HTTP Basic Auth) für ein Webspace-Verzeichnis. Um mehreren verschiedenen Benutzern den Zugriff auf ein Verzeichnis zu
erlauben, kann die Funktion mehrfach (mit dem jeweils hinzuzufügendem Benutzernamen) aufgerufen werden.
Die Benutzer und Passwörter werden über die Funktion HostingPasswordUserAdd verwaltet.
Aufruf
Field
auth
subscription
120
Type
AuthData
string
RegExp
^.{1,64}$
NULL? Description
no
Authentifizierungsdaten
no
Name des Webhosting-Vertrags
SOAP-Referenz
Field
path
Type
string
RegExp
^.{1,255}$
title
login
string
string
^.{1,100}$
^.{1,40}$
NULL? Description
no
Pfad (muss mit /htdocs/ oder /apps/ beginnen)
no
Beschreibung/Titel der Passwortabfrage
no
erlaubter Benutzername; *=alle Benutzer
Type
string
RegExp
-
NULL? Description
no
Status
Antwort
Field
status
Ausführungs-Status (ok)
HostingFtpAdd
HostingFtpAdd — zusätzlichen FTP-Account anlegen
Beschreibung
Mit dieser Funktion kann für einen bestehenden Webspace-Vertrag ein weiterer (virtueller) FTPAccount erstellt werden.
Aufruf
Field
auth
subscription
login
Type
AuthData
string
string
RegExp
password
path
string
string
^.{1,64}$
^[a-z][a-z0-9_-]
{3,63}[a-z0-9]$
^.{5,40}$
^.{0,200}$
Type
string
RegExp
-
NULL?
no
no
no
Description
Authentifizierungsdaten
Name des Webhosting-Vertrags
FTP-Benutzername
no
no
FTP-Passwort
Startverzeichnis
Antwort
Field
status
NULL? Description
no
Status
Ausführungs-Status (ok)
UserAdd
UserAdd — Neuen Benutzer anlegen
Beschreibung
Mit dieser Funktion kann ein neuer Benutzer für einen Kunden angelegt werden. Rückgabewert
ist die ID des neuen Datensatzes. Existiert bereits ein identischer Benutzer, so wird dessen ID
zurückgegeben.
121
Programmierschnittstellen (APIs)
Der Benutzername muss systemweit eindeutig sein.
Wenn das Passwort mit $1$ beginnt, dann geht LiveConfig davon aus dass es sich bereits um
einen MD5-Passwort-Hash und nicht um ein Klartext-Passwort handelt.
Aufruf
Field
auth
customer
Type
AuthData
string
RegExp
contact
login
password
string
string
string
^[\w.-]{12}$
^[\w.-_]{2,50}$
^\.{2,30}$
NULL? Description
no
Authentifizierungsdaten
no
ID des Kunden, dem der Benutzer zugewiesen
wird
no
Kontakt-ID des Benutzers
no
Benutzername
no
Passwort
Type
string
RegExp
-
NULL? Description
no
Datensatz-ID
^[\w.-]{12}$
Antwort
Field
id
Die Datensatz-ID ist kundenspezifisch verschlüsselt.
UserGet
UserGet — Benutzerdaten auslesen
Beschreibung
Diese Funktion liefert Daten zu einem oder mehreren LiveConfig-Benutzern zurück. Wird das Feld
login leer gelassen, werden die Daten aller vorhandenen Benutzer zurückgegeben, ansonsten
nur die mit dem angegebenen Benutzernamen.
Um alle Benutzer eines bestimmten Kunden zu erhalten, muss dessen Kundennummer im Feld
cid übergeben werden.
Aufruf
Field
auth
cid
login
Type
AuthData
long
string
RegExp
^\d{1,18}$
^[\w.-_]{2,50}$
NULL?
no
yes
yes
Description
Authentifizierungsdaten
Kundennummer
Benutzername
Antwort
Field
users
Type
RegExp
UserDetails[] -
NULL? Description
yes
Array mit Kundendatensätzen
Die Benutzerdaten sind wie folgt aufgebaut:
Field
login
122
Type
string
RegExp
-
NULL? Description
no
Benutzername (LiveConfig-Login)
SOAP-Referenz
Field
locked
contact
Type
integer
string
RegExp
-
NULL? Description
no
Status (0: aktiv, 1: gesperrt)
no
Kontakt-ID des Benutzers
SessionCheck
SessionCheck — Session-ID prüfen
Beschreibung
Diese Funktion wird für die IFRAME API benötigt, um die Gültigkeit der übermittelten Session-ID
zu prüfen. So kann sicher gestellt werden, dass der angegebene Benutzer auch tatsächlich noch
an LiveConfig angemeldet ist; außerdem werden bei dieser Gelegenheit gleich noch weitere Informationen zum angemeldeten Benutzer zurückgegeben.
Aufruf
Field
auth
sid
ua
Type
AuthData
string
string
RegExp
Field
status
language
Type
string
string
RegExp
-
login
name
string
string
-
cid
subscriptions
long
string[]
-
^[\w.-]{24}$
^.{0,200}$
NULL?
no
no
no
Description
Authentifizierungsdaten
Session-ID
User-Agent-String des Kunden
Antwort
NULL? Description
no
Status („ok“)
no
Aktuell eingestellte Sprache des Benutzers (z.B.
de oder en)
no
Login-Name (z.B. a12345)
no
Name des Benutzers (z.B. Manfred Mustermann)
no
Kundennummer (z.B. 123)
yes
Array mit Namen der zugeordneten Verträge,
auf die der Benutzer Zugriff hat
8.2. Lua API
Lua ist eine einfache, aber dennoch sehr mächtige Scriptsprache (siehe http://www.lua.org). Die
meisten Funktionen, in denen LiveConfig mit anderen Programmen kommuniziert oder Konfigurationsdateien erzeugt, sind in Lua programmiert. Alle Lua-Programme liegen LiveConfig im
Quelltext bei, somit sind Anpassungen an spezielle Anforderungen relativ einfach.
8.2.1. Organisation und Funktionsweise
Die Lua-Programme liegen im Verzeichnis <library_path>/lua/ (der library_path kann
über die LiveConfig-Konfigurationsdatei verändert werden); üblicherweise ist das /usr/lib/
liveconfig/lua/. Sowohl beim LiveConfig Server als auch beim LiveConfig Client werden alle
123
Programmierschnittstellen (APIs)
Lua-Programme installiert (der Server enthält ja praktisch einen integrierten LiveConfig-Client zur
Steuerung des lokalen Systems).
Beim Start von LiveConfig werden mehrere Threads für die Systemverwaltung gestartet; jeder
davon enthält eine eigene Lua-Umgebung. In jeder Lua-Umgebung werden zuerst die internen
Bibliotheksfunktionen registriert (z.B. LC.expect, LC.sys, u.v.m.), und anschließend das Programm liveconfig.lua ausgeführt. Dieses lädt alle restlichen, in Lua programmierten Module nach (z.B. LC.web, LC.dns, etc.). Außerdem prüft dieses, ob eine Datei namens custom.lua
existiert (s.u.). Falls ja, wird dieses ebenfalls geladen und ausgeführt.
Tritt bei diesem Ladevorgang irgendwo ein Fehler auf, dann bricht LiveConfig an dieser Stelle mit
einer Fehlermeldung ab. Außerdem dürfen auch keine Bildschirmausgaben (print()) während
der Initialisierung erfolgen.
Platz für Änderungen/Erweiterungen: custom.lua
Eigene Erweiterungen, die beim Start der Lua-Umgebung berücksichtigt werden sollen, sollten
idealerweise in die Datei custom.lua aufgenommen werden. Standardmäßig existiert diese
Datei nicht; gleichzeitig wird diese bei eventuellen Updates/Upgrades von LiveConfig auch nicht
angerührt.
Bei Updates von LiveConfig ist es grundsätzlich möglich (und sogar recht wahrscheinlich), dass
auch die mitgelieferten Lua-Programme aktualisiert werden. Sollten Sie daran eventuelle Änderungen vorgenommen haben, gehen diese dabei verloren. Daher wird empfohlen, dass Sie Ihre
eigenen Modifikationen ausschließlich über die Datei custom.lua verwalten.
Sollten Sie Änderungen an den von LiveConfig mitgelieferten Lua-Programmen vornehmen, kann
selbstverständlich keine Gewährleistung für deren Korrektheit übernommen werden. Prüfen Sie
eigene Funktionen bitte entsprechend sorgfältig, bevor Sie diese produktiv einsetzen!
Nach Änderungen an der Datei custom.lua oder irgend einem anderen Lua-Script muss LiveConfig
neu gestartet werden, damit die Änderungen wirksam werden.
8.2.2. Testen eigener Programme
Für das Testen eigener Lua-Programme dient lclua, welches ebenfalls sowohl dem LiveConfig-Client als auch dem Server beiliegt. Dieses enthält einen Lua-Interpreter, und stellt gleichzeitig alle Bibliotheks-Funktionen von LiveConfig zur Verfügung.
8.2.3. Programmbeispiel
Wenn Sie beispielsweise die Erkennung der Linux-Distribution anpassen möchten, könnte die
Datei custom.lua so aussehen:
124
Lua-Referenz
-- Namespace "MY" einführen:
MY = { }
-- Original-Funktion "LC.distribution.detect" merken
MY.orig_detect = LC.distribution.detect
-- Funktion zur Betriebssystem-Erkennung umbiegen:
function LC.distribution.detect()
if (LC.fs.is_file("/etc/exampLinux")) then
-- wir haben ein "ExampleLinux"...
LC.distribution.name
= "ExampLinux"
LC.distribution.codename
= "example"
LC.distribution.family
= "Debian"
LC.distribution.version
= "1.0"
LC.distribution.description = "Example Linux 1.0 (example)"
return true
else
-- Original-Funktion zur Betriebssystem-Erkennung aufrufen:
return MY.orig_detect()
end
end
8.2.4. Lua-Referenz
In der nachfolgenden Referenz sind alle Lua-Module beschrieben. LiveConfig verwendet für alle
bereitgestellten Module und Bibliotheksfunktionen den Namespace-Präfix LC.
LC.crypt
LC.crypt — Verschlüsselungsfunktionen
Beschreibung
Mit LC.crypt stehen verschiedene Verschlüsselungsfunktionen zur Verfügung.
• LC.crypt.cram_md5
LC.crypt.cram_md5(input)
Mit dieser Funktion kann der in input übergebene Wert für einen CRAM-MD5-Hashvergleich
vorberechnet werden. Der Haupteinsatzbereich ist für POP3/IMAP-Mailserver, bei denen eine
Anmeldung mit Klartext-Verfahren (LOGIN/PLAIN) und dem etwas sichererem CRAM-MD5-Verfahren möglich sein soll, ohne die Passwörter dabei im Klartext auf dem Server speichern zu
müssen.
• LC.crypt.crypt
LC.crypt.crypt(input)
125
Programmierschnittstellen (APIs)
Diese Funktion erzeugt mittels DES-Algorithmus einen crypt()-kompatiblen Hash des übergebenen Parameters. Dieses Format kann z.B. in typischen Passwort-Dateien (/etc/passwd)
verwendet werden.
• LC.crypt.crypt_md5
LC.crypt.crypt_md5(input)
Diese Funktion erzeugt ein 8 Zeichen langes „Salt“ und berechnet aus diesem sowie dem übergebenen Passwort einen MD5-Hash. Dieses Format kann z.B. in moderneren Passwort-Dateien
verwendet werden.
Beispiel
pw = LC.crypt.cram_md5("test")
-- Ergebnis: e02d374fde0dc75a17a557039a3a5338c7743304777dccd376f332bee68d2cf6
pw = LC.crypt.crypt("test")
-- Ergebnis: z.B. SALwWlL5CAfNE
pw = LC.crypt.crypt_md5("test")
-- Ergebnis: z.B. $1$u5OJQYF3$jG4Q5xqQd1tE10d27XgC40
LC.exec
LC.exec — Ausführung von Programmen
Beschreibung
Mit LC.exec können Programme ähnlich wie mit os.execute ausgeführt werden. Jedoch liefert LC.exec die Meldungen der Standardausgabe (STDOUT), Fehlermeldungen (STDERR) sowie
den Exit-Code des ausgeführten Programms zurück. Gleichzeitig werden diese Daten im LiveConfig-Log protokolliert.
• LC.exec
LC.exec(cmd)
Führt den Befehl cmd aus und liefert den Exitcode, die Standardausgaben und die Fehlermeldungen des ausgeführten Programms zurück.
Beispiel
local ex, stdout, stderr = LC.exec("service apache2 restart")
126
Lua-Referenz
LC.expect
LC.expect — Aufruf und „Fernsteuerung“ von Programmen
Beschreibung
Mit LC.expect können Programme aufgerufen und „ferngesteuert“ werden. Mit LC.expect
wird die Ausgabe eines aufgerufenen Programmes ausgelesen, und anhand von bestimmten
Mustern Aktionen ausgeführt.
Ein häufiger Anwendungsfall ist der Aufruf eines Programmes zum Ändern von Passwörtern: es muss auf eine bestimmte Eingabeaufforderung gewartet werden (z.B. „Enter new
password:“), und anschließend das neue Passwort gesendet werden.
LC.expect arbeitet objekt- und eventorientiert. Zuerst wird ein LC.expect-Objekt erstellt,
dann mit spawn() das gewünschte Programm ausgeführt, und mit expect() und send() auf
Ausgaben gewartet bzw. Daten gesendet.
• LC.expect.new
LC.expect.new()
Erzeugt ein neues LC.expect-Objekt und liefert dieses zurück.
• LC.expect:expect
LC.expect:log(list, timeout)
Wartet auf die in list angegebenen Muster, bricht nach maximal timeout Sekunden ab.
Die Liste ist ein Array mit aus match- und action-Einträgen bestehenden Tabellen. In match
ist jeweils ein regulärer Ausdruck angegeben, auf den die empfangene Programmausgabe
überprüft wird, und action die Funktion, die bei einem Treffer jeweils aufgerufen wird.
Die Handler-Funktion (action) bekommt als Parameter ein Array mit allen im regulären Ausdruck erkannten Mustern. Der erste Eintrag enthält das vollständige erkannte Muster, alle weiteren Einträge eventuelle Suchausdrücke.
• LC.expect:log
LC.expect:log(boolean)
Aktiviert/deaktiviert die ausführliche Protokollierung.
• LC.expect:logfile
LC.expect:logfile(filename)
127
Programmierschnittstellen (APIs)
Ausgabe der Protokollierung in der angegebenen Datei.
• LC.expect:send
LC.expect:send(string)
Sendet die in string übergebenen Daten an das ausgeführte Programm.
• LC.expect:spawn
LC.expect:spawn(program, args)
Startet das Programm program mit den in dem Array args angegebenen Optionen.
Beispiel
e = LC.expect.new()
successful = false
e:log(true)
e:logfile("expect_test.log")
-- Passwort für Benutzer 'dummy' ändern:
e:spawn("/usr/bin/passwd", { "dummy" } )
function send_password(m)
-- neues Passwort senden (mit '\n' am Ende!)
e:send("PaSsWoRd\n")
end
function pwd_success(m)
successful = true
end
list = {
{ match
action
{ match
action
}
=
=
=
=
"new UNIX password:",
send_password },
"updated successfully",
pwd_success }
e:expect(list, 5)
if (successful) then
print("Successful.")
else
print("NOT successful.")
end
LC.fs
LC.fs — Funktionen zur Verwaltung von Dateien und Verzeichnissen
128
Lua-Referenz
Beschreibung
Die Bibliothek LC.fs stellt Funktionen zur Verwaltung von Dateien und Verzeichnissen bereit.
• LC.fs.copy
LC.fs.copy(sourcefile, destfile)
Kopiert die Datei sourcefile nach destfile. Die Dateieigenschaften (Besitzer, Berechtigungen und Änderungs-/Zugriffsdatum) werden dabei mit kopiert.
• LC.fs.filecount
LC.fs.filecount(name)
Gibt die Anzahl der Dateien und Verzeichnisse (außer . und ..) im Verzeichnis name zurück.
• LC.fs.is_dir
LC.fs.is_dir(name)
Gibt true zurück, wenn name ein Verzeichnis ist.
• LC.fs.is_file
LC.fs.is_file(name)
Gibt true zurück, wenn name eine reguläre Datei ist.
• LC.fs.mkdir
LC.fs.mkdir(name)
Erzeugt ein neues Verzeichnis.
• LC.fs.mkdir_rec
LC.fs.mkdir_rec(name)
Erzeugt ein neues Verzeichnis. Falls ein oder mehrere übergeordnete Verzeichnisse noch nicht
existieren, werden diese ebenfalls erstellt.
• LC.fs.rename
LC.fs.rename(oldname, newname)
Benennt eine Datei oder ein Verzeichnis von oldname nach newname um.
129
Programmierschnittstellen (APIs)
• LC.fs.setperm
LC.fs.setperm(name, mode, user, group)
Ändert die Berechtigungen für die in name angebenene Datei/Verzeichnis. mode ist ein als
String angegebener Oktal-Wert (z.B. 0755) für die Berechtigungsmaske, und user bzw. group
die jeweiligen Dateibesitzer.
• LC.fs.setUserQuota
LC.fs.setUserQuota(user, path, limit)
Setzt das Benutzer-Quota für den Benutzer user auf dem Gerät auf welchem der Pfad path
gemounted ist, auf das (harte) Limit von limit Kilobytes.
Beispiel: Limit von 200 MB (= 204800 KB) auf dem Pfad /var/www/v12007 für den Benutzer
v12007:
LC.fs.setUserQuota("v12007", "/var/www/v12007", 204800))
• LC.fs.setGroupQuota
LC.fs.setGroupQuota(group, path, limit)
Setzt das Gruppen-Quota für die Gruppe group auf dem Gerät auf welchem der Pfad path
gemounted ist, auf das (harte) Limit von limit Kilobytes.
• LC.fs.getUserQuota
LC.fs.getUserQuota(user, path)
Liefert das Benutzer-Quota für den Benutzer user auf dem Gerät auf welchem der Pfad path
gemounted ist, zurück. Das Ergebnis wird als Tabelle mit folgenden Feldern zurückgegeben:
kb_soft, kb_hard, kb_used: Soft- bzw. Hard-Limit und Anzahl des belegten Speichers in
Kilobyte (1024 Byte)
n_soft, n_hard, n_used: Soft- bzw. Hard-Limit und Anzahl der belegten Dateisystem-Inodes (praktisch der Anzahl der Dateien & Verzeichnisse)
• LC.fs.getGroupQuota
LC.fs.getGroupQuota(group, path)
Liefert das Gruppen-Quota für die Gruppe group auf dem Gerät auf welchem der Pfad path
gemounted ist, zurück. Die Ergebnistabelle ist analog zu LC.fs.getUserQuota.
130
Lua-Referenz
LC.log
LC.log — Logging-Funktion
Beschreibung
Mit LC.log können Log-Meldungen erzeugt werden, die im LiveConfig-Log enthalten sind.
• LC.log.print
LC.log.print(level, message [, ...])
Protokolliert die Meldung message mit dem Log-Level level. Es können mehrere Parameter
übergeben werden.
Gültige Konstanten für den Log-Level sind: LC.log.DEBUG, LC.log.INFO,
LC.log.NOTICE, LC.log.WARNING, LC.log.ERR, LC.log.CRIT, LC.log.ALERT und
LC.log.EMERG.
Beispiel
LC.log.print(LC.log.INFO, "Example value: ", value)
LC.mutex
LC.mutex — Mutex-Funktionen
Beschreibung
Mit LC.mutex können sogenannte „Mutexe“ zur Synchronisation von mehreren Lua-Threads
verwendet werden.
• LC.mutex.debug
LC.mutex.debug(bool)
Aktiviert oder deaktiviert das Debugging für Mutex-Operationen. Bei aktiviertem Debugging
wird jeder lock- bzw. unlock-Aufruf über die Log-Funktion (LC.log) protokolliert.
• LC.mutex.lock
LC.mutex.lock(name)
Fordert eine Sperre für den in name angegebenen Mutex an. Existiert noch kein solcher Mutex,
wird er automatisch erzeugt.
131
Programmierschnittstellen (APIs)
• LC.mutex.unlock
LC.mutex.unlock(name)
Gibt die Sperre für den in name angegebenen Mutex wieder frei. Die Mutex-Sperre muss vorher erfolgreich angefordert worden sein, ansonsten kann ein nicht definierbares Fehlverhalten
auftreten.
LC.sys
LC.sys — Systemfunktionen
Beschreibung
Die Bibliothek LC.sys stellt Funktionen zum Zugriff auf einige Systeminformationen bereit.
• LC.sys.get_fqdn
LC.sys.get_fqdn()
Liefert den vollständigen (qualifizierten) Hostnamen (inkl. Domain) zurück. Das Ergebnis entspricht dem Befehl hostname --fqdn.
• LC.sys.get_machine
LC.sys.get_machine()
Liefert den Hardwarenamen zurück (z.B. „x86_64“). Das Ergebnis entspricht dem Befehl uname
-m.
• LC.sys.get_name
LC.sys.get_name()
Liefert den Kernelnamen zurück (z.B. „Linux“). Das Ergebnis entspricht dem Befehl uname -k.
• LC.sys.get_node
LC.sys.get_node()
Liefert den Hostnamen (ohne Domain) zurück. Das Ergebnis entspricht dem Befehl uname -n.
• LC.sys.get_release
LC.sys.get_release()
132
Lua-Referenz
Liefert die Kernel-Release zurück (z.B. „2.6.18-6-xen-amd64“). Das Ergebnis entspricht dem
Befehl uname -r.
• LC.sys.get_version
LC.sys.get_version()
Liefert die Kernel-Version zurück (z.B. „#1 SMP Sun Feb 21 00:50:59 UTC 2010“). Das Ergebnis
entspricht dem Befehl uname -v.
• LC.sys.group_exists
LC.sys.group_exists(group_name)
Prüft, ob eine Gruppe mit dem angegebenen Namen existiert. Die Prüfung wird mittels getgrnam() ausgeführt, berücksichtigt üblicherweise also auch NIS und LDAP.
Wenn die Gruppe existiert, wird deren Group-ID zurückgegeben, ansonsten false.
• LC.sys.user_exists
LC.sys.user_exists(user_name)
Prüft, ob ein Benutzer mit dem angegebenen Namen existiert. Die Prüfung wird mittels getpwnam() ausgeführt, berücksichtigt üblicherweise also auch NIS und LDAP.
Wenn der Benutzer existiert, wird dessen User-ID zurückgegeben, ansonsten false.
LC.timeout
LC.timeout — Timer
Beschreibung
Die Bibliothek LC.timeout stellt derzeit nur die Funktion set zur Verfügung, mit der eine LuaFunktion verzögert aufgerufen werden kann.
• LC.timeout.set
LC.timeout.set(command, min, max)
Es wird ein Timer zum Aufruf des in command übergebenen Befehls gesetzt. Der Aufruf erfolgt
frühestens nach min Sekunden, spätestens nach max Sekunden. Ein erneuter Aufruf dieser
133
Programmierschnittstellen (APIs)
Funktion mit dem selben command führt zum Zurücksetzen des internen Timers, außer der
max-Wert wurde erreicht.
Diese Funktion wird beispielsweise dann eingesetzt, wenn ein (idempotentes) Programm ausgeführt werden soll, mehrere Aufrufe kurz hintereinander aber vermieden werden sollen.
Der in command übergebene Funktionsname muss in allen Lua-Instanzen im globalen Namespace verfügbar sein und kann keine Parameter entgegennehmen.
Beispiel
Mit dem nachfolgenden Beispiel wird die Funktion apache.reload frühestens 10 Sekunden
nach dem letzten Aufruf von LC.timeout.set('apache.reload', ...) und spätestens
60 Sekunden nach dem ersten Aufruf ausgeführt:
LC.timeout.set('apache.reload', 10, 60)
8.3. IFRAME API
Mit Hilfe der IFRAME-API können Sie eigene Inhalte nahtlos in LiveConfig einbinden und somit
dessen Funktionsumfang erweitern. Hierbei wird über ein <IFRAME>-Tag der gewünschte Inhalt
von einer externen URL geladen und innerhalb der LiveConfig-Oberfläche angezeigt. Die aufgerufene Seite bekommt dabei Informationen über den angemeldeten Benutzer mit übermittelt.
8.3.1. Einrichtung „eigener Links“
Als Administrator (ab späteren LiveConfig-Versionen auch als Wiederverkäufer) können Sie die
„eigenen Links“ direkt über die LiveConfig-Oberfläche unter Verwaltung # LiveConfig # Eigene
Links konfigurieren. Diese Links werden jeweils allen Benutzern auf der selben Verwaltungsebene
sowie allen eigenen Kunden (ersten Grades) angezeigt.
134
Einrichtung „eigener Links“
8.3.1.1. Abschnitte verwalten
Alle eigenen Links werden in Abschnitten verwaltet (das entspricht den Abschnitten im Navigationsmenü). Sie müssen also mindestens einen neuen Abschnitt anlegen, um diesen dann für die
Links verwenden zu können. Die Optionen für einen Abschnitt sind:
• Titel: der Titel für den neuen Abschnitt.
• URI: URI-Pfad für diesen Abschnitt (nur Buchstaben, Ziffern, Punkt, Bindestrich und Unterstrich erlaubt). Die vollständige URL zu einem eigenen Link lautet immer: /liveconfig/ext/<Abschnitt-URI>/<Link-URI>
8.3.1.2. Links verwalten
Die Optionen für eigene Links sind:
• Abschnitt: Auswahl des Abschnitts, unter dem dieser Link erscheinen soll.
• Titel: der Titel für den neuen Link (wird für den Navigationsbereich und als Seitentitel verwendet)
• URI: URI-Pfad für diesen Link (nur Buchstaben, Ziffern, Punkt, Bindestrich und Unterstrich
erlaubt). Die vollständige URL zu dieser Seite lautet dann: /liveconfig/ext/<AbschnittURI>/<Link-URI>
135
Programmierschnittstellen (APIs)
• Zieladresse: die vollständige URL, welche im <IFRAME> geöffnet werden soll. Es sollte sich
hier unbedingt um eine HTTPS-URL (SSL) handeln, da die meisten Browser sonst eine Fehlermeldung ausgeben, wenn man per HTTPS auf LiveConfig zugreift, eingebettete Inhalte aber
unverschlüsselt geladen werden sollen. Die URL darf keine CGI-Parameter enthalten, da LiveConfig automatisch einige Parameter anfügt (siehe Abschnitt 8.3.2, „Programmierung eigener
Inhalte“).
• Passwort: das Passwort welches zur Erzeugung der Prüfsumme beim Aufruf der Zieladresse
verwendet wird (siehe Abschnitt 8.3.2, „Programmierung eigener Inhalte“).
8.3.2. Programmierung eigener Inhalte
Beim Aufruf eines eigenen Links erzeugt LiveConfig eine Seite mit einem <IFRAME>, in dem
die hinterlegte Zieladresse geöffnet wird. Dieser IFRAME bekommt die restliche Bildschirmbreite
(100%) und wird per JavaScript auf die Höhe der eingebetteten Seite vergrößert, so dass normalerweise keine Scrollbalken am Rand entstehen dürften (somit ist der Inhalt nahtlos integriert).
Ein kleines Beispielscript sowie Hilfsfunktionen können Sie in der Wissensdatenbank herunterladen: http://www.liveconfig.com/de/kb/12.
Bei der Gestaltung der einzubettenden Seiten sind praktisch keine Grenzen gesetzt. Es gibt nur
wenige Dinge, die unbedingt beachtet werden müssen:
• Verwendung von lc-api.js
Damit die Größe des IFRAMEs automatisch angepasst werden kann ist der Aufruf einer
bestimmten JavaScript-Funktion notwendig sobald der Inhalt vollständig geladen wurde. Die
Datei lc-api.js enthält den dazu notwendigen Code.
• CGI-Parameter sid, ts, chk und lang
An die aufzurufende Zieladresse fügt LiveConfig automatisch noch die CGI-Parameter sid (Session-ID des LiveConfig-Benutzers), ts (aktueller Zeitstempel), chk (Prüfsumme) und lang
(gewählte Sprache) an. Mit der Prüfsumme können Manipulationen in den CGI-Parametern
schnell erkannt werden. Mit Hilfe der Session-ID kann über einen Aufruf der SOAP-Funktion
SessionCheck() überprüft werden, ob der Benutzer derzeit noch in LiveConfig angemeldet ist zusätzlich werden weitere Informationen zurückgegeben, unter anderem der Login-Name, der
vollständige Name und eine Liste aller zugewiesenen Verträge.
Wenn Sie eigene Eingabeformulare innerhalb der eingebetteten Seite verwenden, reichen Sie
diese CGI-Parameter am besten weiter, so dass Sie bei jedem Verarbeitungsschritt die Gültigkeit
der Session prüfen können. Bei komplexeren Anwendungen können Sie auch eine eigene PHPSession für diesen Besucher erzeugen und die genannten CGI-Parameter als Session-Daten
ablegen.
136
Programmierung eigener Inhalte
Für ein vollständiges Beispiel werfen Sie bitte einen Blick auf example.php in dem o.g. Download-Paket.
Wenn die angezeigten Daten optisch zu den restlichen LiveConfig-Seiten passen soll, finden Sie
mit lc-api.css die passenden CSS-Stile.
137
138
Anhang A. Fehlerbehebung
Dieser Abschnitt enthält Entscheidungsbäume, um eventuelle Probleme schnell zu identifizieren
und eine Lösung zu finden.
A.1. LiveConfig-Server
A.1.1. Serverzugriff
Wenn Sie die LiveConfig-Oberfläche nicht erreichen können, prüfen Sie bitte folgende Punkte:
• Läuft der LiveConfig-Server-Prozess?
• Rufen Sie liveconfig -s auf. Falls der LiveConfig-Server nicht läuft, erhalten Sie etwa
folgende Ausgabe:
$> liveconfig -s
_
_
___
__ _
(R)
| | (_)_ _____ / __|___ _ _ / _(_)__ _
| |__| \ V / -_) (__/ _ \ ' \| _| / _` |
|____|_|\_/\___|\___\___/_||_|_| |_\__, |_____________________________________
|___/
Can't get shared memory segment: No such file or directory
Server not running?
______________________________________________________________________________
Copyright (c) 2009-2012 Keppler IT GmbH.
http://www.liveconfig.com
Falls der Prozess läuft, erhalten Sie dagegen etwa folgende Ausgabe:
$> liveconfig -s
_
_
___
__ _
(R)
| | (_)_ _____ / __|___ _ _ / _(_)__ _
| |__| \ V / -_) (__/ _ \ ' \| _| / _` |
|____|_|\_/\___|\___\___/_||_|_| |_\__, |_____________________________________
|___/
Process ID: 31838
Uptime: 0 days, 00:35:19
Server generation: 1
Child generation: 1
______________________________________________________________________________
Copyright (c) 2009-2012 Keppler IT GmbH.
http://www.liveconfig.com
• Starten Sie LiveConfig mit dem Befehl /etc/init.d/liveconfig start. Prüfen Sie
anschließend noch einmal, ob LiveConfig nun läuft (s.o.).
• Öffnen Sie die Logdatei mit dem Befehl less
/var/lib/liveconfig/liveconfig.log. Normalerweise finden Sie am Ende der Datei Hinweise, warum
139
Fehlerbehebung
LiveConfig nicht startet (mit dem Befehl 'G' (Großbuchstabe!) können Sie im Programm less
ans Ende der Datei springen).
• Wenn Sie die Fehlermeldung
Server already running? Can't create shared memory segment: File exists
erhalten und LiveConfig sicher nicht läuft, dann existiert vermutlich noch ein altes sog. „Shared-Memory-Segment“. Geben Sie den Befehl ipcs ein. Sie erhalten eine Liste aller derzeit
registrierten Shared-Memory-Segmente, z.B.:
------ Shared Memory Segments -------key
shmid
owner
perms
0x1700d389 31784961
root
640
bytes
296
nattch
status
0
Findet sich in dieser Liste ein Eintrag mit dem Besitzer (owner) root, den Berechtigungen
(perms) 0640 und (ganz wichtig) dem Wert nattch=0, dann ist das vermutlich ein „verlorenes“
Shared-Memory-Segment, welches manuell gelöscht werden muss (das kann eigentlich nur
auftreten, wenn LiveConfig mit dem KILL-Signal beendet wird oder ein ernster Softwarefehler
vorliegt).
Zum Löschen des Shared-Memory-Segments suchen Sie den in der Spalte shmid angegebenen Schlüssel heraus, und führen ipcrm -m <shmid> aus. Prüfen Sie anschließend
mittels ipcs, ob das Segment gelöscht wurde, und starten Sie LiveConfig neu (s.o.).
• (nur Gentoo Linux): Wenn Sie die Fehlermeldung
* WARNING: liveconfig has already been started
erhalten und LiveConfig sicher nicht läuft, dann hat Gentoo eventuell noch einen falschen
Prozessstatus gecached. Geben Sie den Befehl
/etc/init.d/liveconfig zap
ein, und starten Sie anschließend LiveConfig mit /etc/init.d/liveconfig start
erneut.
• Verwenden Sie das richtige Protokoll (HTTP bzw. HTTPS)?
• Standardmäßig ist LiveConfig an Port 8443 über HTTPS (SSL-verschlüsselte Verbindung)
erreichbar. Prüfen Sie, welchen Port Sie in Ihrer URL angegeben haben, und ob das Protokoll
stimmt:
140
Port
Protokoll
8443
HTTPS
Beispiel
LiveConfig-Client
Port
Protokoll
Beispiel
https://x.x.x.x:8443/
8080
HTTP
http://x.x.x.x:8080/
Standardmäßig öffnet LiveConfig nur den Port 8443 für HTTPS. Weitere Informationen hierzu
siehe Abschnitt 2.4.3, „HTTP-Protokoll-Einstellungen“.
• Verhindert eine Firewall den Zugriff auf LiveConfig?
• Prüfen Sie, ob eventuell eine Firewall auf Ihrem PC, an Ihrem Internetzugang oder auf dem
mit LiveConfig betriebenem Server einen Zugriff auf den gewünschten Port verbietet (s.o.,
in der Regel Port 8443).
Ob ein Verbindungsaufbau grundsätzlich möglich ist, können Sie mit dem Programm telnet
prüfen, das meistens installiert ist: telnet <Server-IP> <Port>, also zum Beispiel
telnet 192.168.1.100 8443. Wenn keine Verbindung aufgebaut werden kann, erhalten
Sie eine entsprechende Fehlermeldung.
A.2. LiveConfig-Client
Der LiveConfig-Server enthält auch einen integrierten Client (zur Verwaltung des lokalen Systems),
daher prüfen Sie bitte auch die hier beschriebenen Lösungsansätze:
• Problem: in der Logdatei erscheint die Fehlermeldung Can't get group quota for
'web###' (path '/var/www/web###'): No such file or directory
Lösung: wahrscheinlich ist das Gruppen-Quota nicht aktiviert. Prüfen Sie, auf welchem Dateisystem sich die Webspace-Verzeichnisse befinden (z.B. mit df /var/www) und ob für dieses
Dateisystem Gruppen-Quota aktiv ist (mit repquota -ag <Dateisystem>). Weitere Informationen zur Konfiguration des Gruppen-Quotas siehe Abschnitt 2.1.2, „ Dateisystem-Quota “.
• Problem: in der Logdatei erscheint die Fehlermeldung Can't get system informations: open(/dev/mem) failed: Operation not permitted
Lösung: diese Fehlermeldung können Sie ignorieren. LiveConfig versucht beim Start einige
Informationen über den Server zu bekommen, u.a. durch Auslesen der DMI-Informationen im
BIOS. Auf manchen Virtualisierungsplattformen wie z.B. Virtuozzo und OpenVZ ist dies nicht
möglich - dort erscheint die o.g. Fehlermeldung. Auswirkungen auf die Funktion von LiveConfig
hat das aber nicht.
141
142
Anhang B. Copyright-Hinweise
In diesem Abschnitt werden alle relevanten Urheberrechts-Hinweise und Lizenzbedingungen
aufgeführt. Sie finden eine vollständige Liste aller Lizenzbedingungen auch in der Datei /usr/
share/docs/liveconfig/COPYRIGHT.
B.1. LiveConfig
Copyright © 2009-2015 Keppler IT GmbH. Alle Rechte vorbehalten.
„LiveConfig“ ist ein eingetragenes Markenzeichen der Keppler IT GmbH.
B.2. Verwendete Bibliotheken
Um das Rad nicht zweimal zu erfinden, greift LiveConfig auf eine Reihe frei verfügbarer Bibliotheken zurück. Nachfolgend sind alle verwendeten Bibliotheken mitsamt deren Copyright-Hinweisen und Lizenzbedingungen aufgeführt.
Wir möchten uns nochmals ausdrücklich bei den Entwicklern dieser Bibliotheken für die tolle
Arbeit bedanken!
• APR - Apache Portable Runtime (http://apr.apache.org/)
Copyright 2008 The Apache Software Foundation.
This product includes software developed by The Apache Software Foundation (http://
www.apache.org/).
Portions of this software were developed at the National Center for Supercomputing Applications (NCSA) at the University of Illinois at Urbana-Champaign.
This software contains code derived from the RSA Data Security Inc. MD5 Message-Digest Algorithm.
This software contains code derived from UNIX V7, Copyright © Caldera International Inc.
• Expat XML Parser Library (http://expat.sourceforge.net/)
Copyright © 1998, 1999, 2000 Thai Open Source Software Center Ltd and Clark Cooper
Copyright © 2001, 2002, 2003, 2004, 2005, 2006 Expat maintainers.
• libcaptcha (http://brokestream.com/captcha.html)
143
Copyright-Hinweise
Copyright © 2009 Ivan Tikhonov.
• Lua (http://www.lua.org/)
Copyright © 1994–2008 Lua.org, PUC-Rio.
• OpenSSL Toolkit (http://www.openssl.org/)
This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit
(http://www.openssl.org/).
Copyright © 1998-2011 The OpenSSL Project. All rights reserved.
Copyright © 1995-1998 Eric Young (<[email protected]>). All rights reserved.
This product includes cryptographic software written by Eric Young (<[email protected]>).
This product includes software written by Tim Hudson (<[email protected]>).
• PCRE - Perl Compatible Regular Expressions (http://www.pcre.org/)
This product includes the PCRE library (Perl Compatible Regular Expressions) written by Philip
Hazel.
Copyright © 1997-2012 University of Cambridge. All rights reserved.
• zlib (http://www.zlib.net/)
This product includes the zlib Data Compression Library
Copright © 1995-2012 Jean-loup Gailly and Mark Adler
• This product includes QR Code Generator for JQuery
Copyright (c) 2009 Kazuhiko Arase (http://www.d-project.com/)
Copyright (c) 2011 Jerome Etienne (http://jetienne.com)
Copyright (c) 2012 davidshimjs (http://davidshimjs.github.io/qrcodejs/)
The word 'QR Code' is registered trademark of DENSO WAVE INCORPORATED
B.3. Verwendete Software
Zur Erstellung von LiveConfig sind insbesondere die nachfolgend aufgeführten Werkzeuge zum
Einsatz gekommen. Auch hierfür möchten wir uns ausdrücklich bei deren Entwicklern bedanken!
(Diese Liste erhebt keinen Anspruch auf Vollständigkeit.)
144
Verwendete Software
• GNU Compiler Collection (GCC) für die Compilierung unter allen Unix-artigen Betriebssystemen
(derzeit Linux, FreeBSD und OpenSolaris)
• Subversion (svn) für die Versionierung und Verwaltung des gesamten Projektcodes.
• Valgrind: Debugging und Profiling
• Docbook-XML und Apache FOP für die Erstellung dieser Dokumentation
• Doxygen für die Quellcode-Dokumentation
• Jenkins - der ultimative Continuous-Integration-Server
• Selenium für automatisierte Tests im Rahmen der Continuous Integration
• Xen als Virtualisierungsplattform für die Entwicklungs- und Testumgebungen
145
146
Stichwortverzeichnis
Symbole
--activate
LiveConfig Client, 39
LiveConfig Server, 27
--config
LiveConfig Client, 40
LiveConfig Server, 27
--configtest
LiveConfig Client, 40
LiveConfig Server, 28
--diag
LiveConfig Client, 40
LiveConfig Server, 27
--foreground
LiveConfig Client, 40
LiveConfig Server, 27
--help
LiveConfig Client, 40
LiveConfig Server, 27
--init
LiveConfig Server, 27
--status
LiveConfig Client, 40
LiveConfig Server, 28
--version
LiveConfig Client, 40
LiveConfig Server, 28
-k
LiveConfig Client, 40
LiveConfig Server, 27
A
Admin-Sitzung, 61
Apache httpd, 51
Application Installer, 74
Auto-Discovery, 85
Auto-Konfiguration, 85
AWstats, 51
B
Backup, 87
base_path, 19, 37
Benutzer
Begriffsklärung, 2
Benutzerverwaltung, 65
C
Catch-All-Adressen, 71
CentOS
Deinstallation
Client, 92
Server, 92
Installation
Client, 35
Server, 16
Cron-Jobs, 73
custom.lua, 124
D
Datenbanken, 72
externer Zugriff, 73
Datenbankserver verwalten, 56
Datensicherung, 87
db_driver, 21
db_host, 21
db_name, 21
db_password, 21
db_user, 21
Debian GNU/Linux
Deinstallation
Client, 92
Server, 91
Installation
Client, 30
Server, 12
Deinstallation, 91
Client, 92
147
Stichwortverzeichnis
Server, 91
DNS, 57
DNS-Server, 76
externe, 78
Vorlagen, 76
DNSSEC, 63
Domaineinstellungen, 66
Domains, 63
DNSSEC, 63
Dovecot, 54
fortgeschrittene Konfiguration, 86
E
E-Mail-Postfächer, 69
Einstellungen verwalten, 44
F
Fehlerbehebung
Client, 141
Server, 139
Firewall-Einstellungen
Client, 29
Server, 10
FTP-Server verwalten, 52
FTP-Zugänge, 65
G
group, 21, 38
H
Hosting-Angebote, 58
host_id
Client-Konfiguration, 38
http_access_log, 22
http_canonical_host, 23
http_canonical_redirect, 23
http_hsts_time, 24
http_htdocs_path, 22
http_keepalive_requests, 22
http_keepalive_timeout, 22
148
http_max_connections, 22
http_read_timeout, 22
http_redirect, 23
http_rewrite, 23
http_socket, 21
http_ssl_certificate, 23
http_ssl_socket, 22
I
Icinga, 88
IFRAME API, 134
Installation
Client, 30
Server, 12
K
Kontakte
Begriffsklärung, 2
Kunden
Begriffsklärung, 2
sperren, 61
verwalten, 59
Kundennummern, 48
L
LCCP
Server-Einstellungen, 24
lccp_socket, 24
lcdbbackup, 28
LCDEFAULTS, 81
lclogparse, 41
lclogsplit, 41
lclua, 41, 124
libexec_path, 20, 37
library_path, 20, 37
license_file, 19, 37
Lizenz
aktivieren, 25
austauschen, 26
Logo ändern, 48
log_file, 19, 37
log_level, 20
Lua, 123
LC.crypt, 125
LC.crypt.cram_md5, 125
LC.crypt.crypt, 125
LC.crypt.crypt_md5, 126
LC.exec, 126, 126
LC.expect, 126
LC.expect.new, 127
LC.expect:expect, 127
LC.expect:log, 127
LC.expect:logfile, 127
LC.expect:send, 128
LC.expect:spawn, 128
LC.fs, 128
LC.fs.copy, 129
LC.fs.filecount, 129
LC.fs.getGroupQuota, 130
LC.fs.getUserQuota, 130
LC.fs.is_dir, 129
LC.fs.is_file, 129
LC.fs.mkdir, 129
LC.fs.mkdir_rec, 129
LC.fs.rename, 129
LC.fs.setGroupQuota, 130
LC.fs.setperm, 130
LC.fs.setUserQuota, 130
LC.log, 130
LC.log.print, 131
LC.mutex, 131
LC.mutex.debug, 131
LC.mutex.lock, 131
LC.mutex.unlock, 132
LC.sys, 132
LC.sys.get_fqdn, 132
LC.sys.get_machine, 132
LC.sys.get_name, 132
LC.sys.get_node, 132
LC.sys.get_release, 132
LC.sys.get_version, 133
LC.sys.group_exists, 133
LC.sys.user_exists, 133
LC.timeout, 133
LC.timeout.set, 133
Programme testen, 124
M
mailquota.txt, 85
Mailserver verwalten, 54
Monitoring, 88
MySQL, 56
als LiveConfig-Datenbank, 18
N
Nagios, 88
Nameserver, 76
externe, 78
Vorlagen, 76
Nameserver verwalten, 57
NGINX, 51
O
OpenSUSE
Deinstallation
Client, 92
Server, 92
Installation
Client, 34
Server, 15
OTP (One Time Passwords) (Siehe Zwei-Faktor-Authentifizierung)
P
Passwort
admin-Passwort ändern (Siehe Initialisierung)
ändern, 45
Initialisierung, 26
Perl
SOAP-Beispielcode, 98
149
Stichwortverzeichnis
PHP 5
SOAP-Beispielcode, 97
phpMyAdmin, 56
pid_file, 20, 37
Postfix, 54
fortgeschrittene Konfiguration, 86
ProFTPd, 52
ProFTPD
fortgeschrittene Konfiguration, 84
Q
Quota, 10
E-Mail, 85
R
Recovery, 88
Reseller-Einstellungen, 47
resource_path, 20
Restore, 88
S
server
Client-Konfiguration, 38
Server verwalten, 49
SNI, 69
SOAP, 93
Authentifizierung, 95
ContactAdd, 102
ContactEdit, 103
ContactGet, 104
CustomerAdd, 105
CustomerEdit, 105
CustomerGet, 106
HostingCronAdd, 119
HostingDatabaseAdd, 116
HostingDomainAdd, 114
HostingFtpAdd, 121
HostingMailboxAdd, 117
HostingMailboxEdit, 118
HostingPasswordPathAdd, 120
150
HostingPasswordUserAdd, 119
HostingPlanAdd, 107
HostingPlanGet, 108
HostingSubdomainAdd, 115
HostingSubscriptionAdd, 109
HostingSubscriptionDelete, 111
HostingSubscriptionEdit, 113
HostingSubscriptionGet, 111
LiveConfigVersion, 102
Referenz, 101
SessionCheck, 123
TestSayHello, 102
UserAdd, 121
UserGet, 122
WSDL, 96
Sprache ändern, 45
SSL, 52
SSL-Zertifikate, 74
CA (CA-Zwischenzertifikate), 76
CRT (Zertifikat), 76
CSR (Certificate Signing Request), 75
KEY (Privater Schlüssel), 75
Standardwerte ändern, 81
T
Testlizenz (Siehe Lizenz austauschen)
U
Überwachung, 88
Ubuntu Linux
Deinstallation
Client, 92
Server, 91
Installation
Client, 32
Server, 14
user, 20, 37
V
Verträge, 62
Begriffsklärung, 2
neu zuordnen, 62
Vertragsnummern, 48
vsftpd, 52
W
Webalizer, 51, 65
Webserver verwalten, 50
Webservices, 93
Webspace
Hosting-Angebote, 58
Webspace-Verwaltung, 65
Wiederherstellung, 88
Wiederverkäufer-Einstellungen, 47
WSDL, 96
Z
Zeitzone ändern, 45
Zugriffsstatistiken, 51, 65
Zwei-Faktor-Authentifizierung, 45
151
152
Die neue Generation der Serververwaltung.
LiveConfig ist eine völlig neuartige Software zur Verwaltung von Servern. LiveConfig
erkennt und berücksichtigt die jeweilige Distribution, bietet eine blitzschnelle und
elegante Web-Oberfläche und benötigt dabei weder PHP noch MySQL.
Dieses Referenzhandbuch umfasst alle Aspekte von LiveConfig - von der Installation
und den ersten Schritten über Monitoring und Backup bis hin zu
Programmierschnittstellen und Erweiterungsmöglichkeiten.
Hosting. Software.
Keppler IT GmbH
Am Weichselgarten 7
91058 Erlangen
Tel.: +49-9131-691 480
Fax: +49-9131-691 489
[email protected]
www.liveconfig.com
facebook.com/liveconfig
twitter.com/liveconfig