Developing lightweight computation at the DSG edge

Commit 6b0a9bef authored by Roger Pueyo Centelles's avatar Roger Pueyo Centelles
Browse files

[qmp-system] Add mesh name to hostname (finish #474)



Now the CN mesh name can be prepended ad lib to the hostname.
Signed-off-by: default avatarRoger Pueyo Centelles <roger.pueyo@guifi.net>
parent 472e80fc
...@@ -37,6 +37,9 @@ config 'qmp' 'node' ...@@ -37,6 +37,9 @@ config 'qmp' 'node'
# Append device_id to device_name in the device hostname # Append device_id to device_name in the device hostname
option append_id '1' option append_id '1'
# Prepend mesh_name to device_name in the device hostname,
option prepend_cnm '1'
# Temporay key file for session (autogenerated in each boot). # Temporay key file for session (autogenerated in each boot).
option key '/tmp/qmp_key' option key '/tmp/qmp_key'
......
...@@ -14,28 +14,46 @@ qmp_configure_system() { ...@@ -14,28 +14,46 @@ qmp_configure_system() {
else else
local device_id=$(qmp_get_id_hostname) local device_id=$(qmp_get_id_hostname)
device_id="$(echo -n $device_id | tr -cd 'ABCDEFabcdef0123456789' | tail -c 4)" device_id="$(echo -n $device_id | tr -cd 'ABCDEFabcdef0123456789' | tail -c 4)"
[ $(echo -n $device_id | wc -c) -lt 4 ] && { fi
qmp_log "Warning, device_id not defined properly, using failsafe 0000"
device_id=0000 [ $(echo -n $device_id | wc -c) -lt 4 ] && {
} qmp_log "Warning, device_id not defined properly, using failsafe 0000"
device_id=0000
qmp_uci_set node.device_id $device_id qmp_uci_set node.device_id $device_id
}
if [ -n "$(qmp_uci_get node.mesh_name)" ]; then
local mesh_name=$(qmp_uci_get node.mesh_name)
else
local mesh_name=""
fi fi
local device_name="$(qmp_uci_get node.device_name)" local device_name="$(qmp_uci_get node.device_name)"
[ -z "$device_name" ] && device_name="qMp" && qmp_uci_set node.device_name $device_name [ -z "$device_name" ] && device_name="qMp" && qmp_uci_set node.device_name $device_name
# set hostname # set hostname
local append_id="$(uci get qmp.node.append_id)" local append_id=0
if [ -n "$(qmp_uci_get node.append_id)" ]; then
if [ $append_id -eq 0 ]; then append_id="$(uci get qmp.node.append_id)"
uci set system.@system[0].hostname="${device_name}"
echo "${device_name}" > /proc/sys/kernel/hostname
else
uci set system.@system[0].hostname="${device_name}-${device_id}"
echo "${device_name}-${device_id}" > /proc/sys/kernel/hostname
fi fi
uci commit system
local prepend_cnm=0
if [ -n "$(qmp_uci_get node.prepend_cnm)" ]; then
prepend_cnm="$(uci get qmp.node.prepend_cnm)"
fi
if [ $append_id -eq 1 ]; then
device_name="${device_name}-${device_id}"
fi
if [ $prepend_cnm -eq 1 ] && [ -n "${mesh_name}" ]; then
device_name="${mesh_name}-${device_name}"
fi
uci set system.@system[0].hostname="${device_name}"
echo "${device_name}" > /proc/sys/kernel/hostname
uci commit system
uci set uhttpd.main.listen_http="80" uci set uhttpd.main.listen_http="80"
uci set uhttpd.main.listen_https="443" uci set uhttpd.main.listen_https="443"
......
...@@ -95,17 +95,17 @@ local guifimeshname = m:field(Value, "_guifimeshname", " ", translate("Select a ...@@ -95,17 +95,17 @@ local guifimeshname = m:field(Value, "_guifimeshname", " ", translate("Select a
guifimeshname:depends("_communityname","Guifi.net") guifimeshname:depends("_communityname","Guifi.net")
guifimeshname.datatype="string" guifimeshname.datatype="string"
guifimeshname.default="GuifiSants" guifimeshname.default="GuifiSants"
guifimeshname:value("GuifiBaix", "Baix Llobregat (GuifiBaix)") guifimeshname:value("GB", "Baix Llobregat - GuifiBaix (GB)")
guifimeshname:value("Bellvitge", "Bellvitge (HW)") guifimeshname:value("HW", "Bellvitge (HW)")
guifimeshname:value("GraciaSenseFils", "Gràcia Sense Fils (GSF)") guifimeshname:value("GSF", "Gràcia Sense Fils (GSF)")
guifimeshname:value("PoblenouSenseFils", "Poblenou Sense Fils (P9SF)") guifimeshname:value("P9SF", "Poblenou Sense Fils (P9SF)")
guifimeshname:value("Quesa", "Quesa (QUESA)") guifimeshname:value("QS", "Quesa (QS)")
guifimeshname:value("Raval", "Raval (RAV)") guifimeshname:value("RAV", "Raval (RAV)")
guifimeshname:value("GuifiSants", "Sants-Les Corts-UPC (GS)") guifimeshname:value("GS", "Sants-Les Corts-UPC (GS)")
guifimeshname:value("SantAndreu", "Sant Andreu (SAND)") guifimeshname:value("SAND", "Sant Andreu (SAND)")
guifimeshname:value("Vallcarca", "Vallcarca (VKK)") guifimeshname:value("VKK", "Vallcarca (VKK)")
guifimeshname:value("Herguijuela", "La Herguijuela (LHer)") guifimeshname:value("LHER", "La Herguijuela (LHER)")
guifimeshname:value("CepedaLaMora", "Cepeda la Mora (CPD)") guifimeshname:value("CPD", "Cepeda la Mora (CPD)")
if uciout:get("qmp","node","mesh_name") ~= nil then if uciout:get("qmp","node","mesh_name") ~= nil then
guifimeshname.default=uciout:get("qmp","node","mesh_name") guifimeshname.default=uciout:get("qmp","node","mesh_name")
......
...@@ -28,6 +28,7 @@ devices = qmpinfo.get_devices() ...@@ -28,6 +28,7 @@ devices = qmpinfo.get_devices()
devname = uci:get("qmp","node","device_name") devname = uci:get("qmp","node","device_name")
devid = uci:get("qmp","node","device_id") devid = uci:get("qmp","node","device_id")
meshname = uci:get("qmp","node","mesh_name")
if (devname == nil or devname == '') then if (devname == nil or devname == '') then
devname = "qMp" devname = "qMp"
...@@ -37,6 +38,10 @@ if (devid == nil or devid == '') then ...@@ -37,6 +38,10 @@ if (devid == nil or devid == '') then
devid = "0000" devid = "0000"
end end
if (meshname == nil or meshname == '') then
meshname = "GS"
end
m = Map("qmp", "qMp node settings", translate("This page allows to configure the basic node settings, like the device identification, location and contact details.") .. "<br/> <br/>" .. translate("You can check the on-line documentation at <a href=\"https://www.qmp.cat/Web_interface\">https://www.qmp.cat/Web_interface</a> for more information about the different options.")) m = Map("qmp", "qMp node settings", translate("This page allows to configure the basic node settings, like the device identification, location and contact details.") .. "<br/> <br/>" .. translate("You can check the on-line documentation at <a href=\"https://www.qmp.cat/Web_interface\">https://www.qmp.cat/Web_interface</a> for more information about the different options."))
device_section = m:section(NamedSection, "node", "qmp", translate("Device identification"), translate("The following settings are used to identify the device all over the mesh network.")) device_section = m:section(NamedSection, "node", "qmp", translate("Device identification"), translate("The following settings are used to identify the device all over the mesh network."))
...@@ -54,10 +59,8 @@ device_id.datatype = "string" ...@@ -54,10 +59,8 @@ device_id.datatype = "string"
device_id.optional = false device_id.optional = false
device_id.rmempty = false device_id.rmempty = false
append_id = device_section:option(ListValue, "append_id", translate("Append ID"),translatef("Append the device ID to the device name (e.g., %s-%s)", devname, devid)) append_id = device_section:option(Flag, "append_id", translate("Append ID"),translatef("Append the device ID to the device name (e.g., %s-%s)", devname, devid))
append_id:value("0", translate ("No")) append_id.default = 1
append_id:value("1", translate("Yes"))
append_id.default = "1"
append_id.optional = false append_id.optional = false
append_id.rmempty = false append_id.rmempty = false
...@@ -71,17 +74,23 @@ community_name:value("NYCMesh","NYC Mesh") ...@@ -71,17 +74,23 @@ community_name:value("NYCMesh","NYC Mesh")
guifimesh_name = device_section:option(Value, "mesh_name", translate ("Mesh Network name"), translate("Select a predefined community subnetwork or type your own name (optional).")) guifimesh_name = device_section:option(Value, "mesh_name", translate ("Mesh Network name"), translate("Select a predefined community subnetwork or type your own name (optional)."))
guifimesh_name:depends("community_name","Guifi.net") guifimesh_name:depends("community_name","Guifi.net")
guifimesh_name.datatype="string" guifimesh_name.datatype="string"
guifimesh_name:value("GuifiBaix", "Baix Llobregat (GuifiBaix)") guifimesh_name.default="GS"
guifimesh_name:value("Bellvitge", "Bellvitge (HW)") guifimesh_name:value("GB", "Baix Llobregat - GuifiBaix (GB)")
guifimesh_name:value("GraciaSenseFils", "Gràcia Sense Fils (GSF)") guifimesh_name:value("HW", "Bellvitge (HW)")
guifimesh_name:value("PoblenouSenseFils", "Poblenou Sense Fils (P9SF)") guifimesh_name:value("GSF", "Gràcia Sense Fils (GSF)")
guifimesh_name:value("Quesa", "Quesa (QUESA)") guifimesh_name:value("P9SF", "Poblenou Sense Fils (P9SF)")
guifimesh_name:value("Raval", "Raval (RAV)") guifimesh_name:value("QS", "Quesa (QS)")
guifimesh_name:value("GuifiSants", "Sants-Les Corts-UPC (GS)") guifimesh_name:value("RAV", "Raval (RAV)")
guifimesh_name:value("SantAndreu", "Sant Andreu (SAND)") guifimesh_name:value("GS", "Sants-Les Corts-UPC (GS)")
guifimesh_name:value("Vallcarca", "Vallcarca (VKK)") guifimesh_name:value("SAND", "Sant Andreu (SAND)")
guifimesh_name:value("Herguijuela", "La Herguijuela (LHer)") guifimesh_name:value("VV", "Vallcarca (VKK)")
guifimesh_name:value("CepedaLaMora", "Cepeda la Mora (CPD)") guifimesh_name:value("LHER", "La Herguijuela (LHER)")
guifimesh_name:value("CPD", "Cepeda la Mora (CPD)")
prepend_cnm = device_section:option(Flag, "prepend_cnm", translate("Prepend mesh ID"),translatef("Prepend the mesh network ID to the device name (e.g., %s-%s-%s)", meshname, devname, devid))
prepend_cnm.default = 1
prepend_cnm.optional = false
prepend_cnm.rmempty = false
primary_device = device_section:option(Value,"primary_device", translate("Primary network interface"), translate("The name of the node's primary network interface. The last four digits of this device's MAC address will be appended to the node name.")) primary_device = device_section:option(Value,"primary_device", translate("Primary network interface"), translate("The name of the node's primary network interface. The last four digits of this device's MAC address will be appended to the node name."))
primary_device.datatype = "network" primary_device.datatype = "network"
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment