mirror of
https://github.com/bigchaindb/bigchaindb.git
synced 2024-10-13 13:34:05 +00:00
Support for advertised host, port, scheme for Websockets (#1703)
* Support for advertised host, port, scheme for Websockets * Update docs * Add a docstring * Set env vars in Dockerfile-dev too
This commit is contained in:
parent
74b4628b75
commit
3ec4153375
@ -14,5 +14,9 @@ ENV BIGCHAINDB_CONFIG_PATH /data/.bigchaindb
|
||||
ENV BIGCHAINDB_SERVER_BIND 0.0.0.0:9984
|
||||
ENV BIGCHAINDB_WSSERVER_HOST 0.0.0.0
|
||||
ENV BIGCHAINDB_WSSERVER_SCHEME ws
|
||||
|
||||
ENV BIGCHAINDB_WSSERVER_ADVERTISED_SCHEME ws
|
||||
ENV BIGCHAINDB_WSSERVER_ADVERTISED_HOST 0.0.0.0
|
||||
ENV BIGCHAINDB_WSSERVER_ADVERTISED_PORT 9985
|
||||
ENTRYPOINT ["bigchaindb"]
|
||||
CMD ["start"]
|
||||
|
@ -12,6 +12,9 @@ ENV BIGCHAINDB_SERVER_BIND 0.0.0.0:9984
|
||||
ENV BIGCHAINDB_WSSERVER_HOST 0.0.0.0
|
||||
ENV BIGCHAINDB_WSSERVER_SCHEME ws
|
||||
|
||||
ENV BIGCHAINDB_WSSERVER_ADVERTISED_HOST 0.0.0.0
|
||||
ENV BIGCHAINDB_WSSERVER_ADVERTISED_SCHEME ws
|
||||
|
||||
ARG backend
|
||||
|
||||
RUN mkdir -p /usr/src/app
|
||||
|
@ -72,6 +72,9 @@ config = {
|
||||
'scheme': os.environ.get('BIGCHAINDB_WSSERVER_SCHEME') or 'ws',
|
||||
'host': os.environ.get('BIGCHAINDB_WSSERVER_HOST') or 'localhost',
|
||||
'port': int(os.environ.get('BIGCHAINDB_WSSERVER_PORT', 9985)),
|
||||
'advertised_scheme': os.environ.get('BIGCHAINDB_WSSERVER_ADVERTISED_SCHEME') or 'ws',
|
||||
'advertised_host': os.environ.get('BIGCHAINDB_WSSERVER_ADVERTISED_HOST') or 'localhost',
|
||||
'advertised_port': int(os.environ.get('BIGCHAINDB_WSSERVER_ADVERTISED_PORT', 9985)),
|
||||
},
|
||||
'database': _database_map[
|
||||
os.environ.get('BIGCHAINDB_DATABASE_BACKEND', 'rethinkdb')
|
||||
|
@ -27,8 +27,13 @@ def make_error(status_code, message=None):
|
||||
|
||||
|
||||
def base_ws_uri():
|
||||
"""Base websocket uri."""
|
||||
scheme = config['wsserver']['scheme']
|
||||
host = config['wsserver']['host']
|
||||
port = config['wsserver']['port']
|
||||
"""Base websocket URL that is advertised to external clients.
|
||||
|
||||
Useful when the websocket URL advertised to the clients needs to be
|
||||
customized (typically when running behind NAT, firewall, etc.)
|
||||
"""
|
||||
|
||||
scheme = config['wsserver']['advertised_scheme']
|
||||
host = config['wsserver']['advertised_host']
|
||||
port = config['wsserver']['advertised_port']
|
||||
return '{}://{}:{}'.format(scheme, host, port)
|
||||
|
@ -24,6 +24,9 @@ For convenience, here's a list of all the relevant environment variables (docume
|
||||
`BIGCHAINDB_WSSERVER_SCHEME`<br>
|
||||
`BIGCHAINDB_WSSERVER_HOST`<br>
|
||||
`BIGCHAINDB_WSSERVER_PORT`<br>
|
||||
`BIGCHAINDB_WSSERVER_ADVERTISED_SCHEME`<br>
|
||||
`BIGCHAINDB_WSSERVER_ADVERTISED_HOST`<br>
|
||||
`BIGCHAINDB_WSSERVER_ADVERTISED_PORT`<br>
|
||||
`BIGCHAINDB_CONFIG_PATH`<br>
|
||||
`BIGCHAINDB_BACKLOG_REASSIGN_DELAY`<br>
|
||||
`BIGCHAINDB_LOG`<br>
|
||||
@ -248,6 +251,38 @@ export BIGCHAINDB_WSSERVER_PORT=9985
|
||||
}
|
||||
```
|
||||
|
||||
## wsserver.advertised_scheme, wsserver.advertised_host and wsserver.advertised_port
|
||||
|
||||
These settings are for the advertising the Websocket URL to external clients in
|
||||
the root API endpoint. These configurations might be useful if your deployment
|
||||
is hosted behind a firewall, NAT, etc. where the exposed public IP or domain is
|
||||
different from where BigchainDB is running.
|
||||
|
||||
**Example using environment variables**
|
||||
```text
|
||||
export BIGCHAINDB_WSSERVER_ADVERTISED_SCHEME=wss
|
||||
export BIGCHAINDB_WSSERVER_ADVERTISED_HOST=mybigchaindb.com
|
||||
export BIGCHAINDB_WSSERVER_ADVERTISED_PORT=443
|
||||
```
|
||||
|
||||
**Example config file snippet**
|
||||
```js
|
||||
"wsserver": {
|
||||
"advertised_scheme": "wss",
|
||||
"advertised_host": "mybigchaindb.com",
|
||||
"advertised_port": 443
|
||||
}
|
||||
```
|
||||
|
||||
**Default values (from a config file)**
|
||||
```js
|
||||
"wsserver": {
|
||||
"advertised_scheme": "ws",
|
||||
"advertised_host": "localhost",
|
||||
"advertised_port": 9985
|
||||
}
|
||||
```
|
||||
|
||||
## backlog_reassign_delay
|
||||
|
||||
Specifies how long, in seconds, transactions can remain in the backlog before being reassigned. Long-waiting transactions must be reassigned because the assigned node may no longer be responsive. The default duration is 120 seconds.
|
||||
|
@ -490,17 +490,17 @@ def wsserver_config():
|
||||
|
||||
@pytest.fixture
|
||||
def wsserver_scheme(wsserver_config):
|
||||
return wsserver_config['scheme']
|
||||
return wsserver_config['advertised_scheme']
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def wsserver_host(wsserver_config):
|
||||
return wsserver_config['host']
|
||||
return wsserver_config['advertised_host']
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def wsserver_port(wsserver_config):
|
||||
return wsserver_config['port']
|
||||
return wsserver_config['advertised_port']
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
|
@ -150,6 +150,9 @@ def test_autoconfigure_read_both_from_file_and_env(monkeypatch, request, certs_d
|
||||
WSSERVER_SCHEME = 'ws'
|
||||
WSSERVER_HOST = '1.2.3.4'
|
||||
WSSERVER_PORT = 57
|
||||
WSSERVER_ADVERTISED_SCHEME = 'wss'
|
||||
WSSERVER_ADVERTISED_HOST = 'a.b.c.d'
|
||||
WSSERVER_ADVERTISED_PORT = 89
|
||||
KEYRING = 'pubkey_0:pubkey_1:pubkey_2'
|
||||
LOG_FILE = '/somewhere/something.log'
|
||||
|
||||
@ -173,6 +176,9 @@ def test_autoconfigure_read_both_from_file_and_env(monkeypatch, request, certs_d
|
||||
'BIGCHAINDB_WSSERVER_SCHEME': WSSERVER_SCHEME,
|
||||
'BIGCHAINDB_WSSERVER_HOST': WSSERVER_HOST,
|
||||
'BIGCHAINDB_WSSERVER_PORT': WSSERVER_PORT,
|
||||
'BIGCHAINDB_WSSERVER_ADVERTISED_SCHEME': WSSERVER_ADVERTISED_SCHEME,
|
||||
'BIGCHAINDB_WSSERVER_ADVERTISED_HOST': WSSERVER_ADVERTISED_HOST,
|
||||
'BIGCHAINDB_WSSERVER_ADVERTISED_PORT': WSSERVER_ADVERTISED_PORT,
|
||||
'BIGCHAINDB_KEYRING': KEYRING,
|
||||
'BIGCHAINDB_LOG_FILE': LOG_FILE,
|
||||
'BIGCHAINDB_DATABASE_CA_CERT': certs_dir + '/ca.crt',
|
||||
@ -188,6 +194,9 @@ def test_autoconfigure_read_both_from_file_and_env(monkeypatch, request, certs_d
|
||||
'BIGCHAINDB_WSSERVER_SCHEME': WSSERVER_SCHEME,
|
||||
'BIGCHAINDB_WSSERVER_HOST': WSSERVER_HOST,
|
||||
'BIGCHAINDB_WSSERVER_PORT': WSSERVER_PORT,
|
||||
'BIGCHAINDB_WSSERVER_ADVERTISED_SCHEME': WSSERVER_ADVERTISED_SCHEME,
|
||||
'BIGCHAINDB_WSSERVER_ADVERTISED_HOST': WSSERVER_ADVERTISED_HOST,
|
||||
'BIGCHAINDB_WSSERVER_ADVERTISED_PORT': WSSERVER_ADVERTISED_PORT,
|
||||
'BIGCHAINDB_KEYRING': KEYRING,
|
||||
'BIGCHAINDB_LOG_FILE': LOG_FILE})
|
||||
|
||||
@ -261,6 +270,9 @@ def test_autoconfigure_read_both_from_file_and_env(monkeypatch, request, certs_d
|
||||
'scheme': WSSERVER_SCHEME,
|
||||
'host': WSSERVER_HOST,
|
||||
'port': WSSERVER_PORT,
|
||||
'advertised_scheme': WSSERVER_ADVERTISED_SCHEME,
|
||||
'advertised_host': WSSERVER_ADVERTISED_HOST,
|
||||
'advertised_port': WSSERVER_ADVERTISED_PORT,
|
||||
},
|
||||
'database': database,
|
||||
'keypair': {
|
||||
|
Loading…
x
Reference in New Issue
Block a user