hostd

BlackHole开发日记--使用hostd为移动设备切换域名

不羁的心 提交于 2019-12-09 20:08:49
lz的有个朋友最近在做移动开发,聊到移动设备上要切换开发和线上环境比较麻烦。在PC上我们一般修改hosts,但是在移动设备上修改hosts不太方便(需要ROOT、越狱等,修改起来也不方便)。因为之前做过一个DNS服务器BlackHoleJ,所以就萌生了做一个手机改hosts的想法。 最终方案是在PC上启动一个DNS服务器和一个Web服务器。DNS服务器维护一个对应IP的域名配置表,Web服务供移动设备访问,可以修改和管理域名,修改后Web服务器获取客户端的IP,并通知DNS服务器,更新对于这个IP的域名配置。因为BlackHoleJ也有支持企业内网的案例,所以企业内网部署一次,多个终端都可使用。 前前后后折腾了一个月,于是就诞生了 Hostd 。 使用Hostd,需要做几件事: 在你的内网部署一个Hostd,包括DNS服务器和Web服务器(点这里 查看教程 ),推荐使用有固定IP的机器部署,这样客户端就不用频繁修改了!这里还建议为这台机器分配一个好记的域名,例如: hostd.us,修改/usr/local/blackhole/conf/zones即可进行域名配置。 将要使用Hostd的终端设备的DNS服务器地址修改为Hostd所在IP,如果你是网管,当然可以直接配置DHCP,这样用户就不用手动配置了! 打开你终端设备的浏览器,访问http:// hostd.us

BlackHole开发日记-Java守护进程、Signal处理

不打扰是莪最后的温柔 提交于 2019-12-09 13:53:40
####2012-12-30 今天继续写单机版BlackHole。碰到一个问题,想要将程序作为系统进程,后台运行,并且在shell关闭时不退出,有两种办法:一种是使用nohup,一种是使用Deamon程序的开发方式来写Java,并引入很多框架,例如Apache Commons Daemon。后者觉得太重了,但是前者无法在控制台输出一些错误信息,也不够友好。最后用了一个很粗暴的方法:将错误输出重定向到一个文件,shell脚本退出的时候打印出来!赢了! 后来使用package maker做了一个安装包,比想象中好用,支持shell脚本什么的。 遇到一个问题,在mac下设置两个DNS,BlackHole为主DNS,结果仍然无法保证每次都使用BlackHole进行解析。后来索性改成只有一个DNS,127.0.0.1,倒是正常工作了。 这个单机版本我取名叫hostd,大概是hosts取代者的意思吧。因为要保证程序即使被kill之后也能做出一些释放资源的操作(在hostd里,需要把修改过的DNS改回来),所以给wifesays增加了一个响应,用了Java里一个响应信号量的api。 import sun.misc.Signal; import sun.misc.SignalHandler; Signal.handle(new Signal("TERM"), new SignalHandler()