|
@@ -8,6 +8,7 @@ from storage import Storage
|
|
import json
|
|
import json
|
|
import logging
|
|
import logging
|
|
import re
|
|
import re
|
|
|
|
+import socket
|
|
from SocketServer import ThreadingMixIn
|
|
from SocketServer import ThreadingMixIn
|
|
import time
|
|
import time
|
|
|
|
|
|
@@ -28,7 +29,7 @@ class BatcaveHttpRequestHandler(BaseHTTPRequestHandler):
|
|
for m in re.finditer(r'(?P<key>.+?)=(?P<value>.+?)(&|$)', url.group('query')):
|
|
for m in re.finditer(r'(?P<key>.+?)=(?P<value>.+?)(&|$)', url.group('query')):
|
|
query[m.group('key')] = m.group('value')
|
|
query[m.group('key')] = m.group('value')
|
|
return ( path, query )
|
|
return ( path, query )
|
|
-
|
|
|
|
|
|
+
|
|
def do_GET(self):
|
|
def do_GET(self):
|
|
path, query = self.parse_url_pathquery()
|
|
path, query = self.parse_url_pathquery()
|
|
|
|
|
|
@@ -212,7 +213,7 @@ class BatcaveHttpRequestHandler(BaseHTTPRequestHandler):
|
|
self.wfile.write('<html><head><title>BATCAVE - VPN LIST</title></head>\n')
|
|
self.wfile.write('<html><head><title>BATCAVE - VPN LIST</title></head>\n')
|
|
self.wfile.write('<body>\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')
|
|
self.wfile.write('<table>\n<thead><tr><th>key</th><th>active</th><th>last</th></tr></thead>\n')
|
|
-
|
|
|
|
|
|
+
|
|
if 'vpn' in storage.data:
|
|
if 'vpn' in storage.data:
|
|
for key in storage.data['vpn']:
|
|
for key in storage.data['vpn']:
|
|
item = storage.data['vpn'][key]
|
|
item = storage.data['vpn'][key]
|
|
@@ -227,6 +228,7 @@ class BatcaveHttpRequestHandler(BaseHTTPRequestHandler):
|
|
|
|
|
|
class ApiServer(ThreadingMixIn, HTTPServer):
|
|
class ApiServer(ThreadingMixIn, HTTPServer):
|
|
def __init__(self, endpoint, storage):
|
|
def __init__(self, endpoint, storage):
|
|
|
|
+ if ':' in endpoint[0]: self.address_family = socket.AF_INET6
|
|
HTTPServer.__init__(self, endpoint, BatcaveHttpRequestHandler)
|
|
HTTPServer.__init__(self, endpoint, BatcaveHttpRequestHandler)
|
|
self.storage = storage
|
|
self.storage = storage
|
|
|
|
|