serveur de secours via les pages perso des FAI.

Forum dédié à la distribution du même nom et que vous pourrez télécharger sur http://www.contribs.org. La nouvelle version de cette distribution se nomme SME Server

Modérateur: modos Ixus

serveur de secours via les pages perso des FAI.

Messagepar neodam » 04 Juil 2006 16:31

bonjour.


Voila ma petite demande.
J'ai donc un serveur perso sous SME 6.01.
il est utilisé pr des acces FTP mais surtout aussi pr faire du streaming audio.
Le hic c'est qu'en ce moment avec les grosses chaleurs ma moitié apprécierais grandment que je coupe tous les ordis lorsque je ne m'en sert pas, c'est a dire quand je dors ou quand on est pas la du WE par exemple.
Le soucis c'est que les gens voulant acceder aux streamings se retrouvent alors avec une erreur 404 classique.
J'aurais en fait voulu mettre en place une sorte de serveur redondant avec les pages perso des FAI simplement pr avoir une page du genre :
'serveur en cours de maintenance, repassez plus tard'

plutot que le classique erreur 404, cela permet d'eviter d'avoir des retours sur des liens cassés alors que c'est simplement que le serveur etait 'offline', et de laisser penser aux gens que le serveur est HS (et de ce fait virer le lien de leur raccourcis si il y etait)....

je suppose qu'un script permettrait de faire ceci mais je n'en ai aucune certitude ni competences.
Si vous pouviez m'eclairer sur le sujet, d'avance MERCI.


pr le script, je pensais a un truc dans le genre :

if (ping "mon_ip", NULL);
then (maintenance.html);


le serveur du FAI n'herbegerait donc qu'une seule page web toute simple avec le script et le message de maintenance.

voila.
Merci
neodam
Enseigne de vaisseau
Enseigne de vaisseau
 
Messages: 176
Inscrit le: 11 Mai 2006 03:40
Localisation: France, 35, Rennes

Messagepar TitiSeb28 » 04 Juil 2006 20:57

tu peut essayer sa plutot

$site = "www.sprint.net";
$i = fsockopen($site, 80);
if($i) { echo "<font color=green>Fonctionne</font>"; }
else { echo "<font color=red>Arreté</font>"; }

je pence que c mieux. a la place du port 80 tu peut mettre celui que tu veut.
Ceux script doit etre herberger cher ton fai

il exite aussi des site qui le font mais je retrouve plus l'adresse
Avatar de l’utilisateur
TitiSeb28
Matelot
Matelot
 
Messages: 2
Inscrit le: 04 Juil 2006 20:52

Messagepar sibsib » 04 Juil 2006 21:42

Hello,

Pour mettre une solution de ce type en place, il faut alors que tes pages web soient toujours chez ton hébergeur.

Dans ce cas, en effet, au moment ou un 'clic est fait sur un lien de streaming (qui lui est chez toi), on peut envisager un peu de php/javascript/je sais pas quoi d'autre) qui informe de la défaillance.

Mais si tu souhaites avoir en temps normal la page web chez toi, pour moi c'est 'cuit'.

A+,
Pascal
Sibsib, admin heureux d'un petit SME !!!
- SME 8.0 beta 6 dans une VM :-)
- ESXI 4.1 sur hardware noname
Ma petite page sur SME
Avatar de l’utilisateur
sibsib
Amiral
Amiral
 
Messages: 2368
Inscrit le: 11 Mai 2002 00:00
Localisation: France - région parisienne

Messagepar neodam » 05 Juil 2006 14:23

sibsib

non mon but n'est pas d'utiliser le site de mon FAI pour y heberger mes pages webs, si j'en veux elle seront sur mon serveur perso, plus facile a gerer...
Pour le moment les liens en streaming ne sont donné que sur des forums. donc pas de pages web avec...
bon il serait facilement envisageable de faire un lien vers la page web sur les forums et de mettre les liens des stream dans la page web, mais ce n'est pas mon boulot (les fichiers en streaming ne sont pas a moi, je ne fait qu'heberger...).

Je pensais simplement qu'un script (php, javascript) suffirait a faire cette manip.

Les pages perso n'hebergerait alors plus qu'une seule page toute simple, contenant juste le script de test de la connexion....

vu ce qu'ecrit titiseb, cela me parait fesable, apres il me faut plus de details.


