栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

OPENWRT--LUCI自定义域名服务

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

OPENWRT--LUCI自定义域名服务

OPENWRT–LUCI(自定义服务)

文章目录
  • OPENWRT--LUCI(自定义服务)
  • 前言
  • 一、怎么给客户端提供服务?
  • 二、使用步骤
    • 1.注释掉登陆代码
    • 2.自定义接口服务
    • 3.直接模拟登陆,然后延用自己定义的系统服务


前言

提示:近期有个项目需求,openwrt需要开放一个后台接口,给客户端,供客户端发送数据或者命令

一、怎么给客户端提供服务?

其实,我自己想了三种方法。当然这种可能不太专业或者正规,还是需要大家一起讨论下。
1.直接找到luci验证登陆的代码,注释掉。(个人玩,我觉得可以,但是正规到项目里面不能这么干,会破坏系统的安全性)
2.自定义接口服务
简单来说就是,你之前访问的是http://172.16.5.220/cgi-bin/luci/。那我现在不想这么干了,我想访问http://172.16.5.220/cgi-bin/zzy/,这个zzy就是你自己定义的接口。这种方法,简书CSDN都有,可以用。但是我这边对之前看到的这种写法做了一个微升级的处理。但是怎么去编译固件,我还没去想,应该不难。(当然了,我很菜,别骂我)
3.直接模拟登陆,然后延用自己定义的系统服务。
可能有人问了,这跟第二步比有什么好处。其实,好处在于编码上,你可以更加规范,有的可抄。还有就是更安全。
下面分别讲述这三种怎么搞。

二、使用步骤 1.注释掉登陆代码
	暂时不会,还没找到,正在研究
2.自定义接口服务

(1)在这个位置去定义一个服务

服务代码如下(示例):

#! /usr/bin/lua
local WebService = require 'luci.WebService'
WebService.Run()

这可能跟网上的一些写法不一致,可能有的需要去配置config,但是我没去管这个,我的能用。
(2)然后去封装一个模块,去处理http的请求。尽量封装到这里,方便调用其它模块。

模块代码如下:

module("luci.WebService", package.seeall)


local io = require "io"
luci.util = require "luci.util"
local log = require "luci.log"

function Run()

    log.print( os.getenv("REMOTE_ADDR"))
    log.print( os.getenv("QUERY_STRING"))
    log.print( os.getenv("CONTENT_LENGTH")) //上面是打印的一些请求信息
    local client = os.getenv("REMOTE_ADDR")
    local GET = os.getenv("QUERY_STRING")
    local POST = nil 
    local POSTLength = tonumber(os.getenv("CONTENT_LENGTH")) or 0
    if (POSTLength > 0) then
        POST = io.read(POSTLength)
        --POST = io.read("*a")
    end

    local iot_status = luci.util.ubus("AIot", "status") or { }//这个是去请求我的一个底层的代码,然后拿数据
    log.print_r(iot_status)
    io.write("Content-type: text/htmlnPragma: no-cachenn")
    local reply = string.format("Client %s said: url: [%s], data: [%s]n", client or '-', GET or '-', iot_status.net or '-') //回复数据
    io.write(reply)
    return
end
3.直接模拟登陆,然后延用自己定义的系统服务


一般这样可以模拟登陆成功,基本上就问题不大了。你就可以去按照系统其它组件的方式,去开发系统接口测试了。
(可能说的不是很清楚,这需要你开发过,openwrt-luci插件才清楚)

这张图的意思是,我登录成功后,直接访问了我在一个系统中定义的接口。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/631651.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号