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
parent 2530:84e103fd8039
child 2535: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