mirror of
https://github.com/JamesonHuang/OpenWrt_Luci_Lua.git
synced 2024-11-24 06:10:11 +00:00
54 lines
1.7 KiB
Lua
54 lines
1.7 KiB
Lua
module("luci.controller.api.xqtunnel", package.seeall)
|
|
|
|
function index()
|
|
local page = node("api","xqtunnel")
|
|
page.target = firstchild()
|
|
page.title = ("")
|
|
page.order = 300
|
|
page.sysauth = "admin"
|
|
page.sysauth_authenticator = "jsonauth"
|
|
page.index = true
|
|
entry({"api", "xqtunnel", "request"}, call("tunnelRequest"), _(""), 301)
|
|
end
|
|
|
|
local LuciHttp = require("luci.http")
|
|
local XQConfigs = require("xiaoqiang.common.XQConfigs")
|
|
|
|
local base64chars = {
|
|
['A']=true,['B']=true,['C']=true,['D']=true,
|
|
['E']=true,['F']=true,['G']=true,['H']=true,
|
|
['I']=true,['J']=true,['K']=true,['L']=true,
|
|
['M']=true,['N']=true,['O']=true,['P']=true,
|
|
['Q']=true,['R']=true,['S']=true,['T']=true,
|
|
['U']=true,['V']=true,['W']=true,['X']=true,
|
|
['Y']=true,['Z']=true,['a']=true,['b']=true,
|
|
['c']=true,['d']=true,['e']=true,['f']=true,
|
|
['g']=true,['h']=true,['i']=true,['j']=true,
|
|
['k']=true,['l']=true,['m']=true,['n']=true,
|
|
['o']=true,['p']=true,['q']=true,['r']=true,
|
|
['s']=true,['t']=true,['u']=true,['v']=true,
|
|
['w']=true,['x']=true,['y']=true,['z']=true,
|
|
['0']=true,['1']=true,['2']=true,['3']=true,
|
|
['4']=true,['5']=true,['6']=true,['7']=true,
|
|
['8']=true,['9']=true,['-']=true,['_']=true,
|
|
['+']=true,['/']=true,['=']=true
|
|
}
|
|
|
|
local function base64filter(input)
|
|
local result = ""
|
|
for i = 1, #input do
|
|
local c = input:sub(i,i)
|
|
if base64chars[c] ~= nil and base64chars[c] then
|
|
result = result .. c
|
|
end
|
|
end
|
|
return result
|
|
end
|
|
|
|
function tunnelRequest()
|
|
local payload = LuciHttp.formvalue("payloadB64")
|
|
local cmd = XQConfigs.TUNNEL_TOOL % base64filter(payload)
|
|
local LuciUtil = require("luci.util")
|
|
LuciHttp.write(LuciUtil.exec(cmd))
|
|
end
|