From 1374028d17f0636a7a6ee896e12c6e7e57da76f8 Mon Sep 17 00:00:00 2001 From: David Boreham Date: Sun, 14 Jul 2024 23:08:52 -0600 Subject: [PATCH] Enable cors in laconicd http services --- .../scripts/start-serving-explorer.sh | 3 ++- .../stacks/mainnet-laconic/deploy/commands.py | 27 +++++++++++++++++++ tests/laconic-network/run-test.sh | 23 ++++++++++++++++ 3 files changed, 52 insertions(+), 1 deletion(-) diff --git a/stack_orchestrator/data/container-build/cerc-ping-pub/scripts/start-serving-explorer.sh b/stack_orchestrator/data/container-build/cerc-ping-pub/scripts/start-serving-explorer.sh index 37ff98b4..5b22a110 100755 --- a/stack_orchestrator/data/container-build/cerc-ping-pub/scripts/start-serving-explorer.sh +++ b/stack_orchestrator/data/container-build/cerc-ping-pub/scripts/start-serving-explorer.sh @@ -9,4 +9,5 @@ SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) ${SCRIPT_DIR}/update-explorer-config.sh echo "Starting serving explorer" -yarn serve --host +# Force cache re-build because vite is dumb and can't be restarted otherwise +yarn serve --host --force diff --git a/stack_orchestrator/data/stacks/mainnet-laconic/deploy/commands.py b/stack_orchestrator/data/stacks/mainnet-laconic/deploy/commands.py index 337b72ab..f84cb686 100644 --- a/stack_orchestrator/data/stacks/mainnet-laconic/deploy/commands.py +++ b/stack_orchestrator/data/stacks/mainnet-laconic/deploy/commands.py @@ -122,6 +122,31 @@ def _insert_persistent_peers(config_dir: Path, new_persistent_peers: str): output_file.write(config_file_content) +def _enable_cors(config_dir: Path): + config_file_path = config_dir.joinpath("config.toml") + if not config_file_path.exists(): + print("Error: config.toml not found") + sys.exit(1) + with open(config_file_path, "r") as input_file: + config_file_content = input_file.read() + cors_pattern = '^cors_allowed_origins = \[]' + replace_with = 'cors_allowed_origins = ["*"]' + config_file_content = re.sub(cors_pattern, replace_with, config_file_content, flags=re.MULTILINE) + with open(config_file_path, "w") as output_file: + output_file.write(config_file_content) + app_file_path = config_dir.joinpath("app.toml") + if not app_file_path.exists(): + print("Error: app.toml not found") + sys.exit(1) + with open(app_file_path, "r") as input_file: + app_file_content = input_file.read() + cors_pattern = '^enabled-unsafe-cors = false' + replace_with = "enabled-unsafe-cors = true" + app_file_content = re.sub(cors_pattern, replace_with, app_file_content, flags=re.MULTILINE) + with open(app_file_path, "w") as output_file: + output_file.write(app_file_content) + + def _phase_from_params(parameters): phase = SetupPhase.ILLEGAL if parameters.initialize_network: @@ -292,6 +317,8 @@ def create(deployment_context: DeploymentContext, extra_args): if extra_args[1]: initial_persistent_peers = extra_args[1] _insert_persistent_peers(deployment_config_dir, initial_persistent_peers) + # Enable CORS headers so explorers and so on can talk to the node + _enable_cors(deployment_config_dir) # Copy the data directory contents into our deployment # TODO: change this to work with non local paths deployment_data_dir = deployment_context.deployment_dir.joinpath("data", "laconicd-data") diff --git a/tests/laconic-network/run-test.sh b/tests/laconic-network/run-test.sh index 0ee5cb0e..019121a1 100755 --- a/tests/laconic-network/run-test.sh +++ b/tests/laconic-network/run-test.sh @@ -18,6 +18,20 @@ do rm -rf ${node_network_dir} fi done +echo "Deleting any existing deployments..." +for (( i=1 ; i<=$node_count ; i++ )); +do + node_deployment_dir=${node_dir_prefix}${i}-deployment + node_spec_file=${node_dir_prefix}${i}-spec.yml + if [[ -d $node_deployment_dir ]]; then + echo "Deleting ${node_deployment_dir}" + rm -rf ${node_deployment_dir} + fi + if [[ -f $node_spec_file ]]; then + echo "Deleting ${node_spec_file}" + rm ${node_spec_file} + fi +done echo "Initalizing ${node_count} nodes networks..." for (( i=1 ; i<=$node_count ; i++ )); @@ -56,3 +70,12 @@ do node_network_dir=${node_dir_prefix}${i} laconic-so --stack mainnet-laconic deploy setup --network-dir ${node_network_dir} --create-network --genesis-file ${genesis_file} done + +# Create deployments +echo "Creating ${node_count} deployments..." +for (( i=1 ; i<=$node_count ; i++ )); +do + node_network_dir=${node_dir_prefix}${i} + laconic-so --stack mainnet-laconic deploy init --output ${node_network_dir}-spec.yml + laconic-so --stack mainnet-laconic deploy create --deployment-dir ${node_network_dir}-deployment --spec-file ${node_dir_prefix}${i}-spec.yml --network-dir ${node_network_dir} +done