|
@@ -3,6 +3,7 @@
|
3
|
3
|
import sys
|
4
|
4
|
import os.path
|
5
|
5
|
import re
|
|
6
|
+import socket
|
6
|
7
|
import inspect
|
7
|
8
|
import copy
|
8
|
9
|
|
|
@@ -189,6 +190,27 @@ def str_val(value):
|
189
|
190
|
except Exception as e:
|
190
|
191
|
raise SettingsValidationError("Not able to convert value to string : " + str(e))
|
191
|
192
|
|
|
193
|
+def host_val(value):
|
|
194
|
+ if value == 'localhost':
|
|
195
|
+ return value
|
|
196
|
+ ok = False
|
|
197
|
+ try:
|
|
198
|
+ socket.inet_aton(value)
|
|
199
|
+ return value
|
|
200
|
+ except (TypeError,OSError):
|
|
201
|
+ pass
|
|
202
|
+ try:
|
|
203
|
+ socket.inet_pton(socket.AF_INET6, value)
|
|
204
|
+ return value
|
|
205
|
+ except (TypeError,OSError):
|
|
206
|
+ pass
|
|
207
|
+ try:
|
|
208
|
+ socket.getaddrinfo(value, 80)
|
|
209
|
+ return value
|
|
210
|
+ except (TypeError,socket.gaierrror):
|
|
211
|
+ msg = "The value '%s' is not a valid host"
|
|
212
|
+ raise SettingsValidationError(msg % value)
|
|
213
|
+
|
192
|
214
|
#
|
193
|
215
|
# Default validators registration
|
194
|
216
|
#
|
|
@@ -243,6 +265,11 @@ SettingValidator.register_validator(
|
243
|
265
|
path_val,
|
244
|
266
|
'path validator')
|
245
|
267
|
|
|
268
|
+SettingValidator.register_validator(
|
|
269
|
+ 'host',
|
|
270
|
+ host_val,
|
|
271
|
+ 'host validator')
|
|
272
|
+
|
246
|
273
|
SettingValidator.create_list_validator(
|
247
|
274
|
'list',
|
248
|
275
|
SettingValidator('strip'),
|