gkp 版 iDevice 标准安装流程

gkp_idevices

 

这个周末安装 iDevice 有些吐:自己的新 iPhone4 和送给丈母娘的 iPod touch 要装东西,老婆的 iPod touch 也该升级一下系统,基本同样的工作重复进行了三遍,流程基本已经标准化了。。。记录如下

  1. 升级 / 恢复固件:iPod touch 2G 跑 iOS 4.0 速度还可以忍受,iPhone 3G 则需要把 spotlight 禁用了,不然实在是不能忍啊。iPhone4 就不说了,飞一样。。。
  2. 越狱:4.02 以下推荐用 jailbreakme.com ,实在是太方便了,slide to jailbreak
  3. 配置 VPN:不然 Cydia 的部分源链接不能
  4. 进入 Cydia:选择 GUI+Command 方式,彻底系统升级,添加 hakulo.us / ifuckgfw.com 源,安装 appsync,OpenSSH,SBSettings,Aptitude,APT,SBSetting VPN toggle,gfwinterceptor
  5. 改 SBSettings 设置,ssh 一下修改 root密码,关闭 openssh
  6. 同步照片,视频,软件
Posted in 我的慵懒生活 | Tagged , , , , , | 1 Comment

简述 GFWInterceptor PHP 服务器端安装

g_f_w

首先非常感谢 @overboming 同学连续两个晚上和我调试 GFWInterceptor 的 PHP 服务端,而且今天后来很长一段时间都是因为我的一个操作失误导致的错误,实在是很对不住 @overboming 同学,具体的这个操作失误在最后会提到,先来简单说一下安装的过程。

1,下载源代码

有两种方式,使用 svn:

svn checkout https://gfwinterceptor.googlecode.com/svn/trunk/api-proxy-php

或者直接到下面这个地址下载 index.php 和 .htaccess 这两个文件的 raw file

http://code.google.com/p/gfwinterceptor/source/browse/#svn/trunk/api-proxy-php

其中 svn 还是强烈推荐的,虽然文件可能要移动一下,不过这样可以确保在 copy / paste 时候不出错误。

2,代码安装

GFWInterceptor 的安装还是十分简单的,首先确认你的服务器使用的是 Apache httpd,并且开启了 mod_rewrite 支持,php 方面需要有 cURL 模块。没问题的话,把 index.php 和 .htaccess 这两个文件放到服务器的某个目录就可以了,完全不需要进行代码修改以及权限设置。

3,测试安装

Continue reading

Posted in 我的慵懒生活, 电脑相关 | Tagged , , , , | 14 Comments

试用 GFWInterceptor

gfwinterceptor_digiram

GFWInterceptor@overboming 同学写的一个 iOS App,其原理为按照关键字拦截应用程序外发网络请求到 proxy,并接受 proxy 传回的返回值,twitter / 4sq / Facebook 等一般都可以搞定。

GFWInterceptor 的手机端可以用 Cydia 安装,Source 地址是 http://gfwinterceptor.googlecode.com/svn/trunk/cydia,proxy 服务器端有 GAE 和 PHP 两个版本,不过 PHP 版本在我这里稍有问题,4sq 没问题,对返回值要求严格的 twitter 则提示 Extra Content,可能需要写 PHP proxy 的 @luosheng 同学 debug 一下 @overboming 已经更新了 PHP 服务器文件,现在 twitter 也没问题了。GFWInterceptor 自带了一个 appspot.com 的 GAE proxy,据 @overboming 说日请求大概有2-3w,刚刚到 Google 限制的 20% 左右,所以默认服务器也是个不错的选择。

想自己搭建 PHP 版 GFWInterceptor 的可以参考这篇教程

Posted in 我的慵懒生活, 电脑相关 | Tagged , , , , , , | 5 Comments

搭建支持 OAuth Echo 的第三方 twitter 应用

imggd_oauth_echo

背景:进入8月中,twitter 已经在每天减少 Basic Auth 的 API limit了,到月底 Basic Auth 将彻底关闭,也就是说到月底,所有的客户端,twitter与第三方服务之间都必须使用 OAuth 来传递帐号密码等信息。

