*mise a jour :Géolocalisation Par IP address ! ajout IPv6

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
celtic88
Messages : 309
Inscription : sam. 12/sept./2015 14:31
Localisation : Alger

*mise a jour :Géolocalisation Par IP address ! ajout IPv6

Message par celtic88 »

Bonjour tous j'espère que vous allez bien :),

*** nouvelle mise a jour
-IP v6 address est supporté

Image

* introduction:
à propos de GeoIP : https://fr.wikipedia.org/wiki/GeoIP

* Code:
Ce inclut permet de manipuler rapidement et facilement la base Geoip lite "la version Gratuite seulement", en format binaire. et récupérer les 'info suivant:
- le nom de pays
- nom de la cité
- code Region
- code pays
- les Coordonnées géographiques: latitude,longitude
- code postal
- code metro et Indicatif régional
- système autonome
- Fuseau horaire

* Fichiers requis:
tous les bases de données sur ce lien http://dev.maxmind.com/geoip/legacy/geolite/ son supporter :

GeoLite Country : http://geolite.maxmind.com/download/geo ... oIP.dat.gz
GeoLite Country IPv6 : http://geolite.maxmind.com/download/geo ... Pv6.dat.gz
GeoLite City. : http://geolite.maxmind.com/download/geo ... ity.dat.gz
GeoLite City IPv6 (Beta) : http://geolite.maxmind.com/download/geo ... yv6.dat.gz
GeoLite ASN. : http://download.maxmind.com/download/ge ... Num.dat.gz
GeoLite ASN IPv6. : http://download.maxmind.com/download/ge ... mv6.dat.gz

* Méthodes GeoIP:
GeoIP_OPen(GeoIP_Path.s,GeoIP_fCach_Memory.b=0,*GeoIP_datBuffer=0,GeoIP_datBufferSize.l=0)
ouvrir une base GeoIP

les réglages
GeoIP*_Path : Chemin complet vers la base si le parametre GeoIP_fCach_Memory est activé = 1 le GeoIP_Path est ignoré
GeoIP_fCach_Memory : Déterminer par "1 = oui" ou "0 = non" l'emplacement de la base:
1 : a partire du zone memoire situé dans "*GeoIP_datBuffer"
*GeoIP_datBuffer : L'adresse de la zone de mémoire de la base
GeoIP_datBufferSize = La taille en octets de la la base

Valeur de retour :
point ver "Structure GeoIP_Info"

GeoIP_Seek_Record_IPV6(*iGeoIP_Info.GeoIP_Info,IPAddressV6.s)
Chercher le ipV6 Défini

les réglages
iGeoIP_Info : point donné par l ouverture de la base *V6
IPAddress : IPV6 à chercher

Valeur de retour :
la position de l'info

GeoIP_seek_record(*iGeoIP_Info.GeoIP_Info,IPAddress.s)
Chercher le ip Défini

les réglages
iGeoIP_Info : point donné par l ouverture de la base
IPAddress : IP à chercher

Valeur de retour :
la position de l'info

GeoIP_extract_record(*iGeoIP_Info.GeoIP_Info, *iGeoIPRecord.GeoIPRecord, seek_record.

iGeoIP_Info point donné par :
GeoIP_OpenCountry() ou GeoIP_OpenCity()

iGeoIPRecord adresse vers "Structure GeoIPRecord" ** les infos seront écrit sur cette pstructure **

seek_record la position de les infos obtenu par _seek_record()

Valeur de retour : 1 == Ok

GeoIP_Get_ASMname(*iGeoIP_Info.GeoIP_Info,seek_record.l)
récupérer le code et le nom "Autonomous System"

iGeoIP_Info point donné par GeoIP_OpenASM()
seek_record la position de les infos obtenu par _seek_record()

Valeur de retour :
Description sur "Autonomous System"

GeoIP_Free(*iGeoIP_Info.GeoIP_Info)
liberer la memoire occupée par la recherche
iGeoIP_Info : point donné par l ouverture de la base

***Code : https://pastebin.com/KpEFxZAm

***test :

Code : Tout sélectionner

IncludeFile "GeoIP.PBI"

Define *GeoIP = GeoIP_OPen("GeoLiteCityv6.dat")
Define seek_record = GeoIP_Seek_Record_IPV6(*GeoIP,"2001:4860:4860::8844")
Define iGeoIPRecord.GeoIPRecord
GeoIP_Extract_Record(*GeoIP, @iGeoIPRecord, seek_record)
Debug iGeoIPRecord\country_name
Debug iGeoIPRecord\city

*Clarification

Ce code je l'ai fait il y a presque 1 ans pour l'utilisation personal dans mes projets et j'ai voulu partager avec vous !,
libre a vous de l'utiliser sans aucune garantie ni risques de ma part .

amusez vous :) ;peace
Dernière modification par celtic88 le ven. 07/avr./2017 16:08, modifié 1 fois.
.....i Love Pb :)
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Géolocalisation Par IP address "GeoiP_dat" Sans internet

Message par Kwai chang caine »

Waoooouuuh !!!! marche super bien ton code :D
Put...mais t'es un vrai espion...tu arrives à tout savoir de nos machines, de nos positions....t'es un ANONYMOUS ?? :lol:
Merci beaucoup du partage de tous ces supers codes impressionnants 8)
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Géolocalisation Par IP address "GeoiP_dat" Sans internet

Message par Ar-S »

Merci pour ce partage celtic88. Tu gères.
~~~~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
JohnJohnsonSHERMAN
Messages : 648
Inscription : dim. 13/déc./2015 11:05
Localisation : Allez, cherche...
Contact :

Re: Géolocalisation Par IP address "GeoiP_dat" Sans internet

Message par JohnJohnsonSHERMAN »

Incroyable, à 1200 km prés :lol:
Franchement tu m'épates ! Beau boulot ! 8)
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.

CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
  • Windows 10 x64 - PB 5.61 x64
  • Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Géolocalisation Par IP address "GeoiP_dat" Sans internet

Message par Kwai chang caine »

Non moi ça va c'est à 60 km
ImageLe bonheur est une route...
Pas une destination

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

Re: Géolocalisation Par IP address "GeoiP_dat" Sans internet

Message par falsam »

Moi j'ai l'Algérie (105.101.7.202) dans le sud de la France. Allez c'est presque ça ^^
Configuration : Windows 11 Famille 64-bit - PB 6.03 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
celtic88
Messages : 309
Inscription : sam. 12/sept./2015 14:31
Localisation : Alger

Re: Géolocalisation Par IP address "GeoiP_dat" Sans internet

Message par celtic88 »

@falsam
105.101.7.202 ça c est mon ancienne Ip :p

voilla ce code Pour Connaitre ton ip ou l ip d'un site internet exemple: "www.purebasic.fr"

Code : Tout sélectionner

Structure addrinfo Align #PB_Structure_AlignC
  ai_flags.l;
  ai_family.l;
  ai_socktype.l;
  ai_protocol.l;
  *ai_addrlen
  *ai_canonname;
  *ai_addr.sockaddr;
  *ai_next.addrinfo;
EndStructure

Import "Ws2_32.lib"
  freeaddrinfo.b(*Soaddrinfo.addrinfo)
EndImport

Procedure.l NetworkHostNameToIp(sHostname.s ,List IpList.s())
  
  Protected *pSockAddr_In.SockAddr_In
  Protected *Soaddrinfo
  Protected *oaddrinfo.addrinfo
  
  Protected *AsisHostname = AllocateMemory(Len(sHostname)+1)
  If Not *AsisHostname
    ProcedureReturn
  EndIf
  PokeS(*AsisHostname,sHostname,Len(sHostname),#PB_Ascii)
  
  If getaddrinfo_(*AsisHostname,0,0,@*oaddrinfo) = 0
    *Soaddrinfo = *oaddrinfo
    Repeat
      *pSockAddr_In = *oaddrinfo\ai_addr
      AddElement(IpList())
      IpList() = PeekS(inet_ntoa_(*pSockAddr_In\sin_addr),-1,#PB_Ascii)
      If Not *oaddrinfo\ai_next
        Break
      EndIf
      *oaddrinfo = *oaddrinfo\ai_next
    ForEver 
    freeaddrinfo(*Soaddrinfo)
  Else
    Debug "WSAGetLastError :" +WSAGetLastError_()
  EndIf
  FreeMemory(*AsisHostname)
  ProcedureReturn ListSize(IpList()) 
EndProcedure

Procedure.s NetworkGetmyexternaliP()
  Protected *Buffer = ReceiveHTTPMemory("http://www.myexternalip.com/raw")
  If *Buffer
    Protected Taille = MemorySize(*Buffer)
    Protected Ipad.s = PeekS(*Buffer, Taille-1, #PB_UTF8)
    FreeMemory(*Buffer)
    ProcedureReturn Ipad
  EndIf
EndProcedure

InitNetwork()

Debug "mon ip est :" + NetworkGetmyexternaliP()

NewList IpList.s()

Debug NetworkHostNameToIp("purebasic.fr" ,IpList())
ForEach IpList()
  Debug "Ip de " + "purebasic.fr" + " :"+IpList()
Next
.....i Love Pb :)
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Géolocalisation Par IP address "GeoiP_dat" Sans internet

Message par falsam »

celtic88 a écrit :@falsam
105.101.7.202 ça c est mon ancienne Ip :p
Je sais que c'est ton ip. Je te dis seulement que ça me donne une localisation dans le sud de la france sur ta carte alors que tu es là http://aruljohn.com/ip/105.101.7.202

Sinon il y a plus court et multiplate-forme pour obtenir l'adresse ip public du routeur.

http://www.purebasic.fr/french/viewtopi ... 78#p182478
Configuration : Windows 11 Famille 64-bit - PB 6.03 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
celtic88
Messages : 309
Inscription : sam. 12/sept./2015 14:31
Localisation : Alger

Re: Géolocalisation Par IP address "GeoiP_dat" Sans internet

Message par celtic88 »

moi ca me donne les Coordonnées juste, différence de 5 klm seulement
-- la ou la punaise est croché

Image
.....i Love Pb :)
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Géolocalisation Par IP address "GeoiP_dat" Sans internet

Message par Kwai chang caine »

Falsam a écrit :Sinon il y a plus court et multiplate-forme pour obtenir l'adresse ip public du routeur.
viewtopic.php?p=182478#p182478
Si on est pas une péripatéticienne avec son proxo.... comme moi :|
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
celtic88
Messages : 309
Inscription : sam. 12/sept./2015 14:31
Localisation : Alger

Re: *mise a jour :Géolocalisation Par IP address ! ajout IPv

Message par celtic88 »

*** nouvelle mise a jour
-IP v6 address est supporté
.....i Love Pb :)
Répondre