Mercurial > prosody-modules
changeset 2532:2ddb74805f91
mod_firewall: Add 'file' backend for lists (read-only atm)
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Mon, 20 Feb 2017 10:59:29 +0000 |
parents | 9d2bfff515b8 |
children | 9aed7f4e9f07 |
files | mod_firewall/definitions.lib.lua |
diffstat | 1 files changed, 24 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/mod_firewall/definitions.lib.lua Mon Feb 20 09:47:58 2017 +0000 +++ b/mod_firewall/definitions.lib.lua Mon Feb 20 10:59:29 2017 +0000 @@ -139,6 +139,30 @@ return self.items and self.items[item] == true; end; }; + file = { + init = function (list_backend, file_spec, opts) + local filename = file_spec:gsub("^file:"); + local file, err = io.open(filename); + if not file then + module:log("warn", "Failed to open list from %s: %s", filename, err); + return; + end + local items = {}; + for line in file:lines() do + items[line] = true; + end + self.items = items; + end; + add = function (self, item) + self.items[item] = true; + end; + remove = function (self, item) + self.items[item] = nil; + end; + contains = function (self, item) + return self.items and self.items[item] == true; + end; + }; }; list_backends.https = list_backends.http;