Uitleg scripts: Difference between revisions

From Hobbynet Admin Wiki
Jump to navigation Jump to search
Line 1: Line 1:
== Introductie ==
== Introductie ==
De scripting is er geheel op gericht de relevante tabellen in de postfixadmin database, in z'n geheel te vervangen. De tabellen zijn helemaal standaard gehouden zoals postfixadmin ze aanmaakt bij de installatie. Het heeft dus ook geen zin postfixadmin te gebruiken om veranderingen aan te brengen, of het moet zijn om direct effect te hebben zonder upd_smail (of upd_all) te draaien. De aanpassingen moet altijd in de template bestanden en/of in de handmatig bijgehouden bestanden aangebracht worden.
De (perl) scripts zijn bewust zeer kort gehouden om ze zo modulair mogelijk te houden. De tactiek is telkens hetzelfde: bij een SQL loader file is er een header, tussenliggende gelijksoortige data regels en een footer te onderscheiden. De header is alle tekst die door een MySQL dump gemaakt wordt (met een delete-if-exists erin), tot en met de eerste SQL regel: INSERT INTO. De diverse scripts voegen de tussenliggende data regels toe en de footer is gewoonlijk een laatste data regel maar dan eindigend op ''';''' in plaats van ''','''. Een en ander is goed te zien in het '''upd_smail''' shell-script.  
De (perl) scripts zijn bewust zeer kort gehouden om ze zo modulair mogelijk te houden. De tactiek is telkens hetzelfde: bij een SQL loader file is er een header, tussenliggende gelijksoortige data regels en een footer te onderscheiden. De header is alle tekst die door een MySQL dump gemaakt wordt (met een delete-if-exists erin), tot en met de eerste SQL regel: INSERT INTO. De diverse scripts voegen de tussenliggende data regels toe en de footer is gewoonlijk een laatste data regel maar dan eindigend op ''';''' in plaats van ''','''. Een en ander is goed te zien in het '''upd_smail''' shell-script.  



Revision as of 21:13, 28 February 2010

Introductie

De scripting is er geheel op gericht de relevante tabellen in de postfixadmin database, in z'n geheel te vervangen. De tabellen zijn helemaal standaard gehouden zoals postfixadmin ze aanmaakt bij de installatie. Het heeft dus ook geen zin postfixadmin te gebruiken om veranderingen aan te brengen, of het moet zijn om direct effect te hebben zonder upd_smail (of upd_all) te draaien. De aanpassingen moet altijd in de template bestanden en/of in de handmatig bijgehouden bestanden aangebracht worden.

De (perl) scripts zijn bewust zeer kort gehouden om ze zo modulair mogelijk te houden. De tactiek is telkens hetzelfde: bij een SQL loader file is er een header, tussenliggende gelijksoortige data regels en een footer te onderscheiden. De header is alle tekst die door een MySQL dump gemaakt wordt (met een delete-if-exists erin), tot en met de eerste SQL regel: INSERT INTO. De diverse scripts voegen de tussenliggende data regels toe en de footer is gewoonlijk een laatste data regel maar dan eindigend op ; in plaats van ,. Een en ander is goed te zien in het upd_smail shell-script.

Hieronder volgt een korte beschrijving van de perl scripts (niet in volgorde van executie). De volgorde van executie valt af te lezen uit upd_smail. Daaruit blijkt dat eerst de mailboxen worden aangemaakt, dan de aliases en tenslotte de domeinen (en tevens de alias_domains).

gen_alias

Dit script genereert alle aliases die uit husers gemaakt kunnen worden. Voor de hobbynet leden wordt een alias gemaakt met de naam van het systeem en een met de naam van de gebruiker. De eerste is hetzelfde als de mailbox naam die al gegenereerd is door gen_mailbox. Zie aldaar. Er komt dus een systeem@systeem.hobby.nl en een gebruiker@systeem.hobby.nl die beide naar de mailbox systeem@systeem.hobby.nl wijzen. Als het domain kader.hobby.nl is wordt dat vervangen door kader.hcc.nl. Er wordt een alias gemaakt die naar zichzelf wijst (het lidnummer uit husers) en een met de gewenste naam uit het in husers opgenomen email adres. Er komt dus een 1234567@kader.hcc.nl en een a.b.c.janssen@kader.hcc.nl die beide naar de mailbox 1234567@kader.hcc.nl verwijzen.

Dit script moet nog worden uitgebreid teneinde ook niet-automatische aliases toe te voegen uit een platte tekst file.

gen_alle_XXXXX_alias

Deze scripts genereren een alias die alle voorzitters, secretarissen, penningmeesters, webmasters, gewone bestuursleden en kernleden als target hebben. Deze aliases worden zelden gebruikt, b.v. om alle penningmeesters uit te nodigen voor een penm. overleg. De script zijn nagenoeg identiek, alleen gen_alle_bestl_alias is een alias naar de 4 anderen (voorz, secr, penm en blid. Webmasters en kernleden zijn geen bestuursleden dus die worden niet meegenomen. Zoals altijd zijn de target adressen mailboxen herkenbaar aan het lidnummer.

gen_best_alias

Dit script genereert de bestuur alias per groepering. Dus per groepering de voorzitter, secretaris, penningmeester en bestuursleden met als naam bestuur@<groepering>.hcc.nl. De informatie wordt gehaald uit de b3a.txt file. Die file wordt uit de kadertab.csv gemaakt. Deze slag staat volledig los van deze scripts en wordt alleen gedraaid als er een nieuwe kadertab wordt aangeboden door het HCC kantoor. De groepering kantoor wordt overgslagen. Er is geen bestuur@kantoor.hcc.nl...

gen_domain

Dit script genereert alleen de SQL voor de domeinen in husers. Voor de kaderleden wordt weer kader.hobby.nl vervangen door kader.hcc.nl. Het betreft dus <systeem>.hobby.nl en kader.hcc.nl.

gen_func_alias

Dit script genereert alle functionele aliases voor elke groepering. Het maakt aliases aan voor voorz@<groepering>.hcc.nl (en v-voorz), secr (en 2de-secr) en penm (en 2de-penm). Teven wordt info@<groepering>.hcc.nl gemaakt die naar de secretaris verwijst. Alle verwijzingen zijn natuurlijk naar lidnummers (dus direct naar mailboxen).

Voor de webmasters is een apart script gemaakt omdat er variabel aantal webmasters per groepering kan zijn. Zie gen_webm_alias.

gen_hcc_domain

Dit script genereert alle HCC domeinen voor de domain tabel en tevens voor de alias_domain tabel (door -gg/afd-/cg- weg te laten). Ook worden uit een platte tekst file de (met de hand beheerde) alias_domains toegevoegd. De layout van de tekst file is simpel: alias_domain, target_domain. Voorbeeld:

# list of alias_domains
# mirror.tld,target.tld
#
hccm.nl,modelbaan-gg.hcc.nl
hcc-modelbaan.nl,modelbaan-gg.hcc.nl
hcc-games.nl,games-gg.hcc.nl
hcc-clan.nl,games-gg.hcc.nl

Het alias_domain modelbaan.hcc.nl wordt automatisch gegenereerd (door -gg/afd-/cg- weg te laten) en mag dus niet in de platte tekst file staan.

gen_mailbox

Dit script maakt de mailbox informatie aan. Ook worden salted MD5 passwords gegenereerd aan de hand van de HCC passwords in husers. Hiervoor wordt de perl module unix_md5_crypt gebruikt en een kleine subroutine om het salt te generern. Bij elke run van gen_mailbox worden deze strings anders maar ze blijven een match geven met het HCC password. De mailbox naam is altijd de systeem naam voor hobbynet leden en het lidnummer voor kaderleden. Het domein voor kaderleden is altijd kader.hcc.nl, voor hobbynet leden altijd <systeem>.hobby.nl.

gen_sidn_domain

Dit script vult de SQL voor de domain tabel aan met de domeinen zoals die bij SIDN bekend zijn. Dit is meer een probeerstel wnt die lijst is niet compleet. We hebben ook domeinen bij EuroDNS en elders staan. Waarschijnlijk is een met de hand bijgehouden file beter die eenmalig uit named.conf.local wordt gemaakt. Daar staan n.l. alle domeinen in waar wij iets voor doen. Dit dan controleren aan de hand van MX records want als wij geen destination of backup zijn hoeft het domein niet opgenomen te worden.

gen_webm_alias

Dit script genereert de webm@<groepering>.hcc.nl alias die een variabel aantal target mailboxen kent. Ook wordt altijd de secretaris toegevoegd. In het geval dat er helemaal géén webmaster is aangemeld komt de mail dus tenminste in de mailbox van de secretaris.

upd_smail

Dit script is het overkoepelende script dat alle gen_* scripts op zijn beurt aanroept. upd_smail op zijn beurt wordt weer door upd_all aangeroepen. In dit script worden de SQL header files samengevoegd met de output van de verschillende gen_* scripts. Ook wordt een SQL footer toegevoegd, vaak alleen om de SQL te beëindigen met een ;. Tenslotte wordt per tabel de SQL uitgevoerd teneinde de tabel in z'n geheel te vervangen.

Relevant deel uit upd_smail:

echo "Building mailbox table..."
cp /etc/postfixadmin/mailbox_header.tmpl /etc/postfixadmin/mailbox.sql
$HNET_BIN/gen_mailbox | sort | uniq >> /etc/postfixadmin/mailbox.sql
cat /etc/postfixadmin/mailbox_footer.tmpl >> /etc/postfixadmin/mailbox.sql
$CHMOD 644 /etc/postfixadmin/mailbox.sql
$CHOWN root:root /etc/postfixadmin/mailbox.sql
mysql -u postfixadmin -ppassword postfixadmin </etc/postfixadmin/mailbox.sql

echo "Building alias table..."
cp /etc/postfixadmin/alias_header.tmpl /etc/postfixadmin/alias.sql
$HNET_BIN/gen_alias | sort | uniq >> /etc/postfixadmin/alias.sql
$HNET_BIN/gen_func_alias >> /etc/postfixadmin/alias.sql
$HNET_BIN/gen_best_alias >> /etc/postfixadmin/alias.sql
$HNET_BIN/gen_webm_alias >> /etc/postfixadmin/alias.sql
$HNET_BIN/gen_alle_voorz_alias >> /etc/postfixadmin/alias.sql
$HNET_BIN/gen_alle_kernl_alias >> /etc/postfixadmin/alias.sql
$HNET_BIN/gen_alle_secr_alias >> /etc/postfixadmin/alias.sql
$HNET_BIN/gen_alle_penm_alias >> /etc/postfixadmin/alias.sql
$HNET_BIN/gen_alle_webm_alias >> /etc/postfixadmin/alias.sql
$HNET_BIN/gen_alle_blid_alias >> /etc/postfixadmin/alias.sql
$HNET_BIN/gen_alle_bestl_alias >> /etc/postfixadmin/alias.sql
cat /etc/postfixadmin/alias_footer.tmpl >> /etc/postfixadmin/alias.sql
$CHMOD 644 /etc/postfixadmin/alias.sql
$CHOWN root:root /etc/postfixadmin/alias.sql
mysql -u postfixadmin -ppassword postfixadmin </etc/postfixadmin/alias.sql

echo "Building domain and alias_domain table..."
cp /etc/postfixadmin/domain_header.tmpl /etc/postfixadmin/domain.sql
cp /etc/postfixadmin/alias_domain_header.tmpl /etc/postfixadmin/alias_domain.sql
$HNET_BIN/gen_domain | sort | uniq >> /etc/postfixadmin/domain.sql
$HNET_BIN/gen_hcc_domain >> /etc/postfixadmin/domain.sql
$HNET_BIN/gen_sidn_domain >> /etc/postfixadmin/domain.sql
cat /etc/postfixadmin/domain_footer.tmpl >> /etc/postfixadmin/domain.sql
cat /etc/postfixadmin/alias_domain_footer.tmpl >> /etc/postfixadmin/alias_domain.sql
$CHMOD 644 /etc/postfixadmin/*domain.sql
$CHOWN root:root /etc/postfixadmin/*domain.sql
mysql -u postfixadmin -ppassword postfixadmin </etc/postfixadmin/domain.sql
mysql -u postfixadmin -ppassword postfixadmin </etc/postfixadmin/alias_domain.sql