Vimexx Facebook

Onderwerp: Dyndns mogelijk via DirectAdmin API bij Vimexx - Pagina 2

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");
}
?>
 

 

06-06-2023 15:08
#4483

Hoi!

Waar vind ik ergens de server_host? Ik heb geen hosting pakket, enkel een domeinnaam bij Vimexx.

Dank!
Tom

 
20-03-2024 22:33
#4905

Hallo mede gebruikers,

Helaas krijg ik het ook niet werkend. Ik plaats beide bestanden op een webserver die ik thuis heb draaien. Het eerste bestand is het php bestand met het script zoals hier in deze post gemeld met de specifieke gegevens voor toegang tot mijn domeinnaam. Het tweede bestand is httpsocket.php
Op het moment dat ik beide php bestanden op de webserver heb staan en dit benader via de webbrowser dan krijg ik de melding “"Cannot View Dns Record" ["details"]=> string(29) "Domain does not belong to you"". Helaas kan ik deze foutmelding niet herleiden.

Is er iemand die het inmiddels wel werkend heeft met deze bestanden? Dit is hetzelfde probleem als Rien V heeft gemeld. Echter is hier geen reactie opgekomen.

Ik heb ook de bestanden van Github geprobeerd (inclusief het credentials.json bestand). Ook hier helaas dezelfde melding.
Is deze functionaliteit misschien geblokkeerd door Vimexx?

Wie o wie kan een helpende hand aanreiken?

Groeten, Dion

18-04-2024 03:31
#4950

Hallo allemaal, een nieuwe versie van dit script vind je op https://github.com/brechtwyns/DirectAdmin-DDNS. De code is aangepast zodat IPv4 gebruikt wordt i.p.v. IPv6, wat je toelaat om het A-record te blijven gebruiken.

Deze aanpassing liet mij toe om de DDNS oplossing op een Raspberry Pi te runnen met gebruik van één IP (v4) adres voor mijn thuisnetwerk. Dit overkomt mogelijke problemen met firewall instellingen voor IPv6 adressen (zoals o.a. bij Proximus / Mobile Vikings in België). 

24-05-2024 21:30
#4981

Hallo Brecht W, mooi dat het script aangepast is. Alleen krijg ik het niet aan de gang op een Raspberry.

Als afhankelijkheden heb ik geïnstalleerd:

- PHP
- Curl
- Apache

Zijn dit diegene die nodig zijn of missen er nog?

Ik heb onderstaande bestanden in folder /opt/dyndns geplaatst (via script "git clone https://github.com/brechtwyns/DirectAdmin-DDNS /opt/dyndns"):
dyndns.php
httpsocket.php
README.md

Het credentials.json heb ik handmatig aangemaakt en dit bestand bevat de gegevens om in te kunnen loggen op DirectAdmin van Vimexx.
Vraag is of dit alle bestanden zijn die nodig zijn?

Welke regel heb jij gebruikt in de Cron job? Ik heb deze gebruikt: */30 * * * * /usr/bin/php /opt/dyndns/dyndns.php
Hoe kan ik controleren op de Raspberry of de Cron job heeft gelopen. Is ergens een log? Kun jij aangeven hoe jij dit monitort?

Hopelijk kun je mij en mogelijk ook anderen gebruikers op weg helpen om dit werkend te krijgen. Zou zeer gewaardeerd worden.

Groeten, Dion

15-06-2024 16:58
#5001

Ik heb het script nog wat verder aangepast zodat hij nu niet een record toevoegt maar netjes het bestaande record aanpast (of toevoegt als die niet bestaat). Verder heb ik de README nog wat verduidelijkt.
Ik heb geen pull request gedaan omdat ik ook de . achter de subdomain/ARecordName variable heb weggehaald omdat ik het zo netter vind (zie aangepaste ReadMe).

https://github.com/mannte/DirectAdmin-DDNS

- 5 van 5 sterren -