summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKali Kaneko <kali@leap.se (leap communications)>2019-09-17 19:03:03 -0600
committerKali Kaneko <kali@leap.se (leap communications)>2019-09-17 19:03:03 -0600
commitbc4f7b5837c9cd475858742d810023e1d9fc5d64 (patch)
tree8c112d31be3a3796288f9690ca42ba3a5268e42a
parent5b074c62663a8fc29a1495f92f14a16e361e20f1 (diff)
add simple provider.json
-rw-r--r--.gitignore1
-rw-r--r--Makefile3
-rw-r--r--config/demo.yaml7
-rw-r--r--main.go4
-rwxr-xr-xscripts/simplevpn.py41
-rw-r--r--scripts/templates/provider.json.jinja37
6 files changed, 80 insertions, 13 deletions
diff --git a/.gitignore b/.gitignore
index ce9fb40..f352413 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
vpnweb
deploy/*
+.mypy_cache
*.swp
*.swo
diff --git a/Makefile b/Makefile
index d2b9fb2..06ed11c 100644
--- a/Makefile
+++ b/Makefile
@@ -9,7 +9,8 @@ gen-shapeshifter:
scripts/gen-shapeshifter-state.py deploy/shapeshifter-state
gen-provider:
mkdir -p deploy/public/3
- python3 scripts/simplevpn.py config/demo.yaml scripts/templates/eip-service.json.jinja --obfs4_state deploy/shapeshifter-state > deploy/public/3/eip-service.json
+ python3 scripts/simplevpn.py --file=eip --config=config/demo.yaml --template=scripts/templates/eip-service.json.jinja --obfs4_state deploy/shapeshifter-state > deploy/public/3/eip-service.json
+ python3 scripts/simplevpn.py --file=provider --config=config/demo.yaml --template=scripts/templates/provider.json.jinja > deploy/public/provider.json
populate:
cp test/1/* public/1/
cp test/files/ca.crt public/
diff --git a/config/demo.yaml b/config/demo.yaml
index 5743304..91d0430 100644
--- a/config/demo.yaml
+++ b/config/demo.yaml
@@ -31,3 +31,10 @@ gateways:
- transports:
- [ "openvpn", "tcp", "443"]
- [ "obfs4", "tcp", "23042"]
+
+provider:
+ - name: "demo provider"
+ - description: "this is a demo provider"
+ - domain: pt.demo.bitmask.net:8000
+ - api_uri: pt.demo.bitmask.net:8000
+ - fingerprint: "SHA256: 13A6456F7A303E55B8E575D7C53A967C6A524307E69A47A86DA232830AD283DB"
diff --git a/main.go b/main.go
index a66a281..8992dae 100644
--- a/main.go
+++ b/main.go
@@ -66,10 +66,12 @@ func main() {
// add routes here
http.HandleFunc("/3/cert", ch.certResponder)
- httpFileHandler("/3/ca.crt", "./public/ca.crt")
httpFileHandler("/3/configs.json", "./public/3/configs.json")
httpFileHandler("/3/service.json", "./public/3/service.json")
httpFileHandler("/3/config/eip-service.json", "./public/3/eip-service.json")
+ httpFileHandler("/provider.json", "./public/provider.json")
+ httpFileHandler("/ca.crt", "./public/ca.crt")
+ httpFileHandler("/3/ca.crt", "./public/ca.crt")
pstr := ":" + strconv.Itoa(*port)
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"
+ ]
+}