1x die ToDos durchgegangen
| | |
| | | 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. |
| | |
| | | |
| | | .. 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. |
| | |
| | | |
| | | 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); |
| | |
| | | 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); |
| | |
| | | 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); |
| | | } |
| | |
| | | |
| | | 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); |
| | | } |
| | |
| | | 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); |
| | |
| | | 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:: |
| | | |
| | |
| | | |
| | | .. 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']}}) |
| | |
| | | |
| | | 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 |
| | |
| | | |
| | | .. 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 |
| | |
| | | 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 |
| | |
| | | |
| | | .. 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 |
| | |
| | | |
| | | .. 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'}}) |
| | |
| | | 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 |
| | |
| | | |
| | | .. 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'}}) |
| | |
| | | .. 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 |
| | | ========= |
| | |
| | | |
| | | $ q.search ({where:{user:'xyz00'}}) |
| | | |
| | | |
| | | .. todo:: Weitere Beispiele, mindestens noch eins mit where-Kondition |
| | |
| | | |
| | | .. 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'}}) |
| | | |
| | |
| | | Konfigurationen, die es ermöglichen, dass der Webserver Rechte anderer User erhalten kann, sind nicht erlaubt. |
| | | Dies betrifft folgende Funktionen: |
| | | |
| | | |
| | | |
| | | +-----------------------+ |
| | | | Funktion | |
| | | +=======================+ |
| | |
| | | | 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. |
| | | |
| | | |
| | | |
| | |
| | | |
| | | .. 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 |
| | |
| | | |
| | | .. 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. |