From 9d5273280e9cee564245532308eb9d64f048d006 Mon Sep 17 00:00:00 2001 From: CN_SZTL Date: Sat, 4 Apr 2020 21:40:24 +0800 Subject: [PATCH] luci-app-dockerman: sync with upstream source --- package/ctcgfw/luci-app-dockerman/Makefile | 4 +++- .../luasrc/controller/dockerman.lua | 2 +- .../luasrc/model/cbi/dockerman/container.lua | 14 +++++++------- .../luasrc/model/cbi/dockerman/overview.lua | 12 +++++------- .../luasrc/model/docker.lua | 19 ++++++++++--------- .../luasrc/view/dockerman/container.htm | 4 ++-- .../luasrc/view/dockerman/logs.htm | 8 +++++--- .../po/zh_Hans/dockerman.po | 7 +++++-- .../root/etc/uci-defaults/luci-app-dockerman | 1 + .../usr/share/dockerman/dockerd-config.lua | 6 ++++-- 10 files changed, 43 insertions(+), 34 deletions(-) diff --git a/package/ctcgfw/luci-app-dockerman/Makefile b/package/ctcgfw/luci-app-dockerman/Makefile index 88d4d90ce7..9bbd6857dc 100644 --- a/package/ctcgfw/luci-app-dockerman/Makefile +++ b/package/ctcgfw/luci-app-dockerman/Makefile @@ -1,7 +1,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-dockerman -PKG_VERSION:=v0.5.5 +PKG_VERSION:=v0.5.6 PKG_RELEASE:=beta PKG_MAINTAINER:=lisaac PKG_LICENSE:=AGPL-3.0 @@ -56,6 +56,8 @@ exit 0 endef define Package/$(PKG_NAME)/install + $(INSTALL_DIR) $(1)/usr + cp -pR $(PKG_BUILD_DIR)/root/usr/* $(1)/usr/ $(INSTALL_DIR) $(1)/etc/config cp -pR $(PKG_BUILD_DIR)/root/etc/config/* $(1)/etc/config/ $(INSTALL_DIR) $(1)/etc/init.d diff --git a/package/ctcgfw/luci-app-dockerman/luasrc/controller/dockerman.lua b/package/ctcgfw/luci-app-dockerman/luasrc/controller/dockerman.lua index 719be77734..939edd95c1 100644 --- a/package/ctcgfw/luci-app-dockerman/luasrc/controller/dockerman.lua +++ b/package/ctcgfw/luci-app-dockerman/luasrc/controller/dockerman.lua @@ -4,7 +4,7 @@ Copyright 2019 lisaac ]]-- require "luci.util" local docker = require "luci.model.docker" -local uci = require "luci.model.uci" +-- local uci = require "luci.model.uci" module("luci.controller.dockerman",package.seeall) diff --git a/package/ctcgfw/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua b/package/ctcgfw/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua index 598e1e33b7..0771231bb7 100644 --- a/package/ctcgfw/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua +++ b/package/ctcgfw/luci-app-dockerman/luasrc/model/cbi/dockerman/container.lua @@ -401,26 +401,26 @@ if action == "info" then end -- info end -elseif action == "edit" then - local editsection= m:section(SimpleSection) - d = editsection:option( Value, "cpus", translate("CPUs"), translate("Number of CPUs. Number is a fractional number. 0.000 means no limit.")) +elseif action == "resources" then + local resources_section= m:section(SimpleSection) + d = resources_section:option( Value, "cpus", translate("CPUs"), translate("Number of CPUs. Number is a fractional number. 0.000 means no limit.")) d.placeholder = "1.5" d.rmempty = true d.datatype="ufloat" d.default = container_info.HostConfig.NanoCpus / (10^9) - d = editsection:option(Value, "cpushares", translate("CPU Shares Weight"), translate("CPU shares relative weight, if 0 is set, the system will ignore the value and use the default of 1024.")) + d = resources_section:option(Value, "cpushares", translate("CPU Shares Weight"), translate("CPU shares relative weight, if 0 is set, the system will ignore the value and use the default of 1024.")) d.placeholder = "1024" d.rmempty = true d.datatype="uinteger" d.default = container_info.HostConfig.CpuShares - d = editsection:option(Value, "memory", translate("Memory"), translate("Memory limit (format: []). Number is a positive integer. Unit can be one of b, k, m, or g. Minimum is 4M.")) + d = resources_section:option(Value, "memory", translate("Memory"), translate("Memory limit (format: []). Number is a positive integer. Unit can be one of b, k, m, or g. Minimum is 4M.")) d.placeholder = "128m" d.rmempty = true d.default = container_info.HostConfig.Memory ~=0 and ((container_info.HostConfig.Memory / 1024 /1024) .. "M") or 0 - d = editsection:option(Value, "blkioweight", translate("Block IO Weight"), translate("Block IO weight (relative weight) accepts a weight value between 10 and 1000.")) + d = resources_section:option(Value, "blkioweight", translate("Block IO Weight"), translate("Block IO weight (relative weight) accepts a weight value between 10 and 1000.")) d.placeholder = "500" d.rmempty = true d.datatype="uinteger" @@ -457,7 +457,7 @@ elseif action == "edit" then else docker:clear_status() end - luci.http.redirect(luci.dispatcher.build_url("admin/docker/container/"..container_id.."/edit")) + luci.http.redirect(luci.dispatcher.build_url("admin/docker/container/"..container_id.."/resources")) end end elseif action == "file" then diff --git a/package/ctcgfw/luci-app-dockerman/luasrc/model/cbi/dockerman/overview.lua b/package/ctcgfw/luci-app-dockerman/luasrc/model/cbi/dockerman/overview.lua index 086a8597ba..2b2f2e396c 100644 --- a/package/ctcgfw/luci-app-dockerman/luasrc/model/cbi/dockerman/overview.lua +++ b/package/ctcgfw/luci-app-dockerman/luasrc/model/cbi/dockerman/overview.lua @@ -83,9 +83,9 @@ end s.template = "dockerman/overview" local section_dockerman = map_dockerman:section(NamedSection, "local", "section", translate("Setting")) -section_dockerman:tab("dockerman", translate("DockerMan"), translate("DockerMan Settings")) -section_dockerman:tab("ac", translate("Access Control"), translate("Access Control for the bridge network")) -section_dockerman:tab("daemon", translate("Docker Daemon"), translate("Docker Daemon Settings")) +section_dockerman:tab("daemon", translate("Docker Daemon")) +section_dockerman:tab("ac", translate("Access Control")) +section_dockerman:tab("dockerman", translate("DockerMan")) local socket_path = section_dockerman:taboption("dockerman", Value, "socket_path", translate("Docker Socket Path")) socket_path.default = "/var/run/docker.sock" @@ -118,8 +118,8 @@ if nixio.fs.access("/usr/bin/dockerd") then for i, v in ipairs(interfaces) do allowed_interface:value(v, v) end - local allowed_container = section_dockerman:taboption("ac", DynamicList, "ac_allowed_container", translate("Containers allowed to be accessed"), translate("Which container(s) can be accessed, even from interfaces that are not allowed, fill-in Container Id or Name")) - allowed_container.placeholder = "container name_or_id" + local allowed_container = section_dockerman:taboption("ac", DynamicList, "ac_allowed_container", translate("Containers allowed to be accessed"), translate("Which container(s) under bridge network can be accessed, even from interfaces that are not allowed, fill-in Container Id or Name")) + -- allowed_container.placeholder = "container name_or_id" if containers_list then for i, v in ipairs(containers_list) do if v.State == "running" and v.NetworkSettings and v.NetworkSettings.Networks and v.NetworkSettings.Networks.bridge and v.NetworkSettings.Networks.bridge.IPAddress then @@ -134,7 +134,6 @@ if nixio.fs.access("/usr/bin/dockerd") then local data_root = section_dockerman:taboption("daemon", Value, "daemon_data_root", translate("Docker Root Dir")) data_root.placeholder = "/opt/docker/" local registry_mirrors = section_dockerman:taboption("daemon", DynamicList, "daemon_registry_mirrors", translate("Registry Mirrors")) - registry_mirrors.placeholder = "https://hub-mirror.c.163.com" registry_mirrors:value("https://hub-mirror.c.163.com", "https://hub-mirror.c.163.com") local log_level = section_dockerman:taboption("daemon", ListValue, "daemon_log_level", translate("Log Level"), translate('Set the logging level')) @@ -144,7 +143,6 @@ if nixio.fs.access("/usr/bin/dockerd") then log_level:value("error", "error") log_level:value("fatal", "fatal") local hosts = section_dockerman:taboption("daemon", DynamicList, "daemon_hosts", translate("Server Host"), translate('Daemon unix socket (unix:///var/run/docker.sock) or TCP Remote Hosts (tcp://0.0.0.0:2375), default: unix:///var/run/docker.sock')) - hosts.placeholder = "unix:///var/run/docker.sock" hosts:value("unix:///var/run/docker.sock", "unix:///var/run/docker.sock") hosts:value("tcp://0.0.0.0:2375", "tcp://0.0.0.0:2375") hosts.rmempty = true diff --git a/package/ctcgfw/luci-app-dockerman/luasrc/model/docker.lua b/package/ctcgfw/luci-app-dockerman/luasrc/model/docker.lua index 659334b79c..d0fad4fd02 100644 --- a/package/ctcgfw/luci-app-dockerman/luasrc/model/docker.lua +++ b/package/ctcgfw/luci-app-dockerman/luasrc/model/docker.lua @@ -17,7 +17,6 @@ local update_image = function(self, image_name) if res and res.code == 200 and (#res.body > 0 and not res.body[#res.body].error and res.body[#res.body].status and (res.body[#res.body].status == "Status: Downloaded newer image for ".. image_name)) then _docker:append_status("done\n") else - res.code = 500 res.body.message = res.body[#res.body] and res.body[#res.body].error or (res.body.message or res.message) end new_image_id = self.images:inspect({name = image_name}).body.Id @@ -66,13 +65,14 @@ local map_subtract = function(t1, t2) end end if not found then - if v1 and type(v1) == "table" then - if next(v1) == nil then - res[k1] = { k = 'v' } - else - res[k1] = v1 - end - end + res[k1] = v1 + -- if v1 and type(v1) == "table" then + -- if next(v1) == nil then + -- res[k1] = { k = 'v' } + -- else + -- res[k1] = v1 + -- end + -- end end end @@ -139,7 +139,7 @@ local get_config = function(container_config, image_config) Type = v.Type, Target = v.Destination, Source = v.Source:match("([^/]+)\/_data"), - BindOptions = v.Type == "bind" and {Propagation = v.Propagation} or nil, + BindOptions = (v.Type == "bind") and {Propagation = v.Propagation} or nil, ReadOnly = not v.RW }) end @@ -195,6 +195,7 @@ local upgrade = function(self, request) -- create new container _docker:append_status("Container: Create" .. " " .. container_name .. "...") + create_body = _docker.clear_empty_tables(create_body) res = self.containers:create({name = container_name, body = create_body}) if res and res.code > 300 then return res end _docker:append_status("done\n") diff --git a/package/ctcgfw/luci-app-dockerman/luasrc/view/dockerman/container.htm b/package/ctcgfw/luci-app-dockerman/luasrc/view/dockerman/container.htm index afa000e00e..44f33fa4b0 100644 --- a/package/ctcgfw/luci-app-dockerman/luasrc/view/dockerman/container.htm +++ b/package/ctcgfw/luci-app-dockerman/luasrc/view/dockerman/container.htm @@ -1,7 +1,7 @@
  • <%:Info%>
  • -
  • <%:Edit%>
  • +
  • <%:Resources%>
  • <%:Stats%>
  • <%:File%>
  • <%:Console%>
  • @@ -14,7 +14,7 @@ let path = p.split(re) let container_id = path[1].split('/')[0] || path[1] let action = path[1].split('/')[1] || "info" - let actions=["info","edit","stats","file","console","logs"] + let actions=["info","resources","stats","file","console","logs"] actions.forEach(function(item) { document.getElementById("a-cbi-tab-container_" + item).href= path[0]+"/admin/docker/container/"+container_id+'/'+item if (action === item) { diff --git a/package/ctcgfw/luci-app-dockerman/luasrc/view/dockerman/logs.htm b/package/ctcgfw/luci-app-dockerman/luasrc/view/dockerman/logs.htm index c9035daf7c..1fc2b2d32b 100644 --- a/package/ctcgfw/luci-app-dockerman/luasrc/view/dockerman/logs.htm +++ b/package/ctcgfw/luci-app-dockerman/luasrc/view/dockerman/logs.htm @@ -1,11 +1,13 @@ -<% if self.title == "Events" then %> +<% if self.title == "Events" then %> <%+header%>

    <%:Docker%>

    -<%:Events%> +
    +

    <%:Events%>

    <% end %>
    - +
    <% if self.title == "Events" then %> +
    <%+footer%> <% end %> \ No newline at end of file diff --git a/package/ctcgfw/luci-app-dockerman/po/zh_Hans/dockerman.po b/package/ctcgfw/luci-app-dockerman/po/zh_Hans/dockerman.po index 73e8c11b67..27894bc377 100644 --- a/package/ctcgfw/luci-app-dockerman/po/zh_Hans/dockerman.po +++ b/package/ctcgfw/luci-app-dockerman/po/zh_Hans/dockerman.po @@ -283,6 +283,9 @@ msgstr "服务端" msgid "Daemon unix socket (unix:///var/run/docker.sock) or TCP Remote Hosts (tcp://0.0.0.0:2375), default: unix:///var/run/docker.sock" msgstr "后台 Unix socket (unix:///var/run/docker.sock) 或 TCP 远程服务端 (tcp://0.0.0.0:2375),默认: unix:///var/run/docker.sock" +msgid "Resources" +msgstr "资源" + msgid "Stats" msgstr "状态" @@ -424,8 +427,8 @@ msgstr "允许访问的接口" msgid "Containers allowed to be accessed" msgstr "允许被访问的容器" -msgid "Which container(s) can be accessed, even from interfaces that are not allowed, fill-in Container Id or Name" -msgstr "哪些容器可以被访问,即使访问来自不被允许的接口,填入容器ID或容器名" +msgid "Which container(s) under bridge network can be accessed, even from interfaces that are not allowed, fill-in Container Id or Name" +msgstr "哪些 bridge 网络下的容器可以被访问,即使访问来自不被允许的接口,填入容器ID或容器名" msgid "Which interface(s) can access containers under the bridge network, fill-in Interface Name" msgstr "哪些接口可以访问 bridge 网络下的容器, 填入接口名" diff --git a/package/ctcgfw/luci-app-dockerman/root/etc/uci-defaults/luci-app-dockerman b/package/ctcgfw/luci-app-dockerman/root/etc/uci-defaults/luci-app-dockerman index 1c67049cef..eab5d73547 100755 --- a/package/ctcgfw/luci-app-dockerman/root/etc/uci-defaults/luci-app-dockerman +++ b/package/ctcgfw/luci-app-dockerman/root/etc/uci-defaults/luci-app-dockerman @@ -9,6 +9,7 @@ uci -q batch <<-EOF >/dev/null commit ucitrack EOF [ -x "$(which dockerd)" ] && chmod +x /etc/init.d/dockerman && /etc/init.d/dockerd disable && /etc/init.d/dockerman enable >/dev/null 2>&1 +sed -i 's/self:cfgvalue(section) or {}/self:cfgvalue(section) or self.default or {}/' /usr/lib/lua/luci/view/cbi/dynlist.htm /etc/init.d/uhttpd restart >/dev/null 2>&1 rm -fr /tmp/luci-indexcache /tmp/luci-modulecache >/dev/null 2>&1 exit 0 \ No newline at end of file diff --git a/package/ctcgfw/luci-app-dockerman/root/usr/share/dockerman/dockerd-config.lua b/package/ctcgfw/luci-app-dockerman/root/usr/share/dockerman/dockerd-config.lua index 16dcb00b43..a51354c7a6 100644 --- a/package/ctcgfw/luci-app-dockerman/root/usr/share/dockerman/dockerd-config.lua +++ b/package/ctcgfw/luci-app-dockerman/root/usr/share/dockerman/dockerd-config.lua @@ -9,8 +9,8 @@ raw_json = luci.jsonc.parse(raw_json_str) or {} new_json = {} new_json["data-root"] = uci:get("dockerman", "local", "daemon_data_root") -new_json["hosts"] = uci:get("dockerman", "local", "daemon_hosts") -new_json["registry-mirrors"] = uci:get("dockerman", "local", "daemon_registry_mirrors") +new_json["hosts"] = uci:get("dockerman", "local", "daemon_hosts") or {} +new_json["registry-mirrors"] = uci:get("dockerman", "local", "daemon_registry_mirrors") or {} new_json["log-level"] = uci:get("dockerman", "local", "daemon_log_level") function comp(raw, new) @@ -43,6 +43,8 @@ function comp(raw, new) end comp(raw_json, new_json) if changed then + if next(raw_json["registry-mirrors"]) == nil then raw_json["registry-mirrors"] = nil end + if next(raw_json["hosts"]) == nil then raw_json["hosts"] = nil end fs.writefile(raw_file_dir, luci.jsonc.stringify(raw_json, true):gsub("\\", "")) os.exit(0) else