http://blog.lixin.me/archives/29871/

1.申请账号、绑定设备、安装插件

必须吐槽这个过程的麻烦。首先你需要注册hiwifi的账号,这个很轻松,然后去申请开发者认知,需要提供的资料跟支付宝实名认证差不多,经过几天后hiwifi才会验证成功,我自己大概花了7天。然后邮件或者qq小窗口管理员绑定你所拥有的极路由,然后在插件里安装一个“HiWiFi Appengine”的插件,该插件可以让你能通过ssh方式登陆路由器。

2.创建一个插件

使用用户名“hiwifi”和密码“admin”登陆路由器。windows下可以使用putty,服务器地址可以使用域名“hiwifi.com”或者路由器的ip地址。
hiwifi这个账号是一个普通账号,没有root权限。
haecli create-app|drop-app <appName>这命令是创建和删除一个应用。我们创建一个叫“TApp”的插件,命令如下:
haecli create-app TApp
创建好后,再打开一个ssh登陆路由器,不过这次使用的用户名是“TApp”了,密码依然是“admin”。我们可以使用该账号在上面开发调试插件。如果不满意,那么回到hiwifi账号登陆。执行删除插件命令,那么刚才产生的文件和配置都会被删除掉。

首先查看一下根目录下文件信息。
libbinconfigetc

2.1 etc目录

etc目录下有5个目录:dnsmasq.d,firewall.d,hosts.d,kproxy.d,nginx.d

2.1.1 hosts.d子目录

这个最容易用了,在这里面随便建个文本,任意名字皆可,然后按hosts格式写入ip对应域名即可。例如:
echo 10.1.1.1 www.sex.com > ./etc/hosts.d/a
这样就在./etc/hosts.d/下生成一个b的文件,此时该hosts文件还没生效。需要执行:
haecli config-reload hosts
然后在浏览器输入www.sex.com 会发现打开的是极路由的后台(注意:我的路由器网关是10.1.1.1)

2.1.2 nginx.d子目录

这里面存放nginx的配置文件,文件以.conf结尾。这里演示创建一个简单的web站点。
echo 'hello lixin' > /tmp/index.html
vim ./etc/nginx.d/lixin.conf
文件内容大致如下:

server{listen 811;index index.html;root /tmp;
}

haecli config-reload nginx
打开浏览器输入10.1.1.1:881 可以看到hello lixin的页面。

2.1.3 kproxy.d子目录

这里存放听说是hiwifi自己搞的kproxy的配置文件。通过配置,可以将符合条件的http流量重定向,配置文件的格式是json格式。
在里面新建一个文本A.rule,内容如下:

 {  "ip":"10.1.1.1",  "port":"811",  "rules":[   {"HOST":["lixin.me"]} ] }

意思就是把请求lixin.me这个域名的网页请求,重定向到10.1.1.1:811这里来。
文件写好后,需要把该路由配置添加一下:
kproxy-file add A.rule

然后我们在浏览器输入http://lixin.me 会发现打开的页面是刚才我们配置的一个hello lixin 页面。这样就证明流量已经被kproxy重定向了。
上面说到的nginx、hosts配置,都可以在网上找到配置说明和教程,因为他们都是通用的软件。而这个kproxy则是hiwifi自己的软件,官方文档:https://code.hiwifi.com/wiki/hiwifi/appengine/kproxy-config   对该功能的配置说明轻描淡述,很难看明白。所以想了解清楚,干脆看源代码,好在hiwifi的几个命令都是脚本形式的,例如上面的kproxy-file命令。通过which kproxy-file知道该脚本的路径,然后打开来看看,会发现其实里面还有一些配置项在文档里是没有说明的。遇到看文档还是不懂的情况下,建议如果有源码还是自己去瞧瞧吧。

3.一些需求的实现

3.1获取接入路由器的用户列表(ip地址和mac地址)

通过arp命令可以获取当前连网的在线用户情况:
arp |grep -v IP |grep -v 0x0 |awk '{print $1 $2}'

3.2获取路由器的ip

local lan_ip=$(uci get network.lan.ipaddr)
echo $lan_ip

3.3添加一个共享文件夹

通过访问 \hiwifi.com 这个目录,可以查看共享文件夹,如果要新增一个文件夹:

    install_samba() {echo "install_samba"mkdir /tmp/data/$APP_NAMEchmod 777 /tmp/data/$APP_NAME# generate samba sharetouch /etc/config/sambauci set samba.$APP_NAME=sambashareuci set samba.$APP_NAME.name=$APP_NAMEuci set samba.$APP_NAME.read_only=nouci set samba.$APP_NAME.create_mask=0777uci set samba.$APP_NAME.dir_mask=0777uci set samba.$APP_NAME.path="/tmp/data/$APP_NAME"uci set samba.$APP_NAME.guest_ok=yesuci commit# force rebuild of luci index cacherm -f /tmp/luci-indexcache# restart samba to add sharesif [ -x /etc/init.d/samba ]; then/etc/init.d/samba restartfireturn 0
}uninstall_samba() {echo "uninstall_samba"rm -rf /tmp/data/$APP_NAMEuci delete samba.$APP_NAME 2>/dev/null && uci commitif [ -x /etc/init.d/samba ]; then/etc/init.d/samba restartfi
}

