-
Recent Posts
-
Recent Comments
- 10月月报 on 不小心喝多了就是会手肘酸
- yaleon on Lighttpd覆盖设置http头
- georgexsh on Lighttpd覆盖设置http头
- jianrtian on 终于红了!
- 老奶奶 on 终于红了!
-
Categories
-
Archives
Category Archives: tech
Lighttpd覆盖设置http头
lighty 1.4 的 setenv 模块是可以操作 http 头的, 但它提供的三个指令实际只是把给定的值附加进去, 如果处理的请求本来有同名的头, 会变成这样: Host: foo.com, bar.com
对 X_FORWARD_FOR 这样的头可以如此处理, 但 Host 之类就不是希望的结果了.比如作为代理时, 伺服的主机名和后端伺服的不同, 需要覆盖掉 Host 头.
lighty 1.5 和 nginx 都提供了对应的指令, 1.4 下面得自助. 这里我添加了一个 set-request-header 指令, 顾名思义(set vs add), 会用给定值覆盖设置请求头的值. 响应头的因为我用不到所以没实现, 需要的同学自己折腾吧.
patch 放在 lighty 的论坛上, 但几个月了没人理, 是没人需要鹰语太烂还是要开 issue 才行?
Fiddler中显示当前连接的主机地址
我(曾经)觉得 HttpWatch 比 Fiddler 强的一处是,可以显示当前 http 会话中对话主机地址。其实 Fiddler 也早就可以了,而且更强大。方法是点菜单的Rules > Customize Rules,找到并修改文件中的Main()部份:
static function Main() { FiddlerObject.UI.lvSessions.AddBoundColumn("HostIP", 50, "x- hostIP"); }
Fiddler 的订制能力挺强,参考它的文档可以加入很多元素。它的作者人很好,论坛里面帖子回复很及时。
另外,由于 .NET 中DNS.Resolve()不会进行缓存,所以在 Fiddler 代理时对 hosts 文件的修改可以即时生效。
Nginx模块开发小记
前阵子在折腾Nginx的模块, 很有趣.
为了方便使用调试器, 可以单进程非daemon方式启动, 使用参数:
daemon off; master_process off;
因为Nginx是事件驱动, 在读request body时, 第一个数据包一般发送不全, 需要异步读取余下的.
当在主handler部分调用ngx_http_read_client_request_body时, 需要注册一个回调的handler, 然后主handler直接返回NGX_DONE, 告诉Nginx留下这个请求的事件注册, 继续接收数据包.
经过若干次循环最终读完request body后, Nginx会去回调被注册的handler, 在此函数中产生响应, 最后调用ngx_http_finalize_request结束整个请求. 大概流程是:
ngx_http_foo_handler(){ ngx_http_read_client_request_body(r, ngx_http_foo_post_handler); return NGX_DONE; // 主handler结束 } [...]
通过ssh使用svn
通过ssh来存取svn仓库自然是很方便的,不用架设webdav服务器,不用多侦听一个端口等等,一般的可以这样:
svn co svn+ssh://host/path/to/svn/repos
如果ssh不工作在默认的22端口上,如2222,有两个办法解决。
设置SVN_SSH变量:
export SVN_SSH="ssh -p 2222"
编辑~/.subversion/config,其中有tunnel一节,加入:
proa = ssh -p 2222
然后就可以这样用了:
svn svn+proa://host/path/to/svn/repos
如果遇到错误"bash: svnserve: command not found",是因为svn调用ssh后得到是非登陆shell。可以试着在放置svn仓库的服务器上加入相关路径到.bashrc,或者给svnserve在/usr/bin下面加个符号链接,确保非登陆shell可以找到svnserve。也可以搞的很复杂:
生成一个新的ssh密钥对,用下面的格式把公钥放到svn服务器上
command="/full/path/to/svnserve -t" TYPE KEY COMMENT
客户机上安上面指定端口的方法指定svn用特定的私钥
export SVN_SSH="ssh -p 2222 -i /home/dude/.ssh/id_svn_only"
这样svn在通过ssh隧道连接时就可以启动svnserve了。
大约需要的人早找到了英文的资料,不过我想用中文写出还是有人会看的。为什么还要用svn这么土的东西?当然是历史原因了。
Posted in tech 3 Comments
SSH登陆,用XShell
我觉得XShell是Windows上目前最好的终端模拟器,但似乎大家只看到SecureCRT,很少人提XShell。
XShell vs. SecureCRT
Screen下的会话不会闪屏,而且可以回滚,这个功能太无敌了
Script的执行顺序可以调整,SecureCRT的这个功能实在太呆
可以同时发送指令到多个session,这个也不错
键盘映射的兼容性要好一些,不用去自己改映射
可以展现tunnel等的情况
支持布局切换,像gnome-terminal
缺憾是对Unicode制表符支持不够好,内置的sftp不怎么好使(该公司有另外的xftp)
许可相对便宜,对个人、教育用户是免费的!
XShell vs. Putty & Pietty
支持ZModem协议,putty虽有leputty据说可以实现,但我一直没成功 :(
Session保存在文件中而非注册表,管理方便
支持tab、自定义脚本、保存密码、多机管理…
当然putty是自由软件,和商用的XShell比较不是很合适。putty也有很多插件可以实现部分有缺憾的功能,用起来会麻烦一些就是了。我个人平常还是以putty为主,功能够用,速度飞快。大量机器的管理还是XShell合适。
注意,XShell在商业环境使用下是需要买许可的。
update:
SecureCRT 使用screen时屏幕闪烁,关闭 visual bell 就好了,putty 也是如此:
$ cat >> ~/.screenrc # turn visual bell off vbell off
Posted in tech 6 Comments
插入水平线的Windows Live Writer插件
这是个无聊时练习C#的小东西,可以在内文中插入一个水平线,其实就是加了个<hr />。还是有点小用的说,至少我用~
小小<hr />的左对齐也有麻烦的浏览器兼容问题:align="left"只在ie和ff下有用,Live Write自动会放到div中,而opera需要加上test-align="left"。
下载位置(附源码):
纳米盘:InsertHr.zip
我的blog:InsertHr.zip
参考:http://livesino.net/archives/446.live
Posted in tech Leave a comment
Lighttpd中mod_compress关于etag的一个bug
这几日一直在摆弄lighttpd,好不容易弄的差不多了,却出现了个诡异的事情:
在1.4.18版本中,使用mod_compress给一些静态文件如js、css启用了gzip压缩之后,无论 static-file.etags 如何设置,etag头部总是会被输出。
static-file.etags 是一个1.4.15新加命令,用于控制是否启用etag。以前在Apache2上我也发现无法通过 FileETag None 关闭etag的情况。以为是协议设计使然,在rfc2616上兜了一圈,无果,八成是个bug了。在lighttpd的trac上开了一个ticket:http://trac.lighttpd.net/trac/ticket/1585。
查看了mod_compress的代码,发现里面确实没去 static-file.etags 的设置,直接输出etag。看来mod_compress的作者没有注意到这个新加的命令。
花一个下午加了些hack,在Ubuntu/6.06+lighttpd/1.4.18上测试通过,能够处理 static-file.etags 选项。
patch文件可以在 http://trac.lighttpd.net/trac/attachment/ticket/1585/mod_compress.c.diff?format=raw 得到。
最后说一句:开源很好很强大。
可疑的飞鸽传书中文版
飞鸽传书是局域网内必备利器。近日这个软件常常发生诡异事件,频繁有如下的消息传来:
>这是IPMSG V2.04 中文版自动更新消息. 您正在运行旧版本,请更新您的软件. 更新后本消息将不再出现! 注意: ipmsg v2.00-2.02 版本中的传输文件/文件夹功能存在缓冲区溢出问题 请更新到2.03或更高版本.
同时有一个名为
ipmsg new.exe
的文件传来
经查,此消息为某个版本的飞鸽传书软件自动发送的。其版本信息为"2.04中文版",2003年发布。
我感到很奇怪:我使用的是官方中文2.06版,04年发布,此后官方一直没有新的稳定版发布,这个不请自来的2.04版是什么来头呢?
发送来的ipmsg new.exe的文件信息:
File size: 172032 bytes MD5: c1c6fb182b36c9336217d92876915e6a
将这个文件提交到多引擎查毒网站virustotal.com上进行扫描:http://www.virustotal.com/zh-cn/analisis/63774683254bb1959fb86d86cc72fcbb 结果只有一个Prevx1 V2引擎认为这个文件是Heuristic: Suspicious Backdoor。 还好,不是什么流行木马。
但是我强烈建议不要继续使用这个如病毒般乱发自己的程序,为安全故,也为不要打扰他人。以我这个阴谋论者揣测,这个李鬼中文版想用一个近似无害的修改版占领一部分机器,再逐步换上真正的带后门的程序,得以感染用家的电脑。其实,官网上也说了
Note: ipmsg v2.00-2.02's file/folder transfer function has a buffer overflow problem
看来,这个只是某个旧版本的ipmsg的bug行为……大家还是赶紧使用官方认可的2.06中文版吧。
原版的ipmsg是一个开放源码程序,可以在官方网站http://www.ipmsg.org/index.html.en得到。最新的稳定版本为2.06,2004/09/08发布。官方认可的中文移植版本可以在http://www.azhi.net/IPMsg/得到。最新也为2.06,2004/11/15发布。
官方认可的ipmsg2.06版文件信息为:
File size: 159744 bytes MD5: f0123251ee94dd62ecbd3c1b3cfe8201
版本信息截图为
Posted in tech Leave a comment
最小化当前窗口的快捷键