Comme beaucoup de personnes, j’utilise parfois un VPN pour me connecter a internet.
Dans certaines de mes applications, j'ai besoin de connaitre le status du VPN (connecté ou pas)
Dans le code suivant, je montre la méthode que j'utilise pour tester le VPN.
Cette méthode s'appuie sur la réponse faite par un site internet qui répond de la façon suivante:
code 200 soit #HTTP_STATUS_OK qui indique que le VPN est INACTIF
code 403 soit #HTTP_STATUS_FORBIDDEN qui indique que le VPN est ACTIF
Connaissez vous une autre méthode pour tester si le VPN est Actif/Inactif
Merci pour vos retours,
cage
Code : Tout sélectionner
EnableExplicit
Global MYLAN, MYWAN, MYVPN
Global IP_LAN$, IP_WAN$
Procedure get_IP_LAN()
Debug "get_IP_LAN()"
Protected IP, IP$
MYLAN = #True
If ExamineIPAddresses()
Repeat
IP = NextIPAddress()
IP$ = IPString(IP)
If Left(IP$, 3) <> "10."
Break
EndIf
Until IP = 0
EndIf
IP_LAN$ = IP$
If IP_LAN$="0.0.0.0"
MYLAN = #False
EndIf
ProcedureReturn MYLAN
EndProcedure
Procedure get_IP_WAN()
Debug "get_IP_WAN()"
Protected HTTPRequest, HTTPStatus$, HTTPResponse$
Protected URL$ = "http://monip.outils-rezo.info/text"
MYWAN = #True
IP_WAN$ = "0.0.0.0"
If MYLAN
HTTPRequest = HTTPRequest(#PB_HTTP_Get,URL$,#Null$,#PB_HTTP_NoRedirect)
If HTTPRequest
HTTPStatus$ = HTTPInfo(HTTPRequest,#PB_HTTP_StatusCode)
HTTPResponse$ = HTTPInfo(HTTPRequest,#PB_HTTP_Response)
FinishHTTP(HTTPRequest)
EndIf
If Val(HTTPStatus$) = #HTTP_STATUS_OK
MYWAN = #True
IP_WAN$ = HTTPResponse$
Else
MYWAN = #False
IP_WAN$ = "0.0.0.0"
EndIf
Else
MYWAN = #False
EndIf
ProcedureReturn MYWAN
EndProcedure
Procedure check_VPN()
Debug "check_VPN()"
Protected HTTPRequest, HTTPStatus$
Protected URL$ = "https://www.malekal.com/detecter-vpn-recuperation-vraie-ip/"
MYVPN = #False
If MYLAN
HTTPRequest = HTTPRequest(#PB_HTTP_Get,URL$,#Null$,#PB_HTTP_HeadersOnly|#PB_HTTP_NoRedirect)
If HTTPRequest
HTTPStatus$ = HTTPInfo(HTTPRequest,#PB_HTTP_StatusCode)
FinishHTTP(HTTPRequest)
Debug HTTPStatus$
If Val(HTTPStatus$) = #HTTP_STATUS_FORBIDDEN
MYVPN = #True
Else
MYVPN = #False
EndIf
EndIf
Debug ""
ProcedureReturn Val(HTTPStatus$)
Else
MYVPN = #False
Debug "LAN INACTIF"
ProcedureReturn #False
EndIf
EndProcedure
get_IP_LAN() : Debug IP_LAN$
Debug ""
get_IP_WAN() : Debug IP_WAN$
Debug ""
check_VPN()
If MYVPN
Debug "VPN ACTIF"
Else
Debug "VPN INACTIF"
EndIf