PureBasic

Forums PureBasic
Nous sommes le Ven 22/Mar/2019 4:01

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 3 messages ] 
Auteur Message
 Sujet du message: httpproxy généralisé pour toutes commandes ?
MessagePosté: Mar 26/Fév/2019 10:37 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 24/Sep/2012 20:57
Messages: 46
Localisation: Somme
Hello !
Il serait intéréssent de mettre en place une commande networkproxy("urlproxy") qui concernerait les commandes mails/ftp/http de manière plus générale à mon avis, qu'en penssez vous ?
de plus il n' y pas de commandes pou récupéré automatiquement le proxy InternetExplorer (j'ai bien créer quelques procédures, que je vous partage volontié) :

Code:
Procedure.s console_convert(ligne.s)
ligne.s=ReplaceString(ligne.s,"‚","é"):ligne.s=ReplaceString(ligne.s,"Š","è"):ligne.s=ReplaceString(ligne.s,"ÿ"," "):ligne.s=ReplaceString(ligne.s,"ˆ","ê"):ligne.s=ReplaceString(ligne.s,"‡","ç"):ligne.s=ReplaceString(ligne.s,"“","ô")
ProcedureReturn ligne.s
EndProcedure

Procedure.s get_reg_query(chemins.s,chaine.s)
Protected ligne.s,Compiler.l,sortie.s
Compiler = RunProgram("reg","query "+Chr(34)+chemins.s+Chr(34)+" /v "+chaine.s,"",#PB_Program_Open|#PB_Program_Read|#PB_Program_Hide|#PB_Program_Ascii)
If Compiler
While ProgramRunning(Compiler)
ligne.s=ReadProgramString(Compiler)
If ligne.s
sortie.s+ligne.s+#CRLF$
EndIf
Wend
ProcedureReturn console_convert(sortie.s)
Else
ProcedureReturn "NOFIND"
EndIf
EndProcedure

Procedure.s get_ie_proxy()
Protected temp.s 
temp.s=get_reg_query("HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings","ProxyEnable");:Debug temp.s
If FindString(temp.s,"0x0"):proxyenable.l=0:Else:proxyenable.l=1:EndIf
temp.s=get_reg_query("HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings","AutoConfigURL");:Debug temp.s
If FindString(temp.s,""):autoenable.l=0:Else:autoenable.l=1:EndIf
temp.s=get_reg_query("HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings","ProxyServer");:Debug temp.s
If FindString(temp.s,"REG_SZ"):proxyserver.s=StringField(temp.s,2,"REG_SZ    "):Else:proxyserver.s="":EndIf

sortie.s=Str(proxyenable)
sortie.s+Str(autoenable)
sortie.s+proxyserver.s
ProcedureReturn sortie.s
EndProcedure

Procedure.l test_proxy(proxy.s,urltest.s="https://www.google.fr/")
Protected *buffer,testsans.l,testavec.l,HttpRequest.l,retour.l
Debug proxy.s
HttpRequest = HTTPRequest(#PB_HTTP_Get, urltest.s)
If HttpRequest
 
  Debug "Réponse: " + HTTPInfo(HTTPRequest, #PB_HTTP_Response)
testsans.l=Val(HTTPInfo(HTTPRequest, #PB_HTTP_StatusCode))
If testsans.l=200:testsans.l=1:Else:testsans.l=0:EndIf
FinishHTTP(HTTPRequest)
Else
testsans.l=0
EndIf

HTTPProxy(proxy.s)
HttpRequest = HTTPRequest(#PB_HTTP_Get, urltest.s)
If HttpRequest
;Debug "Réponse: " + HTTPInfo(HTTPRequest, #PB_HTTP_Response)
testavec.l=Val(HTTPInfo(HTTPRequest, #PB_HTTP_StatusCode))
Select testavec.l
  Case 200:testavec.l=1
  Case 401,407,406,403,402,600:testavec.l=2;identify un bloquage proxy
  Default:testavec.l=0
EndSelect

FinishHTTP(HTTPRequest)
Else
testavec.l=0
EndIf
Select Str(testsans)+Str(testavec)
Case "10":retour.l=1;=accès sans proxy uniquement
Case "01":retour.l=2;=accès via proxy uniquement
Case "11":retour.l=3;=accès avec les deux
Case "00":retour.l=0;=pas d'accès avec ou sans proxy
Case "02":retour.l=-2;=le proxy bloque clairement l'url et l'accès directe ne fonctionne pas
Case "12":retour.l=-1;=le proxy bloque clairement l'url mais l'accès direct est ok
EndSelect
HTTPProxy("")
ProcedureReturn retour.l
EndProcedure



Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: httpproxy généralisé pour toutes commandes ?
MessagePosté: Ven 08/Mar/2019 4:25 
Hors ligne

Inscription: Lun 10/Juin/2013 12:01
Messages: 34
Bonjour/Bonsoir,
J'ajoute ici un autre moyen de récupérer la config proxy du system pour l'utilisateur courant en utilisant une API windows :

Code:
Structure WINHTTP_CURRENT_USER_IE_PROXY_CONFIG
  fAutoDetect.i
  lpszAutoConfigUrl.s
  lpszProxy.s
  lpszProxyBypass.s
EndStructure

Prototype.i ProtoWinHttpGetIEProxyConfigForCurrentUser(*pProxyConfig)
If OpenLibrary(0, "Winhttp.dll")
  WinHttpGetIEProxyConfigForCurrentUser_.ProtoWinHttpGetIEProxyConfigForCurrentUser = GetFunction(0,"WinHttpGetIEProxyConfigForCurrentUser")
  ProxyConfig.WINHTTP_CURRENT_USER_IE_PROXY_CONFIG
  WinHttpGetIEProxyConfigForCurrentUser_(@ProxyConfig)
  If ProxyConfig\fAutoDetect
    Debug "Détection automatique activée"
  EndIf
  Debug "URL de configuration automatique : "+ProxyConfig\lpszAutoConfigUrl
  Debug "Serveur proxy : "+ProxyConfig\lpszProxy
  Debug "Bypass proxy pour : "+ProxyConfig\lpszProxyBypass
Else
  Debug "Library NOK"
EndIf


Bonne journée/soirée!


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: httpproxy généralisé pour toutes commandes ?
MessagePosté: Ven 08/Mar/2019 10:11 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 24/Sep/2012 20:57
Messages: 46
Localisation: Somme
Merci @salutcava code plus court et plus rapide !


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 3 messages ] 

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  
cron

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye