diff --git a/src/Controller/RequestController.php b/src/Controller/RequestController.php index 646b632..701e510 100644 --- a/src/Controller/RequestController.php +++ b/src/Controller/RequestController.php @@ -57,7 +57,7 @@ class RequestController private DomainController $domainController; private DomainRepository $domainRepository; private PanelRepository $panelRepository; - private DynDNSRepository $DynDNSRepository; + private DynDNSRepository $dynDNSRepository; private Container $container; private string $header; private array $result; @@ -561,20 +561,21 @@ class RequestController $this->header = '404 Not Found'; $this->message = 'Domain ' . $domainName . ' not found'; } else { - // check if address has changed if ($dynDNS = $this->dynDNSRepository->findByName(name: $host)) { - echo 'found host'; - print_r($dynDNS); - - print("a: $a"); - print("aaaa: $aaaa"); + if ($this->config['debug']) { + $this->log->debug(message: 'found host: ' . $host); + $this->log->debug(message: "a: $a"); + $this->log->debug(message: "aaaa: $aaaa"); + } $ipChanged = false; if (!empty($a)) { if ($a != $dynDNS->getA()) { - echo $a . '!=' . $dynDNS->getA(); + if ($this->config['debug']) { + $this->log->debug(message: $a . ' != ' . $dynDNS->getA()); + } $dynDNS->setA(a: $a); $ipChanged = true; } @@ -582,125 +583,129 @@ class RequestController if (!empty($aaaa)) { if ($aaaa != $dynDNS->getAaaa()) { + if ($this->config['debug']) { + $this->log->debug(message: $aaaa . ' != ' . $dynDNS->getAaaa()); + } $dynDNS->setAaaa(aaaa: $aaaa); - $ipChanged = true; } } - if (!$ipChanged) { - $this->header = '304 Not Modified'; - $this->message = 'Not modified'; - - } else { + if ($ipChanged) { $this->dynDNSRepository->update(dynDNS: $dynDNS); } } else { $dynDNS = new DynDNS(name: $host, a: $a, aaaa: $aaaa); $this->dynDNSRepository->insert(dynDNS: $dynDNS); + $ipChanged = true; } - $panel = $this->panelRepository->findByName(name: $domain->getPanel()); - - if (!empty($panel->getAaaa())) { - $domainData = $this->apiController->sendCommand( - requestType: 'GET', - serverName : $panel->getName(), - versionIP : 6, - apiKey : $panel->getApikey(), - command : 'domains/name/' . $domainName, - serverType : 'panel'); - } else { - $domainData = $this->apiController->sendCommand( - requestType: 'GET', - serverName : $panel->getName(), - versionIP : 4, - apiKey : $panel->getApikey(), - command : 'domains/name/' . $domainName, - serverType : 'panel'); - } - - $domainDecodedData = json_decode(json: $domainData['data']); - $domainID = $domainDecodedData->id; - - if (!empty($panel->getAaaa())) { - $dnsData = $this->apiController->sendCommand( - requestType: 'GET', - serverName : $panel->getName(), - versionIP : 6, - apiKey : $panel->getApikey(), - command : 'dns/' . $domainID, - serverType : 'panel'); - } else { - $dnsData = $this->apiController->sendCommand( - requestType: 'GET', - serverName : $panel->getName(), - versionIP : 4, - apiKey : $panel->getApikey(), - command : 'dns/' . $domainID, - serverType : 'panel'); - } - - $dnsDataDecoded = json_decode(json: $dnsData['data']); - $soa = $dnsDataDecoded->records->soa; - $others = $dnsDataDecoded->records->other; - - $hostFound = false; - - $updateHost = function (object $host) use ($hostName, $a, $aaaa, &$hostFound) { - if ($host->host == $hostName) { - $hostFound = true; - if ($host->type == 'A') { - if (!empty($a)) { - $host->value = $a; - } - } else { - if (!empty($aaaa)) { - $host->value = $aaaa; - } - } - } - }; - - array_map(callback: $updateHost, array: $others); - - if ($hostFound) { - $newDnsData = json_encode(value: [ - 'records' => [ - 'soa' => $soa, - 'other' => $others - ] - ]); + if ($ipChanged) { + $panel = $this->panelRepository->findByName(name: $domain->getPanel()); if (!empty($panel->getAaaa())) { - $result = $this->apiController->sendCommand( - requestType: 'PUT', + $domainData = $this->apiController->sendCommand( + requestType: 'GET', + serverName : $panel->getName(), + versionIP : 6, + apiKey : $panel->getApikey(), + command : 'domains/name/' . $domainName, + serverType : 'panel'); + } else { + $domainData = $this->apiController->sendCommand( + requestType: 'GET', + serverName : $panel->getName(), + versionIP : 4, + apiKey : $panel->getApikey(), + command : 'domains/name/' . $domainName, + serverType : 'panel'); + } + + $domainDecodedData = json_decode(json: $domainData['data']); + $domainID = $domainDecodedData->id; + + if (!empty($panel->getAaaa())) { + $dnsData = $this->apiController->sendCommand( + requestType: 'GET', serverName : $panel->getName(), versionIP : 6, apiKey : $panel->getApikey(), command : 'dns/' . $domainID, - serverType : 'panel', - body : json_decode(json: $newDnsData, associative: true) - ); + serverType : 'panel'); } else { - $result = $this->apiController->sendCommand( - requestType: 'PUT', + $dnsData = $this->apiController->sendCommand( + requestType: 'GET', serverName : $panel->getName(), versionIP : 4, apiKey : $panel->getApikey(), command : 'dns/' . $domainID, - serverType : 'panel', - body : json_decode(json: $newDnsData, associative: true) - ); + serverType : 'panel'); } - if ($result['header'] == 200) { - $this->header = '200 OK'; - $this->message = 'DynDNS host successfully updated'; + + $dnsDataDecoded = json_decode(json: $dnsData['data']); + $soa = $dnsDataDecoded->records->soa; + $others = $dnsDataDecoded->records->other; + + $hostFound = false; + + $updateHost = function (object $host) use ($hostName, $a, $aaaa, &$hostFound) { + if ($host->host == $hostName) { + $hostFound = true; + if ($host->type == 'A') { + if (!empty($a)) { + $host->value = $a; + } + } else { + if (!empty($aaaa)) { + $host->value = $aaaa; + } + } + } + }; + + array_map(callback: $updateHost, array: $others); + + if ($hostFound) { + $newDnsData = json_encode(value: [ + 'records' => [ + 'soa' => $soa, + 'other' => $others + ] + ]); + + if (!empty($panel->getAaaa())) { + $result = $this->apiController->sendCommand( + requestType: 'PUT', + serverName : $panel->getName(), + versionIP : 6, + apiKey : $panel->getApikey(), + command : 'dns/' . $domainID, + serverType : 'panel', + body : json_decode(json: $newDnsData, associative: true) + ); + } else { + $result = $this->apiController->sendCommand( + requestType: 'PUT', + serverName : $panel->getName(), + versionIP : 4, + apiKey : $panel->getApikey(), + command : 'dns/' . $domainID, + serverType : 'panel', + body : json_decode(json: $newDnsData, associative: true) + ); + } + if ($result['header'] == 200) { + $this->header = '200 OK'; + $this->message = 'DynDNS host successfully updated'; + } + } else { + $this->header = '404 Not Found'; + $this->message = 'Host ' . $hostName . ' not found'; } } else { - $this->header = '404 Not Found'; - $this->message = 'Host ' . $hostName . ' not found'; + $this->header = '204 No content'; + $this->message = 'No content'; } } }