找回密码
 注册
快捷导航
查看: 1711|回复: 4

【原创】不到1小时!利用PHTunnel集成Openwrt!

[复制链接] |自动提醒
阅读字号:

5

回帖

0

积分

77

资产值

入门会员 Rank: 1

注册时间
2020-4-27
发表于 2020-4-29 12:47:18| 字数 3,463| - 上海市虹口区 电信 | 显示全部楼层 |阅读模式
本帖最后由 18662370291 于 2020-4-29 14:08 编辑

嵌入OPENWRT方法分享


花生壳phtunnel嵌入Openwrt

概述
本文详细介绍如何将phtunnel封装成一个openwrt标准组件,并编译到自己的openwrt固件中。
phtunnel组件制作下载
下载自己的编译平台的二进制phtunnel文件是第一步要做的,我们可以到oray的官方github网站进行下载,根据自己的型号进行下载,比如我的路由器是基于MIPSel,c库使用的是uclibc,那么我可以进入xxxxx,进入xxxxxxxx,并下载mipsel-uclibc-phtunnel文件。
规划目录结构
接下来的任务是规划自己的phtunnel组件安装后,在openwrt系统上是怎样的目录结构。
首先核心的应用程序phtunnel我们可以放在/usr/bin目录下,因为它是一个非管理员应用,所以一般比放在/usr/sbin目录下要更科学一些。
uci配置文件:由于openwrt的uci是常用的配置解决方案(不理解uci可参阅其他文档),所以需要一个uci配置文件,该文件通常放在/etc/config目录下,同时我们取名同样为phtunnel,这样就可以使用uci set phtunnel.xx.xx等操作phtunnel的配置了。
根据phtunnel列出的参数,uci的配置如下:
集成Openwrt1.png(27.25 KB, 下载次数: 0 )
下载附件 [url=]保存到相册[/url]
2019-10-25 17:25 上传



启动脚本:通常应用都是作为守护脚本运行,所以phtunnel也会制作成守护程序,自动运行,所以需要在/etc/init.d中建立phtunnel的启动脚本,名称也叫phtunnel。
hotplug.d机制:为了及时响应网络状态,快速重启phtunnel,可使用hotplug机制。这样在wan口断开重新连上网的时候,能马上重启phtunnel。在/etc/hotplug.d/iface下需要创建一个xx-phtunnel的脚本,其中xx代表脚本执行顺序,可以随便填。
这样,安装后的目录结构是如下图
集成Openwrt2.png(14.08 KB, 下载次数: 0 )
下载附件 [url=]保存到相册[/url]
2019-10-25 17:25 上传



编写phtunnel组件Makefile
根据目录结构规划,现在来编写组件,由于openwrt的组件是用makefile文件编写。
集成Openwrt3.png(11.28 KB, 下载次数: 0 )
下载附件 [url=]保存到相册[/url]
2019-10-25 17:25 上传



将makefile及规划的files目录统一放在phtunnel目录内,然后放在openwrt的package/utils目录中即可(可放在package下的任何位置),再来看一下目录结构
集成Openwrt4.png(70.51 KB, 下载次数: 0 )
下载附件 [url=]保存到相册[/url]
2019-10-25 17:25 上传



这时执行make menuconfig后,就能看到phtunnel组件了
集成Openwrt6_meitu_1.jpg(64.74 KB, 下载次数: 0 )
下载附件 [url=]保存到相册[/url]
2019-10-25 17:25 上传



集成Openwrt7.png(11.2 KB, 下载次数: 0 )
下载附件 [url=]保存到相册[/url]
2019-10-25 17:25 上传



选中该组件后保存,执行make,就可以编译出带phtunnel的固件了和对应的phtunnel的ipk组件包了。
启动脚本
本帖隐藏的内容
启动脚本用于启动与停止phtunnel,启动后读取uci配置,变成phtunnel的启动参数,然后启动phtunnel程序,代码如下:
集成Openwrt8.png(42.8 KB, 下载次数: 0 )
下载附件 [url=]保存到相册[/url]
2019-10-25 17:25 上传





这里用到了openwrt的PROCD机制,这样可以在phtunnel意外崩溃的情况下,自动重启。
hotplug脚本
集成Openwrt9.png(11.89 KB, 下载次数: 0 )
下载附件 [url=]保存到相册[/url]
2019-10-25 17:25 上传



用于在wan接口连接有效时,重新开启phtunnel,加速重连速度。
phtunnel-luci-app组件制作功能
phtunnel运行后,需要进行扫码登录,管理,解绑等操作,这些都是需要与客户的交互操作,openwrt提供的luci是实现交互的最佳选择,也是最正式的方式,下面来制作基于luci的phtunnel组件。
核心模块
luci的代码区域在/usr/lib/lua/luci中,所以所有交互的web代码都放在这个下面,首先是核心的基础库phtunnel.lua,它将提供所有核心函数,如获取二维码,登录信息和解绑操等核心功能。
集成Openwrt10_meitu_2.jpg(221.47 KB, 下载次数: 0 )
下载附件 [url=]保存到相册[/url]
2019-10-25 17:25 上传



所有函数的核心都是调用wget来访问rpc服务和官方提供的web服务。
LUCI页面
完成核心函数库后,接下来就是根据luci的架构进行开发。首先是规划菜单与菜单项,如图:
集成Openwrt11_meitu_3.jpg(28.74 KB, 下载次数: 0 )
下载附件 [url=]保存到相册[/url]
2019-10-25 17:25 上传



完成这样的菜单,需要在controller目录下实现,如图:
集成Openwrt12.png(30.12 KB, 下载次数: 0 )
下载附件 [url=]保存到相册[/url]
2019-10-25 17:25 上传



其中setup页面用于设置基本参数,Status页面用于扫码与解绑,Log用于显示日志。
Setup页面
设置页面是一个纯UCI页面,我们可以使用luci提供的cbi模块开发。
集成Openwrt13.png(22.42 KB, 下载次数: 0 )
下载附件 [url=]保存到相册[/url]
2019-10-25 17:25 上传



显现的页面如图
集成Openwrt14_meitu_4.jpg(26.48 KB, 下载次数: 0 )
下载附件 [url=]保存到相册[/url]
2019-10-25 17:25 上传



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 : 用于解绑帐号
集成Openwrt15.png(72.53 KB, 下载次数: 0 )
下载附件 [url=]保存到相册[/url]
2019-10-25 17:25 上传



Log页面
用于显示日志,该页面相对简单(view/oray/phtunnel_log.htm),
集成Openwrt16.png(18.28 KB, 下载次数: 0 )
下载附件 [url=]保存到相册[/url]
2019-10-25 17:25 上传



通过uci获取日志路径,并使用cat命令将文件内容输出即可。
制作组件的makefile
与制作phtunnel组件一样,将所有文件组织成目录树,并加入Makefile
集成Openwrt17.png(17.29 KB, 下载次数: 0 )
下载附件 [url=]保存到相册[/url]
2019-10-25 17:25 上传



Makefile
集成Openwrt18.png(40.96 KB, 下载次数: 0 )
下载附件 [url=]保存到相册[/url]
2019-10-25 17:25 上传



最后同样将组件复制到openwrt/package/utils/下,这样我们可以在配置界面中看到phtunnel-luci-app组件
集成Openwrt19.png (13.45 KB, 下载次数: 0 )
下载附件  [url=]保存到相册[/url]
2019-10-25 17:25 上传



选择以上两个组件,充分编译后,即可在本地的luci界面上使用phtunnel了。




本帖子中包含更多资源

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

x

5

回帖

0

积分

77

资产值

入门会员 Rank: 1

注册时间
2020-4-27
 楼主| 发表于 2020-4-29 14:10:21| 字数 19| - 上海市虹口区 电信 | 显示全部楼层
楼主镇楼 , 喝茶聊天 , 吃瓜小板凳  样样俱全
回复 支持 反对

使用道具 举报

7088

回帖

99

积分

3万

资产值

至尊会员I Rank: 4Rank: 4Rank: 4Rank: 4

注册时间
2007-9-24
发表于 2020-5-1 20:56:07| 字数 18| - 山西省太原市 电信 来自手机版 | 显示全部楼层
看不懂,楼主这么折腾是要解决什么问题
一切不以有效提高工作效率和以多挣钱为目的的升级改装均属蛋痛行为。
回复 支持 反对

使用道具 举报

5

回帖

0

积分

77

资产值

入门会员 Rank: 1

注册时间
2020-4-27
 楼主| 发表于 2020-5-9 19:33:49| 字数 99| - 上海市虹口区 电信 | 显示全部楼层
QUOTE:
georgefan 发表于 2020-5-1 20:56
看不懂,楼主这么折腾是要解决什么问题

将phtunnel封装成一个openwrt标准组件,并编译到自己的openwrt固件中。

这就是关键点
回复 支持 反对

使用道具 举报

4038

回帖

63

积分

3万

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2011-4-10
月全勤勋章
发表于 2020-5-11 20:41:50| 字数 10| - 山东省青岛市 联通 | 显示全部楼层
用在哪里的?挺复杂的
回复 支持 反对

使用道具 举报

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

本版积分规则

Powered by Discuz! X3.5 © 2001-2023 Comsenz Inc

GMT+8, 2024-6-8 00:11 , Processed in 0.093920 second(s), 32 queries , Gzip On, OPcache On.

手机版|小黑屋|安卓客户端|iOS客户端|Archiver|备用网址1|备用网址2|联系我们|专门网

返回顶部