XML-RPC: Difference between revisions

From Hobbynet Admin Wiki
Jump to navigation Jump to search
(onderdruk logregels voor loadbalancer apache access)
(Actuele versie xmlrpc server interface)
Line 33: Line 33:


== Technische omschrijving ==
== Technische omschrijving ==
XML-RPC beschrijving van acties in hcc.nl LDAP database
<pre>
<pre>
2012.08.20 HaVe
2012.10.28 HaVe
XML-RPC Hobbynet versie 15.
XML-RPC Hobbynet versie 17.
 
// XML-RPC beschrijving van acties in hcc.nl LDAP database //


== HCCldap en/of HCCnet aanroepen
== HCCldap en/of HCCnet aanroepen
Line 116: Line 115:
                       array('nieuw_userPassword', $nieuw_userPassword)));
                       array('nieuw_userPassword', $nieuw_userPassword)));


// 2.3 wijzig wachtwoord - optie 3
// 2.3 wijzig wachtwoord en/of pseudoniem - optie 3
// (t.b.v. PC30 portal)
// (t.b.v. PC30 portal)
// (authenticatie op basis van beheerdernaam en beheerderwachtwoord)
// (authenticatie op basis van beheerdernaam en beheerderwachtwoord)
Line 133: Line 132:


// ** t.b.v. profielpagina van bestaande leden **
// ** t.b.v. profielpagina van bestaande leden **
// 2.4 wijzig wachtwoord - optie 4
// 2.5 wijzig pseudoniem
// (t.b.v. Drupal profiel-pagina)
// (t.b.v. Drupal profiel-pagina)
// (authenticatie op basis van hccPseudoniem en userPassword)
// (authenticatie op basis van hccLogin en userPassword)
// ** Deze aanpassingen worden doorgezet naar hccnet.nl (action=2) **
$request = xmlrpc_encode_request('HCCldap',
$request = xmlrpc_encode_request('HCCldap',
                 array('WijzigGebruikersGegevens',
                 array('WijzigGebruikersGegevens',
                       array('hccPseudoniem', $hccPseudoniem),
                       array('hccLogin', $hccLogin),
                       array('userPassword', $userPassword),
                       array('userPassword', $userPassword),
                       array('nieuw_userPassword', $nieuw_userPassword)));
                       array('nieuw_hccPseudoniem', $nieuw_hccPseudoniem)));


Output positief:
Output positief:
Line 157: Line 155:
   $reply = array('HCCldap',
   $reply = array('HCCldap',
                 array('Action',        'WijzigGebruikersGegevens'),
                 array('Action',        'WijzigGebruikersGegevens'),
                array('Status',        'FALSE'),
                array('Message',        'Gegevenscombinatie onjuist'));
/ ** t.b.v. Cronjob **
// 3.1 Creer een nieuwe gebruiker. Per lidnummer is er 1 account. Als er al een
// account voor dit lidnummer bestaat wordt het bestaande account hernoemd.
// * nieuw_hccLogin mag ontbreken (of leeg gelaten worden).
//  Dan wordt de inhoud van nieuw_hccLidnr ook in dat veld ingevuld.
// * nieuw_userPassword mag ontbreken (of leeg gelaten worden).
//  Dan wordt de inhoud van nieuw_hccCode ook in dat veld ingevuld.
// * 'cn' en 'sn' worden aangemaakt aan de hand van nieuw_Voorletters, nieuw_Tussenvoegsel en nieuw_Achternaam.
//  Voorbeeld:
//    nieuw_Voorletters  ='T.'
//    nieuw_Tussenvoegsel = 'van'
//    nieuw_Achternaam    = 'Test'
//    => cn='T. van Test', sn='Test,T van'
// * nieuw_hccIG  mag ontbreken (of leeg gelaten worden).
// * nieuw_hccRol mag ontbreken (of leeg gelaten worden).
$request = xmlrpc_encode_request('HCCldap',
                array('NieuweGebruiker',
                      array('beheerLogin',              $beheerLogin),
                      array('beheerPassword',          $beheerPassword),
                      array('nieuw_hccLidnr',          $nieuw_hccLidnr),
                    [array('nieuw_hccLogin',          $nieuw_hccLogin),]
                    [array('nieuw_hccPseudoniem',      $nieuw_hccPseudoniem),]
                    [array('nieuw_userPassword',      $nieuw_userPassword),]
                      array('nieuw_hccCode',            $nieuw_hccCode),
                    [array('nieuw_DBFPersoonID',      $nieuw_DBFPersoonID),]
                    [array('nieuw_Voorletters',        $nieuw_Voorletters),]
                    [array('nieuw_Tussenvoegsel',      $nieuw_Tussenvoegsel),]
                      array('nieuw_Achternaam',        $nieuw_Achternaam),
                      array('nieuw_hccRegio',          $nieuw_hccRegio),
                    [array('nieuw_hccIG',              $nieuw_hccIG),]    // komma-gescheiden lijst
                    [array('nieuw_hccRol',            $nieuw_hccRol)])); // komma-gescheiden lijst
Output positief:
  $reply = array('HCCldap',
array('Action', 'NieuweGebruiker'),
                array('Status',        'TRUE'),
                array('Message',        'Gebruiker aangemaakt'));
Output negatief:
  $reply = array('HCCldap',
array('Action', 'NieuweGebruiker'),
                array('Status', 'FALSE'),
                array('Message', 'Onjuiste credentials'));
  $reply = array('HCCldap',
array('Action', 'NieuweGebruiker'),
                array('Status',        'FALSE'),
                array('Message',        'Gegevenscombinatie onjuist'));
// ** t.b.v. Cronjob **
// 4.1 Gooi een gebruiker weg.
// * Als verwijder_hccLidnr gevuld is, dan wordt verwijder_hccLidnr gebruikt om het juiste record te zoeken
//  Als verwijder_hccLidnr leeg  is, dan wordt verwijder_hccLogin gebruikt om het juiste record te zoeken
//  1 van beide velden MOET aanwezig zijn
$request = xmlrpc_encode_request('HCCldap',
                array('GooiGebruikerWeg',
                      array('beheerLogin', $beheerLogin),
                      array('beheerPassword', $beheerPassword),
                    [array('verwijder_hccLidnr', $verwijder_hccLidnr)));
Output positief:
  $reply = array('HCCldap',
                array('Action',        'GooiGebruikerWeg'),
                array('Status',        'TRUE'),
                array('Message',        'Gebruiker verwijderd'));
Output negatief:
  $reply = array('HCCldap',
array('Action', 'GooiGebruikerWeg'),
                array('Status', 'FALSE'),
                array('Message', 'Onjuiste credentials'));
  $reply = array('HCCldap',
                array('Action',        'GooiGebruikerWeg'),
                array('Status',        'FALSE'),
                array('Message',        'Gegevenscombinatie onjuist'));
// ** t.b.v. Cronjob **
// 5.1 Wijzig hccIG
// * Als hccLidnr gevuld is, dan wordt hccLidnr gebruikt om het juiste record te zoeken
//  Als hccLidnr leeg  is, dan wordt hccLogin gebruikt om het juiste record te zoeken
//  1 van beide velden MOET aanwezig zijn
// * nieuw_hccIG is een komma-gescheiden lijst.
//  Als deze lijst leeg is (of ontbreekt), dan worden alle bestaande hccIG records van dit lid weggegooid.
$request = xmlrpc_encode_request('HCCldap',
                array('WijzigHccIG',
                      array('beheerLogin',      $beheerLogin),
                      array('beheerPassword',  $beheerPassword),
                    [array('hccLidnr',        $hccLidnr),]
                    [array('nieuw_hccIG',      $nieuw_hccIG)]));    // komma-gescheiden lijst
Output positief:
  $reply = array('HCCldap',
                array('Action',        'WijzigHccIG'),
                array('Status',        'TRUE'),
                array('Message',        'hccIG gewijzigd'));
Output negatief:
  $reply = array('HCCldap',
                array('Action',        'WijzigHccIG'),
                array('Status', 'FALSE'),
                array('Message', 'Onjuiste credentials'));
  $reply = array('HCCldap',
                array('Action',        'WijzigHccIG'),
                array('Status',        'FALSE'),
                array('Message',        'Gegevenscombinatie onjuist'));
// ** t.b.v. Cronjob **
// 6.1 Wijzig hccRegio
// Pas bij een verhuizing de hccRegio aan
// * Als hccLidnr gevuld is, dan wordt hccLidnr gebruikt om het juiste record te zoeken
//  Als hccLidnr leeg  is, dan wordt hccLogin gebruikt om het juiste record te zoeken
//  1 van beide velden MOET aanwezig zijn
$request = xmlrpc_encode_request('HCCldap',
                array('WijzigHccRegio',
                      array('beheerLogin',      $beheerLogin),
                      array('beheerPassword',  $beheerPassword),
                    [array('hccLidnr',        $hccLidnr),]
                      array('nieuw_hccRegio',  $nieuw_hccRegio)));
Output positief:
  $reply = array('HCCldap',
                array('Action',        'WijzigHccRegio'),
                array('Status',        'TRUE'),
                array('Message',        'hccRegio gewijzigd'));
Output negatief:
  $reply = array('HCCldap',
                array('Action',        'WijzigHccRegio'),
                array('Status', 'FALSE'),
                array('Message', 'Onjuiste credentials'));
  $reply = array('HCCldap',
                array('Action',        'WijzigHccRegio'),
                array('Status',        'FALSE'),
                array('Message',        'Gegevenscombinatie onjuist'));
// ** t.b.v. Cronjob **
// 7.1 Wijzig hccRol
// * Als hccLidnr gevuld is, dan wordt hccLidnr gebruikt om het juiste record te zoeken
//  Als hccLidnr leeg  is, dan wordt hccLogin gebruikt om het juiste record te zoeken
//  1 van beide velden MOET aanwezig zijn
// * nieuw_hccRol is een komma-gescheiden lijst.
//  Als deze lijst leeg is (of ontbreekt), dan worden alle bestaande hccRol records van dit lid weggegooid.
$request = xmlrpc_encode_request('HCCldap',
                array('WijzigHccRol',
                      array('beheerLogin',      $beheerLogin),
                      array('beheerPassword',  $beheerPassword),
                    [array('hccLidnr',        $hccLidnr),]
                    [array('nieuw_hccRol',    $nieuw_hccRol)]));
Output positief:
  $reply = array('HCCldap',
                array('Action',        'WijzigHccRol'),
                array('Status',        'TRUE'),
                array('Message',        'hccRol gewijzigd'));
Output negatief:
  $reply = array('HCCldap',
                array('Action',        'WijzigHccRol'),
                array('Status', 'FALSE'),
                array('Message', 'Onjuiste credentials'));
  $reply = array('HCCldap',
                array('Action',        'WijzigHccRol'),
                 array('Status',        'FALSE'),
                 array('Status',        'FALSE'),
                 array('Message',        'Gegevenscombinatie onjuist'));
                 array('Message',        'Gegevenscombinatie onjuist'));
Line 428: Line 272:
   $reply = array('HCCldap',
   $reply = array('HCCldap',
                 array('Action',  'ZoekHCCLid'),
                 array('Action',  'ZoekHCCLid'),
                array('Status',  'FALSE'),
                array('Message', 'Onjuiste credentials'));
// ** t.b.v. de PC30 zoekpagina **
// A.2 Haal een hccnet.nl token t.b.v. 1 hcc lid op
$request = xmlrpc_encode_request('HCCldap',
                array('HaalPC30Token',
                      array('beheerLogin',    $beheerLogin),
                      array('beheerPassword', $beheerPassword),
                      array('hccLidnr',      $hccLidnr));
Output positief:
  $reply = array('HCCldap',
                array('Action',  'HaalPC30Token'),
                array('Status',  'TRUE'),
                array('Message', 'Token opgevraagd'),
                array('Token',  $PC30Token));
Output negatief:
  $reply = array('HCCldap',
                array('Action',  'HaalPC30Token'),
                array('Status', 'FALSE'),
                array('Message', 'Gebruiker niet gevonden'));
  $reply = array('HCCldap',
                array('Action',  'HaalPC30Token'),
                 array('Status',  'FALSE'),
                 array('Status',  'FALSE'),
                 array('Message', 'Onjuiste credentials'));
                 array('Message', 'Onjuiste credentials'));
Line 527: Line 394:
</pre>
</pre>


== HenZ xmlrpc interface ==
Overzicht van XML procedures die bij HenZ draaien
Overzicht van XML procedures die bij HenZ draaien
(worden via de Hobbynet XML-RPC server afgehandeld)
(worden via de Hobbynet XML-RPC server afgehandeld)
Line 535: Line 403:


- Action=1
- Action=1
   controleer of een gebruiker bestaat op basis van hcclidnummer en de hash van de hcccode.
   controleer of een gebruiker bestaat op basis van hcclidnummer en hcccode.
   (geen aparte interface definitie noodzakelijk, bestaat al lokaal in XML-RPC server)
   (geen aparte interface definitie noodzakelijk, bestaat al lokaal in XML-RPC server)
   Zie 1.1: controleer of een gebruiker bestaat - optie 1
   Zie 1.1: controleer of een gebruiker bestaat - optie 1
Line 557: Line 425:
   (geen aparte interface definitie noodzakelijk, bestaat al lokaal in XML-RPC server)
   (geen aparte interface definitie noodzakelijk, bestaat al lokaal in XML-RPC server)
   (XML-RPC server gaat de hccnet XML-call uitvoeren, zie 2.1, 2.2 en 2.3)
   (XML-RPC server gaat de hccnet XML-call uitvoeren, zie 2.1, 2.2 en 2.3)
- Action=6
  Haal een PC30 beheertoken op basis van hcclidnummer en de hash van de hcccode.
  (XML-RPC server gaat de hccnet XML-call uitvoeren, zie A.2 HaalPC30Token)
</pre>
</pre>


Release notes
== Release notes ==


<pre>
<pre>
Line 653: Line 525:
  - D.1 HCCpartner/ControleerHCCLidmaatschap
  - D.1 HCCpartner/ControleerHCCLidmaatschap
   * Nieuwe aanroep
   * Nieuwe aanroep
2012.09.29 Wijzigingen versie 16
- Alle cron gerelateerde opdrachten verwijderd
  * 3.1 NieuweGebruiker
  * 4.1 GooiGebruikerWeg
  * 5.1 WijzigHccIG
  * 6.1 WijzigHccRegio
  * 7.1 WijzigHccRol
2012.10.28 Wijzigingen versie 17
- nieuwe procedure t.b.v. PC30 beheerpagina
  * A.2 HaalPC30Token
- nieuwe procedure t.b.v. Drupal profielpagina
  * 2.4 vervallen
    (WijzigGebruikersGegevens op basis van pseudoniem)
  * 2.5 WijzigGebruikersGegevens
    Nieuwe keuze: wijzig pseudoniem
</pre>
</pre>



Revision as of 14:01, 4 November 2012

XML-RPC interface

De LDAP server kan direct gemuteerd worden via een LDAP koppeling. Zie de standaard LDAP pagina voor de uitleg welke poorten daarvoor gebruikt kunnen worden.

Daarnaast is er de wens ontstaan om via een standaard protocol met de LDAP omgeving te kunnen communiceren. Er is hiertoe een XML-RPC koppeling ontwikkeld. XML-RPC is een standaard interface, waarmee het mogelijk is om vanuit diverse omgevingen op een gestandaardiseerde manier te communiceren.

Globale functie omschrijving

  • Controleer of een gebruiker bestaat
  • Wijzig het wachtwoord ('userPassword') en/of de gebruikersnaam ('hccLogin')
  • Maak een nieuwe gebruiker
  • Gooi een gebruiker weg
  • Muteer een gebruiker ('hccIG', 'hccRegio', 'hccRol')
  • Zoek een gebruiker
  • Vertaal hcc lidnummer naar DBF PersoonID
  • Haal de lijst met opgeheven accounts op

Authenticatie

Alle aanroepen gebeuren op basis van authenticatie vanuit de aanroeper. Dit valt uiteen in de volgende categorieën:

  • gebruikersnaam ('hccLogin') en wachtwoord ('userPassword')
  • hcc lidnummer ('hccLidnummer') en hcc code ('hccCode')
  • beheerders-DN ('beheerLogin') en beheerders wachtwoord ('beheerPassword')

Resultaten

Alle aanroepen geven de volgende elementen terug:

  • naam van de uitgevoerde procedure ('Action')
  • resultaat van de uitgevoerde procedure ('Status')
  • Een tekstuele vertaling van het resultaat dan wel de foutmelding ('Message')
  • Tijdens de ontwikkelfase kan er debug-info teruggeleverd worden ('ExtraInfo')

Daarnaast geven specifieke aanroepen extra resultaten terug

Technische omschrijving

XML-RPC beschrijving van acties in hcc.nl LDAP database

2012.10.28 HaVe
XML-RPC Hobbynet versie 17.

== HCCldap en/of HCCnet aanroepen

// 1.1 controleer of een gebruiker bestaat - optie 1
// (authenticatie op basis van hccLidnr en hccCode)
$request = xmlrpc_encode_request('HCCldap',
                array('GebruikerBestaatControle',
                      array('hccLidnr',		$hccLidnr),
                      array('hccCode',		$hccCode)));

// 1.2 controleer of een gebruiker bestaat - optie 2
// (authenticatie op basis van hccLogin en userPassword)
$request = xmlrpc_encode_request('HCCldap',
                array('GebruikerBestaatControle',
                      array('hccLogin',		$hccLogin),
                      array('userPassword',	$userPassword)));

// 1.3 controleer of een gebruiker bestaat - optie 3
// (t.b.v. PC30 portal)
// (authenticatie op basis van beheerdernaam en beheerderwachtwoord)
// * Als hccLidnr gevuld is, dan wordt hccLidnr gebruikt om het juiste record te zoeken
//   Als hccLidnr leeg   is, dan wordt hccLogin gebruikt om het juiste record te zoeken
//   1 van beide velden MOET aanwezig zijn
$request = xmlrpc_encode_request('HCCldap',
                array('GebruikerBestaatControle',
                      array('beheerLogin',	$beheerLogin),
                      array('beheerPassword',	$beheerPassword),
                     [array('hccLidnr',		$hccLidnr),]
                     [array('hccLogin',		$hccLogin),]
                     [array('hccPseudoniem',    $hccPseudoniem)])));

Output positief:
   $reply = array('HCCldap',
                array('Action',         'GebruikerBestaatControle'),
                array('Status',         'TRUE'),
                array('Message',        'Gebruikersgegevens opgevraagd'),
                array('hccLidnr',       $hccLidnr),
                array('hccLogin',       $hccLogin),
                array('hccPseudoniem',  $hccPseudoniem),
                array('DBFPersoonID',   $DBFPersoonID),
                array('cn',		$cn),
                array('sn',		$sn),
		array('hccRegio',	$hccRegio),
		array('hccIG',		$hccIG),
		array('hccRol',		$hccRol),
                array('ProfielBekend',  'TRUE' / 'FALSE'));
Output negatief:
  $reply = array('HCCldap',
                array('Action',         'GebruikerBestaatControle'),
                array('Status',		'FALSE'),
                array('Message',	'Onjuiste credentials'));
  $reply = array('HCCldap',
                array('Action',         'GebruikerBestaatControle'),
                array('Status',         'FALSE'),
                array('Message',        'Gegevenscombinatie onjuist'));

// 2.1 wijzig wachtwoord - optie 1
// op basis van hccLidnummer en hccCode (t.b.v. wachtwoord-vergeten procedure)
// (authenticatie op basis van hccLidnr en hccCode)
// Als de profielpagina nog niet is doorlopen wordt deze aanroep afgekeurd.
// ** Deze aanpassingen worden doorgezet naar hccnet.nl (action=2) **
$request = xmlrpc_encode_request('HCCldap',
                array('WijzigGebruikersGegevens',
                      array('hccLidnr',			$hccLidnr),
                      array('hccCode',			$hccCode),
                      array('nieuw_userPassword',	$nieuw_userPassword)));

// ** t.b.v. profielpagina van bestaande leden **
// 2.2 wijzig wachtwoord - optie 2
// (t.b.v. profiel-pagina)
// (authenticatie op basis van hccLogin en userPassword)
// ** Deze aanpassingen worden doorgezet naar hccnet.nl (action=2) **
$request = xmlrpc_encode_request('HCCldap',
                array('WijzigGebruikersGegevens',
                      array('hccLogin',			$hccLogin),
                      array('userPassword',		$userPassword),
                      array('nieuw_userPassword',	$nieuw_userPassword)));

// 2.3 wijzig wachtwoord en/of pseudoniem - optie 3
// (t.b.v. PC30 portal)
// (authenticatie op basis van beheerdernaam en beheerderwachtwoord)
// * Als hccLidnr gevuld is, dan wordt hccLidnr gebruikt om het juiste record te zoeken
//   Als hccLidnr leeg   is, dan wordt hccLogin gebruikt om het juiste record te zoeken
//   1 van beide velden MOET aanwezig zijn
// ** Deze aanpassingen worden doorgezet naar hccnet.nl (action=2) **
$request = xmlrpc_encode_request('HCCldap',
                array('WijzigGebruikersGegevens',
                      array('beheerLogin',		$beheerLogin),
                      array('beheerPassword',		$beheerPassword),
                     [array('hccLidnr',			$hccLidnr),]
                     [array('hccLogin',			$hccLogin),]
                      array('nieuw_userPassword',	$nieuw_userPassword),
                     [array('nieuw_hccPseudoniem',	$nieuw_hccPseudoniem)])));

// ** t.b.v. profielpagina van bestaande leden **
// 2.5 wijzig pseudoniem
// (t.b.v. Drupal profiel-pagina)
// (authenticatie op basis van hccLogin en userPassword)
$request = xmlrpc_encode_request('HCCldap',
                array('WijzigGebruikersGegevens',
                      array('hccLogin',			$hccLogin),
                      array('userPassword',		$userPassword),
                      array('nieuw_hccPseudoniem',	$nieuw_hccPseudoniem)));

Output positief:
  $reply = array('HCCldap',
                array('Action',         'WijzigGebruikersGegevens'),
                array('Status',         'TRUE'),
                array('Message',        'Gebruikersgegevens gewijzigd'),
                array('cn',		$cn),
                array('sn',		$sn));
Output negatief:
  $reply = array('HCCldap',
                array('Action',         'WijzigGebruikersGegevens'),
                array('Status',		'FALSE'),
                array('Message',	'Onjuiste credentials'));
  $reply = array('HCCldap',
                array('Action',         'WijzigGebruikersGegevens'),
                array('Status',         'FALSE'),
                array('Message',        'Gegevenscombinatie onjuist'));

// ** t.b.v. 1e keer doorlopen van de profielpagina **
// 8.1 Maak nieuwe gebruiker bij hccnet.nl, en sla gebruikersnaam, pseudoniem 
//     en wachtwoord tevens in LDAP op
// (authenticatie op basis van hcc lidnummer en hcc-code)
// ** Deze gegevens worden doorgezet naar hccnet.nl (action=4) **
// 
$request = xmlrpc_encode_request('HCCnet',
                array('MaakGebruikerAan',
                      array('hccLidnr',			$hccLidnr),
                      array('hccCode',			$hccCode),
                      array('nieuw_hccLogin',		$nieuw_hccLogin),
                      array('nieuw_userPassword',	$nieuw_userPassword),
                      array('nieuw_hccPseudoniem',	$nieuw_hccPseudoniem)));
