From 71d9a33ebc140b219e2df065f0c7d53b6fad23ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karsten=20B=C3=B6ddeker?= <freifunk@kb-light.de> Date: Mon, 2 Nov 2015 11:22:02 +0100 Subject: [PATCH] Adds ffho-config-mode-mesh-vpn Modified Version of gluon-config-mode-mesh-vpn Provides Contact-Info for Reboot-Message --- ffpb/ffho-config-mode-mesh-vpn/Makefile | 36 +++++++++++ .../config-mode/reboot/0100-mesh-vpn.lua | 31 +++++++++ .../config-mode/wizard/0300-mesh-vpn.lua | 64 +++++++++++++++++++ ffpb/ffho-config-mode-mesh-vpn/i18n/de.po | 36 +++++++++++ .../i18n/ffho-config-mode-mesh-vpn.pot | 22 +++++++ 5 files changed, 189 insertions(+) create mode 100644 ffpb/ffho-config-mode-mesh-vpn/Makefile create mode 100644 ffpb/ffho-config-mode-mesh-vpn/files/lib/gluon/config-mode/reboot/0100-mesh-vpn.lua create mode 100644 ffpb/ffho-config-mode-mesh-vpn/files/lib/gluon/config-mode/wizard/0300-mesh-vpn.lua create mode 100644 ffpb/ffho-config-mode-mesh-vpn/i18n/de.po create mode 100644 ffpb/ffho-config-mode-mesh-vpn/i18n/ffho-config-mode-mesh-vpn.pot diff --git a/ffpb/ffho-config-mode-mesh-vpn/Makefile b/ffpb/ffho-config-mode-mesh-vpn/Makefile new file mode 100644 index 0000000..a4fe622 --- /dev/null +++ b/ffpb/ffho-config-mode-mesh-vpn/Makefile @@ -0,0 +1,36 @@ +include $(TOPDIR)/rules.mk + +PKG_NAME:=ffho-config-mode-mesh-vpn +PKG_VERSION:=2 + +PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME) + +include $(GLUONDIR)/include/package.mk + +PKG_CONFIG_DEPENDS += $(GLUON_I18N_CONFIG) + + +define Package/ffho-config-mode-mesh-vpn + SECTION:=gluon + CATEGORY:=Gluon + TITLE:=Toggle mesh-vpn and bandwidth limit + DEPENDS:=gluon-config-mode-core-virtual +gluon-mesh-vpn-fastd +gluon-simple-tc +endef + +define Build/Prepare + mkdir -p $(PKG_BUILD_DIR) +endef + +define Build/Configure +endef + +define Build/Compile + $(call GluonBuildI18N,ffho-config-mode-mesh-vpn,i18n) +endef + +define Package/ffho-config-mode-mesh-vpn/install + $(CP) ./files/* $(1)/ + $(call GluonInstallI18N,ffho-config-mode-mesh-vpn,$(1)) +endef + +$(eval $(call BuildPackage,ffho-config-mode-mesh-vpn)) diff --git a/ffpb/ffho-config-mode-mesh-vpn/files/lib/gluon/config-mode/reboot/0100-mesh-vpn.lua b/ffpb/ffho-config-mode-mesh-vpn/files/lib/gluon/config-mode/reboot/0100-mesh-vpn.lua new file mode 100644 index 0000000..d5c9e14 --- /dev/null +++ b/ffpb/ffho-config-mode-mesh-vpn/files/lib/gluon/config-mode/reboot/0100-mesh-vpn.lua @@ -0,0 +1,31 @@ +local uci = luci.model.uci.cursor() +local meshvpn_enabled = uci:get("fastd", "mesh_vpn", "enabled", "0") + +if meshvpn_enabled ~= "1" then + return nil +else + local i18n = require "luci.i18n" + local util = require "luci.util" + local site = require 'gluon.site_config' + local sysconfig = require 'gluon.sysconfig' + + local pubkey = util.trim(util.exec("/etc/init.d/fastd show_key " .. "mesh_vpn")) + local hostname = uci:get_first("system", "system", "hostname") + local contact = uci:get_first("gluon-node-info", "owner", "contact") + + local msg = [[<p>]] .. i18n.translate('gluon-config-mode:pubkey') .. [[</p> + <div class="the-key"> + # <%= hostname %> + <br/> + <%= pubkey %> + </div>]] + + return function () + luci.template.render_string(msg, { pubkey=pubkey + , hostname=hostname + , site=site + , sysconfig=sysconfig + , contact=contact + }) + end +end diff --git a/ffpb/ffho-config-mode-mesh-vpn/files/lib/gluon/config-mode/wizard/0300-mesh-vpn.lua b/ffpb/ffho-config-mode-mesh-vpn/files/lib/gluon/config-mode/wizard/0300-mesh-vpn.lua new file mode 100644 index 0000000..669a7bc --- /dev/null +++ b/ffpb/ffho-config-mode-mesh-vpn/files/lib/gluon/config-mode/wizard/0300-mesh-vpn.lua @@ -0,0 +1,64 @@ +local cbi = require "luci.cbi" +local i18n = require "luci.i18n" +local uci = luci.model.uci.cursor() + +local M = {} + +function M.section(form) + local msg = i18n.translate('Your internet connection can be used to establish an ' .. + 'encrypted connection with other nodes. ' .. + 'Enable this option if there are no other nodes reachable ' .. + 'over WLAN in your vicinity or you want to make a part of ' .. + 'your connection\'s bandwidth available for the network. You can limit how ' .. + 'much bandwidth the node will use at most.') + local s = form:section(cbi.SimpleSection, nil, msg) + + local o + + o = s:option(cbi.Flag, "_meshvpn", i18n.translate("Use internet connection (mesh VPN)")) + o.default = uci:get_bool("fastd", "mesh_vpn", "enabled") and o.enabled or o.disabled + o.rmempty = false + + o = s:option(cbi.Flag, "_limit_enabled", i18n.translate("Limit bandwidth")) + o:depends("_meshvpn", "1") + o.default = uci:get_bool("gluon-simple-tc", "mesh_vpn", "enabled") and o.enabled or o.disabled + o.rmempty = false + + o = s:option(cbi.Value, "_limit_ingress", i18n.translate("Downstream (kbit/s)")) + o:depends("_limit_enabled", "1") + o.value = uci:get("gluon-simple-tc", "mesh_vpn", "limit_ingress") + o.rmempty = false + o.datatype = "integer" + + o = s:option(cbi.Value, "_limit_egress", i18n.translate("Upstream (kbit/s)")) + o:depends("_limit_enabled", "1") + o.value = uci:get("gluon-simple-tc", "mesh_vpn", "limit_egress") + o.rmempty = false + o.datatype = "integer" +end + +function M.handle(data) + uci:set("fastd", "mesh_vpn", "enabled", data._meshvpn) + uci:save("fastd") + uci:commit("fastd") + + -- checks for nil needed due to o:depends(...) + if data._limit_enabled ~= nil then + uci:set("gluon-simple-tc", "mesh_vpn", "interface") + uci:set("gluon-simple-tc", "mesh_vpn", "enabled", data._limit_enabled) + uci:set("gluon-simple-tc", "mesh_vpn", "ifname", "mesh-vpn") + + if data._limit_ingress ~= nil then + uci:set("gluon-simple-tc", "mesh_vpn", "limit_ingress", data._limit_ingress) + end + + if data._limit_egress ~= nil then + uci:set("gluon-simple-tc", "mesh_vpn", "limit_egress", data._limit_egress) + end + + uci:commit("gluon-simple-tc") + uci:commit("gluon-simple-tc") + end +end + +return M diff --git a/ffpb/ffho-config-mode-mesh-vpn/i18n/de.po b/ffpb/ffho-config-mode-mesh-vpn/i18n/de.po new file mode 100644 index 0000000..8c613aa --- /dev/null +++ b/ffpb/ffho-config-mode-mesh-vpn/i18n/de.po @@ -0,0 +1,36 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"PO-Revision-Date: 2015-03-19 22:05+0100\n" +"Last-Translator: Matthias Schiffer <mschiffer@universe-factory.net>\n" +"Language-Team: German\n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Downstream (kbit/s)" +msgstr "Downstream (kbit/s)" + +msgid "Limit bandwidth" +msgstr "Bandbreite begrenzen" + +msgid "Upstream (kbit/s)" +msgstr "Upstream (kbit/s)" + +msgid "Use internet connection (mesh VPN)" +msgstr "Internetverbindung nutzen (Mesh-VPN)" + +msgid "" +"Your internet connection can be used to establish an encrypted connection " +"with other nodes. Enable this option if there are no other nodes reachable " +"over WLAN in your vicinity or you want to make a part of your connection's " +"bandwidth available for the network. You can limit how much bandwidth the " +"node will use at most." +msgstr "" +"Dein Knoten kann deine Internetverbindung nutzen um darüber eine " +"verschlüsselte Verbindung zu anderen Knoten aufzubauen. Die dafür " +"genutzte Bandbreite kannst du beschränken. Aktiviere die Option, falls keine " +"per WLAN erreichbaren Nachbarknoten in deiner Nähe sind oder du deine " +"Internetverbindung für das Mesh-Netzwerk zur Verfügung stellen möchtest." diff --git a/ffpb/ffho-config-mode-mesh-vpn/i18n/ffho-config-mode-mesh-vpn.pot b/ffpb/ffho-config-mode-mesh-vpn/i18n/ffho-config-mode-mesh-vpn.pot new file mode 100644 index 0000000..52e2eef --- /dev/null +++ b/ffpb/ffho-config-mode-mesh-vpn/i18n/ffho-config-mode-mesh-vpn.pot @@ -0,0 +1,22 @@ +msgid "" +msgstr "Content-Type: text/plain; charset=UTF-8" + +msgid "Downstream (kbit/s)" +msgstr "" + +msgid "Limit bandwidth" +msgstr "" + +msgid "Upstream (kbit/s)" +msgstr "" + +msgid "Use internet connection (mesh VPN)" +msgstr "" + +msgid "" +"Your internet connection can be used to establish an encrypted connection " +"with other nodes. Enable this option if there are no other nodes reachable " +"over WLAN in your vicinity or you want to make a part of your connection's " +"bandwidth available for the network. You can limit how much bandwidth the " +"node will use at most." +msgstr "" -- GitLab