2010年8月25日星期三

[GFW BLOG] 使用Glype架设免翻墙oauth认证的dabr

作者:yaker   来源:http://www.yakergong.com/blog/archives/486

twa.sh(也就是之前的dabr.nl)继dabr.co.uk被封了,只好自己搭建了一个。基本上按照choc.li帖子的说明来架设的,修正了无法logout的问题,对glype的允许的主机列表也做了修改。

这个dabr只对受邀请的用户开放,一些比较熟(并且经常上twitter)的朋友已经加在列表里了。如果需要用的话可以在帖子下面留言给我,说明你的twitter id。

首先要有一个能翻墙的主机,比如hellogfw.com。然后在上面架设好glype和dabr,比如分别在目录/glype和/dabr下。安 装/glype只需要把upload目录上传并重命名即可,需要cache功能的话注意在/glype/tmp目录下建立名字为cache的文件夹并设置 读写权限。安装dabr需要设置http服务器的url_rewrite,需要注册一个browser模式的twitter api,按照官方说明即可。

首先访问http://hellogfw.com/glype测试代理是否可用。然后开始配置glype。编辑/glype/include目录下的settings.php文件。

// 如果想要这个在线代理只能用来访问twitter的话
$CONFIG['whitelist'] = array("twitter.com","twimg.com","amazonaws.com","hellogfw.com");

在glype/plugins目录下编写hellogfw.com.php文件,内容为

<?php
$redirect = $URL['href'];
header(”Location: $redirect”);
exit;

修改glype目录下的browse.php文件,在

if ( $this->browsingOptions['tempCookies'] && $expires > $_SERVER['REQUEST_TIME'] ) {
$expires = 0;
}

的后面(在glype1.1里是1449行)加上

// glype保存在客户端的cookie有效期默认为一个小时
$expires = time() + 3600;

如果变量$expires的值是零的话cookie的有效期就是”end of this session”,我自己测试产生的结果是,如果cookie有效期为”end of this session”的话dabr无法删除它(cookie的域也指定了)。

修改dabr目录下的common/user.php文件的两处

function user_logout() {
unset($GLOBALS['user']);
setcookie('USER_AUTH', '', time() - 3600, '/');
setcookie('c[twitter.com][/][original_referer]', '', time() - 3600, '/');
setcookie('c[twitter.com][/][k]', '', time() - 3600, '/');
setcookie('c[twitter.com][/][lang]', '', time() - 3600, '/');
setcookie('c[twitter.com][/][guest_id]', '', time() - 3600, '/');
setcookie('c[twitter.com][/][_twitter_sess]', '', time() - 3600, '/');
}
 
$authorise_url = 'https://twitter.com/oauth/authorize?oauth_token='.$token['oauth_token'];
$authorise_url = 'http://hellogfw.com/glype/browse.php?u='.$authorise_url;
header("Location: $authorise_url");

如果一切正常的话,进入dabr所在的页面,点击oauth登录的话就会重定向到glype的代理页面,输入用户名和密码之后会跳转到dabr。

P.S. 今天看到其其(@liruqi)架了一个twitese,用了一下,新版的twitese对oauth支持也挺不错的。而且还没有glype那个烦人的输入框。

P.S. 我本来是打算用itap这个dabr插件来 实现oauth认证的,只是我的web服务器是ngnix,我又不太清楚怎么修改url_rewrite,想想还是算了。两种办法各有优劣,用glype 代理连接到twitter的oauth页面的话,需要dabr显式的将带有oauth页面的url传递给glype,不是很安全。itap是在服务器端请 求,却有个小问题,key的获得等等都是通过正则表达式匹配来获得的,一旦twitter的页面更新,应该就不可用了。



--
Posted By GFW BLOG 功夫网 to GFW BLOG at 8/25/2010 05:14:00 PM

--
1、我们的订阅地址:http://feeds2.feedburner.com/chinagfwblog。2、发一封标题为GFW的邮件到CDTcaonima@gmail.com,就可获取翻墙利器赛风新地址。3、本站热烈欢迎各位朋友投稿或推荐文章,请发邮件至chinagfwblog[at]gmail.com。
停止订阅,请发邮件到
gfw-blog+unsubscribe@googlegroups.com

没有评论:

发表评论