This is a fork of:
https://github.com/roglew/puppy
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.2 KiB
50 lines
1.2 KiB
8 years ago
|
import copy
|
||
|
import json
|
||
|
|
||
|
default_config = """{
|
||
|
"listeners": [
|
||
|
{"iface": "127.0.0.1", "port": 8080}
|
||
|
]
|
||
|
}"""
|
||
|
|
||
|
|
||
|
class ProxyConfig:
|
||
|
|
||
|
def __init__(self):
|
||
|
self._listeners = [('127.0.0.1', '8080')]
|
||
|
|
||
|
def load(self, fname):
|
||
|
try:
|
||
|
with open(fname, 'r') as f:
|
||
|
config_info = json.loads(f.read())
|
||
|
except IOError:
|
||
|
config_info = json.loads(default_config)
|
||
|
with open(fname, 'w') as f:
|
||
|
f.write(default_config)
|
||
|
|
||
|
# Listeners
|
||
|
if 'listeners' in config_info:
|
||
|
self._listeners = []
|
||
|
for info in config_info['listeners']:
|
||
|
if 'port' in info:
|
||
|
port = info['port']
|
||
|
else:
|
||
|
port = 8080
|
||
|
|
||
|
if 'interface' in info:
|
||
|
iface = info['interface']
|
||
|
elif 'iface' in info:
|
||
|
iface = info['iface']
|
||
|
else:
|
||
|
iface = '127.0.0.1'
|
||
|
|
||
|
self._listeners.append((iface, port))
|
||
|
|
||
|
@property
|
||
|
def listeners(self):
|
||
|
return copy.deepcopy(self._listeners)
|
||
|
|
||
|
@listeners.setter
|
||
|
def listeners(self, val):
|
||
|
self._listeners = val
|