reagent: a simple yet flexible GAE-based web proxy (v0.0.5)
===========================================================
About
-----
"How do we convince people that in programming simplicity and clarity -- in
short: what mathematicians call 'elegance' -- are not a dispensable luxury, but
a crucial matter that decides between success and failure?"
--- Edsger W. Dijkstra
"Perfection is achieved, not when there is nothing more to add, but when there
is nothing left to take away."
--- Antoine de Saint-Exupéry
This is reagent, a GAE-based web proxy that aims to be flexible and efficient,
while keeping the codebase maintainable and auditable. Many functionalities
(eg. PAC generation, User-Agent manipulation, URL redirection, etc.) from other
GAE-based proxies can be attained using browser extensions or other third-party
software, and are therefore not implemented in reagent. The commits predating
v0.0.5 of reagent also serve, IMHO, as a practical example for how to reduce a
bloated piece of software into its bare essentials.
Usage
-----
* Install Python 2.7 and pyOpenSSL, and then modify proxy.ini.
$ mkdir server; cp gae.py app.yaml server
$ > upload.sh printf '#!/bin/sh\n%s\n\t%s\n' \
'exec appcfg.py --noauth_local_webserver' \
'-A "$1" -V 1 -E "password:p@ssw0rd" update server'
$ sed -n '/^appids/ s/.*= *//p' proxy.ini |
tr '|' '\n' | parallel -j0 sh ./upload.sh
$ mkdir client; cp gae.py proxy.py proxy.ini client
$ cd client; python2 ./proxy.py proxy.ini
* For reagent to work optimally, use of a poisoning-proof caching DNS service
(eg. dnscrypt-proxy in conjunction with unbound) is recommended.
Copying
-------
Homepage: <https://gitea.com/CasperVector/reagent>
Based on GoAgent 3.2.3 by Phus Lu <phuslu@hotmail.com>
Based on WallProxy 0.4.0 by Hust Moon <www.ehust@gmail.com>
Based on GAppProxy 2.0.0 by Du XiaoGang <dugang.2008@gmail.com>
Licence: GPL v2 <https://www.gnu.org/licenses/gpl-2.0.html>
Contributers:
Phus Lu <phus.lu@gmail.com>
Hewig Xu <hewigovens@gmail.com>
Ayanamist Yang <ayanamist@gmail.com>
V.E.O <V.E.O@tom.com>
Max Lv <max.c.lv@gmail.com>
AlsoTang <alsotang@gmail.com>
Christopher Meng <i@cicku.me>
Yonsm Guo <YonsmGuo@gmail.com>
Parkman <cseparkman@gmail.com>
Ming Bai <mbbill@gmail.com>
Bin Yu <yubinlove1991@gmail.com>
lileixuan <lileixuan@gmail.com>
Cong Ding <cong@cding.org>
Zhang Youfu <zhangyoufu@gmail.com>
Lu Wei <luwei@barfoo>
Harmony Meow <harmony.meow@gmail.com>
logostream <logostream@gmail.com>
Rui Wang <isnowfy@gmail.com>
Wang Wei Qiang <wwqgtxx@gmail.com>
Felix Yan <felixonmars@gmail.com>
Sui Feng <suifeng.me@qq.com>
QXO <qxodream@gmail.com>
Geek An <geekan@foxmail.com>
Poly Rabbit <mcx_221@foxmail.com>
oxnz <yunxinyi@gmail.com>
Shusen Liu <liushusen.smart@gmail.com>
Yad Smood <y.s.inside@gmail.com>
Chen Shuang <cs0x7f@gmail.com>
cnfuyu <cnfuyu@gmail.com>
cuixin <steven.cuixin@gmail.com>
s2marine0 <s2marine0@gmail.com>
Toshio Xiang <snachx@gmail.com>
Bo Tian <dxmtb@163.com>
Virgil <variousvirgil@gmail.com>
hub01 <miaojiabumiao@yeah.net>
v3aqb <sgzz.cj@gmail.com>
Oling Cat <olingcat@gmail.com>
Meng Zhuo <mengzhuo1203@gmail.com>
zwhfly <zwhfly@163.com>
Hubertzhang <hubert.zyk@gmail.com>
arrix <arrixzhou@gmail.com>
gwjwin <gwjwin@sina.com>
Zhuhao Wang <zhuhaow@gmail.com>
YFdyh000 <yfdyh000@gmail.com>
zzq1015 <zzq1015@users.noreply.github.com>
Zhengfa Dang <zfdang@users.noreply.github.com>
haosdent <haosdent@gmail.com>
xk liu <lxk1012@gmail.com>
Casper Ti. Vector <caspervector@gmail.com>