From 6f8e556bcf9352abecdfb164e11d7df562d14ad7 Mon Sep 17 00:00:00 2001 From: Jonathan Zernik Date: Fri, 23 Oct 2020 21:16:50 -0400 Subject: [PATCH] Make web server port configurable (#314) * Make host and port for web server configurable * Add webadmin host and port to config file * Use current host and port in web frontend * Remove envoy and frontend from docker compose * Remove envoy * Remove unused postgres docker volume --- docker/config.ini | 4 ++ docker/docker-compose.yml | 53 +----------------- docker/envoy/Dockerfile | 31 ----------- docker/envoy/docker-entrypoint.sh | 8 --- frontend/envoy.yaml | 54 ------------------- .../src/squeakclient/requests.js | 10 ++-- .../src/squeakclient/squeakclient.js | 13 ----- .../admin/squeak_admin_web_service.py | 21 +++++--- squeakserver/main.py | 20 ++++--- 9 files changed, 39 insertions(+), 175 deletions(-) delete mode 100644 docker/envoy/Dockerfile delete mode 100644 docker/envoy/docker-entrypoint.sh delete mode 100644 frontend/envoy.yaml delete mode 100644 frontend/squeak-node-frontend/src/squeakclient/squeakclient.js diff --git a/docker/config.ini b/docker/config.ini index d1a73758..8453c7d7 100644 --- a/docker/config.ini +++ b/docker/config.ini @@ -28,6 +28,10 @@ rpc_port=8774 rpc_host=0.0.0.0 rpc_port=8994 +[webadmin] +host=0.0.0.0 +port=5000 + [postgresql] host=db database=squeakserver diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index a07fd9e7..b7a91e95 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -84,6 +84,8 @@ services: - lnd_other_dir:/root/.lnd - ./config.ini:/app/config.ini - sqk_other_dir:/root/.sqk + ports: + - 5001:5000 links: - "btcd:btcd" - "lnd_other:lnd" @@ -93,54 +95,6 @@ services: - net.ipv6.conf.all.disable_ipv6=0 entrypoint: ["./start-sqkserver.sh"] - envoy: - image: envoy - container_name: envoy - build: - context: ../ - dockerfile: docker/envoy/Dockerfile - ports: - - 8080:8080 - links: - - "sqkserver:sqkserver" - environment: - - SERVICE_NAME=sqkserver - - envoy_other: - image: envoy_other - container_name: envoy_other - build: - context: ../ - dockerfile: docker/envoy/Dockerfile - ports: - - 8090:8080 - links: - - "sqkserver_other:sqkserver_other" - environment: - - SERVICE_NAME=sqkserver_other - - frontend: - image: frontend - container_name: frontend - build: - context: ../ - dockerfile: docker/frontend/Dockerfile - args: - - PORT=8080 - ports: - - 8081:8081 - - frontend_other: - image: frontend_other - container_name: frontend_other - build: - context: ../ - dockerfile: docker/frontend/Dockerfile - args: - - PORT=8090 - ports: - - 8091:8081 - volumes: bitcoin: driver: local @@ -162,6 +116,3 @@ volumes: sqk_other_dir: driver: local - - postgres_dir: - driver: local diff --git a/docker/envoy/Dockerfile b/docker/envoy/Dockerfile deleted file mode 100644 index 8b314b37..00000000 --- a/docker/envoy/Dockerfile +++ /dev/null @@ -1,31 +0,0 @@ -# Copyright 2018 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -FROM envoyproxy/envoy:v1.15.0 - -#COPY "frontend/envoy.yaml" /etc/envoy/envoy.yaml - -#CMD /usr/local/bin/envoy -c /etc/envoy/envoy.yaml -l trace --log-path /tmp/envoy_info.log - - - -COPY "frontend/envoy.yaml" /tmpl/envoy.yaml.tmpl -COPY docker/envoy/docker-entrypoint.sh / - -RUN chmod 500 /docker-entrypoint.sh - -RUN apt-get update && \ - apt-get install gettext -y - -ENTRYPOINT ["/docker-entrypoint.sh"] diff --git a/docker/envoy/docker-entrypoint.sh b/docker/envoy/docker-entrypoint.sh deleted file mode 100644 index f221bef8..00000000 --- a/docker/envoy/docker-entrypoint.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh -set -e - -echo "Generating envoy.yaml config file..." -cat /tmpl/envoy.yaml.tmpl | envsubst \$ENVOY_LB_ALG,\$SERVICE_NAME > /etc/envoy.yaml - -echo "Starting Envoy..." -/usr/local/bin/envoy -c /etc/envoy.yaml diff --git a/frontend/envoy.yaml b/frontend/envoy.yaml deleted file mode 100644 index 55f76e59..00000000 --- a/frontend/envoy.yaml +++ /dev/null @@ -1,54 +0,0 @@ -admin: - access_log_path: /tmp/admin_access.log - address: - socket_address: { address: 0.0.0.0, port_value: 9901 } - -static_resources: - listeners: - - name: listener_0 - address: - socket_address: { address: 0.0.0.0, port_value: 8080 } - filter_chains: - - filters: - - name: envoy.filters.network.http_connection_manager - typed_config: - "@type": type.googleapis.com/envoy.config.filter.network.http_connection_manager.v2.HttpConnectionManager - codec_type: auto - stat_prefix: ingress_http - route_config: - name: local_route - virtual_hosts: - - name: local_service - domains: ["*"] - routes: - - match: { prefix: "/" } - route: - cluster: squeak_admin_service - max_grpc_timeout: 0s - cors: - allow_origin_string_match: - - prefix: "*" - allow_methods: GET, PUT, DELETE, POST, OPTIONS - allow_headers: keep-alive,user-agent,cache-control,content-type,content-transfer-encoding,custom-header-1,x-accept-content-transfer-encoding,x-accept-response-streaming,x-user-agent,x-grpc-web,grpc-timeout - max_age: "1728000" - expose_headers: custom-header-1,grpc-status,grpc-message - http_filters: - - name: envoy.filters.http.grpc_web - - name: envoy.filters.http.cors - - name: envoy.filters.http.router - clusters: - - name: squeak_admin_service - connect_timeout: 0.25s - type: logical_dns - http2_protocol_options: {} - lb_policy: round_robin - # win/mac hosts: Use address: host.docker.internal instead of address: localhost in the line below - load_assignment: - cluster_name: cluster_0 - endpoints: - - lb_endpoints: - - endpoint: - address: - socket_address: - address: ${SERVICE_NAME} - port_value: 8994 diff --git a/frontend/squeak-node-frontend/src/squeakclient/requests.js b/frontend/squeak-node-frontend/src/squeakclient/requests.js index aa73669f..363c268f 100644 --- a/frontend/squeak-node-frontend/src/squeakclient/requests.js +++ b/frontend/squeak-node-frontend/src/squeakclient/requests.js @@ -1,5 +1,3 @@ -import { client } from "../squeakclient/squeakclient" - import { GetInfoRequest, WalletBalanceRequest, @@ -79,8 +77,14 @@ import { } from "../proto/squeak_admin_pb" +export let web_host_port = 'http://' + window.location.hostname + ':' + window.location.port; + +console.log("web_host_port:"); +console.log(web_host_port); + + function makeRequest(route, request, handleResponse) { - fetch('http://localhost:5000/' + route, { + fetch(web_host_port + '/' + route, { method: 'post', body: request.serializeBinary() }).then(function(response) { diff --git a/frontend/squeak-node-frontend/src/squeakclient/squeakclient.js b/frontend/squeak-node-frontend/src/squeakclient/squeakclient.js deleted file mode 100644 index 172013be..00000000 --- a/frontend/squeak-node-frontend/src/squeakclient/squeakclient.js +++ /dev/null @@ -1,13 +0,0 @@ -import { SqueakAdminClient } from "../proto/squeak_admin_grpc_web_pb" - -const PORT = process.env.REACT_APP_PORT; - -console.log("port:"); -console.log(PORT); - -const rpc_port = PORT ? PORT : 8080 - -console.log("rpc_port:"); -console.log(rpc_port); - -export let client = new SqueakAdminClient('http://' + window.location.hostname + ':' + rpc_port) diff --git a/squeakserver/admin/squeak_admin_web_service.py b/squeakserver/admin/squeak_admin_web_service.py index 508a0df6..7f80ed0a 100644 --- a/squeakserver/admin/squeak_admin_web_service.py +++ b/squeakserver/admin/squeak_admin_web_service.py @@ -295,10 +295,17 @@ def create_app(handler): return app -def run_app(handler): - app = create_app(handler) - app.run( - host="0.0.0.0", - port=5000, - debug=False, - ) +class SqueakAdminWebServer(): + + def __init__(self, host, port, handler): + self.host = host + self.port = port + self.handler = handler + self.app = create_app(handler) + + def serve(self): + self.app.run( + self.host, + self.port, + debug=False, + ) diff --git a/squeakserver/main.py b/squeakserver/main.py index 3dd2bec0..3bea8d97 100644 --- a/squeakserver/main.py +++ b/squeakserver/main.py @@ -10,6 +10,7 @@ from squeak.params import SelectParams from squeakserver.admin.squeak_admin_server_handler import SqueakAdminServerHandler from squeakserver.admin.squeak_admin_server_servicer import SqueakAdminServerServicer +from squeakserver.admin.squeak_admin_web_service import SqueakAdminWebServer from squeakserver.blockchain.bitcoin_blockchain_client import BitcoinBlockchainClient from squeakserver.common.lnd_lightning_client import LNDLightningClient from squeakserver.db.db_engine import get_postgres_engine, get_sqlite_engine @@ -18,7 +19,6 @@ from squeakserver.node.squeak_node import SqueakNode from squeakserver.server.lightning_address import LightningAddressHostPort from squeakserver.server.squeak_server_handler import SqueakServerHandler from squeakserver.server.squeak_server_servicer import SqueakServerServicer -from squeakserver.admin.squeak_admin_web_service import run_app logger = logging.getLogger(__name__) @@ -61,9 +61,12 @@ def load_admin_rpc_server(config, handler) -> SqueakAdminServerServicer: ) -def load_admin_web_server(config, handler): - # TODO - pass +def load_admin_web_server(config, handler) -> SqueakAdminWebServer: + return SqueakAdminWebServer( + config["webadmin"]["host"], + config["webadmin"]["port"], + handler, + ) def load_network(config): @@ -149,11 +152,11 @@ def start_admin_rpc_server(rpc_server): thread.start() -def start_admin_web_server(handler): +def start_admin_web_server(admin_web_server): logger.info("Calling start_admin_web_server...") thread = threading.Thread( - target=run_app, - args=(handler,), + target=admin_web_server.serve, + args=(), ) thread.daemon = True thread.start() @@ -248,7 +251,8 @@ def run_server(config): start_admin_rpc_server(admin_rpc_server) # start admin web server - start_admin_web_server(admin_handler) + admin_web_server = load_admin_web_server(config, admin_handler) + start_admin_web_server(admin_web_server) # start rpc server handler = load_handler(squeak_node)