找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 11992|回复: 11

在 3.5MB 超小空闲空间的路由器上部署 Python + GoAgent(以TTDW WR500V 为例)

  [复制链接]
发表于 2012-5-9 00:13 | 显示全部楼层 |阅读模式
在 3.5MB 超小空闲空间的路由器上部署 Python + GoAgent(以Tomato DualWAN WR500V 为例)
(以Tomato DualWAN WR500V 为例,WR500V 用户不想看废话的话请直接跳到“四、使用”开始看即可)

一、来由

    GoAgent 是利用 Google App Engine 的网络代理,速度超快,U2B之类的播放及其流畅,秒杀大部分virtual**。介绍就不详说了,具体自己 Google 吧……

   GoAgent 客户端(准确说是中继)是用 Python 实现的,可以在 Mac OS X、Windows、Android、iOS、WebOS 上运行,然后再设置浏览器的代理为本地 GoAgent 端口。但是要让每个访问点上部署 GoAgent 是非常麻烦的事情(如 iOS、Android 等);即时是 Windows 和 Mac OS X,每次都使用都要打开一个多余的尾巴,想想就麻烦。有没有更好的解决方案呢?

   当然有!最合适的部署的角色服务器就是在路由器上。搜索一下 GoAgent OpenWRT 或者 GoAgent Tomato,有很多教程可以参考。基本的步骤是安装 ipkg/opkg,安装 python、openssl,然后上传 GoAgent 的文件,然后少量设置就行了。


二、存储空间

   我在使用的路由器 Tomato DualWAN 的 WR500V,只有 8M Flash,查看了一下空间使用,才用了3.xM,还有 4M+ 的空间那里去了呢?赶紧问了了一下路由器的生产商,答复了是在路由器 Web 控制台->系统管理->JFSS设置,启用并格式化,就能获得 3.5M 左右的可用空间——敢情说以前这么大的空间都闲着,真是浪费啊老大……

   空间有了,准备开干。然后立马给了个下马威,ipkg 安装后就花费了将近 2M 空间,安装 python 的时候发现 *_mipsel.ipk 有 14 M+,包括其它的依赖,解压缩后竟然有 70M+(共 6498 个文件)。这对于那些有 USB 口的路由器来说,随手插上一个 U 盘或移动硬盘什么的,毫无压力,但对于我这种只有 8M Flash 的路由器来说,压力山大啊……

   对于万能的终极动手折腾控来说,办法总是比困难多。于是想办法尝试,最终真的搞定了,在 3.5M 闲置空间内安装上了 GoAgent 1.8.0,让所有的电脑啊、手机啊、高清播放机啊神马的都可以轻松享受 GoAgent 带来的快感(部署 PAC 等会更方便)。本文典型地适用于有 8M Flash 且其中有 3.5M+ 空间剩余的可以刷 OpenWRT、Tomato、DD-WRT 的路由器(如果 8M Flash 刷固件后,空间不足 3.5M,可以寻找或者自己 DIY 精简版固件),特别是 Tomato DualWAN WR500V 用户可以照搬步骤和超级 Python 包。

三、折腾细节

1. Tomato DualWAN WR500V 支持 CIFS 客户端,即可以在路由器上映射 Samba (简单理解为类似 Windows 网络共享)的路径,如此一来,我们可以临时性地获得一个超大的“外援”空间。映射后,telnet 上去发现 /cifs1 已经可以用了。

2. 执行 mount -o bind /cifs1 /opt 让 /opt 绑定到远端可用空间上。

3. 安装 ipkg、然后 ipkg install python openssl 等,然后上传 GoAgent 然后测试运行无误(此步骤网上有很多教程,如参考:http://bbs.dualwan.cn/viewthread.php?tid=229261

4. 上面步骤完成后发现总共耗费了 70M+ 空间(6498 个文件,似乎),好了,大刀阔斧地删减文件,做到最终减少到了 7M 多一点(光这个步骤就几乎花费了我超过 4 个小时的时间,Hacker、Cracker、Geeker 的成功之道:耐心+运气+经验)。

5. 前文所述格式化装载 JFFS,df -h 查看只有 3.5M,网上查了一下得知 JFFS 是支持压缩的,cp -a /cifs1 /jffs,一阵忐忑后,发现全部拷贝进去了(正好压缩了 50% 左右),/jffs 上只剩下 150K 左右空间空闲了,真险啊……

6. 执行 mount -o bind /jffs /opt 重新绑定 /opt 到内部的 JFFS 空间上,再次执行 GoAgent,成功,太棒了。

7. 剩下的收尾工作,卸磨杀驴,把 CIFS 取消掉(毕竟外援是靠不住的,并非 7×24 小时开机);设置自动运行等,打包分享,搞定手工。

四、使用

   如果你是 WR500V 用户(或者其它 mipsel 架构的 CPU 的路由器或者高清播放机均可),可以直接用我导出的专用于 GoAgent 的 Python 包。特点:只有 JFFS 压缩后仅占用 3.5M 空间;TGZ 打包,部署后直接可用。缺点:删除了GoAgent cert 下的所有证书(实在没空间来保留这 1M 多的证书了),不知道访问那些 HTTPS 网站是否会有问题,尚未验证(似乎没遇到问题)。下面是 WR500V 用户使用的步骤:

1. 在 WR500V WEB 控制台->系统管理->JFFS设置,启用,格式化,得到 /jffs 空间。“挂载后执行 ”处输入“mount -o bind /jffs /opt”,以便 /opt 指向 JFFS 空间。

2. 下载附件,上传文件 opt.tgz 到路由器上:

1)在 系统管理->访问设置 把 SSH 和 Telnet 访问打开(如果没打开的话)。

2)用 WinSCP 等软件以 SCP 协议登陆路由,把 opt.tgz 整个压缩包传到 /tmp 目录下

3)用 Putty 或 Telnet 登录到路由器,输入:

cd /opt
tar -zxvf /tmp/opt.tgz。

3. 解压缩完成后,执行一下 /opt/goagent.autorun 看看有没有成功的信息,如果有即成功了。

4. 修改 /opt/etc/goagent/proxy.ini 中的 jeanzvirtual** 为你的 Google App Engine 的 App ID(为了测试你就用我的临时用一下吧,但完成后请自己申请和部署 GoAgent,切记,否则有 1G 流量限制,人多大家用的话一下就用完了)。

5. 重启路由器,万事 OK(重启后自动挂载 JFFS,绑定到 /opt,绑定后自动执行 /jffs/goagent.autorun,这个是从 Tomato USB 官网找到的自动运行的方法)。

6. 要使用 GoAgent 购物,请选择下面的任意一种方式:

1). 设置浏览器代理为路由器地址,端口 8087;

2).设置浏览器或或者 iPhone 自动代理脚本为 http://192.168.1.1:8087/goagent.pac(默认已经在 8087 端口开启 GoAgent PAC 服务,如果路由器的 IP 地址不是 192.168.1.1,请先修改 goagent.pac 的 127.0.0.1 为 路由器的地址);

3). Chrome 用户还可以用 Switchy Sharp 插件。

五、后话

   实际使用后用 top 命令查看 CPU 和内存占用:单个客户端普通网页浏览的话,CPU基本上 5% 以下,初始响应速度似乎不如 Windows 和 Mac OS X 的 GoAgent 快;看 YouTube 视频的话,CPU 大概会在 5~10%之间,非常流畅。没有启用 swap 空间,内存占用和稳定性完全无问题。

By Yonsm
2012.04.16
感谢所有工具和参考文章作者



下载:

http://115.com/file/e7n69oyv#(1.8.2 版本,已去除 logging 功能,已复用同一个线程/端口来做代理和PAC服务 )

要升级到最新版本,直接下载最新的GoAgent替换 /opt/etc/goagent 中的所有文件即可
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
 楼主| 发表于 2012-5-9 00:14 | 显示全部楼层
我的Blog的帖子:http://www.yonsm.net/post/645,有问题在这里反馈

附件只支持mipsel架构的路由器,其它(如ARM)的请自己按思路搞定,可以参照我的文件列表。
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
发表于 2012-5-9 06:59 | 显示全部楼层
宇宙达人啊,用钻石的时候就用您的rom,哈哈
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
发表于 2012-6-6 22:13 | 显示全部楼层
本帖最后由 jbcdidgosir 于 2012-6-6 22:14 编辑

在你空间的留言一直没人回,还是发到这里吧.

总算调通了,方法有点不同,大致步骤如下:
1.格式化JFFS
2.开启路由器的ftp服务器,地址设置为/jffs
3.电脑ftp访问路由器的ftp服务器,直接上传,免得用cifs客户端了,命令太多不适合菜鸟.
4.Administration的scripts里写:
mkdir /tmp/goagent
tar -zxvf /jffs/opt.tgz -C /tmp/goagent
mount -o bind /tmp/goagent /opt
/opt/bin/python2.6 /opt/etc/goagent/proxy.py
第一行是建立一个新目录,我建的是叫goagent,可以改成任何其他名字,改了的话,后面的也要改.
第二行是把jffs下面的opt.tgz解压缩到goagent目录中
第三行是加载,记住,这个特别重要,一定要加载,否则无法运行python,之前解压缩后直接运行,一直说找不到python,其实就是因为没有加载.
第四行么,就是运行了.
我在jffs里没有启用加载,而是在script里用命令行的方式加载,一样的.路由器重启后就可以运行了.

现在最后一个问题:
我自己在内网下购物完全没问题,现在想让外网的朋友们能用我的GoAgent也购物,因为他们不懂网络,所以只能共享我的路由器上的代理.

我的proxy.ini里的[listen]已经设置为0.0.0.0,但是外网的朋友还是无法访问,实在是没辙了.

现在的临时解决方法:
在路由器上设置端口转发,把808端口转发到我的电脑上,我电脑上用了一个叫”端口映射器”的软件,把所有来自808端口的数据全部转发到路由器的GoAgent端口上,这样他们暂时可以购物了,但是这不是长久之计,毕竟我不可能一直开电脑吧.
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
发表于 2012-8-14 17:23 | 显示全部楼层
总是提示 Python2.6 permission denied, 怎么处理呀?
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
发表于 2012-8-14 23:06 | 显示全部楼层
哇塞,宇宙青年过来了。
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
发表于 2012-8-15 08:08 | 显示全部楼层
支持 这个好
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
发表于 2012-8-15 10:26 | 显示全部楼层
好东西  支持一下 ....
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
发表于 2012-8-19 14:37 | 显示全部楼层
http://115.com/file/e7n69oyv#, 已经无法下载了,难道给顶上了?
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
发表于 2012-10-23 15:17 | 显示全部楼层
jbcdidgosir 发表于 2012-6-6 22:13
在你空间的留言一直没人回,还是发到这里吧.

总算调通了,方法有点不同,大致步骤如下:

为什么我做的会出现这个问题!
最近接到任务要让路由器实现购物功能,前几天一直在移植python...郁闷的要死!
# /opt/goagent.autorun
# /opt/bin/python2.6: can't resolve symbol '__ctype_b_loc'
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
发表于 2012-10-23 16:49 | 显示全部楼层
玩PPC时的那个:宇宙杰出青年? O M G

无条件帮顶
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
发表于 2012-11-15 21:52 | 显示全部楼层
jk110333 发表于 2012-10-23 15:17
为什么我做的会出现这个问题!
最近接到任务要让路由器实现购物功能,前几天一直在移植python...郁闷的要 ...

我的帖子里也没有说要执行.autorun文件啊,这个文件本身就不可执行的
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /1 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-10-1 23:38

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com

快速回复 返回顶部 返回列表