-
Notifications
You must be signed in to change notification settings - Fork 232
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
12 changed files
with
334 additions
and
6 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
|
||
forkapp/forkapp | ||
tools/forkapp |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
|
||
|
||
include $(TOPDIR)/rules.mk | ||
|
||
PKG_VERSION:=1.0.2-20231208 | ||
PKG_RELEASE:= | ||
|
||
LUCI_TITLE:=LuCI support for TypeCho | ||
LUCI_PKGARCH:=all | ||
LUCI_DEPENDS:=+lsblk +docker +luci-lib-taskd +luci-lib-docker | ||
|
||
define Package/luci-app-typecho/conffiles | ||
/etc/config/typecho | ||
endef | ||
|
||
include $(TOPDIR)/feeds/luci/luci.mk | ||
|
||
# call BuildPackage - OpenWrt buildroot signature |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
|
||
module("luci.controller.typecho", package.seeall) | ||
|
||
function index() | ||
entry({"admin", "services", "typecho"}, alias("admin", "services", "typecho", "config"), _("TypeCho"), 30).dependent = true | ||
entry({"admin", "services", "typecho", "config"}, cbi("typecho")) | ||
end |
60 changes: 60 additions & 0 deletions
60
applications/luci-app-typecho/luasrc/model/cbi/typecho.lua
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
--[[ | ||
LuCI - Lua Configuration Interface | ||
]]-- | ||
|
||
local taskd = require "luci.model.tasks" | ||
local docker = require "luci.docker" | ||
local typecho_model = require "luci.model.typecho" | ||
local m, s, o | ||
|
||
m = taskd.docker_map("typecho", "typecho", "/usr/libexec/istorec/typecho.sh", | ||
translate("TypeCho"), | ||
translate("TypeCho is an streaming media service and a client–server media player platform, made by TypeCho, Inc.") | ||
.. translate("Official website:") .. ' <a href=\"https://www.typecho.tv/\" target=\"_blank\">https://www.typecho.tv/</a>') | ||
|
||
local dk = docker.new({socket_path="/var/run/docker.sock"}) | ||
local dockerd_running = dk:_ping().code == 200 | ||
local docker_info = dockerd_running and dk:info().body or {} | ||
local docker_aspace = 0 | ||
if docker_info.DockerRootDir then | ||
local statvfs = nixio.fs.statvfs(docker_info.DockerRootDir) | ||
docker_aspace = statvfs and (statvfs.bavail * statvfs.bsize) or 0 | ||
end | ||
|
||
s = m:section(SimpleSection, translate("Service Status"), translate("TypeCho status:")) | ||
s:append(Template("typecho/status")) | ||
|
||
s = m:section(TypedSection, "main", translate("Setup"), | ||
(docker_aspace < 2147483648 and | ||
(translate("The free space of Docker is less than 2GB, which may cause the installation to fail.") | ||
.. "<br>") or "") .. 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 = "9080" | ||
o.datatype = "port" | ||
o:depends("hostnet", 0) | ||
|
||
o = s:option(Value, "image_name", translate("Image").."<b>*</b>") | ||
o.rmempty = false | ||
o.datatype = "string" | ||
o.default = "joyqi/typecho:nightly-php7.4" | ||
--if "x86_64" == docker_info.Architecture then | ||
--end | ||
o:value("joyqi/typecho:nightly-php7.4", "joyqi/typecho:nightly-php7.4") | ||
|
||
local blocks = typecho_model.blocks() | ||
local home = typecho_model.home() | ||
|
||
o = s:option(Value, "config_path", translate("Config path").."<b>*</b>") | ||
o.rmempty = false | ||
o.datatype = "string" | ||
|
||
local paths, default_path = typecho_model.find_paths(blocks, home, "Configs") | ||
for _, val in pairs(paths) do | ||
o:value(val, val) | ||
end | ||
o.default = default_path | ||
|
||
return m |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
local util = require "luci.util" | ||
local jsonc = require "luci.jsonc" | ||
|
||
local typecho = {} | ||
|
||
typecho.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 | ||
|
||
typecho.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 | ||
|
||
typecho.find_paths = function(blocks, home_dirs, path_name) | ||
local default_path = '' | ||
local configs = {} | ||
|
||
default_path = home_dirs[path_name] .. "/TypeCho" | ||
if #blocks == 0 then | ||
table.insert(configs, default_path) | ||
else | ||
for _, val in pairs(blocks) do | ||
table.insert(configs, val .. "/" .. path_name .. "/TypeCho") | ||
end | ||
local without_conf_dir = "/root/" .. path_name .. "/TypeCho" | ||
if default_path == without_conf_dir then | ||
default_path = configs[1] | ||
end | ||
end | ||
|
||
return configs, default_path | ||
end | ||
|
||
return typecho |
31 changes: 31 additions & 0 deletions
31
applications/luci-app-typecho/luasrc/view/typecho/status.htm
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
<% | ||
local util = require "luci.util" | ||
local container_status = util.trim(util.exec("/usr/libexec/istorec/typecho.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"><%:TypeCho is running%></button> | ||
<% else %> | ||
<button class="cbi-button cbi-button-negative" disabled="true"><%:TypeCho is not running%></button> | ||
<% end %> | ||
</div> | ||
</div> | ||
<% | ||
if container_running then | ||
local port=util.trim(util.exec("/usr/libexec/istorec/typecho.sh port")) | ||
if port == "" then | ||
port="9080" | ||
end | ||
-%> | ||
<div class="cbi-value cbi-value-last"> | ||
<label class="cbi-value-title"> </label> | ||
<div class="cbi-value-field"> | ||
|
||
<input type="button" class="btn cbi-button cbi-button-apply" name="start" value="<%:Open TypeCho%>" onclick="window.open('http://'+location.hostname+':<%=port%>/web/', '_blank')"> | ||
</div> | ||
</div> | ||
<% end %> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
msgid "" | ||
msgstr "Content-Type: text/plain; charset=UTF-8" | ||
|
||
msgid "Official website:" | ||
msgstr "官方网站:" | ||
|
||
msgid "TypeCho is an streaming media service and a client–server media player platform, made by TypeCho, Inc." | ||
msgstr "TypeCho 是一个多媒体串流平台。" | ||
|
||
msgid "Config path" | ||
msgstr "配置文件路径" | ||
|
||
msgid "Port" | ||
msgstr "端口" | ||
|
||
msgid "Service Status" | ||
msgstr "服务状态" | ||
|
||
msgid "TypeCho status:" | ||
msgstr "TypeCho 的状态信息如下:" | ||
|
||
msgid "Setup" | ||
msgstr "安装配置" | ||
|
||
msgid "The following parameters will only take effect during installation or upgrade:" | ||
msgstr "以下参数只在安装或者升级时才会生效:" | ||
|
||
msgid "Status" | ||
msgstr "状态" | ||
|
||
msgid "TypeCho is running" | ||
msgstr "TypeCho 运行中" | ||
|
||
msgid "TypeCho is not running" | ||
msgstr "TypeCho 未运行" | ||
|
||
msgid "Open TypeCho" | ||
msgstr "打开 TypeCho" | ||
|
||
msgid "Not required, all disk will be mounted under %s" | ||
msgstr "可不填,所有硬盘都会挂载到 %s 下" | ||
|
||
msgid "TypeCho running in host network, for DLNA application. Port is always 9080 if enabled" | ||
msgstr "在宿主网络运行 TypeCho,以支持 DLNA 等应用,例如投屏,如果启用则端口固定为9080" | ||
|
||
msgid "The free space of Docker is less than 2GB, which may cause the installation to fail." | ||
msgstr "Docker 可用空间已不足2GB,可能导致安装失败。" | ||
|
||
msgid "TypeCho Claim Token" | ||
msgstr "TypeCho Claim 令牌" | ||
|
||
msgid "Obtain token from %s" | ||
msgstr "从 %s 获取令牌" | ||
|
||
msgid "Please make sure there has enough space" | ||
msgstr "请确保有足够空间" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
config main | ||
option 'hostnet' '0' | ||
option 'claim_token' '' | ||
option 'port' '9080' | ||
option 'config_path' '' | ||
|
11 changes: 11 additions & 0 deletions
11
applications/luci-app-typecho/root/etc/uci-defaults/luci-app-typecho
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
#!/bin/sh | ||
|
||
image_name=`uci get typecho.@main[0].image_name 2>/dev/null` | ||
|
||
if [ "$image_name" == "typechoinc/pms-docker:latest" -a "`uname -m`" != "x86_64" ]; then | ||
uci -q batch <<-EOF >/dev/null | ||
set typecho.@main[0].image_name="" | ||
commit typecho | ||
EOF | ||
fi | ||
exit 0 |
73 changes: 73 additions & 0 deletions
73
applications/luci-app-typecho/root/usr/libexec/istorec/typecho.sh
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
#!/bin/sh | ||
# Author Xiaobao(xiaobao@linkease.com) | ||
|
||
ACTION=${1} | ||
shift 1 | ||
|
||
do_install() { | ||
local port=`uci get typecho.@main[0].port 2>/dev/null` | ||
local image_name=`uci get typecho.@main[0].image_name 2>/dev/null` | ||
local config=`uci get typecho.@main[0].config_path 2>/dev/null` | ||
|
||
if [ -z "$config" ]; then | ||
echo "config path is empty!" | ||
exit 1 | ||
fi | ||
|
||
[ -z "$image_name" ] && image_name="joyqi/typecho:nightly-php7.4" | ||
echo "docker pull ${image_name}" | ||
docker pull ${image_name} | ||
docker rm -f typecho | ||
|
||
[ -z "$port" ] && port=9080 | ||
|
||
local cmd="docker run --restart=unless-stopped -d -h TypeChoServer -v \"$config:/config\" " | ||
|
||
cmd="$cmd\ | ||
--dns=172.17.0.1 \ | ||
-p $port:80 " | ||
|
||
local tz="`uci get system.@system[0].zonename | sed 's/ /_/g'`" | ||
[ -z "$tz" ] || cmd="$cmd -e TZ=$tz" | ||
cmd="$cmd -v /mnt:/mnt" | ||
mountpoint -q /mnt && cmd="$cmd:rslave" | ||
cmd="$cmd --name typecho \"$image_name\"" | ||
|
||
echo "$cmd" | ||
eval "$cmd" | ||
} | ||
|
||
usage() { | ||
echo "usage: $0 sub-command" | ||
echo "where sub-command is one of:" | ||
echo " install Install the typecho" | ||
echo " upgrade Upgrade the typecho" | ||
echo " rm/start/stop/restart Remove/Start/Stop/Restart the typecho" | ||
echo " status TypeCho status" | ||
echo " port TypeCho port" | ||
} | ||
|
||
case ${ACTION} in | ||
"install") | ||
do_install | ||
;; | ||
"upgrade") | ||
do_install | ||
;; | ||
"rm") | ||
docker rm -f typecho | ||
;; | ||
"start" | "stop" | "restart") | ||
docker ${ACTION} typecho | ||
;; | ||
"status") | ||
docker ps --all -f 'name=typecho' --format '{{.State}}' | ||
;; | ||
"port") | ||
docker ps --all -f 'name=typecho' --format '{{.Ports}}' | grep -om1 '0.0.0.0:[0-9]*->9080/tcp' | sed 's/0.0.0.0:\([0-9]*\)->.*/\1/' | ||
;; | ||
*) | ||
usage | ||
exit 1 | ||
;; | ||
esac |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters