From 008bfca74f9e8d8d47ccb581c8d21cddecdfecb5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 25 Sep 2022 20:21:16 +0800 Subject: [PATCH] update 2022-09-25 20:21:16 --- filebrowser/files/filebrowser.init | 2 +- gowebdav/files/gowebdav.init | 2 +- linkease/Makefile | 4 +- luci-app-v2raya/Makefile | 10 +- luci-app-v2raya/README.md | 9 +- .../resources/view/v2raya/config.js | 193 ++++++++++++++++ .../luci-static/resources/view/v2raya/log.js | 80 +++++++ luci-app-v2raya/luasrc/controller/v2raya.lua | 32 --- .../luasrc/model/cbi/v2raya/basic.lua | 140 ----------- .../luasrc/model/cbi/v2raya/log.lua | 6 - .../luasrc/view/v2raya/v2raya_certupload.htm | 4 - .../luasrc/view/v2raya/v2raya_log.htm | 33 --- .../luasrc/view/v2raya/v2raya_status.htm | 28 --- luci-app-v2raya/po/templates/v2raya.pot | 207 +++++++++++++++++ luci-app-v2raya/po/zh-cn | 1 + luci-app-v2raya/po/zh-cn/v2raya.po | 117 ---------- luci-app-v2raya/po/zh_Hans | 1 - luci-app-v2raya/po/zh_Hans/v2raya.po | 217 ++++++++++++++++++ .../root/etc/uci-defaults/luci-v2raya | 11 - .../share/luci/menu.d/luci-app-v2raya.json | 29 +++ .../usr/share/rpcd/acl.d/luci-app-v2raya.json | 16 +- natflow/Makefile | 4 +- 22 files changed, 760 insertions(+), 386 deletions(-) create mode 100644 luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js create mode 100644 luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/log.js delete mode 100644 luci-app-v2raya/luasrc/controller/v2raya.lua delete mode 100644 luci-app-v2raya/luasrc/model/cbi/v2raya/basic.lua delete mode 100644 luci-app-v2raya/luasrc/model/cbi/v2raya/log.lua delete mode 100644 luci-app-v2raya/luasrc/view/v2raya/v2raya_certupload.htm delete mode 100644 luci-app-v2raya/luasrc/view/v2raya/v2raya_log.htm delete mode 100644 luci-app-v2raya/luasrc/view/v2raya/v2raya_status.htm create mode 100644 luci-app-v2raya/po/templates/v2raya.pot create mode 120000 luci-app-v2raya/po/zh-cn delete mode 100644 luci-app-v2raya/po/zh-cn/v2raya.po delete mode 120000 luci-app-v2raya/po/zh_Hans create mode 100644 luci-app-v2raya/po/zh_Hans/v2raya.po delete mode 100755 luci-app-v2raya/root/etc/uci-defaults/luci-v2raya create mode 100644 luci-app-v2raya/root/usr/share/luci/menu.d/luci-app-v2raya.json diff --git a/filebrowser/files/filebrowser.init b/filebrowser/files/filebrowser.init index e6fa59218..dda404638 100755 --- a/filebrowser/files/filebrowser.init +++ b/filebrowser/files/filebrowser.init @@ -30,5 +30,5 @@ start() { stop() { echo "${db_dir}/${db_name}" > "/lib/upgrade/keep.d/filebrowser" - killall -9 filebrowser >/dev/null 2>&1 + killall -3 filebrowser >/dev/null 2>&1 } diff --git a/gowebdav/files/gowebdav.init b/gowebdav/files/gowebdav.init index d1e3e0426..db3240c95 100755 --- a/gowebdav/files/gowebdav.init +++ b/gowebdav/files/gowebdav.init @@ -52,5 +52,5 @@ stop() { init_conf set_type="stop" && set_firewall 2>"/dev/null" - killall "gowebdav" 2>"/dev/null" + killall -3 "gowebdav" 2>"/dev/null" } diff --git a/linkease/Makefile b/linkease/Makefile index 74288cabc..6e32d649e 100644 --- a/linkease/Makefile +++ b/linkease/Makefile @@ -10,11 +10,11 @@ include $(TOPDIR)/rules.mk PKG_ARCH_LINKEASE:=$(ARCH) PKG_NAME:=linkease -PKG_VERSION:=0.9.8 +PKG_VERSION:=1.0.0 PKG_RELEASE:=$(PKG_ARCH_LINKEASE)-1 PKG_SOURCE:=$(PKG_NAME)-binary-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=http://fw.koolcenter.com/binary/LinkEase/LinuxStorage/ -PKG_HASH:=a349bc5dc8f1546498213ce6f224b1951540917358f01013dd45e4d3e9ee84c2 +PKG_HASH:=7410e97e096700ade8242edc50265caa85c7682d97c08032bc8174fa1e882a56 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-binary-$(PKG_VERSION) diff --git a/luci-app-v2raya/Makefile b/luci-app-v2raya/Makefile index 5ec578f43..5c53ea23d 100644 --- a/luci-app-v2raya/Makefile +++ b/luci-app-v2raya/Makefile @@ -1,15 +1,13 @@ +# SPDX-License-Identifier: GPL-3.0-only +# +# Copyright (C) 2022 ImmortalWrt.org + include $(TOPDIR)/rules.mk LUCI_TITLE:=LuCI support for v2rayA LUCI_DEPENDS:=+v2raya LUCI_PKGARCH:=all -PKG_NAME:=luci-app-v2raya -PKG_VERSION:=1.1 -PKG_RELEASE:=2 - -PKG_MAINTAINER:=zxlhhyccc - include $(TOPDIR)/feeds/luci/luci.mk # call BuildPackage - OpenWrt buildroot signature diff --git a/luci-app-v2raya/README.md b/luci-app-v2raya/README.md index 2a473f7ac..2d8f695df 100644 --- a/luci-app-v2raya/README.md +++ b/luci-app-v2raya/README.md @@ -1 +1,8 @@ -# 简易的 v2rayA 开关 \ No newline at end of file +# luci-app-v2raya +v2rayA 是一个易用而强大的,跨平台的 V2Ray 客户端,支持 SS、SSR、Trojan(trojan-go)、PingTunnel 协议。 + +## 注意 + +1、master分支的版本为js版本,是适配官方openwrt的19.07及以上分支,非19.07及以上分支请不要使用。 + +2、18.06分支的版本为luci-compat版本,主要适配的是官方operwrt的18.06分支和 Lean Openwrt [如果你是lean代码 请选择这个版本],不过此版本也可以使用在openwrt的19.07及以上分支。 diff --git a/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js b/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js new file mode 100644 index 000000000..85e8ca4df --- /dev/null +++ b/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js @@ -0,0 +1,193 @@ +/* SPDX-License-Identifier: GPL-3.0-only + * + * Copyright (C) 2022 ImmortalWrt.org + */ + +'use strict'; +'require form'; +'require fs'; +'require poll'; +'require rpc'; +'require uci'; +'require ui'; +'require validation'; +'require view'; + +var callServiceList = rpc.declare({ + object: 'service', + method: 'list', + params: ['name'], + expect: { '': {} } +}); + +var callInitAction = rpc.declare({ + object: 'luci', + method: 'setInitAction', + params: ['name', 'action'], + expect: { result:false } +}); + +function getServiceStatus() { + return L.resolveDefault(callServiceList('v2raya'), {}).then(function (res) { + var isRunning = false; + try { + isRunning = res['v2raya']['instances']['v2raya']['running']; + } catch (e) { } + return isRunning; + }); +} + +function renderStatus(isRunning, port) { + var spanTemp = '%s %s'; + var renderHTML; + if (isRunning) { + var button = String.format(' %s', + window.location.origin, port, _('Open Web Interface')); + renderHTML = spanTemp.format('green', _('v2rayA'), _('RUNNING')) + button; + } else { + renderHTML = spanTemp.format('red', _('v2rayA'), _('NOT RUNNING')); + } + + return renderHTML; +} + +function uploadCertificate(type, filename, ev) { + L.resolveDefault(fs.exec('/bin/mkdir', [ '-p', '/etc/v2raya/' ])); + + return ui.uploadFile('/etc/v2raya/' + filename, ev.target) + .then(L.bind(function(btn, res) { + btn.firstChild.data = _('Checking %s...').format(type); + + if (res.size <= 0) { + ui.addNotification(null, E('p', _('The uploaded %s is empty.').format(type))); + return fs.remove('/etc/v2raya/' + filename); + } + + ui.addNotification(null, E('p', _('Your %s was successfully uploaded. Size: %sB.').format(type, res.size))); + }, this, ev.target)) + .catch(function(e) { ui.addNotification(null, E('p', e.message)) }) + .finally(L.bind(function(btn, input) { + btn.firstChild.data = _('Upload...'); + }, this, ev.target)); +} + +return view.extend({ + load: function() { + return Promise.all([ + uci.load('v2raya') + ]); + }, + + handleSaveApply: function(ev, mode) { + return this.handleSave(ev).then(function() { + classes.ui.changes.apply(mode == '0'); + callInitAction('v2raya', 'disable').then(function() { + callInitAction('v2raya', 'restart'); + }); + }) + }, + + render: function(data) { + var m, s, o; + var webport = (uci.get(data[0], 'config', 'address') || '0.0.0.0:2017').split(':').slice(-1)[0]; + + m = new form.Map('v2raya', _('v2rayA'), + _('v2rayA is a V2Ray Linux client supporting global transparent proxy, compatible with SS, SSR, Trojan(trojan-go), PingTunnel protocols.')); + + s = m.section(form.TypedSection); + s.anonymous = true; + s.render = function () { + poll.add(function () { + return L.resolveDefault(getServiceStatus()).then(function (res) { + var view = document.getElementById('service_status'); + view.innerHTML = renderStatus(res, webport); + }); + }); + + return E('div', { class: 'cbi-section', id: 'status_bar' }, [ + E('p', { id: 'service_status' }, _('Collecting data...')) + ]); + } + + s = m.section(form.NamedSection, 'config', 'v2raya'); + + o = s.option(form.Flag, 'enabled', _('Enable')); + o.default = o.disabled; + o.rmempty = false; + + o = s.option(form.Value, 'address', _('Listening address')); + o.datatype = 'ipaddrport(1)'; + o.default = '0.0.0.0:2017'; + o.rmempty = false; + + o = s.option(form.Value, 'config', _('Configuration directory')); + o.datatype = 'path'; + o.default = '/etc/v2raya'; + o.rmempty = false; + + o = s.option(form.ListValue, 'ipv6_support', _('IPv6 support'), + _('Make sure your IPv6 network works fine before you turn it on.')); + o.value('auto', _('Auto')); + o.value('on', _('On')); + o.value('off', _('Off')); + o.default = 'auto'; + o.rmempty = false; + + o = s.option(form.ListValue, 'log_level', _('Log level')); + o.value('trace', _('Trace')); + o.value('debug', _('Debug')); + o.value('info', _('Info')); + o.value('warn', _('Warn')); + o.value('error', _('Error')); + o.default = 'info'; + o.rmempty = false; + + o = s.option(form.Value, 'log_file', _('Log file path')); + o.datatype = 'path'; + o.default = '/var/log/v2raya/v2raya.log'; + o.rmempty = false; + /* Due to ACL rule, this value must retain default otherwise log page will be broken */ + o.readonly = true; + + o = s.option(form.Value, 'log_max_days', _('Max log retention period'), + _('Maximum number of days to keep log files.')); + o.datatype = 'uinteger'; + o.default = '3'; + o.rmempty = false; + + o = s.option(form.Flag, 'log_disable_color', _('Disable log color output')); + o.default = o.enabled; + o.rmempty = false; + + o = s.option(form.Flag, 'log_disable_timestamp', _('Disable log timestamp')); + o.default = o.disabled; + o.rmempty = false; + + o = s.option(form.Value, 'v2ray_bin', _('v2ray binary path'), + _('Executable v2ray binary path. Auto-detect if put it empty (recommended).')); + o.datatype = 'path'; + + o = s.option(form.Value, 'v2ray_confdir', _('Extra config directory'), + _('Additional v2ray config directory, files in it will be combined with config generated by v2rayA.')); + o.datatype = 'path'; + + o = s.option(form.Value, 'vless_grpc_inbound_cert_key', _('Certpath for gRPC inbound'), + _('Specify the certification path instead of automatically generating a self-signed certificate.')); + o.value('', _('Automatically generate')); + o.value('/etc/v2raya/grpc_certificate.crt,/etc/v2raya/grpc_private.key'); + + o = s.option(form.Button, '_upload_cert', _('Upload certificate')); + o.inputstyle = 'action'; + o.inputtitle = _('Upload...'); + o.onclick = L.bind(uploadCertificate, this, _('certificate'), 'grpc_certificate.crt'); + o.depends('vless_grpc_inbound_cert_key', '/etc/v2raya/grpc_certificate.crt,/etc/v2raya/grpc_private.key'); + + o = s.option(form.Button, '_upload_key', _('Upload privateKey')); + o.inputstyle = 'action'; + o.inputtitle = _('Upload...'); + o.onclick = L.bind(uploadCertificate, this, _('private key'), 'grpc_private.key'); + o.depends('vless_grpc_inbound_cert_key', '/etc/v2raya/grpc_certificate.crt,/etc/v2raya/grpc_private.key'); + + return m.render(); + } +}); diff --git a/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/log.js b/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/log.js new file mode 100644 index 000000000..ceaab041f --- /dev/null +++ b/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/log.js @@ -0,0 +1,80 @@ +/* SPDX-License-Identifier: GPL-3.0-only + * + * Copyright (C) 2022 ImmortalWrt.org + */ + +'use strict'; +'require dom'; +'require fs'; +'require poll'; +'require uci'; +'require view'; + +return view.extend({ + render: function() { + /* Thanks to luci-app-aria2 */ + var css = ' \ + #log_textarea { \ + padding: 10px; \ + text-align: left; \ + } \ + #log_textarea pre { \ + padding: .5rem; \ + word-break: break-all; \ + margin: 0; \ + } \ + .description { \ + background-color: #33ccff; \ + }'; + + var log_textarea = E('div', { 'id': 'log_textarea' }, + E('img', { + 'src': L.resource(['icons/loading.gif']), + 'alt': _('Loading...'), + 'style': 'vertical-align:middle' + }, _('Collecting data...')) + ); + + var log_path = uci.get('v2raya', 'config', 'log_file') || '/var/log/v2raya/v2raya.log'; + + poll.add(L.bind(function() { + return fs.read_direct(log_path, 'text') + .then(function(res) { + var log = E('pre', { 'wrap': 'pre' }, [ + res.trim() || _('Log is clean.') + ]); + + dom.content(log_textarea, log); + }).catch(function(err) { + var log; + + if (err.toString().includes('NotFoundError')) + log = E('pre', { 'wrap': 'pre' }, [ + _('Log file does not exist.') + ]); + else + log = E('pre', { 'wrap': 'pre' }, [ + _('Unknown error: %s').format(err) + ]); + + dom.content(log_textarea, log); + }); + })); + + return E([ + E('style', [ css ]), + E('div', {'class': 'cbi-map'}, [ + E('div', {'class': 'cbi-section'}, [ + log_textarea, + E('div', {'style': 'text-align:right'}, + E('small', {}, _('Refresh every %s seconds.').format(L.env.pollinterval)) + ) + ]) + ]) + ]); + }, + + handleSaveApply: null, + handleSave: null, + handleReset: null +}); diff --git a/luci-app-v2raya/luasrc/controller/v2raya.lua b/luci-app-v2raya/luasrc/controller/v2raya.lua deleted file mode 100644 index c66946d1e..000000000 --- a/luci-app-v2raya/luasrc/controller/v2raya.lua +++ /dev/null @@ -1,32 +0,0 @@ -module("luci.controller.v2raya", package.seeall) - -function index() - if not nixio.fs.access("/etc/config/v2raya") then - return - end - - local page = entry({"admin", "services", "v2raya"}, alias("admin", "services", "v2raya", "basic"), _("v2rayA"), 30) - page.dependent = true - page.acl_depends = { "luci-app-v2raya" } - - entry({"admin", "services", "v2raya", "basic"}, cbi("v2raya/basic")).leaf = true - entry({"admin", "services", "v2raya", "log"}, cbi("v2raya/log")).leaf = true - entry({"admin", "services", "v2raya", "get_log"}, call("get_log")).leaf = true - entry({"admin", "services", "v2raya", "clear_log"}, call("clear_log")).leaf = true - entry({"admin", "services", "v2raya", "status"}, call("act_status")).leaf = true -end - -function act_status() - local e = {} - e.running = luci.sys.call("pgrep -f v2raya >/dev/null") == 0 - luci.http.prepare_content("application/json") - luci.http.write_json(e) -end - -function get_log() - luci.http.write(luci.sys.exec("[ -f $(uci -q get v2raya.config.log_file) ] && cat $(uci -q get v2raya.config.log_file)")) -end - -function clear_log() - luci.sys.call("echo '' > $(uci -q get v2raya.config.log_file)") -end diff --git a/luci-app-v2raya/luasrc/model/cbi/v2raya/basic.lua b/luci-app-v2raya/luasrc/model/cbi/v2raya/basic.lua deleted file mode 100644 index eaa3573b9..000000000 --- a/luci-app-v2raya/luasrc/model/cbi/v2raya/basic.lua +++ /dev/null @@ -1,140 +0,0 @@ --- Copyright 2008 Yanira --- Licensed to the public under the Apache License 2.0. - -local uci = luci.model.uci.cursor() -local m, o, s -require("nixio.fs") - -local v2raya_bin = "/usr/bin/v2raya" - v2raya_version=""..luci.sys.exec(v2raya_bin.." --version 2>/dev/null").."" - -m = Map("v2raya") -m.title = translate("v2rayA Client") -m.description = translate("v2rayA is a V2Ray Linux client supporting global transparent proxy, compatible with SS, SSR, Trojan(trojan-go), PingTunnel protocols.") - -m:section(SimpleSection).template = "v2raya/v2raya_status" - -s = m:section(TypedSection, "v2raya") -s:tab("settings", translate("Basic Setting")) -s:tab("log", translate("Logs")) -s.addremove = false -s.anonymous = true - -o = s:taboption("settings", Flag, "enabled", translate("Enabled")) -o.default = o.disabled -o.rmempty = false - -o = s:taboption("settings", DummyValue,"v2raya_version",translate("v2rayA Version")) -o.rawhtml = true -o.value = v2raya_version - -o = s:taboption("settings", Value, "address", translate("GUI access address")) -o.description = translate("Use 0.0.0.0:2017 to monitor all access.") ---[[o.datatype = 'ipaddrport(1)']]-- -o.default = "http://0.0.0.0:2017" -o.rmempty = false - -o = s:taboption("settings", Value, "config", translate("v2rayA configuration directory")) -o.rmempty = '/etc/v2raya' -o.rmempty = false; - -o = s:taboption("settings", ListValue, "ipv6_support", translate("Ipv6 Support")) -o.description = translate("Make sure your IPv6 network works fine before you turn it on.") -o:value("auto", translate("AUTO")) -o:value("on", translate("ON")) -o:value("off", translate("OFF")) -o.default = auto -o.rmempty = false - -o = s:taboption("settings", Value, "log_file", translate("Log file")) -o.default = "/var/log/v2raya/v2raya.log" -o.rmempty = false -o.readonly = true - -o = s:taboption("settings", ListValue, "log_level", translate("Log Level")) -o:value("trace",translate("Trace")) -o:value("debug",translate("Debug")) -o:value("info",translate("Info")) -o:value("warn",translate("Warning")) -o:value("error",translate("Error")) -o.default = "Info" -o.rmempty = false - -o = s:taboption("settings", ListValue, "log_max_days", translate("Log Keepd Max Days")) -o.description = translate("Maximum number of days to keep log files is 3 day.") -o.datatype = "uinteger" -o:value("1", translate("1")) -o:value("2", translate("2")) -o:value("3", translate("3")) -o.default = 3 -o.rmempty = false - -o = s:taboption("settings", Flag, "log_disable_color", translate("Disable log color")) -o.default = o.enabled -o.rmempty = false - -o = s:taboption("settings", Flag, "log_disable_timestamp", translate("Log disable timestamp")) -o.default = o.disabled -o.rmempty = false - -o = s:taboption("settings", Value, "v2ray_bin", translate("v2ray binary path")) -o.description = translate("Executable v2ray binary path. Auto-detect if put it empty (recommended).") -o.datatype = 'path' - -o = s:taboption("settings", Value, "v2ray_confdir", translate("Extra config directory")) -o.description = translate("Additional v2ray config directory, files in it will be combined with config generated by v2rayA.") -o.datatype = 'path' - -o = s:taboption("settings", Value, "vless_grpc_inbound_cert_key", translate("Upload certificate")) -o.description = translate("Specify the certification path instead of automatically generating a self-signed certificate.") -o.template = "v2raya/v2raya_certupload" - -cert_dir = "/etc/v2raya/" -local path - -luci.http.setfilehandler(function(meta, chunk, eof) - if not fd then - if (not meta) or (not meta.name) or (not meta.file) then - return - end - fd = nixio.open(cert_dir .. meta.file, "w") - if not fd then - path = translate("Create upload file error.") - return - end - end - if chunk and fd then - fd:write(chunk) - end - if eof and fd then - fd:close() - fd = nil - path = '/etc/v2raya/' .. meta.file .. '' - end -end) -if luci.http.formvalue("upload") then - local f = luci.http.formvalue("ulfile") - if #f <= 0 then - path = translate("No specify upload file.") - end -end - -o = s:taboption("settings", Value, "vless_grpc_inbound_cert_key", translate("Upload Certificate Path")) -o.description = translate("This is the path where the certificate resides after the certificate is uploaded.") -o.default = "/etc/v2raya/cert.crt,/etc/v2raya/cert.key" - -o = s:taboption("log", Value, "log", translate("Logs")) -o.template = "v2raya/v2raya_log" ---[[o.rows = 50]]-- - -m.apply_on_parse = true -m.on_after_apply = function(self,map) - luci.sys.call("/etc/init.d/v2raya restart") -end - ---[[ -o.inputstyle = "reload" - luci.sys.exec("/etc/init.d/v2raya start >/dev/null 2>&1 &") -]]-- - -return m diff --git a/luci-app-v2raya/luasrc/model/cbi/v2raya/log.lua b/luci-app-v2raya/luasrc/model/cbi/v2raya/log.lua deleted file mode 100644 index 7824e1858..000000000 --- a/luci-app-v2raya/luasrc/model/cbi/v2raya/log.lua +++ /dev/null @@ -1,6 +0,0 @@ -m = Map("v2raya") -m.reset = false -m.submit = false -m:append(Template("v2raya/v2raya_log")) - -return m \ No newline at end of file diff --git a/luci-app-v2raya/luasrc/view/v2raya/v2raya_certupload.htm b/luci-app-v2raya/luasrc/view/v2raya/v2raya_certupload.htm deleted file mode 100644 index 766e420bd..000000000 --- a/luci-app-v2raya/luasrc/view/v2raya/v2raya_certupload.htm +++ /dev/null @@ -1,4 +0,0 @@ -<%+cbi/valueheader%> - - -<%+cbi/valuefooter%> diff --git a/luci-app-v2raya/luasrc/view/v2raya/v2raya_log.htm b/luci-app-v2raya/luasrc/view/v2raya/v2raya_log.htm deleted file mode 100644 index 52c32b7ed..000000000 --- a/luci-app-v2raya/luasrc/view/v2raya/v2raya_log.htm +++ /dev/null @@ -1,33 +0,0 @@ -<% -local dsp = require "luci.dispatcher" --%> - - -
- <%:自动刷新%> - - -
diff --git a/luci-app-v2raya/luasrc/view/v2raya/v2raya_status.htm b/luci-app-v2raya/luasrc/view/v2raya/v2raya_status.htm deleted file mode 100644 index c0b193dc8..000000000 --- a/luci-app-v2raya/luasrc/view/v2raya/v2raya_status.htm +++ /dev/null @@ -1,28 +0,0 @@ - - -
-

- <%:Collecting data...%> -

-
diff --git a/luci-app-v2raya/po/templates/v2raya.pot b/luci-app-v2raya/po/templates/v2raya.pot new file mode 100644 index 000000000..a64580f1b --- /dev/null +++ b/luci-app-v2raya/po/templates/v2raya.pot @@ -0,0 +1,207 @@ +msgid "" +msgstr "Content-Type: text/plain; charset=UTF-8" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:155 +msgid "" +"Additional v2ray config directory, files in it will be combined with config " +"generated by v2rayA." +msgstr "" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:114 +msgid "Auto" +msgstr "" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:160 +msgid "Automatically generate" +msgstr "" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:158 +msgid "Certpath for gRPC inbound" +msgstr "" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:52 +msgid "Checking %s..." +msgstr "" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:92 +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/log.js:35 +msgid "Collecting data..." +msgstr "" + +#: applications/luci-app-v2raya/root/usr/share/rpcd/luci/menu.d/luci-app-v2raya.json:14 +msgid "Configuration" +msgstr "" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:107 +msgid "Configuration directory" +msgstr "" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:122 +msgid "Debug" +msgstr "" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:142 +msgid "Disable log color output" +msgstr "" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:146 +msgid "Disable log timestamp" +msgstr "" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:98 +msgid "Enable" +msgstr "" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:125 +msgid "Error" +msgstr "" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:151 +msgid "" +"Executable v2ray binary path. Auto-detect if put it empty (recommended)." +msgstr "" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:154 +msgid "Extra config directory" +msgstr "" + +#: applications/luci-app-v2raya/root/usr/share/rpcd/acl.d/luci-app-v2raya.json:3 +msgid "Grant access to v2rayA configuration" +msgstr "" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:112 +msgid "IPv6 support" +msgstr "" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:123 +msgid "Info" +msgstr "" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:102 +msgid "Listening address" +msgstr "" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/log.js:33 +msgid "Loading..." +msgstr "" + +#: applications/luci-app-v2raya/root/usr/share/rpcd/luci/menu.d/luci-app-v2raya.json:22 +msgid "Log" +msgstr "" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/log.js:53 +msgid "Log file does not exist." +msgstr "" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:129 +msgid "Log file path" +msgstr "" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/log.js:44 +msgid "Log is clean." +msgstr "" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:120 +msgid "Log level" +msgstr "" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:113 +msgid "Make sure your IPv6 network works fine before you turn it on." +msgstr "" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:136 +msgid "Max log retention period" +msgstr "" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:137 +msgid "Maximum number of days to keep log files." +msgstr "" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:41 +msgid "NOT RUNNING" +msgstr "" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:116 +msgid "Off" +msgstr "" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:115 +msgid "On" +msgstr "" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:38 +msgid "Open Web Interface" +msgstr "" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:39 +msgid "RUNNING" +msgstr "" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/log.js:70 +msgid "Refresh every %s seconds." +msgstr "" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:159 +msgid "" +"Specify the certification path instead of automatically generating a self-" +"signed certificate." +msgstr "" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:55 +msgid "The uploaded %s is empty." +msgstr "" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:121 +msgid "Trace" +msgstr "" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/log.js:57 +msgid "Unknown error: %s" +msgstr "" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:163 +msgid "Upload certificate" +msgstr "" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:169 +msgid "Upload privateKey" +msgstr "" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:63 +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:165 +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:171 +msgid "Upload..." +msgstr "" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:124 +msgid "Warn" +msgstr "" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:59 +msgid "Your %s was successfully uploaded. Size: %sB." +msgstr "" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:166 +msgid "certificate" +msgstr "" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:172 +msgid "private key" +msgstr "" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:150 +msgid "v2ray binary path" +msgstr "" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:39 +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:41 +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:78 +#: applications/luci-app-v2raya/root/usr/share/rpcd/luci/menu.d/luci-app-v2raya.json:3 +msgid "v2rayA" +msgstr "" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:79 +msgid "" +"v2rayA is a V2Ray Linux client supporting global transparent proxy, " +"compatible with SS, SSR, Trojan(trojan-go), PingTunnel protocols." +msgstr "" diff --git a/luci-app-v2raya/po/zh-cn b/luci-app-v2raya/po/zh-cn new file mode 120000 index 000000000..8d69574dd --- /dev/null +++ b/luci-app-v2raya/po/zh-cn @@ -0,0 +1 @@ +zh_Hans \ No newline at end of file diff --git a/luci-app-v2raya/po/zh-cn/v2raya.po b/luci-app-v2raya/po/zh-cn/v2raya.po deleted file mode 100644 index fe1c90d03..000000000 --- a/luci-app-v2raya/po/zh-cn/v2raya.po +++ /dev/null @@ -1,117 +0,0 @@ -msgid "Basic Setting" -msgstr "基本设置" - -msgid "v2rayA Client" -msgstr "v2rayA 客户端" - -msgid "v2rayA is a V2Ray Linux client supporting global transparent proxy, compatible with SS, SSR, Trojan(trojan-go), PingTunnel protocols." -msgstr "v2rayA 是一个支持全局透明代理的 V2Ray Linux 客户端,同时兼容 SS、SSR、Trojan(trojan-go)、PingTunnel 协议" - -msgid "NOT RUNNING" -msgstr "未运行" - -msgid "RUNNING" -msgstr "运行中" - -msgid "Enabled" -msgstr "启用" - -msgid "v2rayA Version" -msgstr "v2rayA 版本" - -msgid "Open v2rayA page" -msgstr "打开 v2rayA 页面" - -msgid "GUI access address" -msgstr "GUI访问地址" - -msgid "Use 0.0.0.0:2017 to monitor all access." -msgstr "使用 0.0.0.0:2017 监听所有访问。" - -msgid "v2rayA configuration directory" -msgstr "v2rayA 配置目录" - -msgid "Ipv6 Support" -msgstr "IPv6 支持" - -msgid "Make sure your IPv6 network works fine before you turn it on." -msgstr "在开启之前确保您的 IPv6 网络工作正常。" - -msgid "AUTO" -msgstr "自动" - -msgid "ON" -msgstr "开启" - -msgid "OFF" -msgstr "关闭" - -msgid "Log file" -msgstr "日志文件" - -msgid "Log level" -msgstr "日志等级" - -msgid "Trace" -msgstr "追踪" - -msgid "Debug" -msgstr "调试" - -msgid "Info" -msgstr "信息" - -msgid "Warning" -msgstr "警告" - -msgid "Error" -msgstr "错误" - -msgid "Log Keepd Max Days" -msgstr "日志记录天数" - -msgid "Maximum number of days to keep log files is 3 day." -msgstr "保留日志文件的最大天数为 3 天。" - -msgid "Disable log color" -msgstr "禁用日志颜色" - -msgid "Log disable timestamp" -msgstr "禁用日志时间戳" - -msgid "v2ray binary path" -msgstr "v2ray 二进制路径" - -msgid "" -"Executable v2ray binary path. Auto-detect if put it empty (recommended)." -msgstr "v2ray 可执行二进制文件目录。留空以自动检测(推荐)。" - -msgid "Extra config directory" -msgstr "附加配置目录" - -msgid "" -"Additional v2ray config directory, files in it will be combined with config " -"generated by v2rayA." -msgstr "" -"附加 v2ray 配置目录,包含在其中的文件将被合并至 v2rayA 生成的配置文件中。" - -msgid "Upload certificate" -msgstr "上传证书" - -msgid "Upload" -msgstr "上传" - -msgid "Specify the certification path instead of automatically generating a self-signed certificate." -msgstr "指定证书路径而不是自动生成自签名证书。" - -msgid "No specify upload file." -msgstr "没有上传证书" - -msgid "Upload Certificate Path" -msgstr "上传的证书路径" - -msgid "This is the path where the certificate resides after the certificate is uploaded." -msgstr "这里是上传证书后证书所在的路径。" - -msgid "Logs" -msgstr "日志" diff --git a/luci-app-v2raya/po/zh_Hans b/luci-app-v2raya/po/zh_Hans deleted file mode 120000 index 41451e4a1..000000000 --- a/luci-app-v2raya/po/zh_Hans +++ /dev/null @@ -1 +0,0 @@ -zh-cn \ No newline at end of file diff --git a/luci-app-v2raya/po/zh_Hans/v2raya.po b/luci-app-v2raya/po/zh_Hans/v2raya.po new file mode 100644 index 000000000..b68529081 --- /dev/null +++ b/luci-app-v2raya/po/zh_Hans/v2raya.po @@ -0,0 +1,217 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Project-Id-Version: PACKAGE VERSION\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: zh-Hans\n" +"MIME-Version: 1.0\n" +"Content-Transfer-Encoding: 8bit\n" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:155 +msgid "" +"Additional v2ray config directory, files in it will be combined with config " +"generated by v2rayA." +msgstr "" +"附加 v2ray 配置目录,包含在其中的文件将被合并至 v2rayA 生成的配置文件中。" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:114 +msgid "Auto" +msgstr "自动" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:160 +msgid "Automatically generate" +msgstr "自动生成" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:158 +msgid "Certpath for gRPC inbound" +msgstr "gPRC 入站证书目录" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:52 +msgid "Checking %s..." +msgstr "检查%s中..." + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:92 +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/log.js:35 +msgid "Collecting data..." +msgstr "收集数据中..." + +#: applications/luci-app-v2raya/root/usr/share/rpcd/luci/menu.d/luci-app-v2raya.json:14 +msgid "Configuration" +msgstr "配置" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:107 +msgid "Configuration directory" +msgstr "配置文件目录" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:122 +msgid "Debug" +msgstr "调试" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:142 +msgid "Disable log color output" +msgstr "禁用日志彩色输出" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:146 +msgid "Disable log timestamp" +msgstr "禁用日志时间戳" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:98 +msgid "Enable" +msgstr "启用" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:125 +msgid "Error" +msgstr "错误" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:151 +msgid "" +"Executable v2ray binary path. Auto-detect if put it empty (recommended)." +msgstr "v2ray 可执行二进制文件目录。留空以自动检测(推荐)。" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:154 +msgid "Extra config directory" +msgstr "附加配置目录" + +#: applications/luci-app-v2raya/root/usr/share/rpcd/acl.d/luci-app-v2raya.json:3 +msgid "Grant access to v2rayA configuration" +msgstr "授予访问 v2rayA 配置的权限" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:112 +msgid "IPv6 support" +msgstr "IPv6 支持" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:123 +msgid "Info" +msgstr "信息" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:102 +msgid "Listening address" +msgstr "监听地址" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/log.js:33 +msgid "Loading..." +msgstr "加载中..." + +#: applications/luci-app-v2raya/root/usr/share/rpcd/luci/menu.d/luci-app-v2raya.json:22 +msgid "Log" +msgstr "日志" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/log.js:53 +msgid "Log file does not exist." +msgstr "日志文件不存在。" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:129 +msgid "Log file path" +msgstr "日志文件路径" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/log.js:44 +msgid "Log is clean." +msgstr "日志为空。" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:120 +msgid "Log level" +msgstr "日志等级" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:113 +msgid "Make sure your IPv6 network works fine before you turn it on." +msgstr "开启前,请确保您的 IPv6 网络工作正常。" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:136 +msgid "Max log retention period" +msgstr "最长日志保留时间" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:137 +msgid "Maximum number of days to keep log files." +msgstr "保留日志文件的最长天数。" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:41 +msgid "NOT RUNNING" +msgstr "未运行" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:116 +msgid "Off" +msgstr "关" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:115 +msgid "On" +msgstr "开" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:38 +msgid "Open Web Interface" +msgstr "打开 Web 界面" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:39 +msgid "RUNNING" +msgstr "运行中" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/log.js:70 +msgid "Refresh every %s seconds." +msgstr "每 %s 秒刷新。" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:159 +msgid "" +"Specify the certification path instead of automatically generating a self-" +"signed certificate." +msgstr "指定证书目录而不是自动生成自签证书。" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:55 +msgid "The uploaded %s is empty." +msgstr "上传的%s为空。" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:121 +msgid "Trace" +msgstr "跟踪" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/log.js:57 +msgid "Unknown error: %s" +msgstr "未知错误:%s" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:163 +msgid "Upload certificate" +msgstr "上传证书" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:169 +msgid "Upload privateKey" +msgstr "上传私钥" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:63 +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:165 +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:171 +msgid "Upload..." +msgstr "上传..." + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:124 +msgid "Warn" +msgstr "警告" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:59 +msgid "Your %s was successfully uploaded. Size: %sB." +msgstr "您的%s上传成功。大小:%sB。" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:166 +msgid "certificate" +msgstr "证书" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:172 +msgid "private key" +msgstr "私钥" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:150 +msgid "v2ray binary path" +msgstr "v2ray 二进制路径" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:39 +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:41 +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:78 +#: applications/luci-app-v2raya/root/usr/share/rpcd/luci/menu.d/luci-app-v2raya.json:3 +msgid "v2rayA" +msgstr "v2rayA" + +#: applications/luci-app-v2raya/htdocs/luci-static/resources/view/v2raya/config.js:79 +msgid "" +"v2rayA is a V2Ray Linux client supporting global transparent proxy, " +"compatible with SS, SSR, Trojan(trojan-go), PingTunnel protocols." +msgstr "" +"v2rayA 是一个易用而强大的,跨平台的 V2Ray 客户端,支持 SS、SSR、" +"Trojan(trojan-go)、PingTunnel 协议。" diff --git a/luci-app-v2raya/root/etc/uci-defaults/luci-v2raya b/luci-app-v2raya/root/etc/uci-defaults/luci-v2raya deleted file mode 100755 index c255d91c3..000000000 --- a/luci-app-v2raya/root/etc/uci-defaults/luci-v2raya +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -uci -q batch <<-EOF >/dev/null - delete ucitrack.@v2raya[-1] - add ucitrack v2raya - set ucitrack.@v2raya[-1].init=v2raya - commit ucitrack -EOF - -rm -rf /tmp/luci-indexcache /tmp/luci-modulecache -exit 0 diff --git a/luci-app-v2raya/root/usr/share/luci/menu.d/luci-app-v2raya.json b/luci-app-v2raya/root/usr/share/luci/menu.d/luci-app-v2raya.json new file mode 100644 index 000000000..c19548ffb --- /dev/null +++ b/luci-app-v2raya/root/usr/share/luci/menu.d/luci-app-v2raya.json @@ -0,0 +1,29 @@ +{ + "admin/services/v2raya": { + "title": "v2rayA", + "order": 90, + "action": { + "type": "firstchild" + }, + "depends": { + "acl": [ "luci-app-v2raya" ], + "uci": { "v2raya": true } + } + }, + "admin/services/v2raya/config": { + "title": "Configuration", + "order": 10, + "action": { + "type": "view", + "path": "v2raya/config" + } + }, + "admin/services/v2raya/log": { + "title": "Log", + "order": 20, + "action": { + "type": "view", + "path": "v2raya/log" + } + } +} diff --git a/luci-app-v2raya/root/usr/share/rpcd/acl.d/luci-app-v2raya.json b/luci-app-v2raya/root/usr/share/rpcd/acl.d/luci-app-v2raya.json index 81f9ea5dc..99fef975a 100644 --- a/luci-app-v2raya/root/usr/share/rpcd/acl.d/luci-app-v2raya.json +++ b/luci-app-v2raya/root/usr/share/rpcd/acl.d/luci-app-v2raya.json @@ -1,10 +1,24 @@ { "luci-app-v2raya": { - "description": "Grant UCI access for luci-app-v2raya", + "description": "Grant access to v2rayA configuration", "read": { + "file": { + "/bin/mkdir -p /etc/v2raya/": [ "exec" ], + "/var/log/v2raya/v2raya.log": [ "read" ] + }, + "ubus": { + "service": [ "list" ] + }, "uci": [ "v2raya" ] }, "write": { + "file": { + "/etc/v2raya/grpc_certificate.crt": [ "write" ], + "/etc/v2raya/grpc_private.key": [ "write" ] + }, + "ubus": { + "luci": [ "setInitAction" ] + }, "uci": [ "v2raya" ] } } diff --git a/natflow/Makefile b/natflow/Makefile index 554e4fdc9..570369327 100644 --- a/natflow/Makefile +++ b/natflow/Makefile @@ -9,10 +9,10 @@ include $(TOPDIR)/rules.mk include $(INCLUDE_DIR)/kernel.mk PKG_NAME:=natflow -PKG_VERSION:=20220926 +PKG_VERSION:=20220928 PKG_SOURCE_URL:=https://codeload.github.com/ptpt52/natflow/tar.gz/$(PKG_VERSION)? -PKG_HASH:=e96ac4d0b12970fc6e4b29a3dfeb689c2e19a1f50818dedeb3ff3f1f52574cb9 +PKG_HASH:=e517ccb4c73b412ae6c5c08e0beab67c569eb561d5feccc22b22a4f4e0785cfd PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_MAINTAINER:=Chen Minqiang