A SOCKS reverse proxy server.
Project description
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
Usage
First, we need to create a config file with following format:
# /path/to/rsocks.toml [servers.foo] proxy = "socks4://user:pass@192.168.1.10: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:
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()
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file rsocks-0.4.0.tar.gz
.
File metadata
- Download URL: rsocks-0.4.0.tar.gz
- Upload date:
- Size: 6.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 87e5af7fee7a95b7f5134d04a4d115d850b0c58d93373bd86ff9d653e79f4ea7 |
|
MD5 | 1923fc71beca21a1d0afd4ecde668dce |
|
BLAKE2b-256 | 932c1a39b63f4a9278b9f35aa6dfbf80a52a0d225b2b9ca9e3dd9be6236a4085 |
File details
Details for the file rsocks-0.4.0-py2.py3-none-any.whl
.
File metadata
- Download URL: rsocks-0.4.0-py2.py3-none-any.whl
- Upload date:
- Size: 7.9 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 56a94ba6864a7b392f5c87cb258210de2f55638398d69b3b7f667a2d24dbee87 |
|
MD5 | 32ddddef032e8471b3a461ce7ddf6d13 |
|
BLAKE2b-256 | 1c9d6788dcf36e246b8ef836f1dcd774b8d162544642fb69d0926bc3a272f96f |