hiwifi插件开发相关推荐

  1. ATS插件开发中内存泄露问题的解决方法探讨

    接触ATS开发已经有几年了,开发过内核的模块,也从事过插件的开发.内存泄露问题一直是一个困扰大多数ATS开发者的头疼的问题,下面说说我自己的感受和思考.这里这关注ATS插件开发这个话题.源码的exam ...

  2. jQuery插件开发 - 其实很简单

    [前言] jQuery已经被广泛使用,凭借其简洁的API,对DOM强大的操控性,易扩展性越来越受到web开发人员的喜爱,我在社区也发布了很多的jQuery插件,经常有人询问一些技巧,因此干脆写这么一篇 ...

  3. jquery 插件开发的作用域及基础

    2019独角兽企业重金招聘Python工程师标准>>> 之前一直有开发jquery插件的冲动,所以一直想学习如何进行插件开发,最近一个项目需要使用图片上传组件及自动无限下拉组件,百度 ...

  4. Nutch插件开发及发布流程

    2019独角兽企业重金招聘Python工程师标准>>>  一,插件开发流程: 1,Nutch开发客户端环境搭建 2,plugin的源代码则保存在/src/java/org/apach ...

  5. 深入理解 Mybatis 插件开发

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:风一样的码农 cnblogs.com/chenpi/p/10 ...

  6. 【直播回顾】蚂蚁金服高级开发工程师萧恺:IDEA 插件开发入门教程

    主讲人:萧恺(蚂蚁金服-支付宝事业群-高级开发工程师) 本名:肖汉松 讲师介绍: 热爱阅读,喜欢挑战,热衷尝试新的技术,关注技术背后的原理. 关注领域:Java 服务端开发,分布式系统 关注语言:Ja ...

  7. 黄聪:《跟黄聪学WordPress插件开发》

    续<跟黄聪学WordPress主题开发>之后,又一个作品完成!<跟黄聪学Wordpress插件开发>,国内最好的Wordpress插件开发视频教程!! 目录预览: WordPr ...

  8. discuz x3插件开发傻瓜图文教程,用demo说话

    2019独角兽企业重金招聘Python工程师标准>>> 此demo功能是在模板footer部位插入一段javascript代码,这段代码可以是alert提示,也可以是加载广告等等. ...

  9. chrome 插件开发各种功能demo_Chrome 插件开发全攻略

    Chrome 浏览器相信大家都用得比较多,有很多的优点,比如简洁.强大的开发者工具等,但是更让大家映像深刻的是有各种各样有趣.有用的插件,今天要给大家推荐的开源项目是 Chrome 插件开发全攻略,你 ...

最新文章

  1. JADAK收购RFID方案商SkyeTek,增强竞争力
  2. Trunk Club:颠覆男士时装零售的创业公司_第1页_福布斯中文网
  3. Python初学者之ModuleNotFoundError:No module named 'cv2'简单解决办法
  4. Mr. Main and Windmills 模拟,计算几何(昆明)
  5. Oracle中的pfile和spfile详解
  6. Oracle数据库之SQL连接查询
  7. 判断数组中某个元素除自身外是否和其他数据不同_算法工程师要懂的3种算法数据结构:线性表详解...
  8. 46 - 算法 -Leetcode-189-旋转数组-数据结构vector或者reverse函数
  9. 高斯低通滤波 matlab_一维和二维高斯函数及其一阶和二阶导数
  10. Linux和Win文件互传及vim的使用
  11. javaJSON字符串转换实体类
  12. React 可视化开发工具 shadow-widget 最佳实践(上)
  13. 阿里云的mysql问题
  14. 达梦数据库DCA培训笔记(基于dm8)
  15. PyQt5教程(一)——Python的安装
  16. 【层级多标签文本分类】Hierarchical Multi-label Text Classification: An Attention-based Recurrent Network Approa
  17. 计算机专业简历的自我评价,计算机网络专业简历的自我评价
  18. 大数据分析平台如何搭建
  19. VMware14-15安装MAC
  20. python爬取地图地址_Python爬取百度地图poi数据 !

热门文章

  1. Shell 使用日期或计数器 命名 文件和文件夹
  2. 通用型AI算法服务器硬件配置有哪些?
  3. MIPS体系结构——计算机组成原理
  4. win11怎么打开开发者模式?
  5. 德国光伏组件回收新政 企业应如何应对
  6. python谁是卧底游戏流程图_用python实现谁是卧底小游戏
  7. 公式编写1000问36-37
  8. 2020速卖通开店全流程及新手卖家新店运营思路
  9. 游戏思考04:网络游戏同步算法产生原因和相关介绍:跟随(插值)、预测、延迟补偿,三种算法(未完待续02/07)
  10. Duilib ApplyAttributeList和SetPos陷阱