DynDns -> OVH : début de solution ?

Forum traitant de la distribution sécurisée montante nommée IP cop et basée sur la distribution Smoothwall. C'est à l'heure actuelle le forum le plus actif du site.

Modérateur: modos Ixus

DynDns -> OVH : début de solution ?

Messagepar imnotgood » 11 Sep 2004 21:35

Bonjour à tous,

Ayant quelques domaines chez ovh, je désire utiliser un sous domaine (du genre home.domaine.com ) pour pouvoir me connecter à mon serveur web et ftp à partir de n'importe ou.

Ovh utilisant la même méthode que DynDns, j'ai cherché sur le serveur (ipcop) comment il faisait pour mettre à jour l'ip.
Fichiers utilisés :
/usr/bin/ez-ipupdate (programme C compilé)
/usr/local/sbin/setddns.pl
/var/ipcop/ddns/*

Pour avoir la source du programme ez-ipupdate , il suffit de se rendre sur www.ez-ipupdate.com.
J'ai modifié ez-ipupdate.c en changeant la ligne 59 :
#define DYNDNS_DEFAULT_SERVER "members.dyndns.org"
en
#define DYNDNS_DEFAULT_SERVER "www.ovh.com"

Je compile à partir de ma machine (fedora core 2), je remplace sur le serveur (ipcop).
Et pour avoir directement l'erreur exacte, il suffit d'exécuter soi même le progamme --> /usr/bin/ez-ipupdate
Soit on envoit directement les argument en exécutant le prog
--> /usr/bin/ez-ipupdate [-a IP_EXTERNE_SERVEUR] ou [-i ppp0] -S dyndns -u xxx-ovh:pass -h sd.dom.com -q
Soit le programme demande chaque argument.

Il se connecte correctement à ovh, mais erreurs :
- quand on se trompe de login/pass, il rejette, donc bonne chose, il se connecte tres bien à ovh
- quand tous les éléments sont corrects, le prog retourne : invalid system parameter

Quelqu'un peut-il m'aider ?

Je pense qu'une fois cela résolu, cela rendra service à pas mal de personnes étant chez Ovh et utilisant le Dynhost

D'avance merci

Laurent
imnotgood
Second Maître
Second Maître
 
Messages: 29
Inscrit le: 10 Juin 2004 15:39

Messagepar Franck78 » 11 Sep 2004 21:43

Dis moi plutôt ou est décrite la procédure pour mettre à jour un dyndns ovh, et j'essaierais de caser ça avant la finale.

Ton erreur, c'est le serveur ovh qui ne comprend pas ce qu'il doit faire. Commande , champs valeur pas formatée bref plein de cas possibles!
Franck
L'art de poser une question sur ce site afin d'obtenir la réponse
A LIRE
Avatar de l’utilisateur
Franck78
Amiral
Amiral
 
Messages: 5625
Inscrit le: 20 Fév 2004 01:00
Localisation: Paris

Messagepar imnotgood » 11 Sep 2004 21:46

Salut,

Merci pour ta rapidité ;)
http://guides.ovh.com/DynDns

J'ai fait comme ils disent, même si le prog n'est pas le même, ça doit fonctionner de la même manière.
Bizarre...

Laurent
imnotgood
Second Maître
Second Maître
 
Messages: 29
Inscrit le: 10 Juin 2004 15:39

Messagepar Franck78 » 11 Sep 2004 23:22

Il faudrait un vrai compte de test pour vérifier. J'en ai pas.

Tu peux essayer

#ez-ipupdate -i ppp0 -S dyndns -u "tonlog:pass" -s www.ovh.com -h "ton.domaine.com"

directement sur ton ipcop ?
Franck
L'art de poser une question sur ce site afin d'obtenir la réponse
A LIRE
Avatar de l’utilisateur
Franck78
Amiral
Amiral
 
Messages: 5625
Inscrit le: 20 Fév 2004 01:00
Localisation: Paris

Messagepar imnotgood » 11 Sep 2004 23:35

Ben j'avais déjà essayé comme ça, mais sans succès. Pour etre sur je viens quand même de réessayer mais sans succès :(

J'ai contacté OVH, on verra leur réponse lundi... (au plus tot).

LAurent
imnotgood
Second Maître
Second Maître
 
Messages: 29
Inscrit le: 10 Juin 2004 15:39

Messagepar Franck78 » 11 Sep 2004 23:50

Leur réponse bof!

Je vois pas pourquoi tu as recompilé ez-update.
Si avec cette ligne il ne marche pas, c'est qu'il n'y arrivera jamais
avec
-S dyndns

tu peux essayer les autres.

On tout cas en http c'est bon pour moi, j'ai bien l'erreur credentials qui vont pas. Si tu n'as pas peur de me donner (en MP bien sur) ton compte,
je vérifies.

Ou plutot non tient voila le code perl.

A mettre dans /usr/local/bin
Tu remplaces ton user/pass dans le code
Tu lances
Tu me donnes le résultat

Code: Tout sélectionner
#!/usr/bin/perl
#
# SmoothWall CGIs
#
# This code is distributed under the terms of the GPL
#
# (c) The SmoothWall Team
#
# $Id: setddns.pl,v 1.4.2.5 2004/08/26 08:17:12 alanh Exp $
#


use IO::Socket;

require '/var/ipcop/header.pl';

my %settings;
my %noipsettings;
my $filename = "${swroot}/ddns/config";
my $cachefile = "${swroot}/ddns/ipcache";
my $ipcache = 0;

my $uname = "test";
my $passwd="test";

                                chomp($coded = encode_base64("$uname:$passwd"));


                                my %proxysettings;
                                &readhash("${swroot}/proxy/settings", \%proxysettings);

                                my $peer = 'www.ovh.com';
                                my $peerport = 80;

                                if ($_=$proxysettings{'UPSTREAM_PROXY'}) {
                                        ($peer, $peerport) = (/^(?:[a-zA-Z ]+\:\/\/)?(?:[A-Za-z0-9\_\.\-]*?(?:\:[A-Za-z0-9\_\.\-]*?)?\@)?([a-zA-Z0-9\.\_\-]*?)(?:\:([0-9]{1,5}))?(?:\/.*?)?$/);
                                }

                                my $sock;
                                unless($sock = new IO::Socket::INET (PeerAddr => $peer, PeerPort => $peerport, Proto => 'tcp', Timeout => 5)) {
                                        die "Could not connect to $peer:$peerport: $@";
                                        return 1;
                                }

                                my $GET_CMD;
                                $GET_CMD  = "GET http://www.ovh.com/nic/update?system=dyndns&wildcard=NOCHG&backmx=N&hostname=test HTTP/1.1\r\n";
                                $GET_CMD .= "Host: www.ovh.com\r\n";
                                $GET_CMD .= "Authorization: Basic $coded\r\n";
                                $GET_CMD .= "User-Agent: ipcop 1.4\r\n";
                                $GET_CMD .= "Content-Type: application/x-www-form-urlencoded\r\n";
                                $GET_CMD .= "\r\n";
                                print $sock  "$GET_CMD";

                                my $out = '';
                                while(<$sock>) {
                                        $out .= $_;
                                }
                                close($sock);
                                print ($out);



sub encode_base64 ($;$)
{
    my $res = "";
    my $eol = $_[1];
    $eol = "\n" unless defined $eol;
    pos($_[0]) = 0;                          # ensure start at the beginning
    while ($_[0] =~ /(.{1,45})/gs) {
        $res .= substr(pack('u', $1), 1);
        chop($res);
    }
    $res =~ tr|` -_|AA-Za-z0-9+/|;               # `# help emacs
    # fix padding at the end
    my $padding = (3 - length($_[0]) % 3) % 3;
    $res =~ s/.{$padding}$/'=' x $padding/e if $padding;
    # break encoded string into lines of no more than 76 characters each
    if (length $eol) {
        $res =~ s/(.{1,76})/$1$eol/g;
    }
    $res;
}

Franck
L'art de poser une question sur ce site afin d'obtenir la réponse
A LIRE
Avatar de l’utilisateur
Franck78
Amiral
Amiral
 
Messages: 5625
Inscrit le: 20 Fév 2004 01:00
Localisation: Paris

Messagepar imnotgood » 12 Sep 2004 00:06

Ben avant de lire ton post, je suis allé à l'adresse :
http://www.ovh.com/nic/update/?..............
(.......... = mes arguments)

Et j'ai testé pleins de trucs notament system=dyndns . Je venais juste dire que ça fonctionne nickel mnt :d
---> il manquait system=dyndns

Pourquoi je l'ai recompilé ? Simplement pour pouvoir remplacer utiliser le programme d'ipcop.
Je vais modifier quelques trucs maintenant et proposer un "patch" pour OVH.

Je vous tiens au courrant...

Merci à toi de m'avoir consacré de ton temps ;)

A bientot
imnotgood
Second Maître
Second Maître
 
Messages: 29
Inscrit le: 10 Juin 2004 15:39

Messagepar Franck78 » 12 Sep 2004 00:13

Dis moi juste si ce bout de perl (extrait de setddns.perl)
fonctionne quand tu places ton user:passwd !

Pour intégrer un nouveau provider, il y a d'autres choses à modifier dans le GUI et je pourrais peut etre encore les placer.
Franck
L'art de poser une question sur ce site afin d'obtenir la réponse
A LIRE
Avatar de l’utilisateur
Franck78
Amiral
Amiral
 
Messages: 5625
Inscrit le: 20 Fév 2004 01:00
Localisation: Paris

Messagepar imnotgood » 12 Sep 2004 00:22

Le script retourne ceci :


HTTP/1.1 200 OK
Date: Sat, 11 Sep 2004 22:20:20 GMT
Server: Apache/1.3.26 (Unix) AuthMySQL/2.20 mod_gzip/1.3.19.1a mod_ssl/2.8.10 OpenSSL/0.9.7
Transfer-Encoding: chunked
Content-Type: text/plain

12
n'est pas une ip

0


Laurent
imnotgood
Second Maître
Second Maître
 
Messages: 29
Inscrit le: 10 Juin 2004 15:39

Messagepar Franck78 » 12 Sep 2004 00:31

original comme réponse.... !

n'est pas une ip.

Alors ton ip dynamique RED est mise jour ou non ?

"irc" tu as, c'est plus facile pour échanger !

serveur: irc.freenode.net
canal: #ixus
Franck
L'art de poser une question sur ce site afin d'obtenir la réponse
A LIRE
Avatar de l’utilisateur
Franck78
Amiral
Amiral
 
Messages: 5625
Inscrit le: 20 Fév 2004 01:00
Localisation: Paris

Messagepar imnotgood » 12 Sep 2004 01:50

C'est clair, c très bizarre.
Cette nuit ou demain, je tenterai de le faire fonctionner.

Oui pour ma part, le prog (ez-ipupdate) met bien à jour l'ip. Tout fonctionne à merveille.
Pour ceux qui le souhaite, il n'y a qu'à demander ;)
--> l'archive contient les 2 fichiers du programme ( setddns.pl et ez-ipupdate ) ainsi que le fichier ddns.cgi pour l'interface d'admin ipcop.

Laurent

PS: pas irc. Msn ? Si oui, envoies ton mail par mp ;)
imnotgood
Second Maître
Second Maître
 
Messages: 29
Inscrit le: 10 Juin 2004 15:39

Messagepar Franck78 » 12 Sep 2004 12:37

$GET_CMD = "GET http://www.ovh.com/nic/update?system=dy ... 01.234.202 HTTP/1.1\r\n";

Ok j'ai créée un compte de test mais j'ai pas encore de dyndns possible.

Cette requete semble suffire, j'ai !yours (not yours) quand je la balance.

Maintenant il me faut le message quand c'est bon.
-Dans le cas ou l'IP a changé (une mise a jour réèlle)
-Dans le cas ou l'IP n'a pas changé. (genre de renouvellement, des fois le message varie).
Franck
L'art de poser une question sur ce site afin d'obtenir la réponse
A LIRE
Avatar de l’utilisateur
Franck78
Amiral
Amiral
 
Messages: 5625
Inscrit le: 20 Fév 2004 01:00
Localisation: Paris

Messagepar imnotgood » 12 Sep 2004 18:10

Salut,

alors le serveur répond ceci :
Quand OK --> good xxx.xxx.xxx.xxx
Quand Erreur (déjà à jour) --> nochg xxx.xxx.xxx.xxx

Tu as toute la liste des erreurs possible dans la source d'ez-ipupdate :
good
nohost
notfqdn
!yours
abuse
nochg
badauth
badsys
badagent
numhost
dnserr


( chaque fois suivi d'un espace + l'ip ).


Jette un coup d'oeuil à la source du prog C (www.ez-ipupdate.com), il te permettra d'apprendre pleins de choses (si tu as envie) à propos de ce système :o)

Laurent
imnotgood
Second Maître
Second Maître
 
Messages: 29
Inscrit le: 10 Juin 2004 15:39

Messagepar imnotgood » 12 Sep 2004 18:21

Franck78 a écrit:Il faudrait un vrai compte de test pour vérifier. J'en ai pas.

Tu peux essayer

#ez-ipupdate -i ppp0 -S dyndns -u "tonlog:pass" -s www.ovh.com -h "ton.domaine.com"

directement sur ton ipcop ?


Pour en revenir à ce post, en fait ça devrait marcher à une chose près.
En regardant dans le code (ez-ipupdate.c), -S dyndns n'ajoute pas system=dyndns . En mettant -S dyndns-custom , il ajoute system=dyndns-custom . Donc je devais bien modifier le prog source ;)

Mais pour que ce soit plus "propre", j'ai carrément rajouter une option OVH (quasi identique à celle de DynDns).

Laurent
Dernière édition par imnotgood le 12 Sep 2004 20:40, édité 1 fois au total.
imnotgood
Second Maître
Second Maître
 
Messages: 29
Inscrit le: 10 Juin 2004 15:39

Messagepar Franck78 » 12 Sep 2004 19:47

Alors soumets ton patch au mainteneur de ez-ipdate.
En attendant je tente de faire ajouter ovh à la prochaine RC.

bye
Franck
L'art de poser une question sur ce site afin d'obtenir la réponse
A LIRE
Avatar de l’utilisateur
Franck78
Amiral
Amiral
 
Messages: 5625
Inscrit le: 20 Fév 2004 01:00
Localisation: Paris

Suivant

Retour vers IPCop

Qui est en ligne ?

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

cron