Page 1 of 1

Connect to the Internet VIA Proxy Server

Posted: Mon Apr 12, 2004 7:22 pm
by Num3
Code updated for 5.20+

Yup, it can be done!!!

Code: Select all

; Thanks to spot for giving me the hint about this one
;
; Tested on a SQUID Proxy/Firewall server

InitNetwork()

ConnectionID = OpenNetworkConnection("xxx.xxx.xxx.xxx", xx) ; Proxy server and proxy port

If ConnectionID
 
  usr$="xxxxx" ; username
  pw$="xxxxx" ;password
 
  conc$=usr$+":"+pw$
 
  OutputBuffer = AllocateMemory(100)
  Base64Encoder(@conc$,Len(conc$),OutputBuffer,OutputBuffer*2)
  enc$=PeekS(OutputBuffer)
 
  Debug conc$
  Debug "memory adress: "+Str(OutputBuffer)
  Debug enc$
 
  com$="GET http://www.purebasic.com/index.php3 HTTP/1.1"+Chr(13)+Chr(10)
  com$+"Accept: */*"+Chr(13)+Chr(10)
  com$+"Accept: text/html"+Chr(13)+Chr(10)
  com$+"Host: "+host$+Chr(13)+Chr(10)
  com$+"User-Agent: purebasic/3.81"+Chr(13)+Chr(10)

  ;This line gives you permission to proxy access
  com$+"Proxy-Authorization: Basic "+enc$+Chr(13)+Chr(10)
 
  com$+Chr(13)+Chr(10)
 
  Res = SendNetworkData(ConnectionID,@com$,Len(com$))
 
  Repeat
    Delay(10)
    result = NetworkClientEvent(ConnectionID)
   
    Select result
     
      Case 2
        Content$ = Space(14500)
        ReceiveNetworkData(ConnectionID,@Content$,14500)
        Ok = 1
        MessageRequester("Done!","Your Data" + Chr(13) + Chr(10) + Trim(Content$),0)
        CloseNetworkConnection(ConnectionID)
    EndSelect
   
  Until Ok = 1
EndIf

Posted: Mon Apr 12, 2004 9:55 pm
by dell_jockey
Abrigado, Num3!

And the Proxyserver

Posted: Fri Apr 30, 2004 8:55 am
by clipper
And here is a basic structure for a HTTP-Proxyserver:
Here working with any Browser and the code above from Num3

regards Tom

Code: Select all


If InitNetwork() = 0:End:EndIf

Port = 1001

BufferSize.l=4000

Enumeration
#LV
#B_CLEAR
EndEnumeration

Structure Connection
    ClientID.l
    Serverid.l
EndStructure
NewList Con.Connection() 

Procedure DeleteConnection(ID)
  ResetList(Con())
  While NextElement(Con())
    If Con()\ClientID= ID
       If Con()\Serverid:CloseNetworkConnection(Con()\Serverid):EndIf
       DeleteElement(Con())
    EndIf 
  Wend 
EndProcedure 
eol.s=Chr(13)+Chr(10)
*Buffer = AllocateMemory(4000)

If CreateNetworkServer(Port)
   hWnd=OpenWindow(0,100,200,530,385, #PB_Window_SystemMenu, "HTTP-Proxy Port "+Str(Port)+")")
   If CreateGadgetList(hWnd)
      ListViewGadget(#LV,0,0,530,350)
      ButtonGadget(#B_CLEAR,400,355,100,25,"Clear")
   EndIf
   Repeat
         Repeat
            WEvent = WindowEvent()
            Select WEvent 
            Case #PB_EventCloseWindow 
               Quit = 1 
            Case #PB_Event_Gadget
               If EventGadgetID()=#B_CLEAR:ClearGadgetItemList(#LV):EndIf
            EndSelect
            Until WEvent = 0
            pServerEvent=NetworkServerEvent() 
            Select pServerEvent
                     Case 2
                        ClientID= NetworkClientID()
                        If ClientID
                           l.l = ReceiveNetworkData(ClientID,*Buffer,4000)
                           url.s=StringField(StringField(PeekS(*Buffer),1,eol),2," ")
                           server.s=StringField(url,3,"/")
                           Port=Val(StringField(server,2,":"))
                           server.s=StringField(server,1,":")
                           If Port=0:Port=80:EndIf
                           Serverid=OpenNetworkConnection(server,Port)
                           If Serverid
                                 AddElement(Con())
                                 Con()\ClientID=ClientID
                                 Con()\Serverid=Serverid
                                 If l:SendNetworkData(Con()\Serverid,*Buffer,l):EndIf
                                 AddGadgetItem(0,-1,url)
                           Else
                                 l.l=PokeS(*Buffer,"HTTP/1.0 200 ok"+eol+"Content-type: text/html"+eol + eol+"<html><title>Proxy</title><body><font face='helvetica, arial' size='2'>Proxyserver:<br>Server "+url+" not found!</font></body></html>")
                                 SendNetworkData(ClientID,*Buffer,l)
                                 CloseNetworkConnection(ClientID)
                           EndIf
                        Else
                           DeleteElement(Con()) 
                        EndIf 
                      Case 4
                        DeleteConnection(NetworkClientID())
            EndSelect
  ResetList(Con())
  While NextElement(Con())
    pclientev=NetworkClientEvent(Con()\Serverid)
    If pclientev=2
       l.l=2000
       While l=2000
           l.l=ReceiveNetworkData(Con()\Serverid,*Buffer,2000)
           
           ; Daten auf *Buffer abgreifen
           
           If l:SendNetworkData(Con()\ClientID,*Buffer,l):EndIf
       Wend
    EndIf 
  Wend 

Delay(25)

   Until Quit = 1
   CloseNetworkServer()
Else
   MessageRequester("ProxyServer", "Error - Port "+Str(Port)+" in use?", 0)
EndIf
End 

Posted: Fri Oct 21, 2005 7:53 am
by Droopy
How can i download files or browse Url after connection @ SQUID Proxy/Firewall ??


Thanks 8)

Posted: Sat Dec 31, 2005 4:04 am
by Shannara
Droopy wrote:How can i download files or browse Url after connection @ SQUID Proxy/Firewall ??


Thanks 8)
Did you receive an answer for this?

Posted: Sat Dec 31, 2005 8:54 am
by Droopy
no :cry: