启动脚本 启动脚本用于启动与停止PHTunnel,启动后读取uci配置,变成PHTunnel的启动参数,然后启动PHTunnel程序,代码如下:
这里用到了openwrt的PROCD机制,这样可以在PHTunnel意外崩溃的情况下,自动重启。
hotplug脚本
用于在wan接口连接有效时,重新开启PHTunnel,加速重连速度。
PHTunnel-luci-app组件制作
功能PHTunnel运行后,需要进行扫码登录,管理,解绑等操作,这些都是需要与客户的交互操作,openwrt提供的luci是实现交互的最佳选择,也是最正式的方式,下面来制作基于luci的PHTunnel组件。
核心模块luci的代码区域在/usr/lib/lua/luci中,所以所有交互的web代码都放在这个下面,首先是核心的基础库PHTunnel.lua,它将提供所有核心函数,如获取二维码,登录信息和解绑操等核心功能。
所有函数的核心都是调用wget来访问rpc服务和官方提供的web服务。
LUCI页面
完成核心函数库后,接下来就是根据luci的架构进行开发。首先是规划菜单与菜单项,如图:
完成这样的菜单,需要在controller目录下实现,如图:
其中setup页面用于设置基本参数,Status页面用于扫码与解绑,Log用于显示日志。
Setup页面
设置页面是一个纯UCI页面,我们可以使用luci提供的cbi模块开发。
显现的页面如图:
Status页面该页面用于显示二维码,管理界面链接及解绑。相关代码在view/oray/PHTunnel_status.htm, view/oray/PHTunnel_inner_status.htm,view/oray/PHTunnel_log_off.htm, PHTunnel_status.htm : 用于显示当前状态。 PHTunnel_inner_status.html :用于后台实时检测绑定状态,当用户使用手机刷二维码绑定后,PHTunnel_status.htm页面动态显示绑定帐号。
PHTunnel_log_off : 用于解绑帐号
Log页面
用于显示日志,该页面相对简单(view/oray/PHTunnel_log.htm)
通过uci获取日志路径,并使用cat命令将文件内容输出即可。
制作组件的makefile
与制作PHTunnel组件一样,将所有文件组织成目录树,并加入Makefile
Makefile
最后同样将组件复制到openwrt/package/utils/下,这样我们可以在配置界面中看到PHTunnel-luci-app组件
选择以上两个组件,充分编译后,即可在本地的luci界面上使用PHTunnel了。
|