Weiterleitung, HTML und DynDns

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.

WHS2

Benutzer
Registriert
20. Jan. 2010
Beiträge
83
Reaktionspunkte
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
 
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:
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
 
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!
 
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;
 }
}
?>
 
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
 
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