From d025a4675314047a7be82e5e0e9492ba62e01870 Mon Sep 17 00:00:00 2001 From: Kaarle Ritvanen Date: Wed, 11 Mar 2015 16:11:28 +0200 Subject: DNS zone module: exclude control directives --- aconf/model/node.lua | 28 +++++++++++++++++++--------- aconf/modules/dns-zone.lua | 1 + 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/aconf/model/node.lua b/aconf/model/node.lua index 4f09c99..a9854ce 100644 --- a/aconf/model/node.lua +++ b/aconf/model/node.lua @@ -5,7 +5,8 @@ See LICENSE file for license details local M = {} -local raise = require('aconf.error').raise +local err = require('aconf.error') +local raise = err.raise local object = require('aconf.object') local class = object.class @@ -305,7 +306,22 @@ function M.Collection:init(context, params) return res end - function mt.members() return mt.txn:get(mt.addr) or {} end + local function validate_key(k) + if params.key then + local kf = M.BoundMember(self, k, object.toinstance(params.key)) + if kf:normalize(k) ~= k then + raise(mt.path, 'Invalid member name: '..k) + end + kf:validate(k) + end + end + + function mt.members() + return util.filter( + function(k) return err.call(validate_key, k) end, + mt.txn:get(mt.addr) or {} + ) + end function mt.__len() return #mt.members() end @@ -339,13 +355,7 @@ function M.Collection:init(context, params) else mt.check_permission('modify') end end - if params.key then - local kf = M.BoundMember(self, k, object.toinstance(params.key)) - if kf:normalize(k) ~= k then - raise(mt.path, 'Invalid member name: '..k) - end - kf:validate(k) - end + validate_key(k) mt.member(k):save(v) end diff --git a/aconf/modules/dns-zone.lua b/aconf/modules/dns-zone.lua index 6527d62..372260c 100644 --- a/aconf/modules/dns-zone.lua +++ b/aconf/modules/dns-zone.lua @@ -67,6 +67,7 @@ M.register( 'dns-zone', M.Collection{ type=M.Collection{ + key=M.String{pattern='[^$].*'}, type=M.List{ type=M.Model{model=Record, addr='*/*'}, be_mode='enumerate', -- cgit v1.2.3