Obtenir l'adresse IP de votre routeur

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Obtenir l'adresse IP de votre routeur

Message par falsam »

Le sujet a déjà été évoqué avec différentes solutions de parsing classiques d'une page web contenant l'adresse ip coincée entres deux balises.

Le site https://www.ipify.org propose une API qui retourne un fichier JSON contenant l'adresse IP de votre routeur.

La procédure que je vous présente utilise deux fonctionnalité apparus depuis la version 5.31 de Purebasic : ReceiveHTTPMemory() et ParseJSON()

Le code de base pour interroger l'API est

Code : Tout sélectionner

InitNetwork()

*Buffer = ReceiveHTTPMemory("https://api.ipify.org?format=json")
If *Buffer    
  ParseJSON(0, PeekS(*Buffer, MemorySize(*Buffer), #PB_UTF8))
  FreeMemory(*Buffer)
  Debug GetJSONString(GetJSONMember(JSONValue(0), "ip"))
EndIf
A partir de ce code, vous trouverez une procédure qui permet d'obtenir la valeur numérique de l'adresse IP.

Code : Tout sélectionner

Procedure GetWanIp()
  Protected IP.s, Dim IP(4), n
  Protected *Buffer = ReceiveHTTPMemory("https://api.ipify.org?format=json")
  
  If *Buffer    
    ParseJSON(0, PeekS(*Buffer, MemorySize(*Buffer), #PB_UTF8))
    FreeMemory(*Buffer)
    IP = GetJSONString(GetJSONMember(JSONValue(0), "ip"))
    
    For n = 1 To CountString(IP, ".") + 1
      IP(n-1) = Val(StringField(IP, n, "."))
    Next
    
    ProcedureReturn MakeIPAddress(IP(0), IP(1), IP(2), IP(3))
  Else
    ProcedureReturn #False
  EndIf
EndProcedure
Vous allez me dire "Mais hooooo !" Comment fait on pour retrouver notre adresse IP ?"

C'est simple

Code : Tout sélectionner

Debug IPString(GetWanIp())
Pour terminer le code permettant d'utiliser GetWanIp() conjointement avec le gadget IPAddressGadget()

Code : Tout sélectionner

InitNetwork()
If OpenWindow(0, 0, 0, 180, 50, "WAN IP", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  IPAddressGadget(0, 10, 15, 160, 20)
  SetGadgetState(0, GetWanIp())
  
  Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
cage
Messages : 604
Inscription : ven. 16/oct./2015 18:22
Localisation : France
Contact :

Re: Obtenir l'adresse IP de votre routeur

Message par cage »

Merci pour ce partage.

Il manque InitNetwork() dans la procédure GetWanIp() avant le ReceiveHTTPMemory(...)

Personnellement, j'utilise http://monip.outils-rezo.info/text pour trouver mon IP Wan

Pour les petits curieux, http://ipaddress.com et http://www.monip.org
■ Win10 Pro 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.12 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Marc56
Messages : 2197
Inscription : sam. 08/févr./2014 15:19

Re: Obtenir l'adresse IP de votre routeur

Message par Marc56 »

Merci falsam pour cet exemple didactique :wink:

Il faudra vraiment que je me (re)mette un jour à l'utilisation des fonctions de gestion de mémoire directe.
La dernière fois que j'ai utilisé des peek et des pokes, c'était sur mon Vic-20 dans les années 80 :) mais ça fait du bien de dépoussiérer les neurones :P
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Obtenir l'adresse IP de votre routeur

Message par Kwai chang caine »

Dommage que FRED n'est toujours pas ajouté la gestion des proxy :|
Merci quand même :wink:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Obtenir l'adresse IP de votre routeur

Message par falsam »

cage a écrit :Il manque InitNetwork() dans la procédure GetWanIp() avant le ReceiveHTTPMemory(...)
Ooops oui tu as raison. Code corrigé. Merci pour cette observation.
cage a écrit :Personnellement, j'utilise http://monip.outils-rezo.info/text pour trouver mon IP Wan
C'était aussi une autre possibilité d'autant plus que le résultat est sans balise html.

■ Exemple de code avec ton lien

Code : Tout sélectionner

InitNetwork()

*Buffer = ReceiveHTTPMemory("http://monip.outils-rezo.info/text")
If *Buffer    
  Debug PeekS(*Buffer, MemorySize(*Buffer), #PB_UTF8)
  FreeMemory(*Buffer)
EndIf
Minimum de code pour un résultat rapide ^^
Kwai chang caine a écrit :Dommage que FRED n'est toujours pas ajouté la gestion des proxy
Litanie selon Kwai chang caine :wink:
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Marc56
Messages : 2197
Inscription : sam. 08/févr./2014 15:19

Re: Obtenir l'adresse IP de votre routeur

Message par Marc56 »

KCC a eut (aura peut-être) son .gif après 10 ans de demandes 8)
Sa demande de proxy devrait donc arriver vers 2026 :mrgreen:
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Obtenir l'adresse IP de votre routeur

Message par Ar-S »

Code : Tout sélectionner

InitNetwork()
*Buffer = ReceiveHTTPMemory("http://monip.outils-rezo.info/text")
If *Buffer   
  Debug PeekS(*Buffer, MemorySize(*Buffer), #PB_UTF8)
  FreeMemory(*Buffer)
EndIf
Je prends merci, je ne changerai que l'adresse http, j'ai une page pour ça ^^
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Obtenir l'adresse IP de votre routeur

Message par Kwai chang caine »

Marc56 a écrit :KCC a eut (aura peut-être) son .gif après 10 ans de demandes 8)
Sa demande de proxy devrait donc arriver vers 2026 :mrgreen:
Oui surtout que c'est la première fois que je le demande.
Pour les Gifs je ne compte plus.
En attendant, kcc y dit peut être que des conneries, mais Fred finit toujours par y venir, malgré qu'il freine des 4 fers.

Je citerais entre autres, les "projets", les "retours à la ligne"
Reste les gifs et les gosub dans les procédures (J'suis passé à un poil de c. .. de l'avoir. :| )

@Falsam
Litanie, litanie...sur le dico y disent citation longue et ennuyeuse.
J'ai juste fait une remarque comme quoi ton code était inutilisable en entreprise, en une phrase, c'était pas si long 8O
Et quand au côté ennuyeux, excuse moi de faire remarquer un manque d'une des fonctions de PB.
Les proxy sont de plus en plus nombreux, encore un point où PB n'a pas évolué.

Je n'ai jamais utilisé cette librairie à cause de ça, malgré mes nombreux programmes utilisant le réseau (vive les API)
Car lorsque l'on fait un programme, tu expliqueras au client pro, que ça marche que à la maison :lol:

Enfin moi ....c'que j'en dit, je dit ça je dit rien. .. :roll:
J'ai pris l'habitude en plus de 10 ans de ne pas être écouté. ..je me marre juste à mon tour, quant je vois les autres, et parfois les nombreux autres, faire une demande qu'il y a des années que j'ai faîtes, et qu'on s'est bien foutu de ma gueule à l'époque :mrgreen:

Avec l'âge..... j'ai eu maintes fois le loisir de constater, que la vie se charge d'apprendre aux gens "bien pensant", que parfois, même les abrutis ont des bonnes idées :mrgreen:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Marc56
Messages : 2197
Inscription : sam. 08/févr./2014 15:19

Re: Obtenir l'adresse IP de votre routeur

Message par Marc56 »

Kwai chang caine a écrit : Car lorsque l'on fait un programme, tu expliqueras au client pro, que ça marche que à la maison :lol:
Le client pro est aussi maitre de son proxy, et donc peut faire configurer des exceptions aux programmes autorisés.
:wink:
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Obtenir l'adresse IP de votre routeur

Message par Kwai chang caine »

Et non....pas toujours :wink:
Tout dépend de la taille de l'entreprise.
Lorsqu'elle est considerable voir gigantesque, elle a obligatoirement un SI qui est le seul maître du proxy devant dieu :mrgreen:

Toute demande doit être formulée en x exemplaires, et avoir l'approbation de ce dernier.
Autant dire que c'est même pas la peine d'user ton crayon bien souvent.
Et autant dire aussi que faire une exception n'est pas à la mode avec les restrictions de plus en plus importantes dues au nombre croissant (pas au beurre) de malware.

Je me vois bien demander une exception pour tester le code de notre bon FALSAM :mrgreen:

Donc je le répète, un service de la dite entreprise, peut avoir besoin d'accéder à Internet, en avoir l'autorisation, et se voir refuser l'accès du fait que le soft n'a pas renseigné le login et mdp au proxy, nécessaire à toute transaction externe.

La vie n'est pas toujours simple en entreprise. ..crois moi :wink:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Obtenir l'adresse IP de votre routeur

Message par falsam »

Randall Degges a le plaisir de vous annoncer que le code PureBasic que j'ai proposé avec l'api api.ipify.org est référencé depuis aujourd'hui son site https://www.ipify.org
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
venom
Messages : 3137
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Obtenir l'adresse IP de votre routeur

Message par venom »

Code : Tout sélectionner

InitNetwork()
*Buffer = ReceiveHTTPMemory("http://monip.outils-rezo.info/text")
If *Buffer   
  Debug PeekS(*Buffer, MemorySize(*Buffer), #PB_UTF8)
  FreeMemory(*Buffer)
EndIf
En effet court mais efficace.
Merci du partage.






@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Répondre