Goedemiddag allemaal,
Ik draai al enige tijd een VPS met DirectAdmin, waarbij back-ups worden gemaakt en naar mijn Synology thuis worden gestuurd.
De back-up wordt via FTP naar een specifiek subdomein gestuurd. Het DNS van dit subdomein is uiteraard het IP-adres van mijn thuisnetwerk.
Dit werkt prima, maar als het IP-adres van thuis verandert, worden er geen back-ups meer gemaakt.
Ik ben dus op zoek naar een manier om elke 24 uur via mijn Synology het IP-adres van thuis te controleren en indien nodig bij te werken.
Ik heb al wat onderzoek gedaan en ontdekt dat ik via PHP het IP-adres kan controleren en dit kan vergelijken met de DirectAdmin API. Echter, het updaten lukt me helemaal niet.
Heeft iemand een idee?
PHP
<?php
function directAdminRequest($url, $post = null) {
$username = '';
$password = '';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
if ($post) {
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
}
$output = curl_exec($ch);
curl_close($ch);
return $output;
}
function updateARecords($domain, $ip) {
$url = 'https://server.be:2222/CMD_API_DNS_CONTROL?domain=' . $domain;
$recordsResponse = directAdminRequest($url);
$records = json_decode($recordsResponse, true);
$aRecords = array_filter($records['list'], function($record) {
return $record['type'] === 'A';
});
$mxRecords = array_filter($records['list'], function($record) {
return $record['type'] === 'MX';
});
$exceptions = ['mail', 'MX'];
foreach ($aRecords as &$record) {
if (!in_array($record['name'], $exceptions)) {
$record['value'] = $ip;
}
}
$postFields = http_build_query([
'action' => 'modify',
'domain' => $domain,
'select0' => 'ALL',
'ARECORD0' => json_encode(array_values($aRecords))
]);
$url = 'https://server.be:2222/CMD_API_DNS_CONTROL';
$response = directAdminRequest($url, $postFields);
return $response;
}
$ip = $_SERVER['REMOTE_ADDR'];
$domain = 'domein.be';
$updateResult = updateARecords($domain, $ip);
echo $updateResult;
?>
Toon Meer