Rename package and rebuild opkg-feed
- Added luci-app-GO-wireguard (Luci app for Wireguard pulled from GoldenOrb)
This commit is contained in:
111
ipk-source/luci-app-go-wireguard/root/usr/lib/lua/luci/controller/wireguard.lua
Executable file
111
ipk-source/luci-app-go-wireguard/root/usr/lib/lua/luci/controller/wireguard.lua
Executable file
@@ -0,0 +1,111 @@
|
||||
-- Copyright 2016-2017 Dan Luedtke <mail@danrl.com>
|
||||
-- Licensed to the public under the Apache License 2.0.
|
||||
|
||||
module("luci.controller.wireguard", package.seeall)
|
||||
|
||||
I18N = require "luci.i18n"
|
||||
translate = I18N.translate
|
||||
|
||||
function index()
|
||||
local multilock = luci.model.uci.cursor():get("custom", "multiuser", "multi") or "0"
|
||||
local rootlock = luci.model.uci.cursor():get("custom", "multiuser", "root") or "0"
|
||||
if (multilock == "0") or (multilock == "1" and rootlock == "1") then
|
||||
entry({"admin", "vpn", "wireguard"}, cbi("wireguard"), _("Wireguard"), 63)
|
||||
entry( {"admin", "vpn", "wireguard", "client"}, cbi("wireguard-client"), nil ).leaf = true
|
||||
entry( {"admin", "vpn", "wireguard", "server"}, cbi("wireguard-server"), nil ).leaf = true
|
||||
end
|
||||
|
||||
entry( {"admin", "vpn", "wireguard", "wupload"}, call("conf_upload"))
|
||||
entry( {"admin", "vpn", "generateconf"}, call("conf_gen"))
|
||||
entry( {"admin", "vpn", "textconf"}, call("text_gen"))
|
||||
entry( {"admin", "vpn", "wirestatus"}, call("wirestatus"))
|
||||
end
|
||||
|
||||
function conf_upload()
|
||||
local fs = require("nixio.fs")
|
||||
local http = require("luci.http")
|
||||
local util = require("luci.util")
|
||||
local uci = require("luci.model.uci").cursor()
|
||||
local upload = http.formvalue("ovpn_file")
|
||||
local name = http.formvalue("instance_name2")
|
||||
local file = "/etc/openvpn/" ..name.. ".conf"
|
||||
|
||||
if name and upload then
|
||||
local fp
|
||||
|
||||
http.setfilehandler(
|
||||
function(meta, chunk, eof)
|
||||
local data = util.trim(chunk:gsub("\r\n", "\n")) .. "\n"
|
||||
data = util.trim(data:gsub("[\128-\255]", ""))
|
||||
|
||||
if not fp and meta and meta.name == "ovpn_file" then
|
||||
fp = io.open(file, "w")
|
||||
end
|
||||
if fp and data then
|
||||
fp:write(data)
|
||||
end
|
||||
if fp and eof then
|
||||
fp:close()
|
||||
end
|
||||
end
|
||||
)
|
||||
|
||||
if fs.access(file) then
|
||||
os.execute("/usr/lib/wireguard/conf.sh " .. name .. " " .. file)
|
||||
end
|
||||
end
|
||||
http.redirect(luci.dispatcher.build_url('admin/vpn/wireguard'))
|
||||
end
|
||||
|
||||
function conf_gen()
|
||||
os.execute("/usr/lib/wireguard/create.sh")
|
||||
end
|
||||
|
||||
function text_gen()
|
||||
local set = luci.http.formvalue("set")
|
||||
os.execute("/usr/lib/wireguard/text.sh " .. "\"" .. set .. "\"")
|
||||
end
|
||||
|
||||
function wirestatus()
|
||||
local data = { }
|
||||
local last_device = ""
|
||||
|
||||
local wg_dump = io.popen("wg show all dump")
|
||||
if wg_dump then
|
||||
local line
|
||||
for line in wg_dump:lines() do
|
||||
local line = string.split(line, "\t")
|
||||
if not (last_device == line[1]) then
|
||||
last_device = line[1]
|
||||
data[line[1]] = {
|
||||
name = line[1],
|
||||
public_key = line[3],
|
||||
listen_port = line[4],
|
||||
fwmark = line[5],
|
||||
peers = { }
|
||||
}
|
||||
else
|
||||
local peer = {
|
||||
public_key = line[2],
|
||||
endpoint = line[4],
|
||||
allowed_ips = { },
|
||||
latest_handshake = line[6],
|
||||
transfer_rx = line[7],
|
||||
transfer_tx = line[8],
|
||||
persistent_keepalive = line[9]
|
||||
}
|
||||
if not (line[4] == '(none)') then
|
||||
for ipkey, ipvalue in pairs(string.split(line[5], ",")) do
|
||||
if #ipvalue > 0 then
|
||||
table.insert(peer['allowed_ips'], ipvalue)
|
||||
end
|
||||
end
|
||||
end
|
||||
table.insert(data[line[1]].peers, peer)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
luci.http.prepare_content("application/json")
|
||||
luci.http.write_json(data)
|
||||
end
|
||||
Reference in New Issue
Block a user