spacecabbie
Verified User
Something useful i found online
Its indutch but essentially a script using the DA httpsocket php ( https://files.directadmin.com/services/all/httpsocket/ )
All credits go to the original poster: Jeroen S
Dyndns mogelijk via DirectAdmin API bij Vimexx
Via de directadmin api kan iedere klant van vimex zijn a records updaten op het moment dat het public ip gewijzigd is. Zo kun je een domeinnaam veilig aan het ip van je (thuis) server hangen. Link naar httpsocket: https://files.directadmin.com/services/all/httpsocket/ Script: <?php include...
www.vimexx.nl
All credits go to the original poster: Jeroen S
PHP:
<?php
include 'httpsocket.php';
$server_login="username";
$server_pass="password";
$server_host="directadminserver"; //where the API connects to
$server_ssl="Y";
$server_port=2222;
$domains = ["domein1.nl", "domein2.nl", "domein3.nl", "domein4.nl", "domein5.nl", "domein6.nl"];
$url='http://ipecho.net/plain';
$ch=curl_init();
$timeout=5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$publicip=curl_exec($ch);
echo ("Public IPV4=".$publicip."\n");
curl_close($ch);
$data = json_decode(file_get_contents("directadminddns.dat"), true);
if ($data["publicip"] != $publicip)
{
echo ("Public IP has changed to $publicip, updating dns...\n");
foreach ($domains as $domain)
{
$sock = new HTTPSocket;
if ($server_ssl == 'Y')
{
$sock->connect("ssl://".$server_host, $server_port);
}
else
{
$sock->connect($server_host, $server_port);
}
$sock->set_login($server_login,$server_pass);
$sock->query('/CMD_API_DNS_CONTROL',
array(
'domain' => $domain,
));
$result = $sock->fetch_parsed_body();
var_dump ($result);
$sock->query('/CMD_API_DNS_CONTROL',
array(
'domain' => $domain,
'action' => 'select',
'arecs0' => 'name='.$domain.'.',
));
$result = $sock->fetch_parsed_body();
var_dump ($result);
$sock->query('/CMD_API_DNS_CONTROL',
array(
'domain' => $domain,
'action' => 'add',
'type' => 'A',
'name' => $domain.'.',
'value' => $publicip,
));
$result = $sock->fetch_parsed_body();
}
$data = array();
$data["publicip"] = $publicip;
file_put_contents("directadminddns.dat", json_encode($data));
}
else
{
echo ("Public IP not changed, no update needed\n");
}
?>