d'ou ma question a titiseb, peux-tu me donner plus de details STP.
qu'elle langage?? que fait ta fonction?? etc.
(je n'ai que quelques connaissances basique du javascript, et le html de base pr faire des pages toute moche!! :oops: )

Merci pour votre aide.

cette demande devient d'autant plus interessante que FT a passer le prix de l'abo a 15€/mois debut juillet en toute discrétion et que le degroupage total nous tends les bras.
donc pendant le laps de temps du passage en degroupage total, cette petite page de secours servirais bien...
neodam
Enseigne de vaisseau
Enseigne de vaisseau
 
Messages: 176
Inscrit le: 11 Mai 2006 03:40
Localisation: France, 35, Rennes

Messagepar Grand-Pa » 05 Juil 2006 14:54

Pour couper court, ce que tu demandes, neodam, ne peut pas fonctionner.

Pour que ça fonctionne il faudrait pouvoir jouer au niveau des serveurs DNS de ta zone pour affecter une priorité aux champs A ou CNAME de ton hôte, à la manière du champ MX. Hors cette fonctionnalité n'existe pas (et c'est bien dommage) !

On pourrait alors envisager que tu sois ton propre gestionnaire DNS sur plusieurs sites (ie. c'est toi le SOA), avec des scripts de détection de la présence de ta machine sur le Net, qui mettraient à jour les enregistrements avec la nouvelle adresse IP.
Ca pose 3 nouveaux problèmes :
- il faut que tu puisses gérér toi même ta zone sur plusieurs serveurs ET avoir le droit de créer des scripts qui modifient à la volée tes enregistrements
- généralement ton FAI ne connait pas ton nom de domaine et ne redirigera pas les requêtes faites sur ton NDD vers tes pages perso
- la mise à jour des DNS au niveau global prend plusieurs heures

La seule solution valable me semble donc être celle proposée par sibsib, mais elle ne répond pas à tes critères, semble t'il. :(
Et hop, finis les galons !
Avatar de l’utilisateur
Grand-Pa
Vice-Amiral
Vice-Amiral
 
Messages: 728
Inscrit le: 08 Avr 2002 00:00
Localisation: Gap, France

Messagepar jibe » 05 Juil 2006 19:30

Salut,

Un peu pressé, je ne vérifie pas et suis un peu étonné que Grand-Pa n'ait pas donné cette solution. Peut-être donc me trompé-je...

Mais il me semble pourtant bien que Dyndns propose une solution de substitution en cas de serveur offline. En tous cas, elle existe et je l'utilise pour les mails, je crois qu'elle existe aussi pour http...

C'est possible dans ce cas, puisque comme l'explique Grand-Pa, dyndns a la maitrise des DNS et peut facilement détecter si ton serveur est ou non on line.

Bien sûr, ce n'est pas un service gratuit de dyndns (il faut bien qu'ils gagnent un peu d'argent de temps en temps :wink: )... De mémoire, il faut un Custom DNS et activer une option. Si tu ne trouves pas, re-poste, je chercherai. Mais je vais être quelques jours en déplacement, sans bécane et sans internet => je répondrai un peu tardivement...
"Le monde ne sera pas détruit par ceux qui font le mal, mais par ceux qui les regardent sans rien faire" (Albert Einstein)

Autrefois, l'Etat défendait des valeurs. Maintenant, il défend des profits... (Anne Haunnime)
Avatar de l’utilisateur
jibe
Amiral
Amiral
 
Messages: 4366
Inscrit le: 17 Oct 2003 00:00
Localisation: Haute Savoie

Messagepar Grand-Pa » 06 Juil 2006 00:02

Arf ! Au temps pour moi, ça a beau faire 6 ans que j'ai des domaines gérés chez eux, je ne me suis jamais intéressé à leurs offres payantes.
Ce serait donc à étudier, en effet.

neodam, si tu trouves une méthode efficace pour ton problème, n'hésite pas à nous en faire part. :wink:
Et hop, finis les galons !
Avatar de l’utilisateur
Grand-Pa
Vice-Amiral
Vice-Amiral
 
Messages: 728
Inscrit le: 08 Avr 2002 00:00
Localisation: Gap, France

Messagepar neodam » 06 Juil 2006 00:49

bah visiblement ça a l'air plus complique que je me l'etais imaginé.

en fait dans ma tete, je voulais que, la page hebergé sur les pages perso verifie de maniere reguliere si mon serveur est online ou pas, mais en y reflechissant, techniquement c'est pas possible, une page web etant inactive tant que personne ne vient l'ouvrir. hors ce n'est pas ce que je recherche...
je veux juste qu'elle s'affiche quand mon serveur est offline.


une autre idee m'est venu et pourrais etre plus facilement réalisable!
il faudrait simplement un script sur le serveur qui dès qu'une commande de reboot ou de shutdown est demandé, il envois alors à dyndns (ou un autre gerant des dns) une ip renvoyant alors vers les pages perso, qui n'hébergerait alors qu'une simple page avec un message basique du genre 'serveur en cours de maintenance'.
une modification de ddclient pourrait etre envisagé.
Mais 2 problemes se posent a moi.
1 - je sais pas faire de script pour linux
2 - je doute qu'il soit possible d'avoir acces a l'ip d'un site de page perso.

jibe
>>ta solution doit surement exister c'est un des principe utilisé pr les sites a gros passage.
si jamais un serveur lache le suivant prend le relais.
seulement je n'ai qu'un serveur perso qui n'hberge meme pas de page web, donc je me vois mal payer pr un tel service....


voila.

je pense que mon idee pourra servir a plus d'un alors je continue a la creuser!
neodam
Enseigne de vaisseau
Enseigne de vaisseau
 
Messages: 176
Inscrit le: 11 Mai 2006 03:40
Localisation: France, 35, Rennes

Messagepar jimro » 06 Juil 2006 11:56

Bonjour,

Un service crontab comme celui proposé par http://www.webcron.org/ (gratuit) aurait pu convenir pour lancer un script à intervalles réguliers ; les hic, c'est que je ne crois pas qu'il soit possible de paramétrer une fréquence inférieure à une heure, et surtout je ne vois pas comment tu pourrais, de cette manière, modifier chez dyndns.org (ou autre) l'adresse IP sur laquelle il doit pointer. Mais je ne connais pas grand-chose sur le sujet...


Il reste a priori deux solutions envisageables, en supposant que tu utilises un service du type dyndns.org.

Hypothèse n° 1 :
dyndns.org pointe vers ton serveur SME local : utilise l'option de redirection Offline

Hypothèse n° 2 :
dyndns.org pointe vers ton site pages perso :
- mise en place d'un script PHP utilisant les fonctions fopen et/ou fsockopen pour tester si ton serveur local est accessible
- si le serveur local est accessible, ton site pages perso fait une redirection vers la page demandée de ton serveur local
- sinon ton site pages perso affiche un message de maintenance

Dans cette 2e hypothèse, deux fichiers à créer à la racine de ton site pages perso :
- .htaccess contenant :
Code: Tout sélectionner
ErrorDocument 404 /index.php

- et un fichier index.php contenant le code ci-dessous (la fonction test_lien pourrait être fortement simplifiée pour l'utilisation que tu veux en faire) :
Code: Tout sélectionner
<?php
   // Accessibilité du serveur
   $site = "http://tonserveurlocal/";
   // OU Accessibilité de la page demandée sur le serveur
   // $site = "http://tonserveurlocal".$_SERVER['REQUEST_URI'];

   if ( in_array(strtolower(ini_get('allow_url_fopen')), array('', '0', 'off')) ) {
      // Test avec fonction test_lien()
      if (test_lien($site) == 0) {
         $lien_ok = 0;
      } else {
         $lien_ok = 1;
      }
   // si allow_url_fopen est à on
   } else {
      $file = @fopen($site, 'rb');
      if (!$file) {
         $lien_ok = 0;
      } else {
         fclose($file);
         $lien_ok = 1;
      }
   }
   if ($lien_ok == 0) {
      echo "Désolé, maintenance du serveur en cours."; // A personnaliser ;-)
   } else {
      header("Status: 301 Moved Permanently", false, 301);
      header("Location: http://tonserveurlocal".$_SERVER['REQUEST_URI']);
      exit();
   }

// Fonction test_lien
// ------------------
function test_lien($url) {
   // Test si url est bien précisé
   if (empty($url) || $url=='http://') {
      return 0;
   // Si url, récupération des composants : protocole, hôte, chemin, ...
   } else {
      if ((strstr($url,"http://") != $url)
         && (strstr($url,"https://") != $url)
         && (strstr($url,"ftp://") != $url)) {
         $url = "http://".$url;
      }
      $url_parts = @parse_url($url);
      // Certains composants récupérés ne sont peut-être pas utiles dans le contexte
      $target = isset($url_parts['scheme']) ? $url_parts['scheme'].':'.((strtolower($url_parts['scheme']) == 'mailto') ? '':'//'): '';
      $target .= isset($url_parts['user']) ? $url_parts['user'].(isset($url_parts['pass']) ? ':'.$url_parts['pass']:'').'@':'';
      if (!isset($url_parts['host'])) {
         return 0;
      } else {
         $host = $url_parts['host'];
         $target .= $host;
      }
      $port = isset($url_parts['port']) ? $url_parts['port'] : '80';
      $target .= isset($url_parts['port']) ? ':'.$port : '';
      $documentpath = isset($url_parts['path']) ? $url_parts['path'] : '/';
      $documentpath .= isset($url_parts['query']) ? '?'.$url_parts['query'] : '';
      $documentpath .= isset($url_parts['fragment']) ? '#'.$url_parts['fragment'] : '';
      //Connexion via socket (time-out réglé à 30 s)
      $socket = @fsockopen($host, $port, $errno, $errstr, 30);
      //Si échec connexion
      if ($socket === false) {
         return 0;
      } else {
         // Utilisation de l'en-tête HEAD
         fwrite($socket, "HEAD ".$target.$documentpath." HTTP/1.1\r\nHost: $host\r\n\r\n");
         $http_response = fgets($socket, 1024);
         // Réponses HTTP indiquant l'impossibilité de se connecter
         if ( (ereg("404", $http_response))          // NOT FOUND
              // Les lignes suivantes peuvent être activées en fonction des besoins
              // || (ereg("302", $http_response))    // REDIRECT - NOFOUND
              // || (ereg("400", $http_response))    // BAD REQUEST
              // || (ereg("401", $http_response))    // UNAUTHORIZED
              // || (ereg("402", $http_response))    // PAYMENT REQUIRED
              // || (ereg("403", $http_response))    // FORBIDDEN
              // || (ereg("500", $http_response))    // INTERNAL ERROR
              // || (ereg("501", $http_response))    // NOT IMPLEMENTED
              // || (ereg("502", $http_response))    // SERVICE TEMPORARILY OVERLOADED
              // || (ereg("503", $http_response))    // GATEWAY TIMEOUT
            )
         {
            fclose($socket);
            return 0;
         } else {
            fclose($socket);
            return 1;
         }
      }
   }
}
?>


En espérant que ça puisse servir et que je ne me suis pas trompé en modifiant mon script pour les besoins du sujet.


jimro
E-Smith 5.1 - Mode server only - Pentium III 450 MHz - 256 Mo - HD 10 Go
Archivage textes pour intranet depuis 09/2002
SME Server 6.0.1-01 - Mode server only - Pentium III 1 GHz - 256 Mo SDRAM - HD 20 Go IDE
Portail Web pour intranet depuis 09/2004
jimro
Premier-Maître
Premier-Maître
 
Messages: 70
Inscrit le: 24 Oct 2004 20:09

Messagepar TitiSeb28 » 06 Juil 2006 14:06

salut mon script test si le port 80 de ton domaine et actif

si il y et action il affiche que c bon ( tu peut mettre une redirection ou autre )
et si l'ouverture ne marche pas il passe a l'autre argument pages inaxesible

ceux script et en php
Avatar de l’utilisateur
TitiSeb28
Matelot
Matelot
 
Messages: 2
Inscrit le: 04 Juil 2006 20:52

Messagepar jibe » 20 Juil 2006 23:21

Salut,

Me revoilà, en plus bronzé 8)

@Grand-Pa : Ce à quoi je pensais était le service WebHop, et j'étais un peu à côté de la plaque en ce qui concerne la demande de neodam, puisque ni le but ni le fonctionnement ne correspondent vraiment à ce que je pensais...

Par contre, ce service est gratuit pour 5 URLs, il peut donc être intéressant dans certains cas. Quant à la demande de neodam, elle me semble pouvoir être réalisée simplement en renseignant l'option "Offline URL" du service Dynamic DNS comme le souligne jimro. Mais c'est une option payante ! Finalement, je me demande si ce n'était pas à cela que je pensais, et que j'ai confondu avec WebHop...

neodam a écrit:jibe
>>ta solution doit surement exister c'est un des principe utilisé pr les sites a gros passage.
si jamais un serveur lache le suivant prend le relais.

C'est à la fois ce principe et un peu différent, puisqu'il s'agit non pas de deux serveurs d'un même réseau mais de faire basculer la gestion d'une IP dynamique entre le serveur géré et un autre totalement différent (ce pourrait être n'importe quel hébergeur, pas nécessairement ton FAI).

neodam a écrit:seulement je n'ai qu'un serveur perso qui n'hberge meme pas de page web, donc je me vois mal payer pr un tel service....

:oops: Je me rends compte que j'avais lu un peu vite ta question, et l'avais assimilée au renvoi d'un site hébergé par ta SME vers un miroir chez ton FAI en cas de défaillance ou d'arrêt de ta SME...

Effectivement, le problème est totalement différent !

Ne pourrais-tu pas simplement mettre une page de liens chez ton FAI, renvoyant vers les adresses FTP de ta SME et gérer tes pages d'erreur ? Cela me parait simple et efficace pour les requêtes FTP. Pour le streaming, je n'ai aucune expérience ni connaissance sur le sujet, je ne sais pas si un principe similaire est possible, mais cela me semble bien probable...
"Le monde ne sera pas détruit par ceux qui font le mal, mais par ceux qui les regardent sans rien faire" (Albert Einstein)

Autrefois, l'Etat défendait des valeurs. Maintenant, il défend des profits... (Anne Haunnime)
Avatar de l’utilisateur
jibe
Amiral
Amiral
 
Messages: 4366
Inscrit le: 17 Oct 2003 00:00
Localisation: Haute Savoie

Messagepar neodam » 21 Juil 2006 00:09

oui j'ai pensé aussi a cela, mais je ne voudrais me servir du FAI qu'en dernier recours donc c'est pas non plus une solution ideale.

