|
@@ -24,33 +24,6 @@ class BatcaveHttpRequestHandler(BaseHTTPRequestHandler):
|
|
|
self.logger = logging.getLogger('API')
|
|
|
BaseHTTPRequestHandler.__init__(self, request, client_address, server)
|
|
|
|
|
|
- # check all entries for a proper 'remote' entry
|
|
|
- vpn = self.server.storage.data[self.DATAKEY_VPN]
|
|
|
- init_vpn_cache = {}
|
|
|
- for key in vpn:
|
|
|
- if not isinstance(vpn[key], dict):
|
|
|
- continue
|
|
|
- for mode in vpn[key]:
|
|
|
- if not isinstance(vpn[key][mode], dict):
|
|
|
- continue
|
|
|
- for gw in vpn[key][mode]:
|
|
|
- if not isinstance(vpn[key][mode][gw], dict):
|
|
|
- continue
|
|
|
- item = vpn[key][mode][gw]
|
|
|
- if 'remote' in item and not 'remote_raw' in item:
|
|
|
- item['remote_raw'] = item['remote']
|
|
|
- resolved = None
|
|
|
- if item['remote'] in init_vpn_cache:
|
|
|
- resolved = init_vpn_cache[item['remote']]
|
|
|
- else:
|
|
|
- resolved = ffstatus.resolve_ipblock(item['remote'])
|
|
|
- init_vpn_cache[item['remote']] = resolved
|
|
|
- if not resolved is None:
|
|
|
- self.logger.info('Startup: resolved VPN entry \'{0}\' to net \'{1}\'.'.format(item['remote'], resolved['name']))
|
|
|
- if not resolved is None:
|
|
|
- item['remote'] = resolved
|
|
|
- self.server.storage.save()
|
|
|
-
|
|
|
def parse_url_pathquery(self):
|
|
|
"""Extracts the query parameters from the request path."""
|
|
|
url = re.match(r'^/(?P<path>.*?)(\?(?P<query>.+))?$', self.path.strip())
|
|
@@ -558,6 +531,34 @@ class ApiServer(ThreadingMixIn, HTTPServer):
|
|
|
HTTPServer.__init__(self, endpoint, BatcaveHttpRequestHandler)
|
|
|
self.storage = storage
|
|
|
|
|
|
+ # check all entries for a proper 'remote' entry
|
|
|
+ vpn = storage.data[BatcaveHttpRequestHandler.DATAKEY_VPN] if BatcaveHttpRequestHandler.DATAKEY_VPN in storage.data else {}
|
|
|
+ init_vpn_cache = {}
|
|
|
+ for key in vpn:
|
|
|
+ if not isinstance(vpn[key], dict):
|
|
|
+ continue
|
|
|
+ for mode in vpn[key]:
|
|
|
+ if not isinstance(vpn[key][mode], dict):
|
|
|
+ continue
|
|
|
+ for gw in vpn[key][mode]:
|
|
|
+ if not isinstance(vpn[key][mode][gw], dict):
|
|
|
+ continue
|
|
|
+ item = vpn[key][mode][gw]
|
|
|
+ if 'remote' in item and not 'remote_raw' in item:
|
|
|
+ item['remote_raw'] = item['remote']
|
|
|
+ resolved = None
|
|
|
+ if item['remote'] in init_vpn_cache:
|
|
|
+ resolved = init_vpn_cache[item['remote']]
|
|
|
+ else:
|
|
|
+ resolved = ffstatus.resolve_ipblock(item['remote'])
|
|
|
+ init_vpn_cache[item['remote']] = resolved
|
|
|
+ if not resolved is None:
|
|
|
+ self.logger.info('Startup: resolved VPN entry \'{0}\' to net \'{1}\'.'.format(item['remote'], resolved['name']))
|
|
|
+ if not resolved is None:
|
|
|
+ item['remote'] = resolved
|
|
|
+ storage.save()
|
|
|
+
|
|
|
+
|
|
|
def __str__(self):
|
|
|
return 'ApiServer on {0}'.format(self.server_address)
|
|
|
|