找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 4539|回复: 7

60分钟利用PHTunnel集成Openwrt!

[复制链接]
本帖最后由 封改方能 于 2019-7-25 14:47 编辑

本文详细介绍如何将PHTunnel封装成一个openwrt标准组件,并编译到自己的openwrt固件中,具备内网穿透功能。

PHTunnel组件制作

什么是PHTunnel
PHTunnel 是新一代花生壳核心组件,用C语言实现(最小约80KB),较上一代反向代理性能有明显的提升。支持TCP、HTTP和HTTPS协议,端到端的TLS加密通信。
本文用PHTunnel嵌入openwrt,让设备具备穿透各种复杂的路由和防火墙访问到内网设备的功能。

下载下载自己的编译平台的二进制PHTunnel文件是第一步要做的,我们可以到oray的官方github网站进行下载。进入https://github.com/OrayDev/PHTunnel/releases ,选择相应平台下载包。



规划目录结构:
接下来的任务是规划自己的PHTunnel组件安装后,在openwrt系统上是怎样的目录结构。
首先核心的应用程序PHTunnel我们可以放在/usr/bin目录下,因为它是一个非管理员应用,所以一般比放在/usr/sbin目录下要更科学一些。
uci配置文件:由于openwrt的uci是常用的配置解决方案(不理解uci可参阅其他文档),所以需要一个uci配置文件,该文件通常放在/etc/config目录下,同时我们取名同样为PHTunnel,这样就可以使用uci set PHTunnel.xx.xx等操作PHTunnel的配置了。
根据PHTunnel列出的参数,uci的配置如下:










本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我的恩山、我的无线 The best wifi forum is right here.
 楼主| | 显示全部楼层
启动脚本:通常应用都是作为守护脚本运行,所以PHTunnel也会制作成守护程序,自动运行,所以需要在/etc/init.d中建立PHTunnel的启动脚本,名称也叫PHTunnel。
hotplug.d机制:为了及时响应网络状态,快速重启PHTunnel,可使用hotplug机制。这样在wan口断开重新连上网的时候,能马上重启PHTunnel。在/etc/hotplug.d/iface下需要创建一个xx-PHTunnel的脚本,其中xx代表脚本执行顺序,可以随便填。
这样,安装后的目录结构是如下图:

编写PHTunnel组件Makefile
根据目录结构规划,现在来编写组件,由于openwrt的组件是用makefile文件编写。





makefile及规划的files目录统一放在PHTunnel目录内,然后放在openwrtpackage/utils目录中即可(可放在package下的任何位置),再来看一下目录结构





这时执行make menuconfig后,就能看到PHTunnel组件了。




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
选中该组件后保存,执行make,就可以编译出带PHTunnel的固件了和对应的PHTunnel的ipk组件包了。
启动脚本
启动脚本用于启动与停止PHTunnel,启动后读取uci配置,变成PHTunnel的启动参数,然后启动PHTunnel程序,代码如下:




这里用到了openwrtPROCD机制,这样可以在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了。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

楼主辛苦了,谢谢发布!
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

来自手机 | 显示全部楼层
感谢楼主的分享。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

来自手机 | 显示全部楼层
保姆级的教程,楼主写得详实,表述又丰富。完全是精华级的贴子。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

麻烦楼主放出makefile
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

新手表示看不懂
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-4-28 02:15

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

快速回复 返回顶部 返回列表