adaway的jni单从文件夹名来说,分为blankwebserver,dnsmasq,libpcap,tcpdump四个部分。
应该和协议相关的很紧密。这几天一点一点看看这些都是什么吧。
一.mongoose是blankwebserver的核心,貌似此模块是在后台启动一个空server,通过callback来回馈其想要的信息。具体还待进一步验证。
blank_webserver.c描述了adway最想这个模块做的事情。
其流程为:
首先检查是否已经存在一个后台进程,如果有,则进行下一步;没有则获取新的fork,建立新进程,即后台进程;
然后通过mongoose特有的mg_start方法启动对127.0.0.1:80,127.0.0.1:443端口的监听;其返回结构体mg_context *ctx
未收到退出标志位时一直监听。
直至标志位改变,mg_stop(ctx)来结束blank webserver的使命。
二.开始看到dnsmasq,libpcap,tcpdump觉得很深奥,不知道什么时候才能弄清楚。现在才知道,其是,就是单纯地源码编译出相应的库,然后androd的java程序中调用。从Application.mk可以看出其用途。