Browse Source

Adding a host validator for settings

Yann Weber 8 years ago
parent
commit
49eb5bd67c
1 changed files with 27 additions and 0 deletions
  1. 27
    0
      lodel/settings/validator.py

+ 27
- 0
lodel/settings/validator.py View File

3
 import sys
3
 import sys
4
 import os.path
4
 import os.path
5
 import re
5
 import re
6
+import socket
6
 import inspect
7
 import inspect
7
 import copy
8
 import copy
8
 
9
 
189
     except Exception as e:
190
     except Exception as e:
190
         raise SettingsValidationError("Not able to convert value to string : " + str(e))
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
 #   Default validators registration
215
 #   Default validators registration
194
 #
216
 #
243
                                         path_val,
265
                                         path_val,
244
                                         'path validator')
266
                                         'path validator')
245
 
267
 
268
+SettingValidator.register_validator(
269
+    'host',
270
+    host_val,
271
+    'host validator')
272
+
246
 SettingValidator.create_list_validator(
273
 SettingValidator.create_list_validator(
247
                                             'list',
274
                                             'list',
248
                                             SettingValidator('strip'),
275
                                             SettingValidator('strip'),

Loading…
Cancel
Save