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,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'),

Loading…
Cancel
Save