我喜欢 twitter for iPhone 的很大一个原因就是其支持自定义图片服务,3.0 以及之前的版本使用 Basic Auth 自建图片服务很容易,只要处理一下提交过来的 multipart/form-data 就行了,但是相应的安全性比较低——密码用明文传送,所以 atebits 强烈推荐用 https,并且曾经计划在后续版本强制 https。当然现在都 OAuth 了,这个问题也就不存在了。

twitter for iPhone 升级到 3.01 以后,就一直有人说其有 bug,自定义 API 和 自定义图片服务都不能用,这个 "bug" 一直持续到了 3.03a。。。昨天偶然和 @2046 聊起这个事情,才突然明白这根本不是什么 bug,而是新版的 twitter for iPhone 已经开始用 oAuth 将用户信息打包提交了,所以导致之前在 expect basic auth 的 API Proxy 以及 自定义图片服务都歇菜了,包括 img.gdtwip 。。。

这里要强烈谴责一下 twitter 的官方网站,直到现在 twitter for iPhone 的支持页面里面还是让大家去 atebits 的 developer 页面看老掉牙的信息,严重误导。实际上现在 twitter 使用 OAuth Echo 为类似的第三方服务进行验证,基本原理可以参考这(12)篇文档,基本流程如下图:

Continue reading

Posted in 我的工作学习, 电脑相关 | Tagged , , , , | 1 Comment

Debian 5 安装 Pure-ftpd 笔记

今天实在要用到 ftp 传文件了,不得已开始装 ftpd。因为之前一直在用 pure-ftpd,所以这次在 Debian 上也打算用这个,发现还稍微需要配置一下,简单记下来:

安装:

aptitude install pure-ftpd

当然也可以直接装 pure-ftpd-mysql ,不过我嫌弄 mysql 表和用户麻烦。。

添加组和用户

groupadd ftpgroup
useradd -g ftpgroup -d /dev/null -s /etc ftpuser

修改启动方式,从默认的 inetd 改成 独立启动,这步很关键

vi /etc/default/pure-ftpd-common

找到

STANDALONE_OR_INETD=inetd

改成

STANDALONE_OR_INETD=standalone

为 PureDB 文件创建连接

cd /etc/pure-ftpd/auth
ln -s /etc/pure-ftpd/conf/PureDB 50pure

启动

/etc/init.d/pure-ftpd restart

ps 一下看看,如果 pure-ftpd 在就没问题了。增减用户等操作运行一下 pure-pw 看帮助吧,很简单的,记得所有涉及修改用户操作后面都加个 -m 即时更新数据库。

参考:justinhartman.com

Posted in 我的慵懒生活, 电脑相关 | Tagged , , , | 2 Comments

使用 MySQL 进行 PPP 验证

mysql

继续折腾服务器的 VPN。之前已经配置好了 ipsec+L2TP 以及 OpenVPN,还做了 OpenVPN 的 MySQL 验证以实现用户跨服务器,但是 L2TP 的用户验证还是需要用 PPP 调用 /etc/ppp/chap-secrets 文件,跨服务器验证貌似也只能 crontab rsync,于是没用过 Radius 的我还是往 MySQL 方面想办法。搜索后发现了两个相关的开源项目:pppd-mysqlpppd-sql,前者简陋到只有一个 .c 文件,让人无从下手,而后者是基于前者的思路重新开发的,编译文件与文档齐全,而且支持 PostgreSQL,于是决定用之。

首先需要安装 ppp 和 openssl 的 header / lib

aptitude install ppp-dev libssl-dev

下载安装 pppd-sql

cd /usr/src
wget http://freshmeat.net/urls/5649d7ea329d121d094f12544e2b70a1
tar zxvf pppd-sql-0.8.0.tar.gz
cd pppd-sql-0.8.0
./configure  <- 注意结果提示,看看你的数据库服务是否被找到了
./make
./make install

另外关键的 mysql.so ppp 插件文件不知道为什么没有在 make install 时候安装到应有位置,手工 cp 吧,目标路径按照你系统里面的 pppd 版本号修改。

Continue reading

Posted in 我的慵懒生活, 电脑相关 | Tagged , , , , , , , | 3 Comments

Linux 系统连接 OpenVPN 无法获取推送 DNS 服务器的解决

resolvconf 

话说上周我们安装好了 OpenVPN,并且也启用了 MySQL 验证用户名和密码,结果没用几天又遇到问题了。。。还是 @cnkang 同学,反映在 Android 手机上连接成功后,没有收到服务器端推送过来的 Google DNS。

因为我实在懒得和 Android 较劲,于是在一台 Ubuntu 10.04 Desktop 机器上安装了 OpenVPN 试验,结果果然如此,完全没有理会服务器

push "dhcp-option DNS 8.8.8.8"

这条配置。还是 Google 后找到了答案。

原来 Linux 系统确实有这个问题,OpenVPN 也提供了现成的解决方案,那就是 /etc/openvpn/update-resolv-conf 这个脚本。在客户端配置文件 client.conf 后面加上如下三行:

script-security 2
up ./update-resolv-conf
down ./update-resolv-conf

这样在连接成功后,脚本会自动修改 /etc/resolv.conf ,将 OpenVPN 服务器推送过来的 DNS 服务器地址填入。断开连接后,又会自动清空 /etc/resolv.conf。如果你没有别的程序要修改 /etc/resolv.conf 的话,用这个脚本还是很方便的。

注意使用前需要检查下系统里面有没有 resolvconf 这个软件包,没有的话编译或者 APT 装一个就行了。还要注意 update-resolv-conf 有没有执行权限,没有的话 chmod +x update-resolv-conf 搞一下。另外我这里默认 update-resolv-conf 脚本和配置文件处于同一目录,不是这样的话请自己添加完整路径。

@cnkang 等同学重新下载我的 OpenVPN 配置文件包,里面已经包含了 update-resolv-conf 脚本,在 Linux 下用的话只需要将 conf 文件调用脚本的三行取消注释就可以了。

Posted in 我的慵懒生活, 电脑相关 | Tagged , , , , , | 1 Comment

pam-mysql 验证 bug 的最佳解决方案

昨天我在配置 mysql 验证的 OpenVPN 时遇到了 pam-mysql 的验证 bug,当时使用的是

export LD_PRELOAD=/lib/libpam.so.0

这个 walk around。今天继续 Google 后,发现网上已经有可用的 patch,步骤如下:

cd /usr/src
wget http://prdownloads.sourceforge.net/pam-mysql/pam_mysql-0.7RC1.tar.gz
tar zxvf pam_mysql-0.7RC1.tar.gz
cd pam_mysql-0.7RC1
vi patch.in

内容如下

--- Makefile.in.chold   2008-07-14 10:25:53.000000000 +0200
+++ Makefile.in 2008-07-14 10:26:06.000000000 +0200
@@ -110,7 +110,7 @@
 CPPFLAGS = @CPPFLAGS@
 LDFLAGS = @LDFLAGS@
 LIBS = @LIBS@
-pam_mysql_la_LIBADD =
+pam_mysql_la_LIBADD = -lpam
 pam_mysql_la_OBJECTS =  pam_mysql.lo
 CFLAGS = @CFLAGS@
 COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)

有读者反应直接复制上面代码 patch 时候报错,我试了试还真是,有问题的下载下面这个附件然后改名成 patch.in 吧:

pam_mysql-0.7RC1-patch

打 patch,编译安装

patch -p0 < patch.in
./configure
make
make install
/etc/init.d/openvpn restart

重新测试连接 OpenVPN,工作正常!

PS:如果你的系统是 Debian 的话,squeeze 的 testing 源里面已经有了加入这个 patch 的新版 libpam-mysql,版本号为 0.7~RC1-4

参考:

Posted in 我的慵懒生活, 电脑相关 | Tagged , , , , , | 15 Comments

使用 MyQL 验证 OpenVPN 用户笔记

openvpn_mysql

上次我们成功的在 Debian 上安装了 OpenVPN,但是用证书方式验证用户还是有些麻烦:昨天和 @cnkang 吃晚饭说给他开一个 OpenVPN 帐号,回家后还得去服务器那边生成证书,再让他下载。。。遂 Google 一把,发现可以使用 pam + MySQL 验证,这样不但以后给朋友开账户方便了,而且还可以多台主机使用一个 MySQL 表,实现多台服务器账户信息共享,配置过程简单整理记录如下

前提条件:安装好 OpenVPN,并且客户端可以使用证书方式正常连接。

安装 pam-mysql

aptitude install libpam-dev libpam-mysql libmysql++-dev sasl2-bin
Ubuntu 的话,包的名字稍有区别,比如:libmysqlclient-dev 和 libpam0g-dev

