写个服务器程序练手


最近流行写服务器程序, 偶也跟个风写个 SOCKS5 玩玩.

人家都用 C++, go, libevent 写. 偶弱, 不会, 于是用 python + eventlet.

玩具级代码, 只支持 TCP.

偶看 OpenSSH channels.c 里面写着:
debug2("channel %d: only socks5 connect supported", c->self);
后面返回值用 INADDR_ANY (0.0.0.0), PORT 0 直接写死在里面了,

偶吃了一惊, 原来常用的 Tunnel 原来如此简陋, 照这样谁都能写一个.

没有配置文件, 配置都在文件顶部.

主要配置:
SERVER_PORT = 1080

PREFER_IPV4 = False

LOCAL_POLICY = 0 # 0: forbid, 1: forward

下载方式:
curl http://pastebin.com/m7H5kkCP | base64 -di | gzip -d > socks5.py

友情提示:

只监听 127.0.0.1

推荐使用干净无污染的 DNS 服务器以发挥本品最优效果. 解析相关代码是可以 hack 的.

欢迎寻找发掘探究代码中的 Bug / 特性 / 彩蛋…

ps:

RFC1928, 极其容易实现的… 特别是只实现一部分的话.

ps2:

奇怪的是, 这个代理完全不支持 upstream. 为什么呢…

ps3:

偶不发没用的东西. 如果你会 hack 的话…

ps4:

代码授权? 随便拿去用吧…

Original Link and Full Article

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: