Peter Hormanns
2019-12-09 9f8db658bf07b13c3f7051e7bce8b678c2cfd453
1x die ToDos durchgegangen
15 files modified
128 ■■■■■ changed files
source/glossar.rst 2 ●●● patch | view | raw | blame | history
source/referenz/domain/domainverwaltung.rst 3 ●●●●● patch | view | raw | blame | history
source/referenz/hsadmin/createdomain.js 4 ●●●● patch | view | raw | blame | history
source/referenz/hsadmin/createdomainandadmin.js 29 ●●●● patch | view | raw | blame | history
source/referenz/hsadmin/createuseranddb.js 8 ●●●● patch | view | raw | blame | history
source/referenz/hsadmin/domain.rst 15 ●●●● patch | view | raw | blame | history
source/referenz/hsadmin/emailaliases.rst 5 ●●●● patch | view | raw | blame | history
source/referenz/hsadmin/mysqldb.rst 5 ●●●●● patch | view | raw | blame | history
source/referenz/hsadmin/mysqluser.rst 9 ●●●●● patch | view | raw | blame | history
source/referenz/hsadmin/postgresqldb.rst 7 ●●●●● patch | view | raw | blame | history
source/referenz/hsadmin/postgresqluser.rst 12 ●●●● patch | view | raw | blame | history
source/referenz/hsadmin/q.rst 10 ●●●● patch | view | raw | blame | history
source/referenz/hsadmin/user.rst 11 ●●●● patch | view | raw | blame | history
source/referenz/htaccess.rst 4 ●●●● patch | view | raw | blame | history
source/referenz/webpaket/verzeichnisebenen-domain-admin.rst 4 ●●●● patch | view | raw | blame | history
source/glossar.rst
@@ -80,4 +80,4 @@
    Synonym für einen Mitgliedsnamen.
   Vacation
    .. todo:: beschreiben
    In diesem Zusammenhang steht Vacation für eine Abwesenheit eines E-Mail-Empfängers. Ein gleichnamiges Programm kann Abwesenheitsbenachrichtigungen an die Versender von E-Mail an den abwesenden Empfänger versenden.
source/referenz/domain/domainverwaltung.rst
@@ -23,6 +23,9 @@
.. todo:: M.W. ist das falsch. Es gibt einen gesonderten Account dafür. (juh)
.. todo:: PH: In der Doku heißt diese Rolle bisher "Domain-Verwalter". Ich fand das aber immer schon unglücklich, weil Verwalter auch die deutsche Übersetzung zum Administrator ist.
.. note::
        Die Anzahl der pro Tag möglichen Registrierungen ist beschränkt, um Missbrauch vorzubeugen.
source/referenz/hsadmin/createdomain.js
@@ -4,7 +4,7 @@
function pwGen() {
       var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_#%&+!?=";
       var string_length = 8;
       var string_length = 12;
       var randomstring = '';
       for (var i=0; i<string_length; i++) {
                  var rnum = Math.floor(Math.random() * chars.length);
@@ -19,4 +19,4 @@
       var randomPassword = pwGen();
       var createdUser = user.add({set:{name:userName,password:randomPassword,shell:'/bin/bash'}});
       var createdDomain = domain.add({set:{name:domainName,user:userName}});
       print("created domain " + createdDomain[0].name + " with domainadmin " + createdUser[0].name + " and password " + randomPassword);
       print("created domain " + createdDomain[0].name + " with domainadmin " + createdUser[0].name + " and password " + randomPassword);
source/referenz/hsadmin/createdomainandadmin.js
@@ -3,20 +3,21 @@
createDomainAndDomainAdmin(arguments);
function pwGen() {
       var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_#%&+!?=";
       var string_length = 8;
       var randomstring = '';
       for (var i=0; i<string_length; i++) {
                  var rnum = Math.floor(Math.random() * chars.length);
                  randomstring += chars.substring(rnum,rnum+1);
              }
       return randomstring;
    var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_#%&+!?=";
    var pwLength = 12;
    var randomstring = '';
    for (var i=0; i<pwLength; i++) {
        var rnum = Math.floor(Math.random() * chars.length);
        randomstring += chars.substring(rnum,rnum+1);
    }
    return randomstring;
}
function createDomainAndDomainAdmin(args) {
       var domainName = args[0];
       var userName = 'xyz00-' + args[0].replace("-","_");
       var randomPassword = pwGen();
       var createdUser = user.add({set:{name:userName,password:randomPassword,shell:'/bin/bash'}});
       var createdDomain = domain.add({set:{name:domainName,user:userName}});
       print("created domain " + createdDomain[0].name + " with domainadmin " + createdUser[0].name + " and password " + randomPassword);
    var domainName = args[0];
    var userName = 'xyz00-' + args[0].replace("-","_");
    var randomPassword = pwGen();
    var createdUser = user.add({set:{name:userName,password:randomPassword,shell:'/bin/bash'}});
    var createdDomain = domain.add({set:{name:domainName,user:userName}});
    print("created domain " + createdDomain[0].name + " with domainadmin " + createdUser[0].name + " and password " + randomPassword);
}
source/referenz/hsadmin/createuseranddb.js
@@ -4,9 +4,9 @@
function pwGen() {
   var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_#%&+!?=";
   var string_length = 8;
   var pwLength = 18;
   var randomstring = '';
   for (var i=0; i<string_length; i++) {
   for (var i=0; i<pwLength; i++) {
       var rnum = Math.floor(Math.random() * chars.length);
       randomstring += chars.substring(rnum,rnum+1);
   }
@@ -18,5 +18,5 @@
   var dbName = userName;
   var randomPassword = pwGen();
   var createdUser = mysqluser.add({set:{name:userName,password:randomPassword}});
   var createdDatabase = mysqldb.add({set:{name:userName,owner:userName}});
   print("created user and database " + createdDatabase[0].name + " with password " + randomPassword);
   var createdDatabase = mysqldb.add({set:{name:dbName,owner:userName}});
   print("created user " + createdUser[0].name + " and database " + createdDatabase[0].name + " with password " + randomPassword);
source/referenz/hsadmin/domain.rst
@@ -52,6 +52,8 @@
   Der Paket-Hive wird als Weiterleitung (transport) beim Mail-In-Server eingetragen. Ist die Option aktiv, ist der Hostsharing-Mail-In-Server Backup-MX. Der eigentliche Mailserver befindet sich außerhalb der Infrastruktur von Hostsharing (z.B. anderer Provider, DSL-Anschluss mit fester IP)
letsencrypt
   Es wird automatisch ein TLS Zertifikat für diese Domain und alle im Feld „validsubdomainnames“ angegebenen Subdomains erzeugt
autoconfig
   Eine Unterstützung für die Konfiguration von E-Mail-Programmen durch die Verfahren "Autoconfig" (Mozilla) und "Autodiscover" (Microsoft) wird für die Domain eingeschaltet
.. note::
@@ -62,6 +64,15 @@
.. code-block:: console
    xyz00@hsadmin> domain.add ({set:{name:'hs-example.de',user:'xyz00-doms'}})
    xyz00@hsadmin> domain.add({set:{name:'hs-example.de',user:'xyz00-hsexample'}})
.. todo:: Weitere Beispiele, mindestens noch eins mit where-Kondition
.. code-block:: console
    xyz00@hsadmin> domain.search({where:{name:'hs-example.de'}})
    xyz00@hsadmin> domain.remove({where:{name:'hs-example.de'}})
Achtung: bei einer Änderung der Domain-Optionen müssen immer alle Optionen angegeben werden, die gesetzt sein sollen!
.. code-block:: console
    xyz00@hsadmin> domain.update({where:{name:'hs-example.de'},set:{domainoptions:['htdocsfallback','indexes','greylisting','letsencrypt','autoconfig']}})
source/referenz/hsadmin/emailaliases.rst
@@ -48,6 +48,9 @@
    xyz00@hsadmin> emailalias.add ({set:{name:'xyz00',target:'webmaster@hs-example.de'}})
.. code-block:: console
    xyz00@hsadmin> emailalias.search ({where:{name:'xyz00'}})
    xyz00@hsadmin> emailalias.update ({where:{name:'xyz00'},set:{target:'xyz00-maibox,webmaster@hs-example.de'}})
    xyz00@hsadmin> emailalias.remove ({where:{name:'xyz00'}})
.. todo:: Weitere Beispiele, mindestens noch eins mit where-Kondition
source/referenz/hsadmin/mysqldb.rst
@@ -44,6 +44,7 @@
.. code-block:: console
    xyz00@hsadmin> mysqldb.add ({set:{name:'xyz00_abc',owner:'xyz00_owner',encoding:'latin1'}})
    xyz00@hsadmin> mysqldb.add ({set:{name:'xyz00_abc',owner:'xyz00_owner'}})
    xyz00@hsadmin> mysqldb.search ({where:{name:'xyz00_abc'}})
    xyz00@hsadmin> mysqldb.remove ({where:{name:'xyz00_abc'}})
.. todo:: Weitere Beispiele, mindestens noch eins mit where-Kondition
source/referenz/hsadmin/mysqluser.rst
@@ -34,7 +34,7 @@
Im Modul ``mysqluser`` stehen folgende Felder zur Verfügung.
name
   Name des Datenbank-Benutzers (z.B. ``xyz00_abc``)
   Name des Datenbank-Benutzers (z.B. ``xyz00_owner``)
password
   Passwort des Datenbank-Benutzers
@@ -45,7 +45,8 @@
.. code-block:: console
    xyz00@hsadmin> mysqluser.add  ({set:{name:'xyz00_owner',password:'!1?2-3aBc'}})
    xyz00@hsadmin> mysqluser.add({set:{name:'xyz00_owner',password:'!1?2-3aBc'}})
    xyz00@hsadmin> mysqluser.search({where:{name:'xyz00_owner'}})
    xyz00@hsadmin> mysqluser.remove({where:{name:'xyz00_owner'}})
    xyz00@hsadmin> mysqluser.update({where:{name:'xyz00_owner'},set:{password:'neues-passwort'}})
 
.. todo:: Weitere Beispiele, mindestens noch eins mit where-Kondition
source/referenz/hsadmin/postgresqldb.rst
@@ -44,7 +44,6 @@
.. code-block:: console
    xyz00@hsadmin> postgresqldb.add ({set:{name:'xyz00_abc',owner:'xyz00_abc',encoding:'latin1'}})
.. todo:: Weitere Beispiele, mindestens noch eins mit where-Kondition
    xyz00@hsadmin> postgresqldb.add({set:{name:'xyz00_abc',owner:'xyz00_owner'}})
    xyz00@hsadmin> postgresqldb.search({where:{name:'xyz00_abc'}})
    xyz00@hsadmin> postgresqldb.remove({where:{name:'xyz00_abc'}})
source/referenz/hsadmin/postgresqluser.rst
@@ -34,7 +34,7 @@
Im Modul ``postgresqluser`` stehen folgende Felder zur Verfügung.
name
   Name des Datenbank-Benutzers (z.B. ``xyz00_abc``)
   Name des Datenbank-Benutzers (z.B. ``xyz00_owner``)
password
   Passwort des Datenbank-Benutzers
@@ -45,6 +45,12 @@
.. code-block:: console
    xyz00@hsadmin> postgresqluser.add ({set:{name:'xyz00_abc',password:'!1?2-3aBc'}})
    xyz00@hsadmin> postgresqluser.add ({set:{name:'xyz00_owner',password:'!1?2-3aBc'}})
 
.. todo:: Weitere Beispiele bringen
weitere Beispiele:
.. code-block:: console
    xyz00@hsadmin> postgresqluser.search ({where:{name:'xyz00_owner'}})
    xyz00@hsadmin> postgresqluser.update ({where:{name:'xyz00_owner'},set:{password:'neues-passwort'}})
    xyz00@hsadmin> postgresqluser.remove ({where:{name:'xyz00_owner'}})
source/referenz/hsadmin/q.rst
@@ -10,7 +10,13 @@
.. option:: q.search
   Das HSAdmin-Modul hat nur die Funktion ``search``.
   Hiermit ist die Suche nach HSAdmin-Aktionen möglich.
   Hiermit ist die Ausgabe der bereits ausgeführten HSAdmin-Aktionen möglich.
   Die Ausgabe zeigt an, ob eine Aktion erfolgreich abgeschlossen werden konnte
   oder ob beim Ausrollen der Konfiguration auf den Server Fehler aufgetreten sind.
   Im Erfolgsfall wird als Status 'done' angezeigt. Wenn Fehler aufgetreten sind
   wird er Status 'error' ausgegeben. Daneben wird eine interne Fehlermeldung
   im Feld 'exception' angezeigt. Wenden Sie sich im Fehlerfall bitte an an den Service.
Beispiele
=========
@@ -19,5 +25,3 @@
    $  q.search ({where:{user:'xyz00'}})
.. todo:: Weitere Beispiele, mindestens noch eins mit where-Kondition
source/referenz/hsadmin/user.rst
@@ -58,7 +58,14 @@
.. code-block:: console
    xyz00@hsadmin> user.add ({set:{name:'xyz00-mustermann',comment:'Max Mustermann',password:'!1?2-3aBc',shell:'/bin/bash',quota_softlimit:'50',quota_hardlimit:'75'}})
    xyz00@hsadmin> user.add ({set:{name:'xyz00-mustermann',comment:'Max Mustermann',password:'!1?2-3aBc',shell:'/bin/bash'}})
.. todo:: Weitere Beispiele, mindestens noch eins mit where-Kondition
.. code-block:: console
    xyz00@hsadmin> user.search ({where:{name:'xyz00-mustermann'}})
    xyz00@hsadmin> user.update ({where:{name:'xyz00-mustermann'},set:{password:'neues-passwort'}})
    xyz00@hsadmin> user.update ({where:{name:'xyz00-mustermann'},set:{shell:'/bin/zsh'}})
    xyz00@hsadmin> user.update ({where:{name:'xyz00-mustermann'},set:{quota_softlimit:'50',quota_hardlimit:'75'}})
    xyz00@hsadmin> user.remove ({where:{name:'xyz00-mustermann'}})
source/referenz/htaccess.rst
@@ -9,8 +9,6 @@
Konfigurationen, die es ermöglichen, dass der Webserver Rechte anderer User erhalten kann, sind nicht erlaubt.
Dies betrifft folgende Funktionen: 
+-----------------------+
| Funktion              |
+=======================+
@@ -21,5 +19,7 @@
| Options -Index        |
+-----------------------+
.. todo:: Wenn das so stehen bleibt, sollte ergänzt werden, dass die Option "-Index" pro Domain als Domainoption gesetzt werden kann. Statt "FollowSymlink" ist das gefahrlose "+SymLinksIfOwnerMatch" gesetzt. Dadurch werden durch den Webserver nur Symlinks auf die eigenen Dateien des Nutzers verfolgt.
source/referenz/webpaket/verzeichnisebenen-domain-admin.rst
@@ -10,6 +10,8 @@
.. todo:: MOS: Hier vllt. deutlicher machen, dass "-doms" der selbst gewählt Name ist. Außerdem passt "-doms" nicht zu "-abc" in der folgenden Tabelle. Bei allen Verzeichnislisten fände ich auch schön, wenn der vollständige Pfad angegeben würde, z.B. "Verzeichnisstruktur des Domain-Admin unter /home/pacs/xyz00/", weil ich sonst mir die Verzeichnisstruktur nur schwer vorstellen kann.
.. todo:: PH: Der Name 'xyz00-doms' für einen User/Domainadministrator ist aus mehreren Gründen sehr unglücklich: Erstens führt es zur Verzeichnishierarchie /home/pacs/xyz00/users/doms/doms/example.com (enthält zweimal "doms") und zweitens verleitet der Name dazu alle Domains bei einem User aufzuschalten. Best practice ist es aber mindestens für jede genutze Domain einen eigenen Domainadministrator zu haben. Da wäre 'xyz00-example' als Beispiel besser geeignet.
Danach können die Verzeichnisse mit dem Befehl :command:`ls` angezeigt werden.
.. code-block:: console
@@ -72,4 +74,6 @@
.. todo:: MOS: Die Bezeichnung als "externe Software" finde ich verwirrend. Sie ist extern aus der Sicht von Hostsharing bzw. Apache, aber das ist doch die selbstinstallierte bzw. eigene Software des Mitglieds.
.. todo:: PH: Statt "externe Software" vielleicht besser CGI-Skripte bzw. Fast-CGI-Programme
Die Verzeichnisstruktur wird auch in :numref:`kap-einstieg-ordnerstruktur` beschrieben.