IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

mise à jour dns


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de donnadieujulien
    Développeur informatique
    Inscrit en
    Avril 2008
    Messages
    433
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2008
    Messages : 433
    Par défaut mise à jour dns
    Bonsoir, je code un petit programme batch en java pour mettre à jour entre autre mon ip quand il change.

    J'ai eu beau me prendre la tête, rien à faire : le programme marche, mais dès qu'il doit mettre à jour la dns, quoi qu'il arrive il reboucle toujours sur "DNS obsolète". J'ai remarqué que si je fais stop->start MANUELEMENT, il remarche normalement.
    MAis par contre, si je fais la meme chose directement dans le programme stop_service(); start_service();, ca ne marche pas...

    Le problème est qu'une fois que la dns n'est plus valable, l'url lourl.exec_URL("url de mon site qui mets etat_DNS à true"); renvoie toujours false...

    Franchement je suis entrain de devenir fous, quelque chose m'échappe mais je ne vois pas quoi...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    private Timer createTimer (){
    		// Création d'une instance de listener 
    		// associée au timer
    		ActionListener action = new ActionListener (){
    			// Méthode appelée à chaque tic du timer
    			public void actionPerformed (ActionEvent event){
     
    				//vérification DNS obsolète
    				//suppression sessions expirées
    				//affichage console
    				try{
    					sqlq.set_row("etat_dns",false);	
    					lsj_open_url lourl = new lsj_open_url();
    					//test connexion internet
    					//si pas de connexion, on ne peut mettre à jour la DNS
    					if(lourl.exec_URL("http://www.google.fr")){
    						//puis test DNS
    						//on tente d'ecrire la table par l'url web
    						//si DNS obsolète, la table ne sera pas écrite
    						lourl.exec_URL("url de mon site qui mets etat_DNS à true");
     
    						if(sqlq.get_row("etat_dns")){
    							delete_last_line(".....DNS à jour\n");
    							state  += t.get_time_string() + ".....DNS à jour\n";	
    						}
    						else{
    							delete_last_line(".....DNS obsolète\n");
    							state  += t.get_time_string() + ".....DNS obsolète\n";
    							if(lourl.exec_URL(url du fournisseur de domaine pour mettre à jour mon ip)){
    								state  += t.get_time_string() + ".....Mise à jour DNS réussie\n";
    	/*							stop_service();
    								start_service();*/
     
    							}
    							else{
    								state += t.get_time_string() + ".....Mise à jour DNS échouée\n";
    							}
    							pt = "";
    						}
    					}
    					else{
    						delete_last_line(".....Connexion internet perdue\n");
    						state += t.get_time_string() + ".....Connexion internet perdue\n";
    					}
     
    					//toutes les 20 minutes, on met à jour les sessions users
    					//(sessions de 20 min)
    					cmpt++;
    					if(cmpt == 12*20){
    						cmpt = 0;
    						if(sqlq.maj_table_auth()){
    							sqlq.set_row("etat_user",true);
    							state  += t.get_time_string() + ".....Mise à jour USER réussie\n";
    						}
    						else{
    							sqlq.set_row("etat_user",false);
    							state  += t.get_time_string() + ".....Mise à jour USER échouée\n";
    						}
    						pt = "";
    					}
    					if(pt.length() == 10)
    						pt = "";
    					else
    						pt += "|";
     
    					jTextArea.setText(state + pt);
    					repaint();
     
    					lourl = null;
    				}
    				catch(Exception e){
    					e.printStackTrace();
    				}
    			}
    		};
     
    		return new Timer(1000*5, action);
    	}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    import java.io.*;
    import java.net.URL;
    import java.net.URLConnection;
     
    public class lsj_open_url {
     
    	public boolean exec_URL(String url) {
     
    		URLConnection urlConnection;
    		InputStream httpStream;
    		try{
    		  URL fileURL = new URL(url); 
    		  urlConnection = fileURL.openConnection();     // open URL (HTTP query)
    		  httpStream = urlConnection.getInputStream();  // Open data stream
    		  return true;
    		}
    		catch(java.net.MalformedURLException ex){
    			return false;
    		}
    		catch(java.io.IOException ex){
    			return false;
    		}
    	}
    }
    Est-ce que vous avez une idée??

    Merci d'avance.

  2. #2
    Membre éclairé Avatar de donnadieujulien
    Développeur informatique
    Inscrit en
    Avril 2008
    Messages
    433
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2008
    Messages : 433
    Par défaut ok
    5h56!!
    je crois que j'ai trouvé, il me semble que c'était un problème de timeout :
    en rajoutant :
    urlConnection.setConnectTimeout(2000);

    et aussi httpStream.close();

    ca a l'air de mieux fonctionner...

    Je testerai sur le serveur demain, euh tout à l'heure lol.

    PS : dois-je passer en thread ou un timer ca suffit? je serait tenté de dire qu'un timer suffit... après c'est sur que ca serait plus propre de faire un thread pour bien séparer la mise à jour DNS/USER....

    En plus, j'ai l'impression qu'en rajoutant le timer, les problèmes de freeze sur les quelques boutons sont résolus (sans swingworker), je pense que c'était dû au fait de l'exécution url sans timeout et sans connexion...

    J'aimerais quand même savoir ce que vous en pensez, y avait t'il d'autres moyens de faire? Que pensez-vous de mon code?

    Merci

  3. #3
    Membre éclairé Avatar de donnadieujulien
    Développeur informatique
    Inscrit en
    Avril 2008
    Messages
    433
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2008
    Messages : 433
    Par défaut oups
    Je crois que j'ai parlé trop vite...

    Je ne comprends pas pourquoi ca ne marche pas tout seul...

    Help pleaze!!

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 280
    Par défaut
    Salut,

    Tu as essaye de rajouter des logs dans tes catch ?

    Vue que tu fais des catch(...) {return ...}, s'il y a un probleme tu ne le verra pas reellement et ca rend le debuggage plus dur...

    Rajoutes Log4J ou autre et lance des log.debug(...), log.error(...) ca aidra pour savoir ce qu'il se passe.

    ---
    Farid

  5. #5
    Membre éclairé Avatar de donnadieujulien
    Développeur informatique
    Inscrit en
    Avril 2008
    Messages
    433
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2008
    Messages : 433
    Par défaut salut
    Ouais j'ai fait des affichages basiques IO ou Malformed
    ca passe dans IO des que j'ai perdu la connexion internet->et tant que je la retrouve pas. Mais ce problème et résolu..

    En fait, le programme marche maintenant, mais la variable de ma table "dns_state" mets plus d'une minute à être écrite via l'url php....

    Je suis sur que c'est un problème à la con, genre un timeout mysql/php ou jdbc/java...

    Pour contourner le problème, je fais les tests sur un fichier simple false/true, on va voir ce que ca donne...

    Si tu veux, lorsque je demarre le prog avec connexion internet/dns à jour je vois :

    LSJ34 AutoBatch Prompt Module
    18/02/2009 à 23:15.....Service Stoppé
    18/02/2009 à 23:15.....Service Démarré
    18/02/2009 à 23h15.....DNS à jour
    |||
    ....

    lorsque je coupe la connexion inernet pour forcer le changement d'ip, je vois :

    18/02/2009 à 23:16.....DNS obsolète
    18/02/2009 à 23:16.....Mise à jour DNS réussie
    18/02/2009 à 23:16.....DNS obsolète
    18/02/2009 à 23:16.....Mise à jour DNS réussie
    18/02/2009 à 23:16.....DNS obsolète
    18/02/2009 à 23:16.....Mise à jour DNS réussie
    18/02/2009 à 23:16.....DNS obsolète
    18/02/2009 à 23:16.....Mise à jour DNS réussie
    18/02/2009 à 23:16.....DNS obsolète
    18/02/2009 à 23:16.....Mise à jour DNS réussie
    18/02/2009 à 23:16.....DNS obsolète
    18/02/2009 à 23:16.....Mise à jour DNS réussie
    18/02/2009 à 23:16.....DNS obsolète
    18/02/2009 à 23:16.....Mise à jour DNS réussie
    18/02/2009 à 23:16.....DNS obsolète
    18/02/2009 à 23:16.....Mise à jour DNS réussie
    18/02/2009 à 23:17.....DNS à jour
    |||||||
    .....

    alors que je voudrais voir :
    18/02/2009 à 23:16.....DNS obsolète
    18/02/2009 à 23:16.....Mise à jour DNS réussie
    18/02/2009 à 23:17.....DNS à jour
    ||||


    Et ce problème vient du fait que mon script php qui doit mettre dns_state à true mets environ 1minute avant de s'exécuter...

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 280
    Par défaut
    Une question comme ca.
    C'est ton ip dynamique que tu veux remettre a jour c'est ca ?
    Si oui, pourquoi tu ne parses pas tout simplement le site de : http://mon-ip.com/

    ---
    Farid

  7. #7
    Membre éclairé Avatar de donnadieujulien
    Développeur informatique
    Inscrit en
    Avril 2008
    Messages
    433
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2008
    Messages : 433
    Par défaut ...
    Ok donc le problème n'est pas au niveau des bases de données méthodes,etc..

    J'ai remplacé mon script par l'ecrtiture d'un fichier comme je l'ai dit dans mon précédent script, et il y a toujours le mêem problème...

    Peut être que c'est apache?? qui redémarre après perte de connexion internet? en a peu près une minute?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 14/12/2012, 14h48
  2. Aide configuration mise à jour dns par dhcp CentOs 5.6
    Par biddaputzese dans le forum Réseau
    Réponses: 1
    Dernier message: 31/12/2011, 16h24
  3. Tutoriel dns avec mise à jour dynamique par dhcp
    Par michelw dans le forum Applications
    Réponses: 2
    Dernier message: 27/11/2008, 10h42
  4. Changement d'hébergeur : mise à jour des DNS
    Par Flackou dans le forum Serveurs (Apache, IIS,...)
    Réponses: 4
    Dernier message: 24/09/2008, 09h39
  5. Réponses: 2
    Dernier message: 12/02/2003, 15h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo