summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ogcp/cfg/ogcp.json17
-rw-r--r--ogcp/og_server.py21
-rw-r--r--ogcp/views.py23
3 files changed, 47 insertions, 14 deletions
diff --git a/ogcp/cfg/ogcp.json b/ogcp/cfg/ogcp.json
index 0cdbb6d..a7ed91e 100644
--- a/ogcp/cfg/ogcp.json
+++ b/ogcp/cfg/ogcp.json
@@ -1,7 +1,4 @@
{
- "IP": "127.0.0.1",
- "PORT": 8888,
- "API_TOKEN": "c3fe7bb0395747ec42a25df027585871",
"LANG": "en",
"USERS": [
{
@@ -18,5 +15,19 @@
"Unidad Organizativa (Default)"
]
}
+ ],
+ "SERVERS": [
+ {
+ "NAME": "Server 1",
+ "IP": "127.0.0.1",
+ "PORT": 8888,
+ "API_TOKEN": "a0e9ab768cbe93dab5b1998e952bcdb7"
+ },
+ {
+ "NAME": "Server 2",
+ "IP": "127.0.0.1",
+ "PORT": 18888,
+ "API_TOKEN": "e4c8gh913dph32nxm6q2768c427jrsj1"
+ }
]
}
diff --git a/ogcp/og_server.py b/ogcp/og_server.py
index 0d7fdf8..07dcb2b 100644
--- a/ogcp/og_server.py
+++ b/ogcp/og_server.py
@@ -11,9 +11,8 @@ import requests
import json
class OGServer:
- def __init__(self, ip=app.config['IP'],
- port=app.config['PORT'],
- api_token=app.config['API_TOKEN']):
+ def __init__(self, name, ip, port, api_token):
+ self.name = name
self.ip = ip
self.port = port
self.api_token = api_token
@@ -34,3 +33,19 @@ class OGServer:
headers=self.HEADERS,
json=payload)
return r
+
+
+servers = []
+if {'IP', 'PORT', 'API_TOKEN'} <= app.config.keys():
+ # Config file backward compatibility
+ servers.append(OGServer(app.config['IP'],
+ app.config['IP'],
+ app.config['PORT'],
+ app.config['API_TOKEN']))
+else:
+ for server in app.config['SERVERS']:
+ ogserver = OGServer(server['NAME'],
+ server['IP'],
+ server['PORT'],
+ server['API_TOKEN'])
+ servers.append(ogserver)
diff --git a/ogcp/views.py b/ogcp/views.py
index 84bcc56..1ccd39b 100644
--- a/ogcp/views.py
+++ b/ogcp/views.py
@@ -25,7 +25,7 @@ from pathlib import Path
from ogcp.models import User
from ogcp.forms.auth import LoginForm, UserForm, DeleteUserForm
-from ogcp.og_server import OGServer
+from ogcp.og_server import servers
from flask_babel import lazy_gettext as _l
from flask_babel import _
from ogcp import app
@@ -177,17 +177,24 @@ def get_allowed_scopes(scopes, allowed_scopes):
get_allowed_scopes(scope, allowed_scopes)
def get_scopes(ips=set()):
- r = g.server.get('/scopes')
- scopes = r.json()
+ list_scopes = []
+ for server in servers:
+ r = server.get('/scopes')
+ scopes = r.json()
+ server_scope = {}
+ server_scope['name'] = server.name
+ server_scope.update(scopes)
+ list_scopes.append(server_scope)
+ all_scopes = {'scope': list_scopes}
if current_user.scopes:
allowed_scopes = []
- get_allowed_scopes(scopes, allowed_scopes)
- scopes = {'scope': allowed_scopes}
+ get_allowed_scopes(all_scopes, allowed_scopes)
+ all_scopes = {'scope': allowed_scopes}
r = g.server.get('/clients')
clients = r.json()
- add_state_and_ips(scopes, clients['clients'], ips)
+ add_state_and_ips(all_scopes, clients['clients'], ips)
- return scopes, clients
+ return all_scopes, clients
def hash_password(pwd):
@@ -245,7 +252,7 @@ def load_user(username):
@app.before_request
def load_config():
- g.server = OGServer()
+ g.server = servers[0]
@app.errorhandler(404)
def page_not_found(error):