j'avais egalement penser a simplement mettre une page de redirection sur les pages perso du FAI sur laquelle mon dns pointerais mais c'est pas possible techniquement.
on peut pas avoir l'ip d'un site sur page perso.
ça donne l'ip du serveur qui les gere...

bref la meilleure solution serais selon moi, la solution payante de dyndns, ou bien un service d'entraide entre utilisateurs de SME.
quand une SME est offline elle renvois l'ip d'un utilisateur qui est d'accord pr recevoir les requetes en cas de defaillance d'un autre utilisateur.
Mais apres ça, vient un autre pb, comment faire pr que les utilisateurs provenant de la SME defaillante soient bien géré sur la SME de "secours" qui plus est si celle ci contient deja un site web...

bref je pensais la chose simple et en fait elle ne l'est pas..
neodam
Enseigne de vaisseau
Enseigne de vaisseau
 
Messages: 176
Inscrit le: 11 Mai 2006 03:40
Localisation: France, 35, Rennes

Messagepar Grand-Pa » 21 Juil 2006 08:40

neodam a écrit:quand une SME est offline elle renvois l'ip d'un utilisateur
Non. Si elle est offline, elle ne peut pas renvoyer quoi que ce soit. :P
Et hop, finis les galons !
Avatar de l’utilisateur
Grand-Pa
Vice-Amiral
Vice-Amiral
 