如果喜欢自己使用源代码编译 pam-mysql 的话,可能在 ./configure 时会遇到

configure: error: C compiler cannot create executables
See `config.log' for more details.

这时候先

aptitude install build-essential

就可以了

建 MySQL 库,表,用户

Continue reading

Posted in 我的慵懒生活, 电脑相关 | Tagged , , , , | 19 Comments

WordPress 3.0 MU 设置与独立域名映射

6月推出的 WordPress 3.0 包含了我期待已久的一个功能:和 MU 的整合。因为之前我家里的三个 blog 分别用了三套程序,每次升级程序和插件(尤其是自己 hack 过的)都是一个痛苦的过程。昨天动手将这三套程序整合到了一个全新安装的 WordPress 3.0 中,简单记录如下:

基本思路:全新安装 WordPress 3.0 –> 启用 Network –> 导入数据 –> 调整数据 –> 独立域名映射

安装 WordPress 3.0

和之前版本没有任何区别,改好 wp-config.php 设置好目录属性,直接按照向导安装即可。

启用 Network

MU 里面 Network 有两种形式:1是子域名,比如 a.gkp.com,b.gkp.com。2是目录,比如 gkp.com/a 和  gkp.com/b ,可以根据个人喜好选择。如果是用第一种形式的话,那么需要设置一条 DNS 的 A 记录,将 *.gkp.com (或者至少是你想要的用的子域名)指向你的服务器,同样 Apache 也需要做对应的 Server Alias 。如果你打算和我一样给子网站分别映射独我立域名的话,其实选择哪种都无所谓。

打开 wp-config.php,将下面这行添加在 /* That's all, stop editing! Happy blogging. */  之前

define('WP_ALLOW_MULTISITE', true);

之后就可以在后台的 Tools –> Network 看到网络设置了,在这里输入网络的名字和管理员 Email 等信息,点 Install 安装。

接下来需要一些操作,在 wp-content 目录下面建立一个 blogs.dir 目录,用来存放子 blog 上传文件等内容,权限要设置为可写。然后按照向导程序的提示分别将给出的文件内容添加到 wp-config.php 和 .htaccess 两个文件中。至此 WordPress MU 网络的设置就完成了,重新登录后台就可以看到最上方多出了 Super Admin 菜单。

参考官方文档

导入数据

建议直接在原 blog 使用 export 导出 xml,新 blog 这边用 wordpress importer 导入,支持作者映射和附件下载。

调整数据

主要是上传文件位置,比如 b.gkp.cc/wp-content/uploads/ 之前文章中引用的都是这样的地址,可以直接在导出后修改数据库,也可以直接用 .htaccess 将这些文件 rewrite 到 blogs.dir 下面对应的目录。

独立域名映射

这步我开始想的比较简单,以为直接修改数据库中的域名记录就可以了,但是事实证明不是那么容易的。Google 后找到了 ottopress 这篇文档,很有效,简单步骤如下:

主要是使用 WordPress MU Domain Mapping plugin 这个插件,但是注意这个插件必须手工安装才可以生效。 svn checkout trunk 下载 domain_mapping.php 和 sunrise.php 这两个文件,在 wp-content 下面建立一个 mu-plugins 的目录,将 domain_mapping.php 放进去。需要说明的是,mu-plugins 里面的 MU 不是 MultiUser,而是 MustUse 的意思,也就是说是强制启用的插件。sunrise.php 直接放到 wp-content 下面。

接下来修改 wp-config.php,在最后一行 require_once 前面加入一行

define( 'SUNRISE', 'on' );

貌似 sunrise.php 主要是替换了一些 wordpress 内置的函数。准备工作完毕,进入 Super Admin->Domain Mapping 里面输入服务器的 IP 地址(或者是一个 CNAME),设置下是否允许用户自行设置域名映射等选项,save 保存。

之后就可以在 Super Admin –> Domains 里面,或者各个子网站管理员后台的 Tools –>Domain Mapping 里面设置域名了,每个网站支持多个域名映射,需要设置一个 primary 域名,最终所有的域名都重定向到这里。试试看吧,效果很不错的。

最终结果,三个 blog 只需维护一套程序,主题和插件,并且分别使用独立的域名,完全看不出是一个 MU 网络。

Posted in 我的慵懒生活, 电脑相关 | Tagged , , | 3 Comments