Skip to content
Snippets Groups Projects
Unverified Commit 819c7d59 authored by Matthias Schiffer's avatar Matthias Schiffer
Browse files

gluon-config-mode-*, gluon-luci-*: add escaping for many user- or site-defined strings

Allows weird release numbers, models and site names, and prepares support
for pretty hostnames.
parent 79a49a15
No related branches found
No related tags found
No related merge requests found
...@@ -22,11 +22,11 @@ msgstr "" ...@@ -22,11 +22,11 @@ msgstr ""
"er auf den Servern des Entenhausener Freifunk-Projektes eingetragen wurde, " "er auf den Servern des Entenhausener Freifunk-Projektes eingetragen wurde, "
"kann sich dein Knoten mit dem Entenhausener Mesh-VPN verbinden. Bitte " "kann sich dein Knoten mit dem Entenhausener Mesh-VPN verbinden. Bitte "
"schicke dazu diesen Schlüssel und den Namen deines Knotens " "schicke dazu diesen Schlüssel und den Namen deines Knotens "
"(<em><%=hostname%></em>) an " "(<em><%=escape(hostname)%></em>) an "
"<a href=\"mailto:keys@entenhausen.freifunk.net\">keys@entenhausen.freifunk.net</a>." "<a href=\"mailto:keys@entenhausen.freifunk.net\">keys@entenhausen.freifunk.net</a>."
"</p>" "</p>"
"<div class=\"the-key\">" "<div class=\"the-key\">"
" # <%= hostname %>" " # <%= escape(hostname) %>"
" <br/>" " <br/>"
"<%= pubkey %>" "<%= pubkey %>"
"</div>" "</div>"
......
...@@ -20,11 +20,11 @@ msgstr "" ...@@ -20,11 +20,11 @@ msgstr ""
"<p>This is your Freifunk node's public key. The node won't be able to " "<p>This is your Freifunk node's public key. The node won't be able to "
"connect to the mesh VPN until the key has been registered on the Freifunk " "connect to the mesh VPN until the key has been registered on the Freifunk "
"Duckburg servers. " "Duckburg servers. "
"To register, send the key together with your node's name (<em><%=hostname%></em>) to " "To register, send the key together with your node's name (<em><%=escape(hostname)%></em>) to "
"<a href=\"mailto:keys@entenhausen.freifunk.net\">keys@entenhausen.freifunk.net</a>." "<a href=\"mailto:keys@entenhausen.freifunk.net\">keys@entenhausen.freifunk.net</a>."
"</p>" "</p>"
"<div class=\"the-key\">" "<div class=\"the-key\">"
" # <%= hostname %>" " # <%= escape(hostname) %>"
" <br/>" " <br/>"
"<%= pubkey %>" "<%= pubkey %>"
"</div>" "</div>"
......
...@@ -22,11 +22,11 @@ msgstr "" ...@@ -22,11 +22,11 @@ msgstr ""
"entrée sur les serveurs de votre groupe de Freifunk votre nœud pourra se connecter " "entrée sur les serveurs de votre groupe de Freifunk votre nœud pourra se connecter "
"sur les serveur Mesh-VPN de votre groupe Freifunk. Veuillez envoyer la clé avec le " "sur les serveur Mesh-VPN de votre groupe Freifunk. Veuillez envoyer la clé avec le "
"nom de votre nœud " "nom de votre nœud "
"(<em><%=hostname%></em>) à " "(<em><%=escape(hostname)%></em>) à "
"<a href=\"mailto:keys@entenhausen.freifunk.net\">keys@entenhausen.freifunk.net</a>." "<a href=\"mailto:keys@entenhausen.freifunk.net\">keys@entenhausen.freifunk.net</a>."
"</p>" "</p>"
"<div class=\"the-key\">" "<div class=\"the-key\">"
" # <%= hostname %>" " # <%= escape(hostname) %>"
" <br/>" " <br/>"
"<%= pubkey %>" "<%= pubkey %>"
"</div>" "</div>"
......
<%- <%-
local gluon_luci = require 'gluon.luci'
local sysconfig = require 'gluon.sysconfig' local sysconfig = require 'gluon.sysconfig'
local i18n = require 'luci.i18n' local i18n = require 'luci.i18n'
local template = require 'luci.template' local template = require 'luci.template'
...@@ -6,7 +7,12 @@ ...@@ -6,7 +7,12 @@
<h2><%:Welcome!%></h2> <h2><%:Welcome!%></h2>
<p> <p>
<%= template.render_string(i18n.translate('gluon-config-mode:welcome'), {hostname=hostname, sysconfig=sysconfig}) %> <%= template.render_string(i18n.translate('gluon-config-mode:welcome'), {
hostname = hostname,
sysconfig = sysconfig,
escape = gluon_luci.escape,
urlescape = gluon_luci.urlescape,
}) %>
</p> </p>
<% if not self.embedded then %> <% if not self.embedded then %>
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<%=luci.i18n.context.lang%>" lang="<%=luci.i18n.context.lang%>"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<%=luci.i18n.context.lang%>" lang="<%=luci.i18n.context.lang%>">
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><%=hostname%> is rebooting</title> <title><%=escape(hostname)%> is rebooting</title>
<link rel="stylesheet" type="text/css" media="screen" href="<%=media%>/cascade.css" /> <link rel="stylesheet" type="text/css" media="screen" href="<%=media%>/cascade.css" />
</head> </head>
<body> <body>
......
...@@ -48,6 +48,7 @@ function action_reboot() ...@@ -48,6 +48,7 @@ function action_reboot()
uci:save("gluon-setup-mode") uci:save("gluon-setup-mode")
uci:commit("gluon-setup-mode") uci:commit("gluon-setup-mode")
local gluon_luci = require "gluon.luci"
local fs = require "nixio.fs" local fs = require "nixio.fs"
local util = require "nixio.util" local util = require "nixio.util"
...@@ -73,6 +74,8 @@ function action_reboot() ...@@ -73,6 +74,8 @@ function action_reboot()
{ {
parts = parts, parts = parts,
hostname = hostname, hostname = hostname,
escape = gluon_luci.escape,
urlescape = gluon_luci.urlescape,
} }
) )
......
...@@ -6,6 +6,8 @@ if meshvpn_enabled ~= "1" then ...@@ -6,6 +6,8 @@ if meshvpn_enabled ~= "1" then
else else
local i18n = require "luci.i18n" local i18n = require "luci.i18n"
local util = require "luci.util" local util = require "luci.util"
local gluon_luci = require 'gluon.luci'
local site = require 'gluon.site_config' local site = require 'gluon.site_config'
local sysconfig = require 'gluon.sysconfig' local sysconfig = require 'gluon.sysconfig'
...@@ -16,11 +18,14 @@ else ...@@ -16,11 +18,14 @@ else
local msg = i18n.translate('gluon-config-mode:pubkey') local msg = i18n.translate('gluon-config-mode:pubkey')
return function () return function ()
luci.template.render_string(msg, { pubkey=pubkey luci.template.render_string(msg, {
, hostname=hostname pubkey = pubkey,
, site=site hostname = hostname,
, sysconfig=sysconfig site = site,
, contact=contact sysconfig = sysconfig,
}) contact = contact,
end escape = gluon_luci.escape,
urlescape = gluon_luci.urlescape,
})
end
end end
<%- <%-
local fs = require 'nixio.fs' local fs = require 'nixio.fs'
local uci = require('luci.model.uci').cursor() local uci = require('luci.model.uci').cursor()
local util = require 'luci.util' local util = require 'luci.util'
local i18n = require 'luci.i18n' local i18n = require 'luci.i18n'
local site = require 'gluon.site_config' local gluon_luci = require "gluon.luci"
local sysconfig = require 'gluon.sysconfig' local site = require 'gluon.site_config'
local platform = require 'gluon.platform' local sysconfig = require 'gluon.sysconfig'
local platform = require 'gluon.platform'
local keys = { local keys = {
hostname = i18n.translate('Hostname'), hostname = i18n.translate('Hostname'),
primary_mac = i18n.translate('MAC address'), primary_mac = i18n.translate('MAC address'),
model = i18n.translate('Hardware model'), model = i18n.translate('Hardware model'),
version = i18n.translate('Gluon version'), version = i18n.translate('Gluon version'),
release = i18n.translate('Firmware release'), release = i18n.translate('Firmware release'),
site = i18n.translate('Site'), site = i18n.translate('Site'),
pubkey = i18n.translate('Public VPN key'), pubkey = i18n.translate('Public VPN key'),
} }
local values = { local values = {
hostname = uci:get_first('system', 'system', 'hostname'), hostname = uci:get_first('system', 'system', 'hostname'),
primary_mac = sysconfig.primary_mac, primary_mac = sysconfig.primary_mac,
model = platform.get_model(), model = platform.get_model(),
version = util.trim(fs.readfile('/lib/gluon/gluon-version')), version = util.trim(fs.readfile('/lib/gluon/gluon-version')),
release = util.trim(fs.readfile('/lib/gluon/release')), release = util.trim(fs.readfile('/lib/gluon/release')),
site = site.site_name, site = site.site_name,
pubkey = 'n/a', pubkey = 'n/a',
} }
local meshvpn_enabled = uci:get("fastd", "mesh_vpn", "enabled", "0") local meshvpn_enabled = uci:get("fastd", "mesh_vpn", "enabled", "0")
if meshvpn_enabled == "1" then if meshvpn_enabled == "1" then
local pubkey = util.trim(util.exec('/etc/init.d/fastd show_key mesh_vpn')) local pubkey = util.trim(util.exec('/etc/init.d/fastd show_key mesh_vpn'))
if pubkey ~= '' then if pubkey ~= '' then
values.pubkey = pubkey values.pubkey = pubkey
end end
end end
-%> -%>
<h2><%:Information%></h2> <h2><%:Information%></h2>
<% for _, key in ipairs({'hostname', 'primary_mac', 'model', 'version', 'release', 'site', 'pubkey'}) do %> <% for _, key in ipairs({'hostname', 'primary_mac', 'model', 'version', 'release', 'site', 'pubkey'}) do %>
<div class="cbi-value"> <div class="cbi-value">
<div class="cbi-value-title"><%=keys[key]%></div><div class="cbi-value-field"><%=values[key] or 'n/a'%></div> <div class="cbi-value-title"><%=keys[key]%></div><div class="cbi-value-field"><%=gluon_luci.escape(values[key] or 'n/a')%></div>
</div> </div>
<% end %> <% end %>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment