Mercurial > prosody-modules
comparison mod_firewall/definitions.lib.lua @ 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 | 84e103fd8039 |
children | b85d88737a32 |
comparison
equal
deleted
inserted
replaced
2531:9d2bfff515b8 | 2532:2ddb74805f91 |
---|---|
137 item = self.hash_function(item); | 137 item = self.hash_function(item); |
138 end | 138 end |
139 return self.items and self.items[item] == true; | 139 return self.items and self.items[item] == true; |
140 end; | 140 end; |
141 }; | 141 }; |
142 file = { | |
143 init = function (list_backend, file_spec, opts) | |
144 local filename = file_spec:gsub("^file:"); | |
145 local file, err = io.open(filename); | |
146 if not file then | |
147 module:log("warn", "Failed to open list from %s: %s", filename, err); | |
148 return; | |
149 end | |
150 local items = {}; | |
151 for line in file:lines() do | |
152 items[line] = true; | |
153 end | |
154 self.items = items; | |
155 end; | |
156 add = function (self, item) | |
157 self.items[item] = true; | |
158 end; | |
159 remove = function (self, item) | |
160 self.items[item] = nil; | |
161 end; | |
162 contains = function (self, item) | |
163 return self.items and self.items[item] == true; | |
164 end; | |
165 }; | |
142 }; | 166 }; |
143 list_backends.https = list_backends.http; | 167 list_backends.https = list_backends.http; |
144 | 168 |
145 local function create_list(list_backend, list_def, opts) | 169 local function create_list(list_backend, list_def, opts) |
146 if not list_backends[list_backend] then | 170 if not list_backends[list_backend] then |