|
@@ -13,6 +13,8 @@ from SocketServer import ThreadingMixIn
|
|
|
import time
|
|
|
|
|
|
class BatcaveHttpRequestHandler(BaseHTTPRequestHandler):
|
|
|
+ DATAKEY_VPN = '__VPN__'
|
|
|
+
|
|
|
def __init__(self, request, client_address, server):
|
|
|
self.logger = logging.getLogger('API')
|
|
|
BaseHTTPRequestHandler.__init__(self, request, client_address, server)
|
|
@@ -117,6 +119,7 @@ class BatcaveHttpRequestHandler(BaseHTTPRequestHandler):
|
|
|
data = sorteddata
|
|
|
|
|
|
for nodeid in data:
|
|
|
+ if nodeid.startswith('__'): continue
|
|
|
nodename = storage.data[nodeid]['hostname'] if 'hostname' in storage.data[nodeid] else '<?>'
|
|
|
self.wfile.write('<tr><td><a href="/node/' + nodeid + '.json">' + nodeid + '</a></td><td>' + nodename + '</td></tr>')
|
|
|
|
|
@@ -186,9 +189,9 @@ class BatcaveHttpRequestHandler(BaseHTTPRequestHandler):
|
|
|
self.send_error(400, 'Bad key.')
|
|
|
return
|
|
|
|
|
|
- if not 'vpn' in storage.data: storage.data['vpn'] = {}
|
|
|
- if not key in storage.data['vpn']: storage.data['vpn'][key] = { 'active': {}, 'last': {} }
|
|
|
- item = storage.data['vpn'][key]
|
|
|
+ if not self.DATAKEY_VPN in storage.data: storage.data[self.DATAKEY_VPN] = {}
|
|
|
+ if not key in storage.data[self.DATAKEY_VPN]: storage.data[self.DATAKEY_VPN][key] = { 'active': {}, 'last': {} }
|
|
|
+ item = storage.data[self.DATAKEY_VPN][key]
|
|
|
|
|
|
if action == 'establish':
|
|
|
item['active'][gw] = { 'establish': time.time(), 'peer': peername, 'remote': remote }
|
|
@@ -216,10 +219,10 @@ class BatcaveHttpRequestHandler(BaseHTTPRequestHandler):
|
|
|
self.wfile.write('<html><head><title>BATCAVE - VPN LIST</title></head>\n')
|
|
|
self.wfile.write('<body>\n')
|
|
|
self.wfile.write('<table>\n<thead><tr><th>key</th><th>active</th><th>last</th></tr></thead>\n')
|
|
|
-
|
|
|
- if 'vpn' in storage.data:
|
|
|
- for key in storage.data['vpn']:
|
|
|
- item = storage.data['vpn'][key]
|
|
|
+
|
|
|
+ if self.DATAKEY_VPN in storage.data:
|
|
|
+ for key in storage.data[self.DATAKEY_VPN]:
|
|
|
+ item = storage.data[self.DATAKEY_VPN][key]
|
|
|
self.wfile.write('<tr><td>' + str(key) + '</td>')
|
|
|
self.wfile.write('<td>' + json.dumps(item['active'] if 'active' in item else {}) + '</td>')
|
|
|
self.wfile.write('<td>' + json.dumps(item['last'] if 'last' in item else {}) + '</td>')
|