[转载]关于Go/*和谐*/Agent二三事

首先是关于tomato上配置的:https://groups.google.com/forum/#!topic/goagent-dev/zBK9F8gifsc

Tomato Dualwan路由器使用goagent

准备工作:路由器打开SSH,

分区为ext3的U盘或者移动硬盘,SSH客户端(我用的是SecureCRT)。
用SecureCRT连接到路由器,tmp/mnt/sdb1是我的U盘挂载后的路径,以下这个路径都要改成你自己的U盘挂载的路径,可以在USB设置
的“已连接设备”里面,产品名称那里看得到挂载is mounted on 后面的就是你的路径了。
1、在硬盘上新建一个opt文件夹:
mkdir tmp/mnt/sdb1/opt
2、挂载硬盘到opt目录:
mount -o bind /tmp/mnt/sdb1/opt /opt
3、安装optware:
cd /opt
wget http://bbs.dualwan.cn/downloads/optware-install.sh -O – | tr -d
‘r’ > optware-install.sh
sh optware-install.sh
4、更新一下optware和安装busybox:
/opt/bin/ipkg update
/opt/bin/ipkg install busybox
5、建立swap文件,我的共建立了64MB,如果你已经在使用swap分区,此步骤就可以省略:
dd if=/dev/zero of=/tmp/mnt/sdb1/swapfile/swapfile bs=1024 count=65536
6、把swap挂载上:
/opt/bin/busybox mkswap /tmp/mnt/sdb1/swapfile/swapfile
/opt/bin/busybox swapon /tmp/mnt/sdb1/swapfile/swapfile
7、下载并安装GoAgent服务器端:
详见http://code.google.com/p/goagent/,配置好GoAgent服务器
8、拷贝GoAgent客户端到路由器
打开GoAgent目录下的local文件夹,把CA.crt、CA.key、proxy.py、proxy.ini以及certs整个文件夹上传到/
opt/etc/goagent/目录下
打开proxy.ini,修改[listen]里ip = 0.0.0.0,[gae]里的appid改成自己的appid
9、安装python26和OpenSSL:
/opt/bin/ipkg install python26
/opt/bin/ipkg install openssl
/opt/bin/ipkg install py26-openssl
10、运行goagent测试一下:
python2.6 /opt/etc/goagent/proxy.py
如果见到以下信息,就运行成功了
——————————————————
GoAgent Version : 1.7.9 (python/2.6.7 pyopenssl/0.10)
Listen Address  : 0.0.0.0:8087
GAE Mode        : http
GAE Area        : cn
GAE APPID       : xxx
——————————————————11、加入启动脚本
第10步运行过后关闭SecureCRT的话,python会结束运行,代理就关闭了,所以要加入到挂载USB后的脚本里面让GoAgent在启动路由
器后运行。mount -o bind /tmp/mnt/sdb1/opt /opt
/opt/bin/busybox swapon /tmp/mnt/sdb1/swapfile/swapfile
python2.6 /opt/etc/goagent/proxy.py
以上过程完成之后,路由器部分就配置好了。
电脑上的话,如果使用FireFox,可以安装AutoProxy扩展,自己配置好代理地址为“路由器IP:8087”,然后就可以自动翻墙了。
如果需要IE、Chrome、其他软件也自动翻墙的话,可以使用代理服务器自动配置文件。
先去http://autoproxy2pac.appspot.com/这里(可能需要先翻墙才能打开),把自己的路由器IP和端口8087填好,点
下载PAC文件,下载放好,比如我的是F:Tempproxy.pac。再到IE的Internet选项→连接→局域网设置,选使用自动配置脚本。
里面填file://F:/Temp/proxy.pac
把里面的文件夹名字改成你自己的。确定后,IE也可以自动翻墙了,国内网站直接连接,需要翻墙的就使用代理。 
 
 
其次是关于wm的
介绍
转载请注明来源:sillybj.blogspot.comgoagent是什么就不用说了。goagent是用Python写的,所以主要工作就是在WM上装上能够运行goagent的Python。有一个项目叫PythonCE,是在WM上使用的Python:
Python CE http://pythonce.sourceforge.net/

