diff --git a/natflow/Makefile b/natflow/Makefile index 45f0e2306..1fec84ce8 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:=20221124 +PKG_VERSION:=20221212 PKG_SOURCE_URL:=https://codeload.github.com/ptpt52/natflow/tar.gz/$(PKG_VERSION)? -PKG_HASH:=d760373b41900534b3714a4d3f28e5e1745b0aa397e84576797860f3691fd774 +PKG_HASH:=b58d1e63ff0c7966f3714f0448ca47fe4a09e0eb592996b367fa8db8be0e6d45 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_MAINTAINER:=Chen Minqiang diff --git a/openwrt-app-actions/applications/luci-app-jackett/luasrc/model/cbi/jackett.lua b/openwrt-app-actions/applications/luci-app-jackett/luasrc/model/cbi/jackett.lua index 8b87d3788..fdc70801e 100644 --- a/openwrt-app-actions/applications/luci-app-jackett/luasrc/model/cbi/jackett.lua +++ b/openwrt-app-actions/applications/luci-app-jackett/luasrc/model/cbi/jackett.lua @@ -3,6 +3,7 @@ LuCI - Lua Configuration Interface ]]-- local taskd = require "luci.model.tasks" +local jackett_model = require "luci.model.jackett" local m, s, o m = taskd.docker_map("jackett", "jackett", "/usr/libexec/istorec/jackett.sh", @@ -22,13 +23,32 @@ o.rmempty = false o.default = "9117" o.datatype = "port" +o = s:option(Value, "image_name", translate("Image").."*") +o.rmempty = false +o.datatype = "string" +o:value("linuxserver/jackett:latest", "linuxserver/jackett:latest") +o.default = "linuxserver/jackett:latest" + +local blocks = jackett_model.blocks() +local home = jackett_model.home() + o = s:option(Value, "config_path", translate("Config path").."*") o.rmempty = false o.datatype = "string" +local paths, default_path = jackett_model.find_paths(blocks, home, "Configs") +for _, val in pairs(paths) do + o:value(val, val) +end +o.default = default_path o = s:option(Value, "save_path", translate("Torrent save path").."*", translate("Usually use the monitoring folder of the torrent download tool")) o.rmempty = false o.datatype = "string" +local paths, default_path = jackett_model.find_paths(blocks, home, "Public") +for _, val in pairs(paths) do + o:value(val, val) +end +o.default = default_path o = s:option(Flag, "auto_update", translate("Auto update")) o.default = 1 diff --git a/openwrt-app-actions/applications/luci-app-jackett/luasrc/model/jackett.lua b/openwrt-app-actions/applications/luci-app-jackett/luasrc/model/jackett.lua new file mode 100644 index 000000000..85b0276b8 --- /dev/null +++ b/openwrt-app-actions/applications/luci-app-jackett/luasrc/model/jackett.lua @@ -0,0 +1,55 @@ +local util = require "luci.util" +local jsonc = require "luci.jsonc" + +local jackett = {} + +jackett.blocks = function() + local f = io.popen("lsblk -s -f -b -o NAME,FSSIZE,MOUNTPOINT --json", "r") + local vals = {} + if f then + local ret = f:read("*all") + f:close() + local obj = jsonc.parse(ret) + for _, val in pairs(obj["blockdevices"]) do + local fsize = val["fssize"] + if fsize ~= nil and string.len(fsize) > 10 and val["mountpoint"] then + -- fsize > 1G + vals[#vals+1] = val["mountpoint"] + end + end + end + return vals +end + +jackett.home = function() + local uci = require "luci.model.uci".cursor() + local home_dirs = {} + home_dirs["main_dir"] = uci:get_first("quickstart", "main", "main_dir", "/root") + home_dirs["Configs"] = uci:get_first("quickstart", "main", "conf_dir", home_dirs["main_dir"].."/Configs") + home_dirs["Public"] = uci:get_first("quickstart", "main", "pub_dir", home_dirs["main_dir"].."/Public") + home_dirs["Downloads"] = uci:get_first("quickstart", "main", "dl_dir", home_dirs["Public"].."/Downloads") + home_dirs["Caches"] = uci:get_first("quickstart", "main", "tmp_dir", home_dirs["main_dir"].."/Caches") + return home_dirs +end + +jackett.find_paths = function(blocks, home_dirs, path_name) + local appname = '/Jackett' + local default_path = '' + local configs = {} + + if #blocks == 0 then + return configs, default_path + else + if path_name == "Public" then + appname = "/Downloads" + end + for _, val in pairs(blocks) do + table.insert(configs, val .. "/" .. path_name .. appname) + end + default_path = configs[1] + end + + return configs, default_path +end + +return jackett diff --git a/openwrt-app-actions/applications/luci-app-jackett/root/etc/config/jackett b/openwrt-app-actions/applications/luci-app-jackett/root/etc/config/jackett index be3f18e52..3c64b927a 100644 --- a/openwrt-app-actions/applications/luci-app-jackett/root/etc/config/jackett +++ b/openwrt-app-actions/applications/luci-app-jackett/root/etc/config/jackett @@ -2,4 +2,5 @@ config jackett option 'auto_update' '1' option 'port' '9117' option 'save_path' '' - option 'config_path' '/root/jackett/config' + option 'config_path' '' + option 'image_name' 'linuxserver/jackett:latest' diff --git a/openwrt-app-actions/applications/luci-app-jackett/root/usr/libexec/istorec/jackett.sh b/openwrt-app-actions/applications/luci-app-jackett/root/usr/libexec/istorec/jackett.sh index a4eae92e4..bf4d30b89 100755 --- a/openwrt-app-actions/applications/luci-app-jackett/root/usr/libexec/istorec/jackett.sh +++ b/openwrt-app-actions/applications/luci-app-jackett/root/usr/libexec/istorec/jackett.sh @@ -3,24 +3,12 @@ ACTION=${1} shift 1 -get_image() { - IMAGE_NAME="linuxserver/jackett:latest" -} - do_install() { - get_image - echo "docker pull ${IMAGE_NAME}" - docker pull ${IMAGE_NAME} - docker rm -f jackett - - do_install_detail -} - -do_install_detail() { local save_path=`uci get jackett.@jackett[0].save_path 2>/dev/null` local config=`uci get jackett.@jackett[0].config_path 2>/dev/null` local port=`uci get jackett.@jackett[0].port 2>/dev/null` local auto_update=`uci get jackett.@jackett[0].auto_update 2>/dev/null` + local IMAGE_NAME=`uci get jackett.@jackett[0].image_name 2>/dev/null` if [ -z "$config" ]; then echo "config path is empty!" @@ -32,6 +20,11 @@ do_install_detail() { fi [ -z "$port" ] && port=9117 + [ -z "$IMAGE_NAME" ] && IMAGE_NAME="linuxserver/jackett:latest" + + echo "docker pull ${IMAGE_NAME}" + docker pull ${IMAGE_NAME} + docker rm -f jackett local cmd="docker run --restart=unless-stopped -d \ -v \"$config:/config\" \ @@ -55,6 +48,8 @@ do_install_detail() { echo "$cmd" eval "$cmd" + echo "Waiting 15s to setup" + sleep 15 } usage() { diff --git a/openwrt-app-actions/applications/luci-app-kodexplorer/Makefile b/openwrt-app-actions/applications/luci-app-kodexplorer/Makefile index 763b17d5c..cfba9d858 100644 --- a/openwrt-app-actions/applications/luci-app-kodexplorer/Makefile +++ b/openwrt-app-actions/applications/luci-app-kodexplorer/Makefile @@ -2,7 +2,7 @@ include $(TOPDIR)/rules.mk -PKG_VERSION:=1.2.0-20220830 +PKG_VERSION:=1.2.0-20221212 PKG_RELEASE:= LUCI_TITLE:=LuCI support for kodexplorer diff --git a/openwrt-app-actions/applications/luci-app-kodexplorer/luasrc/model/cbi/kodexplorer.lua b/openwrt-app-actions/applications/luci-app-kodexplorer/luasrc/model/cbi/kodexplorer.lua index 7d6e92f66..2c02dece0 100644 --- a/openwrt-app-actions/applications/luci-app-kodexplorer/luasrc/model/cbi/kodexplorer.lua +++ b/openwrt-app-actions/applications/luci-app-kodexplorer/luasrc/model/cbi/kodexplorer.lua @@ -3,6 +3,7 @@ LuCI - Lua Configuration Interface ]]-- local taskd = require "luci.model.tasks" +local kodexplorer_model = require "luci.model.kodexplorer" local m, s, o m = taskd.docker_map("kodexplorer", "kodexplorer", "/usr/libexec/istorec/kodexplorer.sh", @@ -22,9 +23,23 @@ o.rmempty = false o.default = "8081" o.datatype = "port" +o = s:option(Value, "image_name", translate("Image").."*") +o.rmempty = false +o.datatype = "string" +o:value("kodcloud/kodbox:latest", "kodcloud/kodbox:latest") +o.default = "kodcloud/kodbox:latest" + +local blocks = kodexplorer_model.blocks() +local home = kodexplorer_model.home() + o = s:option(Value, "cache_path", translate("Config path").."*") o.rmempty = false -o.default = "/mnt/sda1/kodexplorer" o.datatype = "string" +local paths, default_path = kodexplorer_model.find_paths(blocks, home, "Configs") +for _, val in pairs(paths) do + o:value(val, val) +end +o.default = default_path + return m diff --git a/openwrt-app-actions/applications/luci-app-kodexplorer/luasrc/model/kodexplorer.lua b/openwrt-app-actions/applications/luci-app-kodexplorer/luasrc/model/kodexplorer.lua new file mode 100644 index 000000000..b0a2fea16 --- /dev/null +++ b/openwrt-app-actions/applications/luci-app-kodexplorer/luasrc/model/kodexplorer.lua @@ -0,0 +1,55 @@ +local util = require "luci.util" +local jsonc = require "luci.jsonc" + +local kodexplorer = {} + +kodexplorer.blocks = function() + local f = io.popen("lsblk -s -f -b -o NAME,FSSIZE,MOUNTPOINT --json", "r") + local vals = {} + if f then + local ret = f:read("*all") + f:close() + local obj = jsonc.parse(ret) + for _, val in pairs(obj["blockdevices"]) do + local fsize = val["fssize"] + if fsize ~= nil and string.len(fsize) > 10 and val["mountpoint"] then + -- fsize > 1G + vals[#vals+1] = val["mountpoint"] + end + end + end + return vals +end + +kodexplorer.home = function() + local uci = require "luci.model.uci".cursor() + local home_dirs = {} + home_dirs["main_dir"] = uci:get_first("quickstart", "main", "main_dir", "/root") + home_dirs["Configs"] = uci:get_first("quickstart", "main", "conf_dir", home_dirs["main_dir"].."/Configs") + home_dirs["Public"] = uci:get_first("quickstart", "main", "pub_dir", home_dirs["main_dir"].."/Public") + home_dirs["Downloads"] = uci:get_first("quickstart", "main", "dl_dir", home_dirs["Public"].."/Downloads") + home_dirs["Caches"] = uci:get_first("quickstart", "main", "tmp_dir", home_dirs["main_dir"].."/Caches") + return home_dirs +end + +kodexplorer.find_paths = function(blocks, home_dirs, path_name) + local default_path = '' + local configs = {} + + default_path = home_dirs[path_name] .. "/KodExplorer" + if #blocks == 0 then + table.insert(configs, default_path) + else + for _, val in pairs(blocks) do + table.insert(configs, val .. "/" .. path_name .. "/KodExplorer") + end + local without_conf_dir = "/root/" .. path_name .. "/KodExplorer" + if default_path == without_conf_dir then + default_path = configs[1] + end + end + + return configs, default_path +end + +return kodexplorer diff --git a/openwrt-app-actions/applications/luci-app-kodexplorer/root/etc/config/kodexplorer b/openwrt-app-actions/applications/luci-app-kodexplorer/root/etc/config/kodexplorer index 867efd260..c8f36e049 100644 --- a/openwrt-app-actions/applications/luci-app-kodexplorer/root/etc/config/kodexplorer +++ b/openwrt-app-actions/applications/luci-app-kodexplorer/root/etc/config/kodexplorer @@ -1,3 +1,4 @@ config kodexplorer - option 'cache_path' '/mnt/sda1/kodexplorer' - option 'port' '8081' + option 'cache_path' '' + option 'port' '8081' + option 'image_name' 'kodcloud/kodbox:latest' diff --git a/openwrt-app-actions/applications/luci-app-kodexplorer/root/usr/libexec/istorec/kodexplorer.sh b/openwrt-app-actions/applications/luci-app-kodexplorer/root/usr/libexec/istorec/kodexplorer.sh index a334a3a78..77652eeab 100755 --- a/openwrt-app-actions/applications/luci-app-kodexplorer/root/usr/libexec/istorec/kodexplorer.sh +++ b/openwrt-app-actions/applications/luci-app-kodexplorer/root/usr/libexec/istorec/kodexplorer.sh @@ -9,16 +9,14 @@ get_image() { do_install() { get_image - echo "docker pull ${IMAGE_NAME}" - docker pull ${IMAGE_NAME} - docker rm -f kodexplorer do_install_detail } -do_install_detail() { +do_install() { local config=`uci get kodexplorer.@kodexplorer[0].cache_path 2>/dev/null` local port=`uci get kodexplorer.@kodexplorer[0].port 2>/dev/null` + local IMAGE_NAME=`uci get kodexplorer.@kodexplorer[0].image_name 2>/dev/null` if [ -z "$config" ]; then echo "config path is empty!" @@ -27,6 +25,12 @@ do_install_detail() { [ -z "$port" ] && port=8081 + [ -z "$IMAGE_NAME" ] && IMAGE_NAME="kodcloud/kodbox:latest" + + echo "docker pull ${IMAGE_NAME}" + docker pull ${IMAGE_NAME} + docker rm -f kodexplorer + local cmd="docker run --restart=unless-stopped -d \ -v \"$config:/var/www/html\" \ --dns=172.17.0.1 \ diff --git a/openwrt-app-actions/applications/luci-app-nextcloud/luasrc/model/cbi/nextcloud.lua b/openwrt-app-actions/applications/luci-app-nextcloud/luasrc/model/cbi/nextcloud.lua index 9205520c8..b6c9db18e 100644 --- a/openwrt-app-actions/applications/luci-app-nextcloud/luasrc/model/cbi/nextcloud.lua +++ b/openwrt-app-actions/applications/luci-app-nextcloud/luasrc/model/cbi/nextcloud.lua @@ -3,6 +3,7 @@ LuCI - Lua Configuration Interface ]]-- local taskd = require "luci.model.tasks" +local nextcloud_model = require "luci.model.nextcloud" local m, s, o m = taskd.docker_map("nextcloud", "nextcloud", "/usr/libexec/istorec/nextcloud.sh", @@ -22,9 +23,23 @@ o.rmempty = false o.default = "8082" o.datatype = "port" +o = s:option(Value, "image_name", translate("Image").."*") +o.rmempty = false +o.datatype = "string" +o:value("nextcloud", "nextcloud") +o.default = "nextcloud" + +local blocks = nextcloud_model.blocks() +local home = nextcloud_model.home() + o = s:option(Value, "config_path", translate("Config path").."*") o.rmempty = false -o.default = "/root/nextcloud/config" o.datatype = "string" +local paths, default_path = nextcloud_model.find_paths(blocks, home, "Configs") +for _, val in pairs(paths) do + o:value(val, val) +end +o.default = default_path + return m diff --git a/openwrt-app-actions/applications/luci-app-nextcloud/luasrc/model/nextcloud.lua b/openwrt-app-actions/applications/luci-app-nextcloud/luasrc/model/nextcloud.lua new file mode 100644 index 000000000..2fefcd21c --- /dev/null +++ b/openwrt-app-actions/applications/luci-app-nextcloud/luasrc/model/nextcloud.lua @@ -0,0 +1,55 @@ +local util = require "luci.util" +local jsonc = require "luci.jsonc" + +local nextcloud = {} + +nextcloud.blocks = function() + local f = io.popen("lsblk -s -f -b -o NAME,FSSIZE,MOUNTPOINT --json", "r") + local vals = {} + if f then + local ret = f:read("*all") + f:close() + local obj = jsonc.parse(ret) + for _, val in pairs(obj["blockdevices"]) do + local fsize = val["fssize"] + if fsize ~= nil and string.len(fsize) > 10 and val["mountpoint"] then + -- fsize > 1G + vals[#vals+1] = val["mountpoint"] + end + end + end + return vals +end + +nextcloud.home = function() + local uci = require "luci.model.uci".cursor() + local home_dirs = {} + home_dirs["main_dir"] = uci:get_first("quickstart", "main", "main_dir", "/root") + home_dirs["Configs"] = uci:get_first("quickstart", "main", "conf_dir", home_dirs["main_dir"].."/Configs") + home_dirs["Public"] = uci:get_first("quickstart", "main", "pub_dir", home_dirs["main_dir"].."/Public") + home_dirs["Downloads"] = uci:get_first("quickstart", "main", "dl_dir", home_dirs["Public"].."/Downloads") + home_dirs["Caches"] = uci:get_first("quickstart", "main", "tmp_dir", home_dirs["main_dir"].."/Caches") + return home_dirs +end + +nextcloud.find_paths = function(blocks, home_dirs, path_name) + local default_path = '' + local configs = {} + + default_path = home_dirs[path_name] .. "/Nextcloud" + if #blocks == 0 then + table.insert(configs, default_path) + else + for _, val in pairs(blocks) do + table.insert(configs, val .. "/" .. path_name .. "/Nextcloud") + end + local without_conf_dir = "/root/" .. path_name .. "/Nextcloud" + if default_path == without_conf_dir then + default_path = configs[1] + end + end + + return configs, default_path +end + +return nextcloud diff --git a/openwrt-app-actions/applications/luci-app-nextcloud/root/etc/config/nextcloud b/openwrt-app-actions/applications/luci-app-nextcloud/root/etc/config/nextcloud index d15234adf..6602a3a49 100644 --- a/openwrt-app-actions/applications/luci-app-nextcloud/root/etc/config/nextcloud +++ b/openwrt-app-actions/applications/luci-app-nextcloud/root/etc/config/nextcloud @@ -1,3 +1,4 @@ config nextcloud option 'port' '8082' - option 'config_path' '/root/nextcloud/config' + option 'config_path' '' + option 'image_name' 'nextcloud' diff --git a/openwrt-app-actions/applications/luci-app-nextcloud/root/usr/libexec/istorec/nextcloud.sh b/openwrt-app-actions/applications/luci-app-nextcloud/root/usr/libexec/istorec/nextcloud.sh index 5f5e14935..dec8b6eae 100755 --- a/openwrt-app-actions/applications/luci-app-nextcloud/root/usr/libexec/istorec/nextcloud.sh +++ b/openwrt-app-actions/applications/luci-app-nextcloud/root/usr/libexec/istorec/nextcloud.sh @@ -9,16 +9,14 @@ get_image() { do_install() { get_image - echo "docker pull ${IMAGE_NAME}" - docker pull ${IMAGE_NAME} - docker rm -f nextcloud do_install_detail } -do_install_detail() { +do_install() { local config=`uci get nextcloud.@nextcloud[0].config_path 2>/dev/null` local port=`uci get nextcloud.@nextcloud[0].port 2>/dev/null` + local IMAGE_NAME=`uci get nextcloud.@nextcloud[0].image_name 2>/dev/null` if [ -z "$config" ]; then echo "config path is empty!" @@ -26,6 +24,11 @@ do_install_detail() { fi [ -z "$port" ] && port=8082 + [ -z "$IMAGE_NAME" ] && IMAGE_NAME=nextcloud + + echo "docker pull ${IMAGE_NAME}" + docker pull ${IMAGE_NAME} + docker rm -f nextcloud local cmd="docker run --restart=unless-stopped -d \ -v \"$config:/var/www/html\" \ diff --git a/openwrt-app-actions/applications/luci-app-xteve/Makefile b/openwrt-app-actions/applications/luci-app-xteve/Makefile new file mode 100644 index 000000000..0e67c5de4 --- /dev/null +++ b/openwrt-app-actions/applications/luci-app-xteve/Makefile @@ -0,0 +1,18 @@ + + +include $(TOPDIR)/rules.mk + +PKG_VERSION:=1.0.0-20221117 +PKG_RELEASE:= + +LUCI_TITLE:=LuCI support for Xteve +LUCI_PKGARCH:=all +LUCI_DEPENDS:=+docker +luci-lib-taskd + +define Package/luci-app-xteve/conffiles +/etc/config/xteve +endef + +include $(TOPDIR)/feeds/luci/luci.mk + +# call BuildPackage - OpenWrt buildroot signature diff --git a/openwrt-app-actions/applications/luci-app-xteve/luasrc/controller/xteve.lua b/openwrt-app-actions/applications/luci-app-xteve/luasrc/controller/xteve.lua new file mode 100755 index 000000000..cab91bbd4 --- /dev/null +++ b/openwrt-app-actions/applications/luci-app-xteve/luasrc/controller/xteve.lua @@ -0,0 +1,7 @@ + +module("luci.controller.xteve", package.seeall) + +function index() + entry({"admin", "services", "xteve"}, alias("admin", "services", "xteve", "config"), _("Xteve"), 30).dependent = true + entry({"admin", "services", "xteve", "config"}, cbi("xteve")) +end diff --git a/openwrt-app-actions/applications/luci-app-xteve/luasrc/model/cbi/xteve.lua b/openwrt-app-actions/applications/luci-app-xteve/luasrc/model/cbi/xteve.lua new file mode 100644 index 000000000..2aec0358d --- /dev/null +++ b/openwrt-app-actions/applications/luci-app-xteve/luasrc/model/cbi/xteve.lua @@ -0,0 +1,49 @@ +--[[ +LuCI - Lua Configuration Interface +]]-- + +local taskd = require "luci.model.tasks" +local xteve_model = require "luci.model.xteve" +local m, s, o + +m = taskd.docker_map("xteve", "xteve", "/usr/libexec/istorec/xteve.sh", + translate("Xteve"), + translate("Xteve is M3U Proxy for Plex DVR and Emby Live TV.") + .. translate("Official website:") .. ' https://github.com/xteve-project/xTeVe') + +s = m:section(SimpleSection, translate("Service Status"), translate("Xteve status:")) +s:append(Template("xteve/status")) + +s = m:section(TypedSection, "main", translate("Setup"), translate("The following parameters will only take effect during installation or upgrade:")) +s.addremove=false +s.anonymous=true + +o = s:option(Value, "port", translate("Port").."*") +o.default = "32400" +o.datatype = "port" +o:depends("hostnet", 0) + +o = s:option(Value, "image_name", translate("Image").."*") +o.rmempty = false +o.datatype = "string" +o:value("alturismo/xteve_guide2go", "alturismo/xteve_guide2go") +o.default = "alturismo/xteve_guide2go" + +local blocks = xteve_model.blocks() +local home = xteve_model.home() + +o = s:option(Value, "config_path", translate("Config path").."*") +o.rmempty = false +o.datatype = "string" + +local paths, default_path = xteve_model.find_paths(blocks, home, "Configs") +for _, val in pairs(paths) do + o:value(val, val) +end +o.default = default_path + +o = s:option(Value, "time_zone", translate("Timezone")) +o.datatype = "string" +o:value("Asia/Shanghai", "Asia/Shanghai") + +return m diff --git a/openwrt-app-actions/applications/luci-app-xteve/luasrc/model/xteve.lua b/openwrt-app-actions/applications/luci-app-xteve/luasrc/model/xteve.lua new file mode 100644 index 000000000..d5a2a27de --- /dev/null +++ b/openwrt-app-actions/applications/luci-app-xteve/luasrc/model/xteve.lua @@ -0,0 +1,55 @@ +local util = require "luci.util" +local jsonc = require "luci.jsonc" + +local xteve = {} + +xteve.blocks = function() + local f = io.popen("lsblk -s -f -b -o NAME,FSSIZE,MOUNTPOINT --json", "r") + local vals = {} + if f then + local ret = f:read("*all") + f:close() + local obj = jsonc.parse(ret) + for _, val in pairs(obj["blockdevices"]) do + local fsize = val["fssize"] + if fsize ~= nil and string.len(fsize) > 10 and val["mountpoint"] then + -- fsize > 1G + vals[#vals+1] = val["mountpoint"] + end + end + end + return vals +end + +xteve.home = function() + local uci = require "luci.model.uci".cursor() + local home_dirs = {} + home_dirs["main_dir"] = uci:get_first("quickstart", "main", "main_dir", "/root") + home_dirs["Configs"] = uci:get_first("quickstart", "main", "conf_dir", home_dirs["main_dir"].."/Configs") + home_dirs["Public"] = uci:get_first("quickstart", "main", "pub_dir", home_dirs["main_dir"].."/Public") + home_dirs["Downloads"] = uci:get_first("quickstart", "main", "dl_dir", home_dirs["Public"].."/Downloads") + home_dirs["Caches"] = uci:get_first("quickstart", "main", "tmp_dir", home_dirs["main_dir"].."/Caches") + return home_dirs +end + +xteve.find_paths = function(blocks, home_dirs, path_name) + local default_path = '' + local configs = {} + + default_path = home_dirs[path_name] .. "/Xteve" + if #blocks == 0 then + table.insert(configs, default_path) + else + for _, val in pairs(blocks) do + table.insert(configs, val .. "/" .. path_name .. "/Xteve") + end + local without_conf_dir = "/root/" .. path_name .. "/Xteve" + if default_path == without_conf_dir then + default_path = configs[1] + end + end + + return configs, default_path +end + +return xteve diff --git a/openwrt-app-actions/applications/luci-app-xteve/luasrc/view/xteve/status.htm b/openwrt-app-actions/applications/luci-app-xteve/luasrc/view/xteve/status.htm new file mode 100644 index 000000000..7728b1281 --- /dev/null +++ b/openwrt-app-actions/applications/luci-app-xteve/luasrc/view/xteve/status.htm @@ -0,0 +1,31 @@ +<% +local util = require "luci.util" +local container_status = util.trim(util.exec("/usr/libexec/istorec/xteve.sh status")) +local container_install = (string.len(container_status) > 0) +local container_running = container_status == "running" +-%> +
+ +
+ <% if container_running then %> + + <% else %> + + <% end %> +
+
+<% +if container_running then + local port=util.trim(util.exec("/usr/libexec/istorec/xteve.sh port")) + if port == "" then + port="34400" + end +-%> +
+ +
+ + +
+
+<% end %> diff --git a/openwrt-app-actions/applications/luci-app-xteve/po/zh-cn/xteve.po b/openwrt-app-actions/applications/luci-app-xteve/po/zh-cn/xteve.po new file mode 100644 index 000000000..9a5a50e5c --- /dev/null +++ b/openwrt-app-actions/applications/luci-app-xteve/po/zh-cn/xteve.po @@ -0,0 +1,41 @@ +msgid "" +msgstr "Content-Type: text/plain; charset=UTF-8" + +msgid "Official website:" +msgstr "官方网站:" + +msgid "Xteve is M3U Proxy for Plex DVR and Emby Live TV." +msgstr "Xteve 是一个在线电视源的代理工具。" + +msgid "Config path" +msgstr "配置文件路径" + +msgid "Port" +msgstr "端口" + +msgid "HTTP Port" +msgstr "HTTP 端口" + +msgid "Service Status" +msgstr "服务状态" + +msgid "Xteve status:" +msgstr "Xteve 的状态信息如下:" + +msgid "Setup" +msgstr "安装配置" + +msgid "The following parameters will only take effect during installation or upgrade:" +msgstr "以下参数只在安装或者升级时才会生效:" + +msgid "Status" +msgstr "状态" + +msgid "Xteve is running" +msgstr "Xteve 运行中" + +msgid "Xteve is not running" +msgstr "Xteve 未运行" + +msgid "Open Xteve" +msgstr "打开 Xteve" diff --git a/openwrt-app-actions/applications/luci-app-xteve/root/etc/config/xteve b/openwrt-app-actions/applications/luci-app-xteve/root/etc/config/xteve new file mode 100644 index 000000000..46951695c --- /dev/null +++ b/openwrt-app-actions/applications/luci-app-xteve/root/etc/config/xteve @@ -0,0 +1,5 @@ +config main + option 'port' '34400' + option 'image_name' 'alturismo/xteve_guide2go' + option 'config_path' '' + diff --git a/openwrt-app-actions/applications/luci-app-xteve/root/usr/libexec/istorec/xteve.sh b/openwrt-app-actions/applications/luci-app-xteve/root/usr/libexec/istorec/xteve.sh new file mode 100755 index 000000000..32b1bc952 --- /dev/null +++ b/openwrt-app-actions/applications/luci-app-xteve/root/usr/libexec/istorec/xteve.sh @@ -0,0 +1,78 @@ +#!/bin/sh +# Author Xiaobao(xiaobao@linkease.com) + +ACTION=${1} +shift 1 + +do_install() { + local port=`uci get xteve.@main[0].port 2>/dev/null` + local image_name=`uci get xteve.@main[0].image_name 2>/dev/null` + local config=`uci get xteve.@main[0].config_path 2>/dev/null` + local tz=`uci get xteve.@main[0].time_zone 2>/dev/null` + + [ -z "$image_name" ] && image_name="alturismo/xteve_guide2go" + echo "docker pull ${image_name}" + docker pull ${image_name} + docker rm -f xteve + + if [ -z "$config" ]; then + echo "config path is empty!" + exit 1 + fi + + [ -z "$port" ] && port=34400 + + local cmd="docker run --restart=unless-stopped -d \ + --log-opt max-size=10m \ + --log-opt max-file=3 \ + -v $config/Xteve/:/root/.xteve:rw \ + -v $config/Xteve/_config/:/config:rw \ + -v $config/Xteve/_guide2go/:/guide2go:rw \ + -v /tmp/xteve/:/tmp/xteve:rw \ + -p $port:34400 " + + if [ -z "$tz" ]; then + tz="`cat /tmp/TZ`" + fi + [ -z "$tz" ] || cmd="$cmd -e TZ=$tz" + + cmd="$cmd --name xteve \"$image_name\"" + + echo "$cmd" + eval "$cmd" +} + +usage() { + echo "usage: $0 sub-command" + echo "where sub-command is one of:" + echo " install Install the xteve" + echo " upgrade Upgrade the xteve" + echo " rm/start/stop/restart Remove/Start/Stop/Restart the xteve" + echo " status Xteve status" + echo " port Xteve port" +} + +case ${ACTION} in + "install") + do_install + ;; + "upgrade") + do_install + ;; + "rm") + docker rm -f xteve + ;; + "start" | "stop" | "restart") + docker ${ACTION} xteve + ;; + "status") + docker ps --all -f 'name=xteve' --format '{{.State}}' + ;; + "port") + docker ps --all -f 'name=xteve' --format '{{.Ports}}' | grep -om1 '0.0.0.0:[0-9]*' | sed 's/0.0.0.0://' + ;; + *) + usage + exit 1 + ;; +esac diff --git a/xray-plugin/Makefile b/xray-plugin/Makefile index 73c0eea4a..2f8790285 100644 --- a/xray-plugin/Makefile +++ b/xray-plugin/Makefile @@ -5,12 +5,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=xray-plugin -PKG_VERSION:=1.6.5 +PKG_VERSION:=1.6.6 PKG_RELEASE:=$(AUTORELEASE) PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://codeload.github.com/teddysun/xray-plugin/tar.gz/v$(PKG_VERSION)? -PKG_HASH:=4ff73293d2a2752b03ca6f3e99f0df89058e5897942dd4beeeec7be9aab576b7 +PKG_HASH:=a4b79f79425ed4d0b5e7e6fcd20e8d68589a96e9199811f2324dd95cab40f9af PKG_LICENSE:=MIT PKG_LICENSE_FILES:=LICENSE