Re: How can I obtain my internet address?
Posted: Mon Jan 11, 2016 2:12 am
				
				heartbone that looks like the Get IP Address site we've all been waiting for heehee, all the others can move to secondary now 
			http://www.purebasic.com
https://www.purebasic.fr/english/
I'll set the function to randomly access that new site 4/7 the time, and randomly retrieve from one the other three sites at a rate of 1 of 7 calls.Keya wrote:heartbone that looks like the Get IP Address site we've all been waiting for heehee, all the others can move to secondary now
Code: Select all
Procedure.S GetExternalIPAddress(TIMEOUT)
; RETURNS A STRING CONTAINING THE CURRENT IPv4 EXTERNAL ADDRESS.
; A PREVIOUS CALL TO InitNetwork() IS REQUIRED.
; WILL STOP CHECKING WEBSITES AFTER TIMEOUT (IN MILLISECONDS).
; NURL GETS SET TO RANDOM INTEGER FROM 1 THROUGH 7.
; NURL=1 EXTRACT IP ADDRESS FROM http://ip.gwhois.org/
; NURL=2 EXTRACT IP ADDRESS FROM http://checkip.dyndns.org
; NURL=3 EXTRACT IP ADDRESS FROM http://www.realip.info/api/p/realip.php
; NURL=4,5,6,7 EXTRACT IP ADDRESS FROM http://api.ipify.org/
; ON AVERAGE api.ipify.org IS USED FOUR TIMES IN SEVEN CALLS.
   NURL= Random(6)+ 1 : START= NURL
   EXTADDR$= "" : TEMPFILE$= GetTemporaryDirectory()+"IPADDRESS"
   If TIMEOUT < 1 : TIMEOUT= 10 : EndIf
   STOPTIME= ElapsedMilliseconds()+ TIMEOUT
   Repeat
      If ElapsedMilliseconds() < STOPTIME
         Select NURL
            Case 1
               If ReceiveHTTPFile("http://ip.gwhois.org/",TEMPFILE$)
                  ReadFile(1,TEMPFILE$) : EXTADDR$= ReadString(1)
               EndIf
            Case 2
               If ReceiveHTTPFile("http://checkip.dyndns.org",TEMPFILE$)
                  ReadFile(1,TEMPFILE$) : HEADER$= ReadString(1)
                  STIND= FindString(HEADER$, "Current IP Address:", 1)+ 20
                  IND= FindString(HEADER$,"</body></html>",1)- STIND
                  If IND > 0 : EXTADDR$ = Mid(HEADER$,STIND,IND) : EndIf
               EndIf
            Case 3
               If ReceiveHTTPFile("http://www.realip.info/api/p/realip.php",TEMPFILE$)
                  ReadFile(1,TEMPFILE$) : EXTADDR$= ReadString(1)
                  TBUFF$=  Mid(EXTADDR$,8) : EXTADDR$= Mid(TBUFF$,1,Len(TBUFF$)-2)
               EndIf
            Case 4, 5, 6, 7
               If ReceiveHTTPFile("http://api.ipify.org/",TEMPFILE$)
                  ReadFile(1,TEMPFILE$) : EXTADDR$= ReadString(1)
               EndIf
         EndSelect
         If IsFile(1) : CloseFile(1) : DeleteFile(TEMPFILE$) : EndIf
         If CountString(EXTADDR$,".")<>3 Or Len(EXTADDR$)<7 Or Len(EXTADDR$)>15 : EXTADDR$= "" : EndIf
      EndIf
      NURL +1 : If NURL=8 : NURL= 1 : EndIf
   Until EXTADDR$<>"" Or NURL=START
   ProcedureReturn EXTADDR$
EndProcedure