可以下载cab安装包,直接安装就可以在WM上使用Python了。直接跳到Python2.6部分,下载可以在WM上运行goagent的PythonCE
我测试用的goagent版本是1.7.10,在Python2.5下不能正常工作,主要是ssl这一部分,默认是没有编译进来的。
Python2.5源代码里面包含_ssl模块,通过socket模块调用,所以可以下载PythonCE的源码,修改配置文件后重新编译。
为了更新到最新的Python-2.5-20071004,需要下载Python-2.5-20071004-patch.zip
解压出源码,并用patch工具更新到最新版。这里假设源码放在目录C:PythonWM,
编译需要的软件:
– Python 2.5 for Windows 安装在PC上
– Microsoft eMbedded Visual C++ 4.0 with Service Pack 4
– Pocket PC 2003 SDK
– Visual C++ 6.0或以上版本
打开命令提示符,
进入目录C:PythonWMPCbuildWinCE
运行scons.bat就可以开始编译了。
可以测试一下编译环境是否创建好了。
为了加入_ssl模块,需要修改C:PythonWMPCbuildWinCE目录下的SConscript文件。
加入openssl的lib依赖,首先下载openssl的库(arm版)和头文件,解压出来libeay32和ssleay32的dll和lib,放到LIBPATH里,头文件放到Include里
编译后需要将下列文件复制到WM的对应目录中(假设PythonCE安装在Program FilesPython25):
C:PythonWMPCbuildWinCElibPython25.zip 复制到 Program FilesPython25
C:PythonWMPCbuildWinCErelease*.pyd 复制到 Program FilesPython25DLLs
C:PythonWMPCbuildWinCEreleasepython.exe和python25.dll 复制到 Program FilesPython25
C:PythonWMLibos.py 复制到 Program FilesPython25Lib
libeay32.dll和sslea32.dll 复制到 Program FilesPython25
如果有编译sqlite的话,C:PythonWMPCbuildWinCEreleasesqlite3.dll 也复制到 Program FilesPython25,没有编译就使用原来的
传到WM,使用socket.ssl不提示不存在了。
下载地址
PythonWM-source.zip,这个是基于pythonCE-2.5-20061219修改后的源码,除了加入_ssl模块之外,还加入OpenSSL模块等,是因为goagent中有import OpenSSL。
Python25.zip,这个是编译后的文件,可以直接解压到pythonCE的安装文件夹替换其中的文件即可使用。
修改goagentlocalproxy.py
在注释后面的第一行加入:

from __future__ import with_statement

是为了后面的with语句不报错;
将代码中调用ssl.wrap_socket的那行改为调用socket.ssl
导入证书那部分在WM上不能正常使用,先跳过,将这行:

if cmd and os.system(cmd) != 0:

改为:

if cmd:

即不执行cmd。
proxy.py 修改后的proxy.py,基于版本1.7.10,用于Python2.5

设置代理
以WM6.5为例,步骤如下:
打开:开始-设置-连接-连接,
切换到“高级”选项卡,点“选择网络”按钮,在“在程序自动连接到Internet时,使用”下面点“新建”,
ISP名称随便填,比如GOAGENT;
切换到“调制解调器”选项卡,点“新建”,连接名称随便填,选择调制解调器“Cellular Line (GPRS,3G)”,点“下一步”,接入点根据自己情况填,移动的一般是cmnet,联通的可以填3gnet,然后点“下一步”-“完成”,
切换到“代理服务器”选项卡,勾选“此网络连接到Internet”和“此网络使用代理服务器连接到Internet”,代理服务器填127.0.0.1,然后点“高级”,
将四个都改为127.0.0.1,端口8087
然后确定保存。

以后就直接可以在“选择网络”里面切换代理和不代理了。
使用测试
代理设置好之后,运行proxy.py
然后打开浏览器,我使用的是Opera Mobile 9.7,
但测试发现,除了google的http页面可以打开之外,其他的都打不开。
没有测试最新版的goagent,其实也用不着测试也知道结果。

Python2.6
测试版本
无法正常代理可能还是因为Python2.5的原因,所以希望最好能让Python2.6能在WM上运行,
于是下载了Python2.6源码,基于PythonCE和Python2.6源码,参照PythonCE修改,结果改得乱七八糟,不过最后总算能在WM上运行了。

下载地址
Python26.zip 解压出来的文件夹名还叫Python25是因为原始cab文件安装的位置是Python25,为了文件关联正常,所以没有改名,直接解压到pythonCE的安装文件夹替换其中的文件即可使用。


修改proxy.py
以goagent 1.7.10原始proxy.py为基础修改,将这行:

if cmd and os.system(cmd) != 0:

改为:

if cmd:

保存即可
不要使用上面那个用于Python2.5的proxy.py)
使用测试
代理的设置还是和上面一样,测试用浏览器是Opera Mobile 9.7 和 Opera Mobile 10,简单测试了一下,目测可以正常代理HTTP,但浏览HTTPS很不稳定,程序有时会自动退出。

另外,对WM原生Opera Mini 5无效,但对java版国际版Opera Mini有效(连接方式设为HTTP)。
如果Opera Mini连接到中国的服务器的话是不能使用的,这个可以从goagent的输出看到连接到哪个服务器。运行时有时会提示很多错误,主要是:

