Vimexx Facebook

Onderwerp:

Dyndns mogelijk via DirectAdmin API bij Vimexx

Naam: Jeroen S

Titel: Member

Geplaatst op 04-12-2018 19:36

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 'httpsocket.php';

$server_login="username";
$server_pass="password";
$server_host="webXXXX.zxcs.nl"; //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");
}
?>
 

 

Datum 04-12-2018 19:36:45

Naam: Jeroen S

Titel: Member

Geplaatst op 04-12-2018 19:39

Vergeet niet zelf even een cname voor www (en eventueel andere gewenste subdomeinen) aan te maken naar je domein

Datum 04-12-2018 19:39:02