Messages: 728
Inscrit le: 08 Avr 2002 00:00
Localisation: Gap, France

Messagepar neodam » 21 Juil 2006 13:00

oui je me suis mal expliqué.

quand elle est mise en offline de maniere classique. (plus haut dans le sujet j'avais parlé de faire un ptit script pr changer l'adresse ip du compte dyndns a l'extinction de la SME).

Maintenant quand elle tombe en rade de maniere non prévu, on retombera sur l'erreur 404....
neodam
Enseigne de vaisseau
Enseigne de vaisseau
 
Messages: 176
Inscrit le: 11 Mai 2006 03:40
Localisation: France, 35, Rennes

Messagepar falconeye quebec » 21 Juil 2006 18:06

Je me pose la question:

Chez ovh, on peut utiliser ns1.XXXXX.XXX et ns2.XXXXX.XXX qui représente la redirection vers ton domaine. On peut utiliser leurs ns1 et ns2 a la manière adresse IP aussi c.a.d. xxx.xxx.xxx.xxx.

Mon raisonnement a ce sujet :

Si l'on prends un hébergement gratuit, genre hebergementgratuit.com ( pas de pub ) qui utilise les dns 1 et 2 pour la redirection, peut-on prendre ces dns et les convertir en adresses ip gérable par dyndns ?

Ainsi, on aurait qu'a modifier l'ip dans dyndns afin de rediriger vers la page voulue sur l'hebergeur gratuit pendant que notre server est offline.

Cette methode ( si réalisable ) comporte néanmoins de se procurer un domaine et n'est pas automatique quand le server maison est offline, mais elle pourrais dépanner ou amener une meilleure idée dans ce sens.

A++
falconeye quebec
Premier-Maître
Premier-Maître
 
Messages: 54
Inscrit le: 12 Juil 2006 19:29
Localisation: Drummondville Québec


Retour vers E-Smith / SME Server

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité

cron