Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/tonyseek/rsocks

A SOCKS 4/5 reverse proxy server
https://github.com/tonyseek/rsocks

gmail python reverse-proxy socks5

Last synced: 13 days ago
JSON representation

A SOCKS 4/5 reverse proxy server

Awesome Lists containing this project

README

        

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 `_
- `Configuration Snippets `_
- `Software Integration Guides `_

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 `_.
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()