Weiterleitung, HTML und DynDns

Status
Für weitere Antworten geschlossen.

WHS2

Benutzer
Mitglied seit
20. Jan 2010
Beiträge
83
Punkte für Reaktionen
1
Punkte
8
Liebe Forum Crack's :D

Ich habe folgendes Problem und finde einfach leine Lösung dafür.

Ich möchte im Prinzip eine Homepage auf der DiskStation hosten, aber wenn die DS aus (oder nicht erreichbar ist), soll wieder auf den normalen Webhoster "umgeschaltet" werden.
Ich habe dazu einen DynDns account und kann die HP auf der DS erreichen/anzeigen.

Ich dachte mir, daß auf der HP beim Webhoster eine Abfrage stattfindet (Ping?), ob die DS im Netz erreichbar ist. Wenn ja, dann soll die HP auf den DynDns Account auf die DS weitergeleitet werden.
Wenn die DS nicht erreichbar ist, dann soll alles beim webhoster bleiben.

Habt Ihr dazu eine Idee, wie ich das realisieren kann?

Vielen Dank schon mal und 'nen schönen Tag noch
whs2
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Ein einfaches Ping reicht nicht aus, um festzustellen ob der Webserver (Apache auf der DS) auch wirklich läuft und antwortet. Da müsstet du einen HTTP Request machen und entsprechend reagieren.
PHP:
<?php
$dyndns = 'DEINACCOUNT.dyndns.org'; //hier deinen dyndns Hostnamen angeben
$fp = fsockopen($dyndns, 80, $errno, $errstr, 10);
if(!$fp){
 //DS nicht erreichbar. Webseite beim Hoster anzeigen
}else{
 //DS erreichbar. Webserver prüfen
 $out = "HEAD / HTTP/1.1\r\n";
 $out .= "Host: {$dyndns}\r\n";
 $out .= "Connection: Close\r\n\r\n";
 $ret = array();
 fwrite($fp, $out);
 while (!feof($fp)) {
  $ret[] = fgets($fp, 128);
 }
 fclose($fp);
 //Webserverantwort prüfen
 if(strpos($ret[0],'200') !== false){
  //Webserver hat einen Status 200 (alles okay) zurückgegeben
  //also auf deine dyndns Adresse weiterleiten
  header("Location: http://{$dyndns}");
  exit;
 }
}
?>
Diesen Code könntest du beim Hoster laufen lassen. Wenn die DS läuft und der Webserver erreichbar ist, dann wird auf deinen dyndns Namen weitergeleitet
 
Zuletzt bearbeitet von einem Moderator:

anjoho

Benutzer
Mitglied seit
05. Jan 2010
Beiträge
366
Punkte für Reaktionen
0
Punkte
22
Hi, eine Möglichkeit wäre eine Abfrage auf deiner HP deines Webhosters.
Dort klingelst du erst mal zu Hause (DS) an, ob sie online ist.
Wenn ja dann auf die DS verlinken, wenn nein die HP bei deinem Webhoster starten.

Mit ein paar PHP-Kenntnissen realisierbar.

Gruß Jochen
 

anjoho

Benutzer
Mitglied seit
05. Jan 2010
Beiträge
366
Punkte für Reaktionen
0
Punkte
22
Diesen Code könntest du beim Hoster laufen lassen. Wenn die DS läuft und der Webserver erreichbar ist, dann wird auf deinen dyndns Namen weitergeleitet

OK, jahlives war mal wieder etwas schneller und kongreter :D
 

WHS2

Benutzer
Mitglied seit
20. Jan 2010
Beiträge
83
Punkte für Reaktionen
1
Punkte
8
Danke- Funktioniert

Danke jahlives, klappt und funktioniert.
Falls jemand den Code kopieren will,in Zeile 2 soll heissen dyndns.

Danke an alle für dieses tolle Forum!
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
D
Falls jemand den Code kopieren will,in Zeile 2 soll heissen dyndns.
Autsch, das hat man davon wenn man Codes schreibt und selber nicht testet. Aber zum Glück gibt es in unserem Forum genügend menschliche Debugger (ich korrigier meinen Code gleich)
Btw: mein kundenfreundliches Lizenzierungsmodell kennst du bereits? Supergünstige 100 Euronen pro Aufruf des Codes. Bei Nichtbezahlen Besuch von meinen Schlägern :D ;)

Da ich meinen Beitrag nicht mehr editieren kann, hier also die korrigierte Version
PHP:
 <?php
$dyndns = 'DEINACCOUNT.dyndns.org'; //hier deinen dyndns Hostnamen angeben
$fp = fsockopen($dyndns, 80, $errno, $errstr, 10);
if(!$fp){
 //DS nicht erreichbar. Webseite beim Hoster anzeigen
}else{
 //DS erreichbar. Webserver prüfen
 $out = "HEAD / HTTP/1.1\r\n";
 $out .= "Host: {$dyndns}\r\n";
 $out .= "Connection: Close\r\n\r\n";
 $ret = array();
 fwrite($fp, $out);
 while (!feof($fp)) {
  $ret[] = fgets($fp, 128);
 }
 fclose($fp);
 //Webserverantwort prüfen
 if(strpos($ret[0],'200') !== false){
  //Webserver hat einen Status 200 (alles okay) zurückgegeben
  //also auf deine dyndns Adresse weiterleiten
  header("Location: http://{$dyndns}");
  exit;
 }
}
?>
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
mein kundenfreundliches Lizenzierungsmodell kennst du bereits? Supergünstige 100 Euronen pro Aufruf des Codes. Bei Nichtbezahlen Besuch von meinen Schlägern :D ;)

Hast dein Code auch unter GPL* gestellt?

*Geld pro Lauf :D

Ich war so frei und hab im Post korrigiert :)

Itari
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat