Skip to content
Snippets Groups Projects
Unverified Commit 28876566 authored by Kali Kaneko's avatar Kali Kaneko
Browse files

[pkg] allow multi-provider

parent cdc80c36
No related branches found
No related tags found
No related merge requests found
......@@ -13,7 +13,7 @@ SKIP_CACHECK ?= no
VENDOR_PATH ?= providers
APPNAME ?= $(shell VENDOR_PATH=${VENDOR_PATH} branding/scripts/getparam appname | tail -n 1)
TARGET ?= $(shell VENDOR_PATH=${VENDOR_PATH} branding/scripts/getparam binname | tail -n 1)
PROVIDER ?= $(shell grep ^'provider =' ${VENDOR_PATH}/vendor.conf | cut -d '=' -f 2 | tr -d "[:space:]")
PROVIDER ?= $(shell grep ^'provider =' ${VENDOR_PATH}/vendor.conf | cut -d '=' -f 2 | cut -d ',' -f 1 | tr -d "[:space:]")
VERSION ?= $(shell git describe 2> /dev/null)
ifeq ($(VERSION),)
VERSION := "unknown"
......
......@@ -5,8 +5,7 @@ import json
import os
import sys
from provider import getDefaultProvider
from provider import getDefaultProviders
from provider import getProviderData
OUTFILE = 'providers.json'
......@@ -22,14 +21,14 @@ def generateProvidersJSON(configPath, outputJSONPath):
# For multi-provider, just add more providers to the dict
providers = {}
defaultProvider = getDefaultProvider(config)
defaultProviders = getDefaultProviders(config)
providers['default'] = defaultProvider
providers['default'] = defaultProviders[0]
providers['providers'] = []
providerData = getProviderData(defaultProvider, config)
addCaData(providerData, configPath)
providers['providers'].append(providerData)
for p in defaultProviders:
providerData = getProviderData(p, config)
addCaData(providerData, configPath)
providers['providers'].append(providerData)
with open(outputJSONPath, 'w', encoding='utf-8') as f:
json.dump(providers, f, ensure_ascii=False, indent=4)
......
......@@ -6,7 +6,7 @@ import sys
import configparser
from provider import getDefaultProvider
from provider import getDefaultProviders
from provider import getProviderData
......@@ -24,7 +24,7 @@ if __name__ == "__main__":
configFile = os.path.join(VENDOR_PATH, 'vendor.conf')
config = configparser.ConfigParser()
config.read(configFile)
provider = getDefaultProvider(config)
provider = getDefaultProviders(config)[0]
data = getProviderData(provider, config)
if len(sys.argv) != 2:
......
......@@ -6,7 +6,7 @@ import sys
import configparser
from provider import getDefaultProvider
from provider import getDefaultProviders
from provider import getProviderData
......@@ -25,7 +25,7 @@ if __name__ == "__main__":
configFile = os.path.join(VENDOR_PATH, 'vendor.conf')
config = configparser.ConfigParser()
config.read(configFile)
provider = getDefaultProvider(config)
provider = getDefaultProviders(config)[0]
data = getProviderData(provider, config)
if len(sys.argv) != 2:
......
......@@ -8,7 +8,7 @@ import sys
import configparser
from provider import getDefaultProvider
from provider import getDefaultProviders
from provider import getProviderData
......@@ -40,7 +40,7 @@ if __name__ == "__main__":
configFile = os.path.join(VENDOR_PATH, 'vendor.conf')
config = configparser.ConfigParser()
config.read(configFile)
provider = getDefaultProvider(config)
provider = getDefaultProviders(config)[0]
data = getProviderData(provider, config)
if len(sys.argv) != 2:
......
......@@ -8,7 +8,7 @@ import configparser
import os
import sys
from provider import getDefaultProvider
from provider import getDefaultProviders
from provider import getProviderData
def getData():
......@@ -20,8 +20,8 @@ def getData():
sys.exit(1)
config = configparser.ConfigParser()
config.read(configPath)
defaultProvider = getDefaultProvider(config)
return getProviderData(getDefaultProvider(config), config)
defaultProvider = getDefaultProviders(config)[0]
return getProviderData(defaultProvider, config)
if __name__ == "__main__":
param = sys.argv[1]
......
......@@ -2,14 +2,15 @@ import datetime
import os
def getDefaultProvider(config):
def getDefaultProviders(config):
# returns a list of providers
provider = os.environ.get('PROVIDER')
if provider:
print('[+] Got provider {} from environment'.format(provider))
else:
print('[+] Using default provider from config file')
provider = config['default']['provider']
return provider
return provider.split(',')
def getProviderData(provider, config):
......
......@@ -5,7 +5,9 @@ package backend
import (
"C"
"encoding/json"
"fmt"
"log"
"os"
"strconv"
"strings"
"unsafe"
......@@ -150,10 +152,20 @@ func InitOptsFromJSON(provider, providersJSON string) *InitOpts {
if err != nil {
log.Println("ERROR while parsing json:", err)
}
var providerOpts *bitmask.ProviderOpts
providerOpts = &providers.Data[0]
if len(providers.Data) != 1 {
panic("BUG: we do not support multi-provider yet")
chosenProvider := os.Getenv("LEAP_PROVIDER")
if chosenProvider != "" {
for _, p := range providers.Data {
if p.Provider == chosenProvider {
log.Println("Selecting provider: " + chosenProvider)
return &InitOpts{ProviderOptions: &p}
}
}
panic("BUG: unknown provider")
}
}
providerOpts := &providers.Data[0]
return &InitOpts{ProviderOptions: providerOpts}
}
......
[default]
provider = riseup
provider = riseup,riseupbeta
[riseup]
......@@ -21,6 +21,24 @@ geolocationAPI = https://api.black.riseup.net:9001/json
askForDonations = true
donateURL = https://riseup.net/vpn/donate
[riseupbeta]
name = RiseupBeta
applicationName = RiseupVPN
binaryName = riseup-vpn
auth = anon
providerURL = float.hexacab.org
apiURL = https://api.float.hexacab.org:4430/
caURL = https://api.float.hexacab.org/ca.crt
infoURL = https://float.hexacab.org/
tosURL = https://float.hexacab.org/
helpURL = https://float.hexacab.org/
geolocationAPI = https://menshen.float.hexacab.org/json
askForDonations = true
donateURL = https://riseup.net/vpn/donate
[calyx]
......@@ -81,21 +99,3 @@ geolocationAPI = https://menshen.float.bitmask.net/json
askForDonations = false
donateURL =
[riseupbeta]
name = riseupbeta
applicationName = RiseupVPN
binaryName = riseup-vpn
auth = anon
providerURL = float.hexacab.org
apiURL = https://api.float.hexacab.org:4430/
caURL = https://api.float.hexacab.org/ca.crt
infoURL = https://float.hexacab.org/
tosURL = https://float.hexacab.org/
helpURL = https://float.hexacab.org/
geolocationAPI = https://menshen.float.hexacab.org/json
askForDonations = true
donateURL = https://riseup.net/vpn/donate
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment