luci-app-chinesesubfinder supported

This commit is contained in:
janson 2022-11-10 17:47:50 +08:00
parent c94a7b66e4
commit da606123b6
8 changed files with 290 additions and 0 deletions

View File

@ -0,0 +1,18 @@
include $(TOPDIR)/rules.mk
PKG_VERSION:=1.0.0-20221106
PKG_RELEASE:=
LUCI_TITLE:=LuCI support for ChineseSubFinder
LUCI_PKGARCH:=all
LUCI_DEPENDS:=+docker +luci-lib-taskd
define Package/luci-app-chinesesubfinder/conffiles
/etc/config/chinesesubfinder
endef
include $(TOPDIR)/feeds/luci/luci.mk
# call BuildPackage - OpenWrt buildroot signature

View File

@ -0,0 +1,7 @@
module("luci.controller.chinesesubfinder", package.seeall)
function index()
entry({"admin", "services", "chinesesubfinder"}, alias("admin", "services", "chinesesubfinder", "config"), _("ChineseSubFinder"), 30).dependent = true
entry({"admin", "services", "chinesesubfinder", "config"}, cbi("chinesesubfinder"))
end

View File

@ -0,0 +1,54 @@
--[[
LuCI - Lua Configuration Interface
]]--
local taskd = require "luci.model.tasks"
local chinesesubfinder_model = require "luci.model.chinesesubfinder"
local m, s, o
m = taskd.docker_map("chinesesubfinder", "chinesesubfinder", "/usr/libexec/istorec/chinesesubfinder.sh",
translate("ChineseSubFinder"),
translate("ChineseSubFinder brings together your personal videos, music, photos, and live television.")
.. translate("Official website:") .. ' <a href=\"https://chinesesubfinder.media/\" target=\"_blank\">https://chinesesubfinder.media/</a>')
s = m:section(SimpleSection, translate("Service Status"), translate("ChineseSubFinder status:"))
s:append(Template("chinesesubfinder/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, "http_port", translate("HTTP Port").."<b>*</b>")
o.rmempty = false
o.default = "19035"
o.datatype = "string"
o = s:option(Value, "web_port", "WEB Port<b>*</b>")
o.rmempty = false
o.default = "19037"
o.datatype = "string"
o = s:option(Value, "image_name", translate("Image").."<b>*</b>")
o.rmempty = false
o.datatype = "string"
o:value("allanpk716/chinesesubfinder:latest-lite", "allanpk716/chinesesubfinder:latest-lite")
o:value("allanpk716/chinesesubfinder:v0.43.1-lite", "allanpk716/chinesesubfinder:v0.43.1-lite")
o.default = "allanpk716/chinesesubfinder:latest-lite"
local blocks = chinesesubfinder_model.blocks()
local home = chinesesubfinder_model.home()
o = s:option(Value, "config_path", translate("Config path").."<b>*</b>")
o.rmempty = false
o.datatype = "string"
local paths, default_path = chinesesubfinder_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, "media_path", translate("Media path"), translate("Not required, all disk is mounted in") .. " <a href='/cgi-bin/luci/admin/services/linkease/file#/?path=/root/mnt' target='_blank'>/mnt</a>")
o.datatype = "string"
return m

View File

@ -0,0 +1,54 @@
local util = require "luci.util"
local jsonc = require "luci.jsonc"
local chinesesubfinder = {}
chinesesubfinder.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
chinesesubfinder.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["Downloads"] = uci:get_first("quickstart", "main", "dl_dir", home_dirs["main_dir"].."/Downloads")
home_dirs["Caches"] = uci:get_first("quickstart", "main", "tmp_dir", home_dirs["main_dir"].."/Caches")
return home_dirs
end
chinesesubfinder.find_paths = function(blocks, home_dirs, path_name)
local default_path = ''
local configs = {}
default_path = home_dirs[path_name] .. "/ChineseSubFinder"
if #blocks == 0 then
table.insert(configs, default_path)
else
for _, val in pairs(blocks) do
table.insert(configs, val .. "/" .. path_name .. "/ChineseSubFinder")
end
local without_conf_dir = "/root/" .. path_name .. "/ChineseSubFinder"
if default_path == without_conf_dir then
default_path = configs[1]
end
end
return configs, default_path
end
return chinesesubfinder

View File

@ -0,0 +1,31 @@
<%
local util = require "luci.util"
local container_status = util.trim(util.exec("/usr/libexec/istorec/chinesesubfinder.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"><%:ChineseSubFinder is running%></button>
<% else %>
<button class="cbi-button cbi-button-negative" disabled="true"><%:ChineseSubFinder is not running%></button>
<% end %>
</div>
</div>
<%
if container_running then
local port=util.trim(util.exec("/usr/libexec/istorec/chinesesubfinder.sh port"))
if port == "" then
port="19035"
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 ChineseSubFinder%>" onclick="window.open('http://'+location.hostname+':<%=port%>', '_blank')">
</div>
</div>
<% end %>

View File

@ -0,0 +1,41 @@
msgid ""
msgstr "Content-Type: text/plain; charset=UTF-8"
msgid "Official website:"
msgstr "官方网站:"
msgid "ChineseSubFinder brings together your personal videos, music, photos, and live television."
msgstr "ChineseSubFinder 是一个多媒体串流平台。"
msgid "Config path"
msgstr "配置文件路径"
msgid "HTTP Port"
msgstr "HTTP 端口"
msgid "Service Status"
msgstr "服务状态"
msgid "ChineseSubFinder status:"
msgstr "ChineseSubFinder 的状态信息如下:"
msgid "Setup"
msgstr "安装配置"
msgid "The following parameters will only take effect during installation or upgrade:"
msgstr "以下参数只在安装或者升级时才会生效:"
msgid "Status"
msgstr "状态"
msgid "ChineseSubFinder is running"
msgstr "ChineseSubFinder 运行中"
msgid "ChineseSubFinder is not running"
msgstr "ChineseSubFinder 未运行"
msgid "Open ChineseSubFinder"
msgstr "打开 ChineseSubFinder"
msgid "Not required, all disk is mounted in"
msgstr "可不填,所有硬盘都在"

View File

@ -0,0 +1,6 @@
config main
option 'http_port' '19035'
option 'web_port' '19037'
option 'image_name' 'allanpk716/chinesesubfinder:latest-lite'
option 'config_path' ''

View File

@ -0,0 +1,79 @@
#!/bin/sh
# Author Xiaobao(xiaobao@linkease.com)
ACTION=${1}
shift 1
do_install() {
local http_port=`uci get chinesesubfinder.@main[0].http_port 2>/dev/null`
local web_port=`uci get chinesesubfinder.@main[0].web_port 2>/dev/null`
local image_name=`uci get chinesesubfinder.@main[0].image_name 2>/dev/null`
local config=`uci get chinesesubfinder.@main[0].config_path 2>/dev/null`
local media=`uci get chinesesubfinder.@main[0].media_path 2>/dev/null`
[ -z "$image_name" ] && image_name="allanpk716/chinesesubfinder:latest-lite"
echo "docker pull ${image_name}"
docker pull ${image_name}
docker rm -f chinesesubfinder
if [ -z "$config" ]; then
echo "config path is empty!"
exit 1
fi
[ -z "$http_port" ] && http_port=19035
[ -z "$web_port" ] && web_port=19037
local cmd="docker run --restart=unless-stopped -d -v \"$config:/config\" --dns=172.17.0.1 -p $http_port:19035 -p $web_port:19037 \
--hostname chinesesubfinder \
--log-driver \"json-file\" \
--log-opt \"max-size=100m\" "
local tz="`cat /tmp/TZ`"
[ -z "$tz" ] || cmd="$cmd -e TZ=$tz"
[ -z "$media" ] || cmd="$cmd -v \"$media:/media\""
cmd="$cmd -v /mnt:/mnt"
mountpoint -q /mnt && cmd="$cmd:rslave"
cmd="$cmd --name chinesesubfinder \"$image_name\""
echo "$cmd"
eval "$cmd"
}
usage() {
echo "usage: $0 sub-command"
echo "where sub-command is one of:"
echo " install Install the chinesesubfinder"
echo " upgrade Upgrade the chinesesubfinder"
echo " rm/start/stop/restart Remove/Start/Stop/Restart the chinesesubfinder"
echo " status ChineseSubFinder status"
echo " port ChineseSubFinder port"
}
case ${ACTION} in
"install")
do_install
;;
"upgrade")
do_install
;;
"rm")
docker rm -f chinesesubfinder
;;
"start" | "stop" | "restart")
docker ${ACTION} chinesesubfinder
;;
"status")
docker ps --all -f 'name=chinesesubfinder' --format '{{.State}}'
;;
"port")
local http_port=`uci get chinesesubfinder.@main[0].http_port 2>/dev/null`
echo $http_port
;;
*)
usage
exit 1
;;
esac