update 2022-12-12 20:19:56

This commit is contained in:
github-actions[bot] 2022-12-12 20:19:56 +08:00
parent 3d5fd67ca4
commit b715837268
23 changed files with 536 additions and 32 deletions

View File

@ -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 <ptpt52@gmail.com>

View File

@ -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").."<b>*</b>")
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").."<b>*</b>")
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").."<b>*</b>", 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

View File

@ -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

View File

@ -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'

View File

@ -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() {

View File

@ -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

View File

@ -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").."<b>*</b>")
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").."<b>*</b>")
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

View File

@ -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

View File

@ -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'

View File

@ -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 \

View File

@ -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").."<b>*</b>")
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").."<b>*</b>")
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

View File

@ -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

View File

@ -1,3 +1,4 @@
config nextcloud
option 'port' '8082'
option 'config_path' '/root/nextcloud/config'
option 'config_path' ''
option 'image_name' 'nextcloud'

View File

@ -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\" \

View File

@ -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

View File

@ -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

View File

@ -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:") .. ' <a href=\"https://github.com/xteve-project/xTeVe\" target=\"_blank\">https://github.com/xteve-project/xTeVe</a>')
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").."<b>*</b>")
o.default = "32400"
o.datatype = "port"
o:depends("hostnet", 0)
o = s:option(Value, "image_name", translate("Image").."<b>*</b>")
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").."<b>*</b>")
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

View File

@ -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

View File

@ -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"
-%>
<div class="cbi-value">
<label class="cbi-value-title"><%:Status%></label>
<div class="cbi-value-field">
<% if container_running then %>
<button class="cbi-button cbi-button-success" disabled="true"><%:Xteve is running%></button>
<% else %>
<button class="cbi-button cbi-button-negative" disabled="true"><%:Xteve is not running%></button>
<% end %>
</div>
</div>
<%
if container_running then
local port=util.trim(util.exec("/usr/libexec/istorec/xteve.sh port"))
if port == "" then
port="34400"
end
-%>
<div class="cbi-value cbi-value-last">
<label class="cbi-value-title">&nbsp;</label>
<div class="cbi-value-field">
<input type="button" class="btn cbi-button cbi-button-apply" name="start" value="<%:Open Xteve%>" onclick="window.open('http://'+location.hostname+':<%=port%>/web/', '_blank')">
</div>
</div>
<% end %>

View File

@ -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"

View File

@ -0,0 +1,5 @@
config main
option 'port' '34400'
option 'image_name' 'alturismo/xteve_guide2go'
option 'config_path' ''

View File

@ -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

View File

@ -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