eignes DynDNS - Möglichkeiten!?

For topics beyond KeyHelp. / Für Themen jenseits von KeyHelp.
User avatar
24unix
Posts: 1641
Joined: Sun 21. Jun 2020, 17:16
Location: Kollmar
Contact:

Re: eignes DynDNS - Möglichkeiten!?

Post by 24unix »

OlliTheDarkness wrote: Tue 1. Mar 2022, 09:36 Daher nutze ich halt HE um überhaupt am IPv6 Leben teilnehmen kann. :P :lol:
Ja, ist gut, dass es das gibt.

Aber ich kann die Probleme bei vodafone nicht nachvollziehen, ja, bei mir war es auch DSL (~12Mbit, weil am Ende der Welt), aber es scheint nur DSL betroffen zu sein, bei anderen Anschlüssen sollen die wohl IPv6 haben.
mfg Micha
--
If Bill Gates had a nickel for every time Windows crashed …
… oh wait, he does.
User avatar
OlliTheDarkness
Posts: 1854
Joined: Tue 14. Aug 2018, 16:41
Location: Essen (NRW)

Re: eignes DynDNS - Möglichkeiten!?

Post by OlliTheDarkness »

24unix wrote: Tue 1. Mar 2022, 09:43
OlliTheDarkness wrote: Tue 1. Mar 2022, 09:36 Daher nutze ich halt HE um überhaupt am IPv6 Leben teilnehmen kann. :P :lol:
Ja, ist gut, dass es das gibt.

Aber ich kann die Probleme bei vodafone nicht nachvollziehen, ja, bei mir war es auch DSL (~12Mbit, weil am Ende der Welt), aber es scheint nur DSL betroffen zu sein, bei anderen Anschlüssen sollen die wohl IPv6 haben.
Ist auch so.
Das Kabelnetz ist FAST vollständig v6 mit ganz wenigen Ausnahmen.

Warum die es im DSL Bereich nicht hinbekommen bin ich ratlos.
Auf Nachfrage wirst immer wieder vertröstet und die Schuld auf andere (z.B. die Telekom) geschoben.
Wenn bei der TCom dann mal aus Langeweile nachhörst bekommst gesagt das dass reine Schutzbehauptungen sind, weil seitens der TCom ist v6 schon lang gegeben, auch auf angemieteten Leitungen.

Also es ist und bleibt spannend bei VF.
Mit freundlichen Grüßen
OlliTheDarkness

**************************************************************
Helden leben lange, Legenden sterben nie

:!: World Hack Organization :!:
**************************************************************
User avatar
MLan
Posts: 466
Joined: Wed 20. Sep 2017, 23:05
Location: @home

Re: eignes DynDNS - Möglichkeiten!?

Post by MLan »

OlliTheDarkness wrote: Tue 1. Mar 2022, 09:59 Also es ist und bleibt spannend bei VF.
Das ist der letzte Saftladen.
Mehr sage ich lieber nicht, sonst bekomme ich wieder Puls.
User avatar
24unix
Posts: 1641
Joined: Sun 21. Jun 2020, 17:16
Location: Kollmar
Contact:

Re: eignes DynDNS - Möglichkeiten!?

Post by 24unix »

Mal wieder weg von Vodafone … :-)

So sieht eine einfache Methode aus um via Keyhelp-API selber DynDNS zu machen.

Code: Select all

	private function handleDynDNS()
	{
		$host = $this->uri[3] ?? '';
		
		if (empty($host)) {
			$this->header = '400 Bad Request';
			$this->status = '400 Bad Request';
		} else {
			$a = $_POST['a'] ?? '';
			$aaaa = $_POST['aaaa'] ?? '';
			
			if (empty($a) && empty($aaaa)) {
				$address = $_SERVER['REMOTE_ADDR'];
				
				if (filter_var(value: $address, filter: FILTER_VALIDATE_IP, options: FILTER_FLAG_IPV6)) {
					$aaaa = $address;
				} else {
					$a = $address;
				}
			}
			
			$domainName = $this->getDomain(host: $host);
			$hostName = str_replace(search: '.' . $domainName, replace: '', subject: $host);
			$domain = $this->domainRepository->findByName(name: $domainName);
			$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;
			
			$updateHost = function(object $host) use ($hostName, $a, $aaaa) {
				if ($host->host == $hostName) {
					if ($host->type == 'A') {
						if (!empty($a)) {
							$host->value = $a;
						}
					} else {
						if (!empty($aaaa)) {
							$host->value = $aaaa;
						}
					}
				}
			};
			
			array_map(callback: $updateHost, array: $others);
			
			$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->status = json_encode(value: ['message' => 'Domain successfully updated']);
			}
		}
	}
Aufgerufen wird: https://ns1.24unix.net/api/dyndns/dyndnstest.24unix.net

Im body a=1.2.3.4 und/oder aaaa=1bad::babe.
Im Header den APi-Key.

Die Records müssen vorher im Panel angelegt worden sein, die API überschreibt nur, legt nicht neu an.
mfg Micha
--
If Bill Gates had a nickel for every time Windows crashed …
… oh wait, he does.
Post Reply