Added tunneldigger/l2tp packages
This commit is contained in:
commit
e91c8c85c3
36
package/gluon-config-mode-tunneldigger/Makefile
Normal file
36
package/gluon-config-mode-tunneldigger/Makefile
Normal file
@ -0,0 +1,36 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=gluon-config-mode-tunneldigger
|
||||
PKG_VERSION:=1
|
||||
|
||||
PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
|
||||
|
||||
include $(GLUONDIR)/include/package.mk
|
||||
|
||||
PKG_CONFIG_DEPENDS += $(GLUON_I18N_CONFIG)
|
||||
|
||||
|
||||
define Package/gluon-config-mode-tunneldigger
|
||||
SECTION:=gluon
|
||||
CATEGORY:=Gluon
|
||||
TITLE:=Toggle tunneldigger and bandwidth limit
|
||||
DEPENDS:=gluon-config-mode-core-virtual +gluon-mesh-vpn-tunneldigger
|
||||
endef
|
||||
|
||||
define Build/Prepare
|
||||
mkdir -p $(PKG_BUILD_DIR)
|
||||
endef
|
||||
|
||||
define Build/Configure
|
||||
endef
|
||||
|
||||
define Build/Compile
|
||||
$(call GluonBuildI18N,gluon-config-mode-tunneldigger,i18n)
|
||||
endef
|
||||
|
||||
define Package/gluon-config-mode-tunneldigger/install
|
||||
$(CP) ./files/* $(1)/
|
||||
$(call GluonInstallI18N,gluon-config-mode-tunneldigger,$(1))
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,gluon-config-mode-tunneldigger))
|
@ -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 a ' ..
|
||||
'L2TP VPN 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 via L2TP)"))
|
||||
o.default = uci:get_bool("tunneldigger", uci:get_first("tunneldigger", "broker"), "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("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("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("simple-tc", "mesh_vpn", "limit_egress")
|
||||
o.rmempty = false
|
||||
o.datatype = "integer"
|
||||
end
|
||||
|
||||
function M.handle(data)
|
||||
uci:set("tunneldigger", uci:get_first("tunneldigger", "broker"), "enabled", data._meshvpn)
|
||||
uci:save("tunneldigger")
|
||||
uci:commit("tunneldigger")
|
||||
|
||||
-- checks for nil needed due to o:depends(...)
|
||||
if data._limit_enabled ~= nil then
|
||||
uci:set("simple-tc", "mesh_vpn", "interface")
|
||||
uci:set("simple-tc", "mesh_vpn", "enabled", data._limit_enabled)
|
||||
uci:set("simple-tc", "mesh_vpn", "ifname", "mesh-vpn")
|
||||
|
||||
if data._limit_ingress ~= nil then
|
||||
uci:set("simple-tc", "mesh_vpn", "limit_ingress", data._limit_ingress)
|
||||
end
|
||||
|
||||
if data._limit_egress ~= nil then
|
||||
uci:set("simple-tc", "mesh_vpn", "limit_egress", data._limit_egress)
|
||||
end
|
||||
|
||||
uci:save("simple-tc")
|
||||
uci:commit("simple-tc")
|
||||
end
|
||||
end
|
||||
|
||||
return M
|
36
package/gluon-config-mode-tunneldigger/i18n/de.po
Normal file
36
package/gluon-config-mode-tunneldigger/i18n/de.po
Normal file
@ -0,0 +1,36 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"PO-Revision-Date: 2015-10-07 00:32+0100\n"
|
||||
"Last-Translator: Cyrus Fox <cyrus@lambdacore.de>\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 via L2TP)"
|
||||
msgstr "Internetverbindung nutzen (Mesh-VPN via L2TP)"
|
||||
|
||||
msgid ""
|
||||
"Your internet connection can be used to establish a L2TP VPN 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 "
|
||||
"L2TP-VPN 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."
|
@ -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 via L2TP)"
|
||||
msgstr ""
|
||||
|
||||
msgid ""
|
||||
"Your internet connection can be used to establish a L2TP VPN 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 ""
|
40
package/gluon-mesh-vpn-tunneldigger/Makefile
Normal file
40
package/gluon-mesh-vpn-tunneldigger/Makefile
Normal file
@ -0,0 +1,40 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=gluon-mesh-vpn-tunneldigger
|
||||
PKG_VERSION:=3
|
||||
|
||||
PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
|
||||
|
||||
include $(GLUONDIR)/include/package.mk
|
||||
|
||||
define Package/gluon-mesh-vpn-tunneldigger
|
||||
SECTION:=gluon
|
||||
CATEGORY:=Gluon
|
||||
TITLE:=Support for connecting batman-adv meshes via tunneltigger/l2tpv3 pseudowire
|
||||
DEPENDS:=+gluon-core gluon-mesh-batman-adv +gluon-wan-dnsmasq +tunneldigger +iptables-mod-extra +simple-tc
|
||||
endef
|
||||
|
||||
define Package/gluon-mesh-vpn-tunneldigger/description
|
||||
Gluon community wifi mesh firmware framework: tunneldigger support
|
||||
endef
|
||||
|
||||
define Build/Prepare
|
||||
mkdir -p $(PKG_BUILD_DIR)
|
||||
endef
|
||||
|
||||
define Build/Configure
|
||||
endef
|
||||
|
||||
define Build/Compile
|
||||
endef
|
||||
|
||||
define Package/gluon-mesh-vpn-tunneldigger/install
|
||||
$(CP) ./files/* $(1)/
|
||||
endef
|
||||
|
||||
define Package/gluon-mesh-vpn-tunneldigger/postinst
|
||||
#!/bin/sh
|
||||
$(call GluonCheckSite,check_site.lua)
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,gluon-mesh-vpn-tunneldigger))
|
9
package/gluon-mesh-vpn-tunneldigger/check_site.lua
Normal file
9
package/gluon-mesh-vpn-tunneldigger/check_site.lua
Normal file
@ -0,0 +1,9 @@
|
||||
need_number('tunneldigger_mesh_vpn.mtu')
|
||||
need_boolean('tunneldigger_mesh_vpn.enabled', false)
|
||||
need_string_array('tunneldigger_mesh_vpn.brokers')
|
||||
|
||||
if need_table('tunneldigger_mesh_vpn.bandwidth_limit', nil, false) then
|
||||
need_boolean('tunneldigger_mesh_vpn.bandwidth_limit.enabled', false)
|
||||
need_number('tunneldigger_mesh_vpn.bandwidth_limit.ingress', false)
|
||||
need_number('tunneldigger_mesh_vpn.bandwidth_limit.egress', false)
|
||||
end
|
@ -0,0 +1,3 @@
|
||||
*nat
|
||||
-I OUTPUT -m owner --gid-owner gluon-tunneldigger -o lo -d 127.0.0.1 -p udp --dport 53 -j DNAT --to-destination :54
|
||||
COMMIT
|
@ -0,0 +1,61 @@
|
||||
#!/usr/bin/lua
|
||||
|
||||
local site = require 'gluon.site_config'
|
||||
local users = require 'gluon.users'
|
||||
local util = require 'gluon.util'
|
||||
|
||||
local uci = require('luci.model.uci').cursor()
|
||||
local lutil = require 'luci.util'
|
||||
|
||||
-- Group for iptables rule
|
||||
users.add_group('gluon-tunneldigger', 900)
|
||||
|
||||
local enabled = uci:get_first('tunneldigger', 'broker', 'enabled')
|
||||
if (tonumber(enabled) == 0) then
|
||||
enabled = site.tunneldigger_mesh_vpn.enabled and 1 or 0
|
||||
end
|
||||
|
||||
-- Delete old broker config section
|
||||
uci:delete_all('tunneldigger', 'broker')
|
||||
|
||||
section = uci:add('tunneldigger', 'broker')
|
||||
|
||||
uci:section('tunneldigger', 'broker', section,
|
||||
{
|
||||
enabled = enabled,
|
||||
uuid = util.node_id(),
|
||||
interface = 'mesh-vpn',
|
||||
bind_interface = 'br-wan',
|
||||
group = 'gluon-tunneldigger',
|
||||
broker_selection = 'usage',
|
||||
address = site.tunneldigger_mesh_vpn.brokers,
|
||||
}
|
||||
)
|
||||
|
||||
uci:save('tunneldigger')
|
||||
uci:commit('tunneldigger')
|
||||
|
||||
uci:section('network', 'interface', 'mesh_vpn',
|
||||
{
|
||||
ifname = 'mesh-vpn',
|
||||
proto = 'batadv',
|
||||
mesh = 'bat0',
|
||||
mesh_no_rebroadcast = 1,
|
||||
mtu = site.tunneldigger_mesh_vpn.mtu,
|
||||
}
|
||||
)
|
||||
|
||||
uci:save('network')
|
||||
uci:commit('network')
|
||||
|
||||
|
||||
uci:section('firewall', 'include', 'mesh_vpn_dns',
|
||||
{
|
||||
type = 'restore',
|
||||
path = '/lib/gluon/mesh-vpn-tunneldigger/iptables.rules',
|
||||
family = 'ipv4',
|
||||
}
|
||||
)
|
||||
|
||||
uci:save('firewall')
|
||||
uci:commit('firewall')
|
@ -0,0 +1,32 @@
|
||||
#!/usr/bin/lua
|
||||
|
||||
local site = require 'gluon.site_config'
|
||||
local uci = require('luci.model.uci').cursor()
|
||||
local fs = require 'nixio.fs'
|
||||
|
||||
|
||||
if fs.access('/etc/config/gluon-simple-tc') then
|
||||
os.rename('/etc/config/gluon-simple-tc', '/etc/config/simple-tc')
|
||||
end
|
||||
|
||||
|
||||
if not uci:get('simple-tc', 'mesh_vpn') then
|
||||
local config = {
|
||||
ifname = 'mesh-vpn',
|
||||
enabled = 0,
|
||||
}
|
||||
|
||||
|
||||
if site.tunneldigger_mesh_vpn.bandwidth_limit then
|
||||
if site.tunneldigger_mesh_vpn.bandwidth_limit.enabled then
|
||||
config.enabled = 1
|
||||
end
|
||||
|
||||
config.limit_ingress = site.tunneldigger_mesh_vpn.bandwidth_limit.ingress
|
||||
config.limit_egress = site.tunneldigger_mesh_vpn.bandwidth_limit.egress
|
||||
end
|
||||
|
||||
uci:section('simple-tc', 'interface', 'mesh_vpn', config)
|
||||
uci:save('simple-tc')
|
||||
uci:commit('simple-tc')
|
||||
end
|
38
package/gluon-migrate-vpn/Makefile
Normal file
38
package/gluon-migrate-vpn/Makefile
Normal file
@ -0,0 +1,38 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=gluon-migrate-vpn
|
||||
PKG_VERSION:=1
|
||||
|
||||
PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
|
||||
|
||||
include $(GLUONDIR)/include/package.mk
|
||||
|
||||
define Package/gluon-migrate-vpn
|
||||
SECTION:=gluon
|
||||
CATEGORY:=Gluon
|
||||
TITLE:=Enables either fastd or tunneldigger if the opposite was active before upgrading
|
||||
DEPENDS:=+gluon-core
|
||||
endef
|
||||
|
||||
define Package/gluon-migrate-vpn/description
|
||||
Gluon community wifi mesh firmware framework: VPN service migration script
|
||||
endef
|
||||
|
||||
define Build/Prepare
|
||||
mkdir -p $(PKG_BUILD_DIR)
|
||||
endef
|
||||
|
||||
define Build/Configure
|
||||
endef
|
||||
|
||||
define Build/Compile
|
||||
endef
|
||||
|
||||
define Package/gluon-migrate-vpn/install
|
||||
$(CP) ./files/* $(1)/
|
||||
endef
|
||||
|
||||
define Package/gluon-migrate-vpn/postinst
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,gluon-migrate-vpn))
|
31
package/gluon-migrate-vpn/files/lib/gluon/upgrade/499-migrate-vpn
Executable file
31
package/gluon-migrate-vpn/files/lib/gluon/upgrade/499-migrate-vpn
Executable file
@ -0,0 +1,31 @@
|
||||
#!/usr/bin/lua
|
||||
|
||||
local site = require 'gluon.site_config'
|
||||
local users = require 'gluon.users'
|
||||
local util = require 'gluon.util'
|
||||
|
||||
local uci = require('luci.model.uci').cursor()
|
||||
local lutil = require 'luci.util'
|
||||
|
||||
local tunneldigger_enabled = uci:get_first('tunneldigger', 'broker', 'enabled')
|
||||
local fastd_enabled = uci:get('fastd', 'mesh_vpn', 'enabled')
|
||||
|
||||
local tunneldigger_installed = util.exec('sh' , '-c', 'opkg list-installed | grep -e \'^tunneldigger\'')
|
||||
local fastd_installed = util.exec('sh' , '-c', 'opkg list-installed | grep -e \'^fastd\'')
|
||||
|
||||
local enabled = 0
|
||||
|
||||
if (tonumber(tunneldigger_enabled) == 1 or tonumber(fastd_enabled) == 1) then
|
||||
enabled = 1
|
||||
end
|
||||
|
||||
if (enabled == 1 and tunneldigger_installed == 0 and fastd_installed == 256) then
|
||||
uci:set("tunneldigger", uci:get_first("tunneldigger", "broker"), "enabled", enabled)
|
||||
uci:save("tunneldigger")
|
||||
uci:commit("tunneldigger")
|
||||
elseif (enabled == 1 and tunneldigger_installed == 256 and fastd_installed == 0) then
|
||||
uci:set("fastd", "mesh_vpn", "enabled", enabled)
|
||||
uci:save("fastd")
|
||||
uci:commit("fastd")
|
||||
end
|
||||
|
38
package/gluon-tunneldigger-watchdog/Makefile
Normal file
38
package/gluon-tunneldigger-watchdog/Makefile
Normal file
@ -0,0 +1,38 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=gluon-tunneldigger-watchdog
|
||||
PKG_VERSION:=3
|
||||
|
||||
PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
|
||||
|
||||
include $(GLUONDIR)/include/package.mk
|
||||
|
||||
define Package/gluon-tunneldigger-watchdog
|
||||
SECTION:=gluon
|
||||
CATEGORY:=Gluon
|
||||
TITLE:=Automatically restarts tunneldigger if the client crashed
|
||||
DEPENDS:=+gluon-mesh-vpn-tunneldigger
|
||||
endef
|
||||
|
||||
define Package/gluon-tunneldigger-watchdog/description
|
||||
Gluon community wifi mesh firmware framework: tunneldigger watchdog
|
||||
endef
|
||||
|
||||
define Build/Prepare
|
||||
mkdir -p $(PKG_BUILD_DIR)
|
||||
endef
|
||||
|
||||
define Build/Configure
|
||||
endef
|
||||
|
||||
define Build/Compile
|
||||
endef
|
||||
|
||||
define Package/gluon-tunneldigger-watchdog/install
|
||||
$(CP) ./files/* $(1)/
|
||||
endef
|
||||
|
||||
define Package/gluon-tunneldigger-watchdog/postinst
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,gluon-tunneldigger-watchdog))
|
12
package/gluon-tunneldigger-watchdog/files/usr/bin/tunneldigger-watchdog
Executable file
12
package/gluon-tunneldigger-watchdog/files/usr/bin/tunneldigger-watchdog
Executable file
@ -0,0 +1,12 @@
|
||||
#!/bin/sh
|
||||
PIDFILE=/var/run/tunneldigger.mesh-vpn.pid
|
||||
|
||||
if [ "$(uci get tunneldigger.@broker[0].enabled)" == "1" ]; then
|
||||
if [ "$(pgrep tunneldigger | head -n 1)" != "$(cat $PIDFILE)" ]; then
|
||||
/etc/init.d/tunneldigger restart
|
||||
logger -t tunneldiger-watchdog "Daemon not running, restarted tunneldigger."
|
||||
elif [ "$(batctl o |grep mesh-vpn |wc -l)" == "0" ]; then
|
||||
/etc/init.d/tunneldigger restart
|
||||
logger -t tunneldiger-watchdog "No neighbours on mesh-vpn interface, restarted tunneldigger."
|
||||
fi
|
||||
fi
|
@ -0,0 +1 @@
|
||||
*/5 * * * * /usr/bin/tunneldigger-watchdog
|
47
package/tunneldigger/Makefile
Normal file
47
package/tunneldigger/Makefile
Normal file
@ -0,0 +1,47 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=tunneldigger
|
||||
PKG_VERSION:=0.4.7
|
||||
PKG_RELEASE:=1
|
||||
PKG_REV:=7cc92020cbafe5be2b24eb6bc943a65f151c2a18
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
|
||||
PKG_SOURCE_URL:=git://github.com/wlanslovenija/tunneldigger.git
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
|
||||
PKG_SOURCE_VERSION:=$(PKG_REV)
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
define Package/tunneldigger
|
||||
SECTION:=net
|
||||
CATEGORY:=Network
|
||||
DEPENDS:=+libnl-tiny +kmod-l2tp +kmod-l2tp-ip +kmod-l2tp-eth +librt +libpthread
|
||||
TITLE:=L2TPv3 tunnel broker client
|
||||
endef
|
||||
|
||||
TARGET_CFLAGS += \
|
||||
-I$(STAGING_DIR)/usr/include/libnl-tiny \
|
||||
-I$(STAGING_DIR)/usr/include \
|
||||
-DLIBNL_TINY
|
||||
|
||||
define Build/Prepare
|
||||
$(call Build/Prepare/Default)
|
||||
mv $(PKG_BUILD_DIR)/client/* $(PKG_BUILD_DIR)
|
||||
sed -i s/-lnl/-lnl-tiny/g $(PKG_BUILD_DIR)/Makefile
|
||||
endef
|
||||
|
||||
define Package/tunneldigger/install
|
||||
$(INSTALL_DIR) $(1)/usr/bin
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/l2tp_client $(1)/usr/bin/tunneldigger
|
||||
$(INSTALL_DIR) $(1)/etc/init.d
|
||||
$(INSTALL_BIN) ./files/tunneldigger.init $(1)/etc/init.d/tunneldigger
|
||||
$(INSTALL_DIR) $(1)/etc/config
|
||||
$(INSTALL_DATA) ./files/config.default $(1)/etc/config/tunneldigger
|
||||
endef
|
||||
|
||||
define Package/tunneldigger/conffiles
|
||||
/etc/config/tunneldigger
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,tunneldigger))
|
10
package/tunneldigger/files/config.default
Normal file
10
package/tunneldigger/files/config.default
Normal file
@ -0,0 +1,10 @@
|
||||
config broker
|
||||
list address 'x.y.z.w:8942'
|
||||
list address 'x.y.z.w:53'
|
||||
list address 'x.y.z.w:123'
|
||||
option uuid 'abcd'
|
||||
option group 'root'
|
||||
option interface 'l2tp0'
|
||||
option limit_bw_down '1024'
|
||||
option broker_selection 'usage'
|
||||
option enabled '0'
|
97
package/tunneldigger/files/tunneldigger.init
Executable file
97
package/tunneldigger/files/tunneldigger.init
Executable file
@ -0,0 +1,97 @@
|
||||
#!/bin/sh /etc/rc.common
|
||||
|
||||
. $IPKG_INSTROOT/lib/functions/network.sh
|
||||
|
||||
START=90
|
||||
|
||||
PIDPATH=/var/run
|
||||
tunnel_id=1
|
||||
|
||||
missing() {
|
||||
echo "Not starting tunneldigger - missing $1" >&2
|
||||
}
|
||||
|
||||
config_cb() {
|
||||
local cfg="$CONFIG_SECTION"
|
||||
config_get configname "$cfg" TYPE
|
||||
case "$configname" in
|
||||
broker)
|
||||
config_get_bool enabled "$cfg" enabled 1
|
||||
config_get addresses "$cfg" address
|
||||
config_get uuid "$cfg" uuid
|
||||
config_get interface "$cfg" interface
|
||||
config_get group "$cfg" group
|
||||
config_get limit_bw_down "$cfg" limit_bw_down
|
||||
config_get hook_script "$cfg" hook_script
|
||||
config_get bind_interface "$cfg" bind_interface
|
||||
config_get broker_selection "$cfg" broker_selection
|
||||
|
||||
[ $enabled -eq 0 ] && return
|
||||
|
||||
local broker_opts=""
|
||||
for address in $addresses; do
|
||||
append broker_opts "-b ${address}"
|
||||
done
|
||||
|
||||
[ ! -z "${limit_bw_down}" ] && append broker_opts "-L ${limit_bw_down}"
|
||||
[ ! -z "${hook_script}" ] && append broker_opts "-s ${hook_script}"
|
||||
[ ! -z "${bind_interface}" ] && {
|
||||
# Resolve logical interface name.
|
||||
unset _bind_interface
|
||||
network_get_device _bind_interface "${bind_interface}" || _bind_interface="${bind_interface}"
|
||||
append broker_opts "-I ${_bind_interface}"
|
||||
}
|
||||
[ ! -z "${broker_selection}" ] && {
|
||||
# Set broker selection.
|
||||
case "${broker_selection}" in
|
||||
usage)
|
||||
append broker_opts "-a"
|
||||
;;
|
||||
first)
|
||||
append broker_opts "-g"
|
||||
;;
|
||||
random)
|
||||
append broker_opts "-r"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
if [ -z "$uuid" ]; then
|
||||
missing uuid
|
||||
return
|
||||
elif [ -z "$interface" ]; then
|
||||
missing interface
|
||||
return
|
||||
fi
|
||||
|
||||
echo "Starting tunneldigger on ${interface}"
|
||||
/sbin/start-stop-daemon -S -q -b -m -c root:${group} -p ${PIDPATH}/tunneldigger.${interface}.pid -x /usr/bin/tunneldigger -- -u ${uuid} -i ${interface} -t ${tunnel_id} ${broker_opts}
|
||||
|
||||
let tunnel_id++
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
start() {
|
||||
config_load tunneldigger
|
||||
}
|
||||
|
||||
stop() {
|
||||
for PIDFILE in `find ${PIDPATH}/ -name "tunneldigger\.*\.pid"`; do
|
||||
PID="$(cat ${PIDFILE})"
|
||||
IFACE="$(echo ${PIDFILE} | awk -F\/tunneldigger '{print $2}' | cut -d'.' -f2)"
|
||||
echo "Stopping tunneldigger for interface ${IFACE}"
|
||||
start-stop-daemon -K -q -p $PIDFILE
|
||||
while test -d "/proc/${PID}"; do
|
||||
echo " waiting for tunneldigger to stop"
|
||||
sleep 1
|
||||
done
|
||||
echo " tunneldigger stopped"
|
||||
done
|
||||
}
|
||||
|
||||
restart() {
|
||||
stop
|
||||
start
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user