LDAP scripting: Difference between revisions

From Hobbynet Admin Wiki
Jump to navigation Jump to search
Line 70: Line 70:
==Mailserver==
==Mailserver==
De mailserver kreeg tot voor kort 2 bestanden van scripting-int, husers en b3a.txt. De inhoud van beide bestanden kan ook uit ldap gehaald worden. Hiervoor zijn de volgende scripts in gebruik:
De mailserver kreeg tot voor kort 2 bestanden van scripting-int, husers en b3a.txt. De inhoud van beide bestanden kan ook uit ldap gehaald worden. Hiervoor zijn de volgende scripts in gebruik:
* gen_hobbyabon.php. Dit script maakt een equivalent aan van husers en bevat alleen de betalende Hobbynet abonnees (enige tientallen regels).
* '''gen_hobbyabon.php'''. Dit script maakt een equivalent aan van husers en bevat alleen de betalende Hobbynet abonnees (enige tientallen regels).
* gen_kaderfunc.php. Dit script is de vervanger van b3a.txt, de lijst van alle kaderfuncties (ongeveer 1200).
* '''gen_kaderfunc.php'''. Dit script is de vervanger van b3a.txt, de lijst van alle kaderfuncties (ongeveer 1200).
* gen_kaderlist.php. Een hulp bestand met alleen de 7 cijferige lidnummers van alle kaderleden (ruim 700). Deze lijst wordt op de mailserver gebruikt om incidenteel kadermailboxen op te ruimen.
* '''gen_kaderlist.php'''. Een hulp bestand met alleen de 7 cijferige lidnummers van alle kaderleden (ruim 700). Deze lijst wordt op de mailserver gebruikt om incidenteel kadermailboxen op te ruimen.
* gen_mail_exclude_txt.php. Nog een hulp bestand waar in de interessegroepen staan die geen functionele mailadressen nodig hebben. Dit zijn vooral de ig's die geen echte ig zijn zoals de HCC zelf en de RvA en RvT maar wel als zodanig in ldap staan. Ook de cursus presentatoren vallen hieronder.
* gen_mail_exclude_txt.php. Nog een hulp bestand waar in de interessegroepen staan die geen functionele mailadressen nodig hebben. Dit zijn vooral de ig's die geen echte ig zijn zoals de HCC zelf en de RvA en RvT maar wel als zodanig in ldap staan. Ook de cursus presentatoren vallen hieronder.
* mail_reports.sh. Dit script mailt de dagelijkse logs
* mail_reports.sh. Dit script mailt de dagelijkse logs
   
   
Deze scripts worden door het script '''upd_mailserver.sh''' gebundeld tot een cronjob die elke nacht loopt. Dit script draait de 4 php scripts, doet wat na bewerking, kopieert de output naar mail-dev-int en start ''' upd_all''' op mail-dev-int. Tenslotte worden nog de relay-domains opgehaald van mail-dev-int (dat bestand is pas up-to-date nadat upd_all op mail-dev-int heeft gelopen) en vervolgens wordt dit bestand naar mail2 gekopieerd.
Deze scripts worden door het script '''upd_mailserver.sh''' gebundeld tot een cronjob die elke nacht loopt. Dit script draait de 4 php scripts, doet wat na bewerking, kopieert de output naar mail-dev-int en start ''' upd_all''' op mail-dev-int. Tenslotte worden nog de relay-domains opgehaald van mail-dev-int (dat bestand is pas up-to-date nadat upd_all op mail-dev-int heeft gelopen) en vervolgens wordt dit bestand naar mail2 gekopieerd.
==Mailman==
==Mailman==
Omdat ter zijner tijd een aantal Mailman mailinglijsten naar Tripolis gaan, is een script gemaakt om de Mailman info over de abonnees op te halen. Om aan die summiere gegevens te herkennen of iemand lid of niet-lid is een php script gemaakt (te vinden in mailman-specials).
Omdat ter zijner tijd een aantal Mailman mailinglijsten naar Tripolis gaan, is een script gemaakt om de Mailman info over de abonnees op te halen. Om aan die summiere gegevens te herkennen of iemand lid of niet-lid is een php script gemaakt (te vinden in mailman-specials).

Revision as of 16:38, 20 January 2014

Inleiding

Omdat de ldap server in sneltreinvaart de bron voor allerlei services aan het worden is, ontstaat er ook een migratie van (veelal perl) scripts op scripting-int naar php scripts op hcc-ldap-lb1-int. Hcc-ldap-lb1-int is net als scripting-int een server met verhoogde security. Er mag dus wel van deze server naar andere servers geconnect worden maar niet andersom. Dit is vergelijkbaar met de situatie op scripting-int. Deze mogelijkheid is essentieel voor de goede werking van sommige scripts.

Type scripts

Er zijn globaal een aantal soorten scripts te onderscheiden:

  • De eigenlijke scripts die een bepaalde taak uitvoeren en vaak naar stdout schrijven (.php soms geen extensie).
  • De cronjob scripts. Gewoonlijk herkenbaar aan de .sh extensie. Deze scripts bundelen vaak meerdere php scripts tot complete oplossingen.
  • Scripts die voor initialiseren en backuppen van de ldap directory nodig zijn (init_ldap, dump_ldap en restore_ldap). Behalve dump_ldap mogen deze scripts nooit zomaar gedraaid worden; de ldap directory zou vernield worden.

Overzicht scripts

0_DIT_IS_EEN_LOCAL_DIR            gen_group_code2.php        gen_passwd_admin.php     kader_maak_txt.php      statistiek_xml.sh
DBF_ftps_lget_LidGG_en_XB.sh      gen_group_hcc.php          gen_passwd_code2.php     kader_maak_xb_csv.php   sync_hobbynetbin.sh
LDAP_bepaal_startconditie.php     gen_hobbyabon.php          gen_passwd_hcc.php       locale_checker.sh       sync_hobbynetetc.sh
LDAP_cronjob.sh                   gen_kader_csv.php          gen_pc30_maand_rap.php   mail_reports.sh         sync_hobbynetfw.sh
LDAP_include.php                  gen_kaderfunc.php          gen_shadow_admin.php     mailman-specials        sync_hobbynetlib.sh
LDAP_lid_weg.php                  gen_kaderlist.php          gen_shadow_code2.php     other-specials          upd_code2_accounts.sh
LDAP_vul_kader_vanuit_XB_csv.php  gen_ldap_bul_export.php    gen_shadow_hcc.php       popbull-specials        upd_hcc_accounts.sh
LDAP_vul_leden_vanuit_LIDGG.php   gen_ldap_cor_export.php    gen_xml_fw_ip4.php       purge_hccforums.php     upd_mailserver.sh
dump_ldap.sh                      gen_ldap_kader_export.php  gen_xml_fw_ip6.php       purge_hccforums.sh      upd_nameserver.sh
enquete-specials                  gen_leden_csv.php          hccforums_db.php         restore_ldap.sh         upd_srv
forum-specials                    gen_maand_rap.php          import_tripolis_csv.php  run_maand_rapport.sh    upg_vmware_tools
gen_compusers_csv.php             gen_mail_exclude_txt.php   init_ldap.sh             run_tripolis_export.sh  upload_compusers_csv.sh
gen_fw.sh                         gen_mx_hcc.php             kader_maak_html.php      run_tripolis_import.sh  upload_kader_csv.sh
gen_group_admin.php               gen_mx_hobby.php           kader_maak_lijsten.sh    statistiek_xml.php      upload_leden_csv.sh

Crontab

# For more information see the manual pages of crontab(5) and cron(8)
#################################################################################################################
#     Wijzigingen graag ook aanbrengen op deze wiki pagina: https://www.hobby.nl/hobby-adm/index.php/Cron_jobs  #
#################################################################################################################
# m h dom mon dow   command
0   6 * * * apt-get clean -y >/dev/null ; apt-get update >/dev/null ;apt-get upgrade -d -y >/dev/null
0  18 * * * apt-get clean -y >/dev/null ; apt-get update >/dev/null ;apt-get upgrade -d -y >/dev/null
45 23 * * * /usr/local/hobbynet/local/backup-encrypted.bash >>/var/log/backup_encrypted.log
50 23 * * * /usr/local/hobbynet/bin/sync_hobbynetbin.sh >>/var/log/sync_hobbynetbin.log
51 23 * * * /usr/local/hobbynet/bin/sync_hobbynetetc.sh >>/var/log/sync_hobbynetetc.log
52 23 * * * /usr/local/hobbynet/bin/sync_hobbynetlib.sh >>/var/log/sync_hobbynetlib.log
# firewall sync en herstart
55  5 * * * /usr/local/hobbynet/bin/sync_hobbynetfw.sh >/dev/null
0   6 * * * /etc/init.d/hobby-firewall restart >/dev/null
55 11 * * * /usr/local/hobbynet/bin/sync_hobbynetfw.sh >/dev/null
0  12 * * * /etc/init.d/hobby-firewall restart >/dev/null
55 17 * * * /usr/local/hobbynet/bin/sync_hobbynetfw.sh >/dev/null
0  18 * * * /etc/init.d/hobby-firewall restart >/dev/null
55 23 * * * /usr/local/hobbynet/bin/sync_hobbynetfw.sh >/dev/null
0   0 * * * /etc/init.d/hobby-firewall restart >/dev/null

# jobs below only active on hcc-ldap-lb1
5   2 * * * /usr/local/hobbynet/bin/upd_code2_accounts.sh >/var/log/upd_code2_accounts.log
6   2 * * * /usr/local/hobbynet/bin/upd_hcc_accounts.sh >/var/log/upd_hcc_accounts.log
10  2 * * * /usr/local/hobbynet/bin/LDAP_cronjob.sh  >>/var/log/LDAP_cronjob.log
15  2 * * * /usr/local/hobbynet/bin/run_tripolis_import.sh >>/var/log/run_tripolis_import.log 2>>/var/log/run_tripolis_import.err
20  2 * * * /usr/local/hobbynet/bin/purge_hccforums.sh >>/var/log/purge_hccforums.log
25  2 * * * /usr/local/hobbynet/bin/upd_mailserver.sh >/var/log/upd_mailserver.log
30  2 * * * /usr/local/hobbynet/bin/mail_reports.sh >/dev/null
35  2 * * * /usr/local/hobbynet/bin/upload_leden_csv.sh >/var/log/upload_leden_csv.log
40  2 * * * /usr/local/hobbynet/bin/upload_kader_csv.sh >/var/log/upload_kader_csv.log
45  2 * * * /usr/local/hobbynet/bin/kader_maak_lijsten.sh >/var/log/kader_maak_lijsten.log
50  2 * * * /usr/local/hobbynet/bin/run_tripolis_export.sh >/var/log/run_tripolis_export.log
55  2 * * * /usr/local/hobbynet/bin/statistiek_xml.sh >/var/log/statistiek_xml.log
0   4 1 * * /usr/local/hobbynet/bin/run_maand_rapport.sh >/var/log/maand_rap.log

Toepassingen

Soms zijn er een aantal scripts die bij elkaar horen en er voor een bepaalde toepassing zijn, zoals om de mailserver te updaten, dagelijkse bestanden voor Kantoor te maken, dagelijkse bestanden voor het Tripolis mail systeem en niet geheel onbelangrijk, scripts die ldap dagelijks bijwerken met de master data die bij DBF wordt bijgehouden.

Statistieken

Iedere nacht worden er door het script statistiek_xml.sh van alle groeperingen en van de complete HCC leden database statistieken in XML formaat gemaakt. Daarna worden deze statistieken met het script statistiek_xml.sh naar de kadernet server overgezet.

Mailserver

De mailserver kreeg tot voor kort 2 bestanden van scripting-int, husers en b3a.txt. De inhoud van beide bestanden kan ook uit ldap gehaald worden. Hiervoor zijn de volgende scripts in gebruik:

  • gen_hobbyabon.php. Dit script maakt een equivalent aan van husers en bevat alleen de betalende Hobbynet abonnees (enige tientallen regels).
  • gen_kaderfunc.php. Dit script is de vervanger van b3a.txt, de lijst van alle kaderfuncties (ongeveer 1200).
  • gen_kaderlist.php. Een hulp bestand met alleen de 7 cijferige lidnummers van alle kaderleden (ruim 700). Deze lijst wordt op de mailserver gebruikt om incidenteel kadermailboxen op te ruimen.
  • gen_mail_exclude_txt.php. Nog een hulp bestand waar in de interessegroepen staan die geen functionele mailadressen nodig hebben. Dit zijn vooral de ig's die geen echte ig zijn zoals de HCC zelf en de RvA en RvT maar wel als zodanig in ldap staan. Ook de cursus presentatoren vallen hieronder.
  • mail_reports.sh. Dit script mailt de dagelijkse logs

Deze scripts worden door het script upd_mailserver.sh gebundeld tot een cronjob die elke nacht loopt. Dit script draait de 4 php scripts, doet wat na bewerking, kopieert de output naar mail-dev-int en start upd_all op mail-dev-int. Tenslotte worden nog de relay-domains opgehaald van mail-dev-int (dat bestand is pas up-to-date nadat upd_all op mail-dev-int heeft gelopen) en vervolgens wordt dit bestand naar mail2 gekopieerd.

Mailman

Omdat ter zijner tijd een aantal Mailman mailinglijsten naar Tripolis gaan, is een script gemaakt om de Mailman info over de abonnees op te halen. Om aan die summiere gegevens te herkennen of iemand lid of niet-lid is een php script gemaakt (te vinden in mailman-specials).

  • import_mailman_lists.sh haalt de abonnee gegevens op. Er is een aanroep in dit script van een script op de mailserver. Dat script maakt bestanden aan met zinvolle namen. Die worden opgehaald en worden in de lokale data (sub)directory geplaatst.
  • import_mailman_csv.php leest alle opgehaalde bestanden in de lokale data (sub)directory, maakt zonodig niet-leden aan en plaatst optins voor de locatie bulletins bij de leden en niet-leden.

Maandrapportage

  • gen_maand_rap.php. Verzamelt alle data van Hobbynet abonnees en alle andere users in ldap. Optie -m mailt naar de accounthouder in het ldap record.
  • gen_pc30_maand_rap.php. Mailt specifiek de gegevens van de PC30 agents naar de teamleider.
  • run_maand_rapport.sh. Cronjob die bovenstaande scripts 1x per maand draait.

Passwd, shadow en group

  • gen_group_admin.php
  • gen_group_code2.php
  • gen_group_hcc.php
  • gen_passwd_admin.php
  • gen_passwd_code2.php
  • gen_passwd_hcc.php
  • gen_shadow_admin.php
  • gen_shadow_code2.php
  • gen_shadow_hcc.php
  • upd_admin_accounts.sh (is er niet)
  • upd_code2_accounts.sh
  • upd_hcc_accounts.sh

Deze scripts genereren de passwd, shadow en group entries voor de betalende leden (_code2), de admins (_admin, de lagere goden, op het moment niet gebruikt; er is wel een .hobby met alleen Roel v.d. Bussche erin) en voor de HCC groeperingen (_hcc). De output wordt op de shared etc omgeving neergezet zodat elke (web)server ze kan toevoegen aan de passwd.temp/shadow.temp/group.temp files. Hiervoor wordt de lokale job upd_usr (of upd_hobby_only) gedraaid.

Kantoor

Kantoor heeft beschikking over een ledenlijst en een kader/kernledenlijst die dagelijks up-to-date zijn. Deze lijsten zijn in CSV formaat zodat men zelf in de hand heeft hoe het bestand gebruikt wordt. Beiden worden dagelijks op de sftp omgeving van kantoor geplaatst.

  • upload_kader_csv.sh, de cronjob
  • gen_kader_csv.php, het php script
  • upload_leden_csv.sh, de cronjob
  • gen_leden_csv.php, het php script

CompUsers

Met CompUsers zijn speciale afspraken gemaakt door Kantoor in januari 2014. Zij krijgen een sterk verkorte lijst van ALLE leden voor hun administratie. Het streven is dit zo spoedig mogelijk te vervangen door een ander mechanisme zoals de partner check.

  • upload_compusers_csv.sh
  • gen_compusers_csv.php

Koppeling met Tripolis

Het oude "popbull" systeem dat bij HenZ draait wordt in de zomer van 2013 vervangen door Tripolis. Tripolis wordt al jaren gebruikt door kantoor voor het versturen van Digizine en de Nieuwsflash. Per groepering wordt een account aangemaakt met beperkte rechten waar mee de Correspondent van de groepering mailings kan versturen. Om Tripolis en ldap in sync te houden wordt er elke nacht data uitgewisseld. Ldap is leidend in deze maar als mensen zich uitschrijven (opt-out) via de knop onder aan de mailing, moet dat doorgegeven worden aan ldap.

Sync van Tripolis naar ldap

  • run_tripolis_import.sh, de eigenlijke cronjob
  • import_tripolis_csv.php, vertaalt de CSV van opt-outs naar ldap

Tripolis plaatst elke nacht om 00:01 een CSV bestand met de opt-outs per bulletin van de vorige dag. Dit gebeurt met datums. Als de datum van gisteren ingevuld staat is daar een optout geweest. Als er geen opt-outs zijn, bevat het veld slechts een lege string. Het bestand wordt naar de ldap server gehaald waar een aantal versies bewaard worden. De bestanden wordt verwijderd van de sftp omgeving. Vervolgens worden het gedownloade bestand verwerkt om bij het lid de hccOptIn van dit bulletin te verwijderen.

Sync van ldap naar Tripolis

  • run_tripolis_export.sh, de eigenlijk cronjob
  • gen_ldap_bul_export.php, maakt een volledige lijst aan van emailadres, lidnr en optins
  • gen_ldap_bul_header.php, maakt de header voor de export CSV
  • gen_ldap_cor_export.php, maakt een lijst van alle correspondenten voor kantoor

Het export bestand wordt elke nacht (om 02:50) op de sftp omgeving voor Tripolis klaargezet. Tripolis haalt het om 05:00 op. Omdat de opt-outs van Tripolis om 02:15 verwerkt worden, is dit bestand dus al bijgewerkt voor wat betreft die opt-outs. Alle andere wijzigingen komen van de hcc.nl profielpagina's of mutaties door derden op ldap (mutaties door Hobbynet staff of PC30).

Eénmalige jobs

Er zijn een aantal php scripts voor éénmalig gebruik gemaakt. Deze worden niet in de cronjobs gebruikt maar waren slechts bedoeld om de lijsten opgeleverd door Kantoor in LDAP te krijgen. Deze scripts zijn meestal in subdirectories geplaatst. De reden van bewaren is voornamelijk code voorbeelden te hebben voor soortgelijke scripts. Voorbeelden zijn:

  • import_digizine_csv.php, de initiële Digizine lijst
  • import_nieuwsflash_csv.php, de initiële Nieuwsflash lijst
  • import_popbull_csv.php, de initiële lijst zoals die van HenZ (popbull provider) komt

ISIZ enquête

  • gen_enquete_csv.php
  • gen_enquete_csv_no_mail.php

Nameserver

  • gen_mx_hcc.php
  • gen_mx_hobby.php
  • upd_nameserver.sh

Firewall (op ldap servers)

  • gen_xml_fw_ip4.php
  • gen_xml_fw_ip6.php
  • sync_hobbynetfw.sh
  • gen_fw.sh