lighttpd 1.4.15 $HTTP[“url”] condition is broken

This has been happening on my blog for a long time, but it didn’t draw my attention until someone bugged me about a download link on my server yesterday. It is an $HTTP[“url”] conditional dir-listing.activate statement , however it returned 404 instead of listing the directory content.

After a short investigation, I found that in configfile-glue.c


307: case COMP_HTTP_URL:
308: l = con->uri.path;
309: break;

con->uri.path is always an empty string, thus $HTTP[“url”] condition is always false.

I’m not familiar with lighttpd architecture, therefore I simply changed uri.path to uri.path_raw and everything seemed to be fine. According to lighttpd trac, the uri.path statement has been there since 1.3.x, so there must be a logic change in lighttpd core code, resulting an empty uri.path at that time. I’m curious why such a serious bug has not been reported since it was introduced. Are people all busy playing with lighttpd 1.5.0?

Vista小技巧几则 – 删除文件, 禁用 zip 目录, 加快拷贝移动目录速度

1: 如何删除删不掉的文件

来源: http://blogs.msdn.com/tims/archive/2006/11/10/windows-vista-secret-11-deleting-the-undeletable.aspx

在 Vista 下面有时候会遇到死活不能删除的文件,比如以前安装的 Vista 系统剩下的 Program Files 目录和 Windows 目录,总是说没有权限,用 XP 下面的老办法点安全 tab 给自己加权限则总是失败。在网络上面搜索了一下,原来是需要用命令行工具获得权限。

如下两条命令就可以将删不掉的 %1 目录或者文件变成 administrator 可以删除的。

takeown /f %1 /r /d y
icacls %1 /grant administrators:F /t

PS: 我觉得这个应该是 Vista 的 bug, 没有理由不能在图形界面里面完成获得权限这个工作的,命令行工具虽然好用,但是不搜索一下还真搞不定。

2: 禁用 zip 目录

来源: http://www.annoyances.org/exec/show/article03-202

XP 下面只要 regsvr32 /u zipfldr.dll 就可以了,但是 Vista 下面的 zipfldr.dll 没有 DllRegisterServer 入口,所以需要手动去删除注册表项。需要删除的两个注册表项是

HKEY_CLASSES_ROOT\CLSID\{E88DCCE0-B7B3-11d1-A9F0-00AA0060FA31}
HKEY_CLASSES_ROOT\CLSID\{0CD7A5C0-9F37-11CE-AE65-08002B2E1262}

或者直接下载这个注册表文件双击导入即可。

3: 加快拷贝移动目录速度

来源: http://mytechweblog.blogspot.com/2007/04/slow-file-copymove-in-vista-here-is_05.html (有时会被 GFW!)

Vista 下面拷贝和移动文件都异乎寻常地慢,有传说 Microsoft 出了个补丁,但是貌似打上没有什么效果,终极解决方案还是这个:

打开控制面板 -> 程序和功能 , 左边有个打开或关闭 Windows 功能, 点进去, 去掉最下面的 “远程差分压缩” 前面的勾,确定即可。

启用 reCAPTCHA

CAPTCHA 这名字听起来很诡异,其实中文里面我们管他叫图片认证码,是用来防机器人注册发帖的。现在互联网上面机器人遍地都是,没有个认证码挡着,用不了多久就会被灌满垃圾广告。这东西最早似乎是卡内基梅隆大学的人研制的,然后把技术提供给了 Yahoo 之类的地方。如今 CAPTCHA 可谓是遍地开花,各种开源的商业的实现一把一把,还有 QQ 的中文认证码之类扩展版本。

这个小 blog 也尝试过一些图形认证码插件,比如 SecureImage 之类,但是最后还是放弃了,SecureImage 的性能实在是不敢恭维,Yodao 和 Baidu 不知道为什么看上生成图片的那个链接了,总是没完没了地抓它,虽然频率并不是非常高,大概也就每秒一次,但是系统的负载已经很高了。最后我终于无法忍受,换成了另外一个基于 Javascript 计算的 WP-HashCash。然后我就发现原来支持 Javascript 的机器人已经很多了,以前用 SecureImage 的时候,几乎没有 spam,WP-HashCash 用了以后每天进来我都要从一大堆留言里面捡出来有用的批准。实在是非常不爽。

reCAPTCHA 是卡内基梅隆大学的一帮人搞出来的,它的技术并没有什么先进之处,但是创意有点意思。世界上面有很多将图书电子化的计划,基本是把书籍扫描了以后用 OCR 软件识别。有些情况下面 OCR 软件自己觉得某些词的识别结果并不是非常有把握。通常情况下面是通过雇佣劳力来肉眼校对。reCAPTCHA 项目认为这个工作不妨交给全世界大量填写认证码的人来完成。

一般图形认证码系统都是只生成一个单词的,reCAPTCHA 生成的图片里面有两个单词,其中一个是机器生成的,有正确结果的单词,另一个则是扫描出来的有问题的单词,这个词没有正确结果。如果用户提交上来的结果里面机器生成的那个是对的,那么系统就认为另外一个也很有可能是对的。一幅扫描图片展示给多个用户如果结果都是一样的,他就将这个结果作为最终校对结果。这样就实现了利用人力来分布式校对文稿的目的。更具体的细节可以看 http://recaptcha.net/learnmore.html

reCAPTCHA 对一般用户使用没有限制,但是为了防止滥用,也要像 Google Maps API 那样用一个 Key 来限制一下,在 recaptcha.net 上面可以免费申请。同时还有常见系统的认证插件,比如这个 blog 使用的就是那里提供的 wordpress 插件。

PS: 各位留言的时候要注意一下,因为 reCAPTCHA 的目标是校对书籍,因此认证码是大小写敏感的,有时候你还能看到里面有标点符号,这时候也麻烦你把标点符号输入了。虽然这时候基本能判断出来有标点符号的那个是扫描图片,就算填错也可以过认证,但是出于校对书籍的需要,还是填写全面比较好一些了。

终于又搞定了 MTU 问题.

为什么要说又呢? 以前似乎搞定过一次,但是这次不知道链路中间过了什么, MTU 又小了, 导致我 1400的 MTU 又失败了, 刚才听了一阵子包终于发现是这个问题,于是把 MTU 缩小到 500. 发现终于可以用了…

最近的几次变动

最近出了好几桩事情。

* 唐山网通还是处于抽风状态。且有些地方比如海淀宽带无法链接。
* SecureImage 性能低下的问题被 Yodao 给揭露了,他不知道怎么想的拼命来抓我的认证码图片,将 load 搞得很高。
* 还有不少人都说 SecureImage 难度太高,活人都过不去

所以决定采用以下措施

* 在唐山网通恢复正常之前,将 blog.kangkang.org 解析到世纪互联前端,反正这个前端网通电信速度都还不错。
* 弃用 SecureImage, 改用 WP-Hashcash, 现在不需要输入什么认证码了,数据库压力也大大减轻。

另外发现 mod_extforward 居然已经进入 lighttpd 的标准发行了,于是启用之。

最近评论

时光机

其他