Add new package gluon-wan-dnsmasq

This package provides a secondary dnsmasq instance on port 54 which resolves
everything over the WAN interface.
This commit is contained in:
Matthias Schiffer 2014-07-20 03:25:22 +02:00
parent d638359215
commit f389ef925e
4 changed files with 89 additions and 0 deletions

View File

@ -0,0 +1,35 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=gluon-wan-dnsmasq
PKG_VERSION:=1
PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
include $(INCLUDE_DIR)/package.mk
define Package/gluon-wan-dnsmasq
SECTION:=gluon
CATEGORY:=Gluon
TITLE:=Support for a secondary DNS server using the WAN interface
DEPENDS:=+gluon-core +dnsmasq
endef
define Package/gluon-wan-dnsmasq/description
Gluon community wifi mesh firmware framework: Support for a secondary DNS server using the WAN interface
endef
define Build/Prepare
mkdir -p $(PKG_BUILD_DIR)
endef
define Build/Configure
endef
define Build/Compile
endef
define Package/gluon-wan-dnsmasq/install
$(CP) ./files/* $(1)/
endef
$(eval $(call BuildPackage,gluon-wan-dnsmasq))

View File

@ -0,0 +1,3 @@
if [ "$INTERFACE" = 'wan' -o "$INTERFACE" = 'wan6' ]; then
/lib/gluon/wan-dnsmasq/update.lua
fi

View File

@ -0,0 +1,26 @@
#!/bin/sh /etc/rc.common
START=60
SERVICE_NAME=gluon-wan-dnsmasq
SERVICE_USE_PID=1
SERVICE_PID_FILE=/var/run/gluon-wan-dnsmasq.pid
PORT=54
PACKET_MARK=1
RESOLV_CONF_DIR=/var/gluon/wan-dnsmasq
RESOLV_CONF=$RESOLV_CONF_DIR/resolv.conf
start() {
mkdir -p $RESOLV_CONF_DIR
touch $RESOLV_CONF
service_start /usr/sbin/dnsmasq -x $SERVICE_PID_FILE -u root -i lo -p $PORT --packet-mark=$PACKET_MARK -h -r $RESOLV_CONF
}
stop() {
service_stop /usr/sbin/dnsmasq
}

View File

@ -0,0 +1,25 @@
#!/usr/bin/lua
local RESOLV_CONF_DIR = '/var/gluon/wan-dnsmasq'
local RESOLV_CONF = RESOLV_CONF_DIR .. '/resolv.conf'
local ubus = require('ubus').connect()
local fs = require 'nixio.fs'
local function write_servers(f, iface)
local servers = ubus:call('network.interface.' .. iface, 'status', {}).inactive['dns-server']
for _, server in ipairs(servers) do
f:write('nameserver ', server, '\n')
end
end
fs.mkdirr(RESOLV_CONF_DIR)
local f = io.open(RESOLV_CONF, 'w+')
pcall(write_servers, f, 'wan6')
pcall(write_servers, f, 'wan')
f:close()