LDAP scripting
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_admin.php gen_passwd_admin.php kader_maak_html.php statistiek_xml.php DBF_ftps_lget_LidGG_en_XB.sh gen_group_code2.php gen_passwd_code2.php kader_maak_lijsten.sh statistiek_xml.sh LDAP_bepaal_startconditie.php gen_group_hcc.php gen_passwd_hcc.php kader_maak_txt.php sync_hobbynetbin.sh LDAP_cronjob.sh gen_hobbyabon.php gen_pc30_maand_rap.php kader_maak_xb_csv.php sync_hobbynetetc.sh LDAP_include.php gen_kader_csv.php gen_shadow_admin.php locale_checker.sh sync_hobbynetfw.sh LDAP_lid_weg.php gen_kaderfunc.php gen_shadow_code2.php mail_reports.sh sync_hobbynetlib.sh LDAP_vul_kader_vanuit_XB_csv.php gen_kaderlist.php gen_shadow_hcc.php mailman-specials upd_code2_accounts.sh LDAP_vul_leden_vanuit_LIDGG.php gen_ldap_bul_export.php gen_xml_fw_ip4.php other-specials upd_hcc_accounts.sh dump_ldap.sh gen_ldap_cor_export.php gen_xml_fw_ip6.php popbull-specials upd_mailserver.sh enquete-specials gen_ldap_kader_export.php get_mailman_lists.sh purge_hccforums.php upd_nameserver.sh export_ldap_scripts.sh gen_leden_csv.php hccforums_db.php purge_hccforums.sh upd_srv export_xml_server.sh gen_maand_rap.php import_ldap_scripts.sh restore_ldap.sh upg_vmware_tools forum-specials gen_mail_exclude_txt.php import_tripolis_csv.php run_maand_rapport.sh upload_compusers_csv.sh gen_compusers_csv.php gen_mx_hcc.php import_xml_server.sh run_tripolis_export.sh upload_kader_csv.sh gen_fw.sh gen_mx_hobby.php init_ldap.sh run_tripolis_import.sh upload_leden_csv.sh
- De groep scripts die beginnen met LDAP_ behoren tot de groep scripts die de nachtelijke import van de LIDGG doen die van DBF komt. Auteur is Hans Verbeek.
- Alles wat met gen_ begint, converteert gegevens uit ldap in een of ander standaard regel formaat naar standard output. Veelal CSV formaat.
- import-ldap-scripts.sh, export-ldap-scripts.sh en export_xml-server.sh zijn scripts om snel een kopie naar lokaal (/home/egbert) te kunnen maken. Met import-ldap-scripts worden de scripts in de /usr/local/hobbynet/* directories overschreven! KIJK DUS UIT! Deze script hebben eigenlijk niets met de LDAP server te maken.
Crontab
# For more information see the manual pages of crontab(5) and cron(8) # # 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 # 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 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 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.
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 die summiere gegevens te herkennen als led of niet-lid is een php script gemaakt (te vinden in mailman-specials).
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 aleen 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 speodig 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 gebeurd 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 sootgelijke 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