From a5551af9b3033b8a83531d65f54b5e5e4cfc5502 Mon Sep 17 00:00:00 2001 From: Kaarle Ritvanen Date: Wed, 25 Jun 2014 22:55:26 +0300 Subject: dnsmasq module --- aconf/modules/dnsmasq.lua | 49 +++++++++++++++++++++++++++++++++++++++++++++++ augeas/dnsmasq_filter.aug | 11 +++++++++++ 2 files changed, 60 insertions(+) create mode 100644 aconf/modules/dnsmasq.lua create mode 100644 augeas/dnsmasq_filter.aug diff --git a/aconf/modules/dnsmasq.lua b/aconf/modules/dnsmasq.lua new file mode 100644 index 0000000..c61a1f5 --- /dev/null +++ b/aconf/modules/dnsmasq.lua @@ -0,0 +1,49 @@ +--[[ +Copyright (c) 2012-2014 Kaarle Ritvanen +See LICENSE file for license details +--]] + +local M = require('aconf.model') + +local filter_conf = '/etc/dnsmasq-filter.conf' + +local Address = M.new() +Address.address = M.net.IPAddress{addr='&'} +Address.domain = M.String + +local Filter = M.new() +Filter.enabled = M.Boolean{ + compute=function(obj) + return M.node.contains(obj:fetch('../conf-file'), filter_conf) + end, + store=function(obj, value) + local files = obj:fetch('../conf-file') + if value then M.node.insert(files, filter_conf) + else files[filter_conf] = nil end + end +} +Filter.redirect_address = M.net.IPAddress{ + compute=function(obj) + local addr = obj.address + return addr and addr.address + end, + store=function(obj, value) + obj.address = value and {address=value, domain='#'} or nil + end +} +Filter.address = M.Model{model=Address, visible=false} +Filter.whitelist = M.Set{ + type=M.net.DomainName, + addr='server/@/#/domain/#', + ui_name='Domain whitelist', + widget='inline' +} + +local Dnsmasq = M.new() +Dnsmasq.filter = M.Model{model=Filter, addr='/augeas'..filter_conf} +Dnsmasq.conf_file = M.Set{ + type=M.String, addr='/augeas/etc/dnsmasq.conf/conf-file/#', visible=false +} + +M.register('dnsmasq', Dnsmasq) +M.permission.defaults('/dnsmasq') diff --git a/augeas/dnsmasq_filter.aug b/augeas/dnsmasq_filter.aug new file mode 100644 index 0000000..a870fb6 --- /dev/null +++ b/augeas/dnsmasq_filter.aug @@ -0,0 +1,11 @@ +(* +Copyright (c) 2012-2014 Kaarle Ritvanen +See LICENSE file for license details +*) + +module Dnsmasq_Filter = + +autoload xfm + +let filter = incl "/etc/dnsmasq-filter.conf" +let xfm = transform Dnsmasq.lns filter -- cgit v1.2.3