PDA

Bekijk Volledige Versie : Ontwikkeling Roundcube plugin met DA API



Randy
21/06/09, 16:30
Hoi,

Ik zoek iemand die een Roundcube plugin kan ontwikkelen die gebruik maakt van de Directadmin API. De bedoeling is om forwards in te stellen vanaf RC. Deze moeten via de API dus doorgegeven worden aan DA. Het moet functioneel zijn, niet fancy. Een eventueel grafisch schilletje wordt eventueel ontwikkeld door de eigen Interaction Designer.

Ik schat zelf een dag werk voor mensen die bekend zijn met de DA API. Reacties met tarief (fixed fee) kunnen gemaild worden naar randy@ispi.nl. Vergeet geen codesample! Mensen die Zend Certified zijn genieten de voorkeur.

Er kan getest worden en er mag gebruik gemaakt worden van de API op admin niveau in DA, omdat ik niet weet of het op user/resellerniveau gaat werken. Een eventuele OTAP omgeving voor het testen en ontwikkelen kan beschikbaar gesteld worden.

t.bloo
21/06/09, 20:59
omdat ik niet weet of het op user/resellerniveau gaat werken

Je hebt de username/password nodig van de eigenaar van het domein, haar reseller of de admin. De gegevens van een POP/IMAP werken niet. Ik heb hier ooit de volgende demo voor geschreven:



<?php

//html form
echo '<html><head></head><body>';

$username = $_POST['username'];
$password = $_POST['password'];
$domain = $_POST['domain'];

echo '<form method="post">';
echo 'domain <input name="domain" type=text size=25 value="'.$domain.'"> ';
echo 'username <input name="username" type=text size=10 value="'.$username.'"> ';
echo 'password <input name="password" type=password size=10 value="'.$password.'"> ';
echo '<input name="submit" type=submit>';
echo '</form>';

//create, remove and list forwarders
if (isset($_POST['submit']))
{
$directadmin = 'https://localhost:2222';

forwarders_create($directadmin, $username, $password, $domain, 'test1', 'test@testuser.nl');
forwarders_create($directadmin, $username, $password, $domain, 'test2', 'test@testuser.nl');
forwarders_create($directadmin, $username, $password, $domain, 'test3', 'test@testuser.nl');

forwarders_remove($directadmin, $username, $password, $domain, 'test2');

$forwarders = forwarders_list($directadmin, $username, $password, $domain);

if ($forwarders === false)
{
echo 'error listing forwarders';
}
else
{
foreach ($forwarders as $from=>$to)
{
echo $from.' => '.$to.'<br>';
}
}
}

echo '</body></html>';

//functions
function directadmin_apiget($directadmin, $username, $password, $request)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
$authstring = base64_encode($username.':'.$password);
$curlheaders[0] = 'Authorization: Basic '.$authstring;
curl_setopt($ch, CURLOPT_HTTPHEADER, $curlheaders);

if (strpos($directadmin, 'https') !== false)
{
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_URL, $directadmin.$request);
}
else
{
curl_setopt($ch, CURLOPT_URL, $directadmin.$request);
}

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);

return $output;
}

function forwarders_list($directadmin, $username, $password, $domain)
{
$request = '/CMD_API_EMAIL_FORWARDERS?domain='.htmlentities($do main);
$result = directadmin_apiget($directadmin, $username, $password, $request);
parse_str($result, $resultarray);

if (@$resultarray['error'] == 1)
{
return false;
}
else
{
return $resultarray;
}
}

function forwarders_create($directadmin, $username, $password, $domain, $from, $to)
{
$request = '/CMD_API_EMAIL_FORWARDERS?domain='.htmlentities($do main).'&action=create&user='.htmlentities($from).'&email='.htmlentities($to);
directadmin_apiget($directadmin, $username, $password, $request);
}

function forwarders_remove($directadmin, $username, $password, $domain, $from)
{
$request = '/CMD_API_EMAIL_FORWARDERS?domain='.htmlentities($do main).'&action=delete&select0='.htmlentities($from);
directadmin_apiget($directadmin, $username, $password, $request);
}

?>