Home
Softono

Rsocks

Open source MIT Python
133
Stars
12
Forks
2
Issues
4
Watchers
3 years
Last Commit

 About Rsocks

A SOCKS 4/5 reverse proxy server

Platforms

Web Self-hosted

Languages

Python

Links

Need Help Installing Rsocks?

We provide expert installation service for this software. Our team will install, configure, and secure Rsocks on your server. plans start at just $30.

RSOCKS

RSOCKS is a reverse proxy server for transferring traffic of a specific host through a SOCKS 4/5 proxy. It is useful for using SOCKS 4/5 in applications that don't have SOCKS proxy support.

Installation

::

$ pip install rsocks

Or

::

$ easy_install rsocks

To upgrade to latest version, you could execute::

$ pip install -U rsocks

Resources

  • OS Service Templates <https://github.com/tonyseek/rsocks/tree/master/misc/platforms>_
  • Configuration Snippets <https://github.com/tonyseek/rsocks/tree/master/misc/snippets/configuration>_
  • Software Integration Guides <https://github.com/tonyseek/rsocks/wiki>_

Usage

First, we need to create a config file with following format::

# /path/to/rsocks.toml
[servers.foo]
proxy = "socks4://user:[email protected]:1080"
listen_host = "0.0.0.0"
listen_port = 5025
upstream_host = "smtp.example.com"
upstream_port = 25
upstream_ssl = false

There is an example for forwarding SMTP/IMAP of Gmail through a SOCKS5 proxy server::

[servers.imap]
proxy = "socks5://localhost:1080"
listen_port = 5993
upstream_host = "imap.gmail.com"
upstream_port = 993
upstream_ssl = true

[servers.smtp]
proxy = "socks5://localhost:1080"
listen_port = 5465
upstream_host = "smtp.gmail.com"
upstream_port = 465
upstream_ssl = true

Next, we start the rsocks server::

$ rsocks --config=/path/to/rsocks.toml
[14:24:44] rsocks.servers.smtp       Using proxy server socks5://localhost:1080
[14:24:44] rsocks.servers.smtp       Listening 127.0.0.1:5465
[14:24:44] rsocks.servers.imap       Using proxy server socks5://localhost:1080
[14:24:44] rsocks.servers.imap       Listening 127.0.0.1:5993
[14:24:44] rsocks.pool               Prepared "smtp"
[14:24:44] rsocks.pool               Prepared "imap"
[14:24:44] rsocks.servers.smtp       Starting server...
[14:24:44] rsocks.servers.imap       Starting server...

Don't stop it now, open your application (such as Airmail in OS X) and set the server option to local forwarding address::

SMTP: 127.0.0.1:5465 without SSL
IMAP: 127.0.0.1:5993 without SSL

Now the application's traffic will be forwarded through the proxy server (socks5://127.0.0.1:1080).

If you wish to run the rsocks server in background, please check the Platform Service Templates <https://github.com/tonyseek/rsocks/tree/master/misc/platforms>_. For example, OS X users can create com.tonyseek.rsocks.plist file in ~/Library/LaunchAgents and load it as a service::

$ nano ~/.rsocks.toml  # create a config file
$ wget https://github.com/tonyseek/rsocks/blob/master/misc/platforms/osx-launchd/com.tonyseek.rsocks.plist \
      -O ~/Library/LaunchAgents/com.tonyseek.rsocks.plist
$ nano ~/Library/LaunchAgents/com.tonyseek.rsocks.plist  # edit the template
$ launchctl load -w ~/Library/LaunchAgents/com.tonyseek.rsocks.plist

API Overview

There is an example for using API to build a server:

.. code-block:: python

import os

from rsocks.pool import ServerPool
from rsocks.server import ReverseProxyServer

proxy = os.environ.get('SOCKS_PROXY', 'socks5://localhost:1080')
pool = ServerPool()

with pool.new_server(
        name='IMAP',
        server_class=ReverseProxyServer,
        upstream=('imap.gmail.com', 993),
        use_ssl=True) as server:
    server.set_proxy(proxy)
    server.listen(('127.0.0.1', 5993))

with pool.new_server(
        name='SMTP',
        server_class=ReverseProxyServer,
        upstream=('smtp.gmail.com', 465),
        use_ssl=True) as server:
    server.set_proxy(proxy)
    server.listen(('127.0.0.1', 5465))

if __name__ == '__main__':
    pool.loop()