Click here to Skip to main content
15,890,527 members
Articles / Programming Languages / Java / Java SE
Article

SOCKS Proxy + SSL Tunnel

Rate me:
Please Sign up or sign in to vote.
4.80/5 (42 votes)
22 Feb 2000 2.5M   4.1K   83   179
A full featured SOCKS 4 & 5 proxy server written in Java.
  • Download source files - 41 Kb
  • The SSH Proxy is full featured SOCKS Proxy written in Java.
    It supports both versions 4 and 5 of Socks protocol.

    Additional feature that I have implemented in SSH Proxy is the possibility to make TCP connections through an HTTP-SSL Tunnel.

    SSH Proxy works in two modes:

    1. Normal mode - works as normal SOCKS Proxy
    2. TCP via SHTTP mode - Works as SOCKS Proxy but makes SOCKS TCP connections via HTTP-SSL Tunnel Proxy.

    Sample Image 1
    Sample Image 2

    The TCP via SHTTP mode is very useful when user woks behind HTTP Proxy and hasn't any other acces to the Internet. In this case the user can run SSH Proxy on his/her machine, and configure it to use TCP connections via HTTP-SSL tunnels which are commonly supported by most proxies. This way he/she will be able to use other internet applications, eg. IRC, FTP, e-mail, telnet, HTTP (of course :-) but without caching and etc.

    But if SSH Proxy works behind a firewall (in SSL tunnel mode) - the other SOCKS commands BIND and UDP association will not work.

    SSH Proxy loads its configuration from file config.txt which should be in the directory of the SSH Proxy

    # Copyright (c) 2000 Svetoslav Tchekanov (swetoslav@iname.com)
    #-------------------------------
    #EnableLog=no
    EnableLog=yes
    #-------------------------------
    SOCKSPort=8888
    #-------------------------------
    #UseSHttpProxy=1
    UseSHttpProxy=0
    SHttpProxyHost=<SHTTP Proxy Host/IP>
    SHttpProxyPort=<SHTTP Proxy Port>

    The variables UseSHttpProxy and EnableLog are logical. So you can specify their values either by 1, 0, Yes or No.

    License

    This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

    A list of licenses authors might use can be found here


    Written By
    Technical Lead Brosix
    Bulgaria Bulgaria
    I am a software development engineer .

    Programming Languages: C/C++, Java, Delphi, HTML, CGI, Assembly x86, CNC G-language
    RDBMS Microsoft SQL Server, MySQL, SQLite, MS Access, ODBC, JDBC

    Networking: TCP/IP, Winsock, HTTP, HTTPS, FTP, SMTP, POP3, TELNET, IMAP, SOCKS 4/5, RTSP, CGI, MS Internet Information Server

    Projects I have worked on:
  • Brosix
  • Screen-Sharing product
  • Video chat application
  • Server software
  • Java Virtual Machine
  • Application Server + Internet Proxy Services
  • Instant Messenger - like MSN and Yahoo ones
  • Voicer - Freeware VoIP application
  • Web Server
  • SSH Proxy - SOCKS 4&5 Proxy that can relay TCP Connections through HTTPS Proxy
  • HTTP Proxy
  • SOCKS proxy
  • Battery Test Suite
  • MFC custom UI controls
  • Internet Address Book - Synchronizes local Outlook, Outlook Express, Netscape and Eudora address book with database on WEB server located in the Internet
  • Advertising Screen Saver - Screen Saver that sends e-mails and gain prizes for the computer owner
  • Proxy Send Mail - Send Mail service that can send e-mails through SOCKS 4, SOCKS 5 and HTTPS proxies
  • Proxy Hunter - Very fast, and also works as proxy checker
  • Java Disassembler
  • Java custom UI controls
  • Delphi custom UI controls
  • CNC Gravuring System
  • Font editor for DOS
  • Little DOS games
  • Graphics library for DOS (in Assembly)
  • Galaxian like game for Apple][ in assembly
  • Graphics editor for Apple][
  • Font editor for Apple][
  • More information about my current work you can find here:
    www.brosix.com


    Comments and Discussions

     
    GeneralRe: Port number Pin
    Svetoslav Chekanov12-Jul-04 21:40
    Svetoslav Chekanov12-Jul-04 21:40 
    GeneralError in ProcessUDPClient() function &amp; other problems Pin
    phoenithx18-May-04 15:26
    phoenithx18-May-04 15:26 
    GeneralRe: Error in ProcessUDPClient() function &amp; other problems Pin
    Svetoslav Chekanov12-Jul-04 21:42
    Svetoslav Chekanov12-Jul-04 21:42 
    GeneralDC++ help using Pin
    genci25-Mar-04 20:00
    genci25-Mar-04 20:00 
    QuestionGot excpetion - does my firewall forbides connection? Pin
    vn186726-Mar-04 20:42
    vn186726-Mar-04 20:42 
    AnswerRe: Got excpetion - does my firewall forbides connection? Pin
    Svetoslav Chekanov7-Mar-04 20:59
    Svetoslav Chekanov7-Mar-04 20:59 
    GeneralSvetoslav please read - bypassing firewalls discussion Pin
    vn186724-Mar-04 20:21
    vn186724-Mar-04 20:21 
    GeneralRe: Svetoslav please read - bypassing firewalls discussion Pin
    Svetoslav Chekanov4-Mar-04 22:01
    Svetoslav Chekanov4-Mar-04 22:01 
    Hi,

    For the first question:
    Yes, the two options are right.
    The first one uses HTTP command "CONNECT" which establishes a TCP connection (tunnel).
    The second one uses regular HTTP "GET" request to establish connection to the User developed ServerProxy.
    Unfortunately, some HTTP proxies are configured to drop the "GET" request after specified timeout. So if your connection is unexpectedly dropped, do not be surprised.

    For second question:
    No, I do not know other way to bypass the firewall.

    For third question:
    Yes, you can use my code to write your own system.
    I do not implemented such kind of program. If someone wants to hire me, I will be glad to do that.

    At last: custom Server Proxy can't work with TCP packets. It must work at application level - TCP connection:
    1. User app connects to the the your custom proxy
    2. custom proxy connects to the HTTP proxy and sends request "GET my.server.com/tunnel?ip=xx.xx.xx.xx&port=yyyy"
    3. HTTP proxy connects to my.server.com and send your request to it
    4. your server proxy connects to ip xx.xx.xx.xx on port yyyy
    5. Now you have established a TCP connection to xx.xx.xx.xx on port yyyy

    Best regards
    Svetoslav Chekanov
    GeneralRe: Svetoslav please read - bypassing firewalls discussion Pin
    hungmainsion16-Mar-06 6:15
    hungmainsion16-Mar-06 6:15 
    GeneralI want help please Pin
    Member 90927226-Feb-04 5:31
    Member 90927226-Feb-04 5:31 
    Generalwhy this function: ResolveExternalLocalIP() Pin
    Member 4731284-Feb-04 2:28
    Member 4731284-Feb-04 2:28 
    GeneralTCP-Map proxy Pin
    Member 4731284-Feb-04 2:23
    Member 4731284-Feb-04 2:23 
    GeneralConfiguring SSHProxy---&quot;CONNECT&quot; command Pin
    Olhor9-Jan-04 14:00
    Olhor9-Jan-04 14:00 
    GeneralRe: Configuring SSHProxy---&quot;CONNECT&quot; command Pin
    Svetoslav Chekanov9-Jan-04 21:29
    Svetoslav Chekanov9-Jan-04 21:29 
    GeneralProblem with DC++ Pin
    Accipiter14-Dec-03 23:16
    Accipiter14-Dec-03 23:16 
    GeneralSHTTP Proxy Reply : [HTTP/1.1 502 Proxy Error (...) Pin
    Le Paro26-Nov-03 20:35
    sussLe Paro26-Nov-03 20:35 
    GeneralProblem by surfing the internet Pin
    qingbo199914-Oct-03 23:42
    qingbo199914-Oct-03 23:42 
    Questionhow can I start SSHProxy ? Pin
    Member 2065249-Oct-03 22:59
    Member 2065249-Oct-03 22:59 
    GeneralCan't connect to &lt;NA/NA:0&gt; Invalid SOKCS version : 80 Pin
    scott7rj8-Oct-03 3:13
    scott7rj8-Oct-03 3:13 
    GeneralRe: Can't connect to &lt;NA/NA:0&gt; Invalid SOKCS version : 80 Pin
    Svetoslav Chekanov8-Oct-03 4:04
    Svetoslav Chekanov8-Oct-03 4:04 
    Generalerror connecting: SHTTP Proxy Reply : [[NNECT] Pin
    scott7rj8-Oct-03 2:44
    scott7rj8-Oct-03 2:44 
    GeneralRe: error connecting: SHTTP Proxy Reply : [[NNECT] Pin
    Svetoslav Chekanov8-Oct-03 3:39
    Svetoslav Chekanov8-Oct-03 3:39 
    GeneralTried it, but something wrong Pin
    J_N27-Aug-03 23:49
    J_N27-Aug-03 23:49 
    Generalstupid question... Pin
    bierbaer18-Aug-03 2:55
    bierbaer18-Aug-03 2:55 
    GeneralRe: stupid question... Pin
    Svetoslav Chekanov8-Oct-03 4:41
    Svetoslav Chekanov8-Oct-03 4:41 

    General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

    Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.