Studenten Net Twente
making the net work

WESP: XML-RPC API

Auteur: WESP

Verscheidene functies van WESP zijn met de XML-RPC API te bereiken. Onder andere de volgende functies zijn beschikbaar:

  • User Management
  • Group Management
  • Alias Management

Stappen

Stap 1: Beschikbare functies

De functies voor users zijn als volgt:

  • user_list(): geeft een array terug met per user van de guest een dictionary met informatie over de user
  • user_info($username): geeft een dictionary terug van de user met de opgegeven gebruikersnaam
  • user_login($username, $password): geeft aan of deze gebruikersnaam wachtwoord-combinatie correct is. Bij incorrecte authenticate wordt een aantal seconden gewacht voordat het resultaat teruggegeven wordt om misbruik te voorkomen.

De functies voor groepen zijn als volgt:

  • group_list(): geeft een array terug met per groep een dictionary met informatie over de groep
  • group_info($group_name): geeft een dictionary terug met uitgebreidere informatie over de groep (zoals een lijst van alle leden van die groep)

De functies voor aliassen zijn als volgt:

  • alias_list(): levert een lijst van alle aliassen op
  • alias_add($alias): voegt een alias toe
  • alias_delete($alias): verwijdert een alias
  • alias_add_destination($alias,$destination): voegt een e-mailadres aan
  • een alias toe
  • alias_delete_destination($alias,$destination): verwijdert een
  • e-mailadres van een alias
  • alias_add_user($alias,$user): voegt een WESP-user toe aan een alias
  • alias_delete_user($alias,$user): verwijdert een WESP-user van een alias
  • alias_add_group($alias,$group): voegt een WESP-groep toe aan een alias
  • alias_delete_group($alias,$group): verwijdert een WESP-groep van een alias

Stap 2: PHP-voorbeeld

Het volgende codefragment haalt de groepslijsten op. Er wordt gebruik gemaakt van de Pear package XML/RPC.php. Deze staat op WESP geïnstalleerd.

<?
function getGroupList($groupname) {
    // debug mode, rpc errors zijn naar, scheelt hoop gepruts met comments weghalen
    $debug = false;

    // Maak de verbinding
    $guest = ''; // De naam van de guest
    $user = ''; // De naam van de user. Let even op dat het wachtwoord hierbij gewoon leesbaar is, dus een aparte user aanmaken.
    $passwd = '''; // Wachtwoord voor $user
    $cli = new XML_RPC_Client('/api', 'ssl://wesp.snt.utwente.nl', 443);
    $cli->setCredentials($user.'@'.$guest, $passwd);


    $msg = new XML_RPC_Message('group_info', array(new XML_RPC_Value($groupname, 'string')));
    $resp = $cli->send($msg);

    if (!$resp) {
        if($debug) {
            echo 'Communication error: ' . $cli->errstr;
        }
        return array();
    } else if (!$resp->faultCode()) {
        // erg lelijk, we moeten een eindje in die irritant-ingewikkelde array voordat we door de members kunnen loopen
        $val = $resp->value();
        $data = $val->getval();

        foreach($data['members'] as $v) {
            $output[] = $v->getval();
        }

        return $output;
    } else {
        if($debug) {
            echo 'Fault Code: ' . $resp->faultCode() . "\n";
            echo 'Fault Reason: ' . $resp->faultString() . "\n";
        }
        return array();
    }
}
?>

Partners

  • ICTS
  • Universiteit Twente

Contact

SNT Helpdesk
Citadel via "Servicedesks ICT" op O&O Plein

Klik voor openingstijden

(053) - 489 3266
helpdesk@snt.utwente.nl
SNT Helpdesk

SNT Kantoor
Bastille 317
bestuur@snt.utwente.nl

Postadres
Universiteit Twente tav SNT
Bastille 317
Postbus 217
7500 AE Enschede