73 lines
1.7 KiB
Lua
73 lines
1.7 KiB
Lua
local NXFS = require "nixio.fs"
|
|
local SYS = require "luci.sys"
|
|
local HTTP = require "luci.http"
|
|
local fs = require "luci.openclash"
|
|
local file_path = ""
|
|
local edit_file_name = "/tmp/openclash_edit_file_name"
|
|
|
|
for i = 2, #(arg) do
|
|
file_path = file_path .. "/" .. luci.http.urlencode(arg[i])
|
|
end
|
|
|
|
if not fs.isfile(file_path) and file_path ~= "" then
|
|
file_path = luci.http.urldecode(file_path)
|
|
end
|
|
|
|
--re-get file path to save
|
|
if NXFS.readfile(edit_file_name) ~= file_path and fs.isfile(file_path) then
|
|
NXFS.writefile(edit_file_name, file_path)
|
|
else
|
|
if not fs.isfile(file_path) and fs.isfile(edit_file_name) then
|
|
file_path = NXFS.readfile(edit_file_name)
|
|
fs.unlink(edit_file_name)
|
|
end
|
|
end
|
|
|
|
m = Map("openclash", translate("File Edit"))
|
|
m.pageaction = false
|
|
m.redirect = luci.dispatcher.build_url("admin/services/openclash/"..arg[1])
|
|
s = m:section(TypedSection, "openclash")
|
|
s.anonymous = true
|
|
s.addremove=false
|
|
|
|
o = s:option(TextValue, "edit_file")
|
|
o.rows = 50
|
|
o.wrap = "off"
|
|
|
|
function o.write(self, section, value)
|
|
if value then
|
|
value = value:gsub("\r\n?", "\n")
|
|
local old_value = NXFS.readfile(file_path)
|
|
if value ~= old_value then
|
|
NXFS.writefile(file_path, value)
|
|
end
|
|
end
|
|
end
|
|
|
|
function o.cfgvalue(self, section)
|
|
return NXFS.readfile(file_path) or ""
|
|
end
|
|
|
|
local t = {
|
|
{Commit, Back}
|
|
}
|
|
|
|
a = m:section(Table, t)
|
|
|
|
o = a:option(Button, "Commit", " ")
|
|
o.inputtitle = translate("Commit Settings")
|
|
o.inputstyle = "apply"
|
|
o.write = function()
|
|
luci.http.redirect(m.redirect)
|
|
end
|
|
|
|
o = a:option(Button,"Back", " ")
|
|
o.inputtitle = translate("Back Settings")
|
|
o.inputstyle = "reset"
|
|
o.write = function()
|
|
luci.http.redirect(m.redirect)
|
|
end
|
|
|
|
m:append(Template("openclash/config_editor"))
|
|
m:append(Template("openclash/toolbar_show"))
|
|
return m |