local uci = require "luci.model.uci".cursor()
local util = require "luci.util"
local nx = require "nixio"
+local url = uci:get("lxc", "lxc", "url")
function index()
if not nixio.fs.access("/etc/config/lxc") then
end
function lxc_get_downloadable()
- local target = lxc_get_arch_target()
- local templates = {}
+ local target = lxc_get_arch_target(url)
local ssl_status = lxc_get_ssl_status()
+ local templates = {}
local f = io.popen('sh /usr/share/lxc/templates/lxc-download --list %s --server %s 2>/dev/null'
- %{ ssl_status, util.shellquote(uci:get("lxc", "lxc", "url")) }, 'r')
+ %{ ssl_status, util.shellquote(url) }, 'r')
local line
for line in f:lines() do
local dist, version, dist_target = line:match("^(%S+)%s+(%S+)%s+(%S+)%s+default%s+%S+$")
return
end
- local ssl_status = lxc_get_ssl_status()
-
local src_err
+ local ssl_status = lxc_get_ssl_status()
local lxc_dist, lxc_release = lxc_template:match("^(.+):(.+)$")
luci.http.write(util.ubus("lxc", "create", {
name = lxc_name,
template = "download",
args = {
- "--server", uci:get("lxc", "lxc", "url"),
+ "--server", url,
"--dist", lxc_dist,
"--release", lxc_release,
- "--arch", lxc_get_arch_target(),
+ "--arch", lxc_get_arch_target(url),
ssl_status
}
}), src_err)
luci.http.write("0")
end
-function lxc_get_arch_target()
+function lxc_get_arch_target(url)
local target = nx.uname().machine
- local target_map = {
- armv5 = "armel",
- armv6 = "armel",
- armv7 = "armhf",
- armv8 = "arm64",
- x86_64 = "amd64"
- }
- local k, v
- for k, v in pairs(target_map) do
- if target:find("^" ..k.. "$") then
- return v
+ if url and url:match("images.linuxcontainers.org") then
+ local target_map = {
+ armv5 = "armel",
+ armv6 = "armel",
+ armv7 = "armhf",
+ armv8 = "arm64",
+ x86_64 = "amd64"
+ }
+ local k, v
+ for k, v in pairs(target_map) do
+ if target:find(k) then
+ return v
+ end
end
end
return target
m = Map("lxc", translate("LXC Containers"),
translate("<b>Please note:</b> For LXC Containers you need a custom OpenWrt image.<br />")
- .. translate("The image should include at least support for 'kernel cgroups', 'kernel namespaces' and 'miscellaneous LXC related options'."))
+ .. translate("The image should include at least support for 'kernel cgroups', 'kernel namespaces' and 'miscellaneous LXC related options' plus 'kmod-veth' for optional network support."))
m:section(SimpleSection).template = "lxc"
s = m:section(TypedSection, "lxc", translate("Options"))
local target = nx.uname().machine
-%>
-<fieldset class="cbi-section">
- <legend><%:Available Containers%></legend>
+<div class="cbi-section">
+ <h3><%:Available Containers%></h3>
<div class="cbi-section-node">
<div class="table cbi-section-table" id="t_lxc_list">
<div class="tr cbi-section-table-titles">
</div>
</div>
</div>
-</fieldset>
+</div>
-<fieldset class="cbi-section">
+<div class="cbi-section">
<span id="lxc-list-output"></span>
-</fieldset>
+</div>
<hr />
-<fieldset class="cbi-section">
- <legend><%:Create New Container%></legend>
+<div class="cbi-section">
+ <h3><%:Create New Container%></h3>
<div class="cbi-section-node">
<div class="table cbi-section-table" id="t_lxc_create">
<div class="tr cbi-section-table-titles">
</div>
</div>
</div>
-</fieldset>
+</div>
-<fieldset class="cbi-section">
+<div class="cbi-section">
<span id="lxc-add-output"></span>
-</fieldset>
+</div>
<hr />