AttributeError: ‘module’ object has no attribute ‘EPIPE’

这是因为WM不支持,但是似乎不影响使用;
然后另外一个错误:

“HEAD http://google.cn/ HTTP/1.0” 501 –
code 501, message Unsupported method (‘HEAD’)

我测试时会导致Opera Mobile退出;
以及用Opera Mobile打开https网页时 提示302错误,也会导致Opera退出,原因我不清楚
欢迎测试和改进~

所以目前推荐使用国际版的Opera Mini(java版),通过它也可以访问https网页。
另外有一要注意的地方就是 运行proxy.py之后,点Menu–Exit之后,虽然窗口关闭,其实它还是在后台运行,仍然可以使用代理,此时如果再次运行proxy.py就会 看不到连接提示,并且关闭后也会在后台运行,于是会越积越多。所以最好在关闭后用进程管理器结束掉,或者重启设备。
截图(浏览器使用的是java英文版Opera Mini 6.5)

下一步准备整理并上传python2.6的代码,同时测试下最新版的goagent。
经测试,goagent 1.8.3经过修改“if cmd and os.system(cmd) != 0:”这一行即可使用,修改方法同上。


已上传PythonCE2.6源码,在此下载:PythonCE2.6-source.zip,可以正常编译,但是由于加入OpenSSL的原因,import OpenSSL时会出现某些错误,要正常使用可以先不把OpenSSL模块传到设备,有时间再进行修改。

http://sillybj.blogspot.com/2012/04/windows-mobilegoagent.html

===
another
我的WindowsMoble终于较为完美的实现GoAgent了
采用了http://sillybj.blogspot.com/2012/04/windows-mobilegoagent.html
这篇文章里的PythonCE2.5安装包+2.6覆盖包+2.6源码包
先安装2.5至默认目录,然后覆盖2.6安装包
然后从源码包里提取GoAgent所需的所有py和pyd文件至GoAgent的Proxy.py和Proxy.ini的目录
然后执行Proxy.py就成功了…
就这么点事,折腾了我3个小时才搞完…
好像还没出现那篇博文提到的GoAgenr报错啊浏览器崩溃啊什么的
一般的Https好像也正常…
 
名称 大小 修改时间 CRC
abc.py 6 819 2008-09-03 02:14 38B56EB7
atexit.py 1 631 2006-12-20 07:12 E3D9DD16
BaseHTTPServer.py 21 972 2008-09-02 17:25 8DCA4E16
bisect.py 2 662 2008-07-11 06:03 D22E50D7
collections.py 6 070 2008-09-26 15:31 7F749973
ConfigParser.py 24 469 2008-08-02 19:37 953151A1
cProfile.py 6 259 2006-02-09 04:53 9B8B38CE
fnmatch.py 3 019 2003-07-14 08:06 BA99EC70
hashlib.py 4 993 2008-09-01 08:34 6A952627
httplib.py 43 590 2008-09-02 17:25 36740A0F
keyword.py 1 994 2008-01-22 09:22 AF348D86
mimetools.py 7 168 2008-09-09 16:49 95A9F4CA
posixpath.py 12 754 2008-05-09 16:27 5487EC83
PROXY.INI 2 396 2012-07-27 00:57 F5D3391A
proxy.py 60 658 2012-07-27 01:27 B3BF9808
random.py 31 824 2008-07-31 05:46 BB2AA589
rfc822.py 33 295 2008-07-15 09:42 AFF2E32D
select.pyd 8 704 2012-04-20 20:25 80BAC5C6
socket.py 17 974 2008-08-08 20:27 68ECF0D8
SocketServer.py 21 922 2008-05-25 10:31 21C48E94
SocketServer_25.py 18 486 2006-12-20 07:13 58945DCB
ssl.py 15 427 2008-09-30 10:56 9FE5F36F
SSL.pyd 40 960 2012-07-27 00:32 4835293A
string.py 20 667 2008-07-19 11:06 BEC54382
struct.py 54 2008-01-04 18:54 57A411CF
tempfile.py 17 774 2008-05-13 03:24 14BD8E84
textwrap.py 16 285 2008-08-01 17:34 92EACD47
threading.py 31 394 2008-09-07 15:04 40786BF7
traceback.py 11 047 2008-08-01 17:21 2BFB1FB5
urllib.py 64 552 2008-09-22 13:27 B5709784
urllib2.py 48 217 2008-08-18 16:46 7D33C3DD
urlparse.py 14 437 2008-09-04 14:35 BF3E5691
_socket.pyd 46 592 2012-04-20 20:25 F1789F01
_ssl.pyd 25 088 2012-04-20 20:25 C4B9D0C0
供大家有兴趣的参考一下

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.