Output positief:
   $reply = array('HCCnet',
                array('Action',         'MaakGebruikerAan'),
                array('Status',         'TRUE'),
                array('Message',        'Gebruiker aangemaakt'));
Output negatief:
  $reply = array('HCCnet',
                array('Action',         'MaakGebruikerAan'),
                array('Status',		'FALSE'),
                array('Message',	'Onjuiste credentials'));
  $reply = array('HCCnet',
                array('Action',         'MaakGebruikerAan'),
                array('Status',         'FALSE'),
                array('Message',        'Gebruikersnaam bestaat al'));
  $reply = array('HCCnet',
                array('Action',         'MaakGebruikerAan'),
                array('Status',         'FALSE'),
                array('Message',        'Pseudoniem bestaat al'));
  $reply = array('HCCnet',
                array('Action',         'MaakGebruikerAan'),
                array('Status',         'FALSE'),
                array('Message',        'Gegevenscombinatie onjuist'));

// ** t.b.v. 1e keer doorlopen van de profielpagina **
// 8.2 Controleer of de gebruikersnaam op dit moment bestaat
// (geen authenticatie)
// ** Deze gegevens worden opgevraagd bij hccnet.nl (action=3)       **
// ** Het betreft een momentopname, de naam wordt niet gereserveerd! **
$request = xmlrpc_encode_request('HCCnet',
                array('IsDezeNaamNogBeschikbaar',
                      array('nieuw_hccLogin',		$nieuw_hccLogin));
Output positief:
   $reply = array('HCCnet',
                array('Action',         'IsDezeNaamNogBeschikbaar'),
                array('Status',         'TRUE'),
                array('Message',        'Gebruikersnaam is nog beschikbaar'));
Output negatief:
  $reply = array('HCCnet',
                array('Action',         'IsDezeNaamNogBeschikbaar'),
                array('Status',         'FALSE'),
                array('Message',        'Gebruikersnaam bestaat al'));

// ** t.b.v. 1e keer doorlopen van de profielpagina **
// 8.3 Controleer of een Pseudoniem op dit moment bestaat
// (geen authenticatie)
// ** Het betreft een momentopname, de naam wordt niet gereserveerd! **
$request = xmlrpc_encode_request('HCCnet',
                array('IsDezePseudoniemNogBeschikbaar',
                      array('nieuw_hccPseudoniem',   $nieuw_hccPseudoniem));
Output positief:
   $reply = array('HCCnet',
                array('Action',         'IsDezePseudoniemNogBeschikbaar'),
                array('Status',         'TRUE'),
                array('Message',        'Pseudoniem is nog beschikbaar'));
Output negatief:
  $reply = array('HCCnet',
                array('Action',         'IsDezePseudoniemNogBeschikbaar'),
                array('Status',         'FALSE'),
                array('Message',        'Pseudoniem bestaat al'));

// ** t.b.v. de PC30 zoekpagina **
// A.1 Zoek alle bij de query passende hcc leden
// Het optionele veld ZoekLimiet past maximum aantal antwoorden aan
// (maximaal tot de door de XML-RPC server ingebouwde limiet)
 $request = xmlrpc_encode_request('HCCldap',
                array('ZoekHCCLid',
                      array('beheerLogin',    $beheerLogin),
                      array('beheerPassword', $beheerPassword),
                     [array('hccLidnr',       $hccLidnr)],
                     [array('hccLogin',       $hccLogin)],
                     [array('achternaam',     $achternaam)],
                     [array('postcode',       $postcode)],
                     [array('emailAdres',     $emailAdres)],
                     [array('ZoekLimiet'      $ZoekLimiet));
Output positief:
  $reply = array('HCCldap',
                array('Action',     'ZoekHCCLid'),
                array('Status',     'TRUE'),
                array('Message',    'Gebruiker(s) gevonden'),
               [array('ExtraInfo',  'Zoekopdracht afgebroken, Y van Z getoond')],
		array('Results',
                [array('Result',
		  array( 'hccLidnummer',  $hccLidnummer,
                         'sn',            $sn,
                         'hccStraatnaam', $hccStraatnaam,
                         'hccHuisnummer', $hccHuisnummer $huisToevoeging,
                         'hccPostcode',   $hccPostcode,
                         'hccWoonplaats', $hccWoonplaats,
                         'hccLand',       $hccLand,
                         'hccTelefoon',   $hccTelefoon,
                         'mail',          $mail,
                         'hccIG',         $hccIG,
                         'hccLogin',      $hccLogin,
                         'hccPseudoniem', $hccPseudoniem))]*)));
Output negatief:
  $reply = array('HCCldap',
                array('Action',	 'ZoekHCCLid'),
                array('Status',	 'FALSE'),
                array('Message', 'Gebruiker niet gevonden'));
  $reply = array('HCCldap',
                array('Action',  'ZoekHCCLid'),
                array('Status',  'FALSE'),
                array('Message', 'Onjuiste credentials'));

// ** t.b.v. de PC30 zoekpagina **
// A.2 Haal een hccnet.nl token t.b.v. 1 hcc lid op
 $request = xmlrpc_encode_request('HCCldap',
                array('HaalPC30Token',
                      array('beheerLogin',    $beheerLogin),
                      array('beheerPassword', $beheerPassword),
                      array('hccLidnr',       $hccLidnr));
Output positief:
  $reply = array('HCCldap',
                array('Action',  'HaalPC30Token'),
                array('Status',  'TRUE'),
                array('Message', 'Token opgevraagd'),
                array('Token',   $PC30Token));
Output negatief:
  $reply = array('HCCldap',
                array('Action',  'HaalPC30Token'),
                array('Status',	 'FALSE'),
                array('Message', 'Gebruiker niet gevonden'));
  $reply = array('HCCldap',
                array('Action',  'HaalPC30Token'),
                array('Status',  'FALSE'),
                array('Message', 'Onjuiste credentials'));

// ** t.b.v. DBF GetDossier opvragingen  **
// B.1 Zoek het PersoonID (GUID) dat bij een gebruiker behoort
 $request = xmlrpc_encode_request('HCCldap',
                array('GeefDBFPersoonID',
                      array('beheerLogin',    $beheerLogin),
                      array('beheerPassword', $beheerPassword),
                     [array('hccLidnr',       $hccLidnr),]
                     [array('hccLogin',       $hccLogin),]
                     [array('hccPseudoniem',  $hccPseudoniem)])));
Output positief:
  $reply = array('HCCldap',
                array('Action',       'GeefDBFPersoonID'),
                array('Status',       TRUE'),
                array('Message',      Gebruiker gevonden'),
                array('DBFPersoonID', $DBFPersoonID));
Output negatief:
  $reply = array('HCCldap',
                array('Action',    'GeefDBFPersoonID'),
                array('Status',    'FALSE'),
                array('Message',   'Gebruiker niet gevonden'));
  $reply = array('HCCldap',
                array('Action',    'GeefDBFPersoonID'),
                array('Status',    'FALSE'),
                array('Message',   'Onjuiste credentials'));

// ** t.b.v. daily cron job  **
// C.1 Vraag de lijst met opgeheven leden op
//     Antwoord: lijst met (lidnummer, hccLogin, hccPseudoniem, 
//                          datum einde lidmaatschap (formaat:YYYYMMDD))
 $request = xmlrpc_encode_request('HCCldap',
                array('GeefOpgezegdeLeden',
                      array('beheerLogin',    $beheerLogin),
                      array('beheerPassword', $beheerPassword)));
Output positief:
  $reply = array('HCCldap',
                array('Action',    'GeefOpgezegdeLeden'),
                array('Status',    TRUE'),
                array('Message',   'Opgezegde leden'),
		array('Results',
                [array('Result',
		  array( 'hccLidnummer',           $hccLidnummer,
			 'hccLogin',               $hccLogin,
                         'sn',                     $sn,
                         'hccPseudoniem',          $hccPseudoniem,
                         'DatumEindeLidmaatschap', $DatumEindeLidmaatschap))]*)));
Output negatief:
  $reply = array('HCCldap',
                array('Action',    'GeefOpgezegdeLeden'),
                array('Status',    'FALSE'),
                array('Message',   'Onjuiste credentials'));

// onbekende aanroep
$request = xmlrpc_encode_request('HCCldap',
                array('OnbekendeAanroep',
                      array('parameter',	$iets)));
Output negatief:
  $reply = array('HCCldap',
                array('Action',         'OnbekendeAanroep'),
                array('Status',         'FALSE'),
                array('Message',        'Opdracht onbekend'));

== HCCpartner aanroepen

// ** t.b.v. controle op hcc lidmaatschap door hcc partner **
// D.1 Controleer of iemand lid is op basis van lidnummer en postcode
//     Antwoord: TRUE of FALSE
 $request = xmlrpc_encode_request('HCCpartner',
                array('ControleerHCCLidmaatschap',
                      array('partnerLogin',    $partnerLogin),
                      array('partnerPassword', $partnerPassword),
                      array('hccLidnummer',    $hcclidnummer),
                      array('postcode',        $postcode)));
Output positief:
  $reply = array('HCCpartner',
                array('Action',    'ControleerHCCLidmaatschap'),
                array('Status',    'TRUE'))));
Output negatief:
  $reply = array('HCCpartner',
                array('Action',    'ControleerHCCLidmaatschap'),
                array('Status',    'FALSE'))));
  $reply = array('HCCpartner',
                array('Action',    'ControleerHCCLidmaatschap'),
                array('Status',    'FALSE'),
                array('Message',   'Onjuiste credentials'));

// onbekende aanroep
$request = xmlrpc_encode_request('HCCpartner',
                array('OnbekendeAanroep',
                      array('parameter',	$iets)));
Output negatief:
  $reply = array('HCCpartner',
                array('Action',         'OnbekendeAanroep'),
                array('Status',         'FALSE'),
                array('Message',        'Opdracht onbekend'));

HenZ xmlrpc interface

Overzicht van XML procedures die bij HenZ draaien (worden via de Hobbynet XML-RPC server afgehandeld)

Overzicht van XML procedures die bij HenZ draaien
(worden via de Hobbynet XML-RPC server afgehandeld)

- Action=1
  controleer of een gebruiker bestaat op basis van hcclidnummer en hcccode.
  (geen aparte interface definitie noodzakelijk, bestaat al lokaal in XML-RPC server)
  Zie 1.1: controleer of een gebruiker bestaat - optie 1

- Action=2
  wijzig gebruikersnaam en wachtwoord op basis van hcclidnummer en de hash van de hcccode.
  (geen aparte interface definitie noodzakelijk, bestaat al lokaal in XML-RPC server)
  (XML-RPC server gaat de hccnet XML-call uitvoeren, zie 2.1, 2.2 en 2.3)

- Action=3
  controleer of een gebruikersnaam bestaat
  (XML-RPC server gaat de hccnet XML-call uitvoeren, zie 8.2)

- Action=4
  creer een nieuwe gebruiker. Per lidnummer is er 1 account. Als er al een 
  account voor dit lidnummer bestaat wordt het bestaande account hernoemd.
  (XML-RPC server gaat de hccnet XML-call uitvoeren, zie 8.1)

- Action=5
  wijzig wachtwoord op basis van hcclidnummer en de hash van de hcccode.
  (geen aparte interface definitie noodzakelijk, bestaat al lokaal in XML-RPC server)
  (XML-RPC server gaat de hccnet XML-call uitvoeren, zie 2.1, 2.2 en 2.3)

- Action=6
  Haal een PC30 beheertoken op basis van hcclidnummer en de hash van de hcccode.
  (XML-RPC server gaat de hccnet XML-call uitvoeren, zie A.2 HaalPC30Token)

Release notes

2012.02.08 Wijzigingen versie 5:
 - 4.1 verwijder_hcc_Lidnummer i.p.v. hcc_Lidnummer
 - 4.1 optionele extra parameter verwijder_hccLogin
 - Optionele parameters aangegeven
 - Vanwege de duidelijkheid de beheerLogin en beheerPassword velden
   bovenin de betreffende aanroepen gezet
   (De volgorde van de parameters is niet relevant, dus dit is geen
    interface-aanpassing)
2012.02.16 Wijzigingen versie 6:
 - 2.1/2.2/2.3 geef ook cn en sn terug na aanpassen van het wachtwoord
 - 3.1 geef cn en sn terug na aanmaken nieuwe gebruiker
2012.02.27 Wijzigingen versie 7:
 - Neem de XML interface van HenZ in deze XML-RPC server op
   8.1 Maak nieuwe gebruiker bij hccnet.nl, en sla gegevens tevens in LDAP op
 - 2.1 wijzig wachtwoord - optie 1
   * Nieuw wachtwoord is verplicht, niet optioneel
   * wijzigingen worden naar hccnet.nl doorgezet
 - 2.2 wijzig wachtwoord, optie 2
   * Nieuw wachtwoord is verplicht, niet optioneel
   * gebruikersnaam kan niet meer via deze interface aangepast worden
   * wijzigingen worden naar hccnet.nl doorgezet
 - 2.3 wijzig wachtwoord, optie 3
   * wijzigingen worden naar hccnet.nl doorgezet
2012.03.26 Wijzigingen versie 8:
 - Breidt de XML interface van HenZ in deze XML-RPC server uit met
   8.2 Controleer of de gebruikersnaam op dit moment bestaat
2012.04.09 Wijzigingen versie 9:
 - Vervang alle 'ldap' aanroepen door 'HCCldap' aanroepen
 - documentatie van HenZ call action=2 aangepast, action=5 toegevoegd
2012.05.03 Wijzigingen versie 10:
 - 1.1 / 1.2 / 1.3 geven nu ook 'ProfielBekend' terug om uniek te bepalen
   of deze bezoeker een first-time-login pagina te zien dient te krijgen
 - documentatie van 2.1 (wijzig wachtwoord) aangepast: 
   2.1 kan alleen als profiel is doorlopen
 - nieuwe procedure t.b.v. zoekscherm PC30
   * A.1 ZoekHCCLid 
     - hiervoor is de database met diverse velden uitgebreid
       (postcode, e-mailadres, huisadres, woonplaats, land, telefoonnummer)
       Dit heeft impact op diverse andere procedures (t.b.s.)
 - nieuwe procedure t.b.v. 'gewone' profielpagina
   * B.1 GeefDBFPersoonID
 - nieuwe procedure t.b.v. cron-job
   * C.1 GeefOpgezegdeLeden
2012.05.10 Wijzigingen versie 11
 - 1.3 GebruikerBestaatControle
   * nieuwe parameter: hccPseudoniem
   * nieuw veld in antwoord: hccPseudoniem
 - 2.3 WijzigGebruikersGegevens
   * nieuwe parameter: hccPseudoniem
 - 2.4 WijzigGebruikersGegevens
   * nieuwe parameter: hccPseudoniem
 - 3.1 NieuweGebruiker
   * nieuwe parameter: hccPseudoniem
 - 8.1 MaakGebruikerAan
   * nieuwe parameter: nieuw_hccPseudoniem
   * alle parameters zijn verplicht (niet langer optioneel)
   * nieuw antwoord: Gegevenscombinatie onjuist
 - 8.3 IsDezePseudoniemNogBeschikbaar
   * Nieuwe procedure t.b.v. 1e keer doorlopen profielpagina
 - A.1 ZoekHCCLid
   * 'Zoeklimiet bereikt' wordt als ExtraInfo meegegeven
   * nieuwe velden in antwoord: hccPseudoniem en hccLogin
 - B.1 GeefDBFPersoonID
   * Zoeken kan nu ook op hccLogin en op hccPseudoniem
 - C.1 GeefOpgezegdeLeden
   * Geef nu ook hccLogin en hccPseudoniem terug
2012.05.14 Wijzigingen versie 12
 - 1.x GebruikerBestaatControle
   * Geef ook DBFPersoonID terug
 - 4.1 Gooi een gebruiker weg.
   * Haal ongebruikte parameter hccLogin weg
 - 5.1 Wijzig hccIG
   * Haal ongebruikte parameter hccLogin weg
 - 6.1 Wijzig hccRegio
   * Haal ongebruikte parameter hccLogin weg
 - 7.1 Wijzig hccRol
   * Haal ongebruikte parameter hccLogin weg
2012.05.20 Wijzigingen versie 13
 - A.1 ZoekHCCLid 
   * Geef resultaten gestructureerder formaat
   * Geef in ExtraInfo weer hoeveel echte resultaten er gevonden zijn
 - C.1 GeefOpgezegdeLeden 
   * Geef resultaten in gestructureerder formaat
2012.06.03 Wijzigingen versie 14
 - 3.1 NieuweGebruiker
   * Geef ook DBFPersoonID mee
2012.08.17 Wijzigingen versie 15
 - C.1 GeefOpgezegdeLeden 
   * Geef ook hccLogin in het antwoord terug
 - D.1 HCCpartner/ControleerHCCLidmaatschap
   * Nieuwe aanroep
2012.09.29 Wijzigingen versie 16
 - Alle cron gerelateerde opdrachten verwijderd
   * 3.1 NieuweGebruiker
   * 4.1 GooiGebruikerWeg
   * 5.1 WijzigHccIG
   * 6.1 WijzigHccRegio
   * 7.1 WijzigHccRol
2012.10.28 Wijzigingen versie 17
 - nieuwe procedure t.b.v. PC30 beheerpagina
   * A.2 HaalPC30Token
 - nieuwe procedure t.b.v. Drupal profielpagina
   * 2.4 vervallen 
     (WijzigGebruikersGegevens op basis van pseudoniem)
   * 2.5 WijzigGebruikersGegevens
     Nieuwe keuze: wijzig pseudoniem

Aanpassingen aan de Apache omgeving

php.ini aanpassingen

De XML-RPC server zal 'ergens' een bestand moeten kunnen vinden met de gebruikersnamen t.b.v. het authenticeren bij de LDAP-server.

Dit bestand wordt geplaatst in de map '/usr/local/hobbynet/etc'. Om dit vanuit Apache te mogen benaderen, dient een aanpassing aan php.ini gemaakt te worden:

/etc/php5/apache2/php.ini

include_path = ".:/usr/share/php:/usr/share/pear:/usr/local/hobbynet/etc"

Apache modules

Nieuwe server geschikt maken voor XML-RPC gebruik

apt-get install php5-xmlrpc
Look for xmlrpc.ini. If it does not exist, create it. Now, make sure it has the following contents:
; Enable xmlrpc extension module
extension=xmlrpc.so
now restart Apache!

De xmlrpc server moet secure ldap sessies kunnen maken. Daar is de module php5-sasl voor nodig:

apt-get install ldap-utils
apt-get install php5-ldap
apt-get install php5-sasl
apt-get install libapache2-mod-php5

Loadbalancer akties niet naar de logbestanden schrijven

De loadbalancer haalt zeer frequent een testbestand op (/test.txt), om te controleren of de xml-server operationeel is. Dat levert extreem veel logging op in /var/log/apache2/other_vhosts.log.

Pas de apache configuratie zo aan, dat logging van alle opvragingen vanaf de loadbalancers uitgezet wordt.

/etc/apache2/sites-enabled/xml-server

# Mark requests from loadbalancers
SetEnvIf Remote_Addr "212\.72\.227\.93"          dontlog
SetEnvIf Remote_Addr "212\.72\.227\.94"          dontlog
SetEnvIf Remote_Addr "172\.31\.1\.249"           dontlog
SetEnvIf Remote_Addr "172\.31\.1\.250"           dontlog
CustomLog ${APACHE_LOG_DIR}/access.log common env=!dontlog

Overige akties

Nakijken: is dit voor Apache, of is dit al eerder gedaan voor de ldap server zelf?

  • Zorg ervoor dat de CAcert.org certificaten in /etc/ssl/certs staan, doe daarna een "c_rehash ."
cd /etc/ssl/certs
wget http://www.cacert.org/certs/root.crt -O cacert_org.pem
wget http://www.cacert.org/certs/class3.crt -O cacert_org_class3.pem
c_rehash .

Alternatief: zet beide certificaten in 1 bestand, en doe de rehash:

cd /etc/ssl/certs
wget http://www.cacert.org/certs/root.crt http://www.cacert.org/certs/class3.crt -O CAcert_org.pem
c_rehash .
  • Voeg deze regel toe aan /etc/ldap/ldap.conf:
TLS_CACERT /etc/ssl/certs/ca-certificates.crt

Aanpassingen in de firewall

Op de server waar de XML-RPC server staat, moeten enkele firewall aanpassingen gemaakt worden

  • inkomend: sta TCP 443 toe vanaf het interne netwerk (www-prod, www-test), en vanaf eventuele andere plekken die we expliciet toe willen staan.
  • uitgaand: sta TCP 443 naar service.hccnet.nl toe