summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/simplevpn.py41
-rw-r--r--scripts/templates/provider.json.jinja37
2 files changed, 67 insertions, 11 deletions
diff --git a/scripts/simplevpn.py b/scripts/simplevpn.py
index ead834d..97892ed 100755
--- a/scripts/simplevpn.py
+++ b/scripts/simplevpn.py
@@ -12,6 +12,7 @@ class EIPConfig:
self.openvpn = dict()
self.locations = dict()
self.gateways = dict()
+ self.provider = dict()
def parseConfig(provider_config):
@@ -24,6 +25,7 @@ def parseConfig(provider_config):
eip.locations.update(yamlIdListToDict(loc))
for gw in config['gateways']:
eip.gateways.update(yamlIdListToDict(gw))
+ eip.provider.update(yamlListToDict(config['provider']))
return eip
@@ -60,25 +62,42 @@ def dictToStr(d):
return d
-if __name__ == "__main__":
- parser = argparse.ArgumentParser()
- parser.add_argument("provider_config")
- parser.add_argument("eip_template")
- parser.add_argument("--obfs4_state")
- args = parser.parse_args()
+def produceEipConfig(config, obfs4_state, template):
+ config = parseConfig(os.path.abspath(config))
- config = parseConfig(os.path.abspath(args.provider_config))
-
- if args.obfs4_state:
+ if obfs4_state:
obfs4_cert = open(
- args.obfs4_state + '/obfs4_cert.txt').read().rstrip()
+ obfs4_state + '/obfs4_cert.txt').read().rstrip()
else:
obfs4_cert = None
patchObfs4Cert(config, obfs4_cert)
- t = Template(open(args.eip_template).read())
+ t = Template(open(template).read())
print(t.render(
locations=config.locations,
gateways=config.gateways,
openvpn=dictToStr(config.openvpn)))
+
+
+def produceProviderConfig(config, template):
+ config = parseConfig(os.path.abspath(config))
+ t = Template(open(template).read())
+ print(t.render(
+ provider=config.provider))
+
+
+if __name__ == "__main__":
+ parser = argparse.ArgumentParser()
+ parser.add_argument("-f", "--file")
+ parser.add_argument("-c", "--config")
+ parser.add_argument("-t", "--template")
+ parser.add_argument("--obfs4_state")
+ args = parser.parse_args()
+
+ if args.file == "eip":
+ produceEipConfig(args.config, args.obfs4_state, args.template)
+ elif args.file == "provider":
+ produceProviderConfig(args.config, args.template)
+ else:
+ print("unknown type of file:", args.file)
diff --git a/scripts/templates/provider.json.jinja b/scripts/templates/provider.json.jinja
new file mode 100644
index 0000000..f54a3c0
--- /dev/null
+++ b/scripts/templates/provider.json.jinja
@@ -0,0 +1,37 @@
+{
+ "api_uri": "https://{{ provider.api_uri }}",
+ "api_version": "3",
+ "ca_cert_fingerprint": "{{ provider.fingerprint }}",
+ "ca_cert_uri": "https://{{ provider.domain }}/ca.crt",
+ "default_language": "en",
+ "description": {
+ "en": "{{ provider.description }}"
+ },
+ "domain": "{{ provider.domain }}",
+ "enrollment_policy": "open",
+ "languages": [
+ "en"
+ ],
+ "name": {
+ "en": "{{ provider.name }}"
+ },
+ "service": {
+ "allow_anonymous": true,
+ "allow_free": true,
+ "allow_limited_bandwidth": false,
+ "allow_paid": false,
+ "allow_registration": false,
+ "allow_unlimited_bandwidth": true,
+ "bandwidth_limit": 102400,
+ "default_service_level": 1,
+ "levels": {
+ "1": {
+ "description": "Please donate.",
+ "name": "free"
+ }
+ }
+ },
+ "services": [
+ "openvpn"
+ ]
+}