diff --git a/.env b/.env index fe45b31ba671da025d152264e6efaebeae0755fc..e81f2907303fdc92076f9c0e92815a2ad4c36f4a 100644 --- a/.env +++ b/.env @@ -1,3 +1,17 @@ DOCKER_SUBNET=172.27.0.0/16 DOCKER_SUBNET_GATEWAY=172.27.0.1 HANDLE_SERVER_IPV4_ADDRESS=172.27.0.2 +HANDLE_SERVER_BIND_ADDRESS=172.27.0.2 +HANDLE_SERVER_TCP_PORT=2641 +HANDLE_SERVER_UDP_PORT=2641 +HANDLE_SERVER_HTTP_PORT=8000 +HANDLE_SERVER_ORG_NAME="Test Inc." +HANDLE_SERVER_CONTACT_NAME="Ms Test" +HANDLE_SERVER_CONTACT_EMAIL="test@example.com" +HANDLE_SERVER_LOG_SAVE_INTERVAL="Monthly" + + +# HANDLE_SERVER_HOME_PREFIX without "0.NA/" prefix. +HANDLE_SERVER_HOME_PREFIX="0.TEST" +# USE_PUBLIC_HANDLE_SYSTEM="TRUE" +USE_PUBLIC_HANDLE_SYSTEM="FALSE" diff --git a/handle_server/Dockerfile b/handle_server/Dockerfile index 107b32b81edc4b1faa34ac7df0034b0c86e87496..6ef9a68bb7218e50ce6267d49ff23b4c8913211a 100644 --- a/handle_server/Dockerfile +++ b/handle_server/Dockerfile @@ -1,5 +1,7 @@ FROM eclipse-temurin:21-jre-alpine +RUN apk add jq + RUN mkdir -p /hs/srv_1 WORKDIR /hs @@ -14,6 +16,8 @@ RUN tar -xvzf handle-distribution.tar.gz WORKDIR /hs/handle-${HANDLE_SERVER_VERSION} COPY ./run_handle_server.sh ./ +COPY ./generate_keys.sh ./ +COPY ./generate_siteinfo.sh ./ COPY ./templates /hs/templates diff --git a/handle_server/run_handle_server.sh b/handle_server/run_handle_server.sh index 0b818d7be202ce912f1dca688532027ee45bfafd..6bd28d1a78a0260bed7ad8fa7d4b02266a5820b5 100755 --- a/handle_server/run_handle_server.sh +++ b/handle_server/run_handle_server.sh @@ -10,10 +10,38 @@ fi # ### Update configuration ### # update config.dct -sed "s/HANDLE_SERVER_IPV4_ADDRESS/${HANDLE_SERVER_IPV4_ADDRESS}/g" /hs/templates/config.dct > "$SRV_DIR/config.dct" +ALLOW_NA_ADMINS='"allow_na_admins" = "no"' +TEMPLATE_NS_OVERRIDE='"template_ns_override" = "yes"' +SERVER_ADMINS="300:${HANDLE_SERVER_HOME_PREFIX}/ADMIN" +if [ "$USE_PUBLIC_HANDLE_SYSTEM" = "TRUE" ] ; then + ALLOW_NA_ADMINS="" + TEMPLATE_NS_OVERRIDE="" + SERVER_ADMINS="300:0.NA/${HANDLE_SERVER_HOME_PREFIX}" +fi +REPLICATION_ADMINS="${SERVER_ADMINS}" + +sed "s/__HANDLE_SERVER_BIND_ADDRESS__/${HANDLE_SERVER_BIND_ADDRESS}/g" /hs/templates/config.dct \ + | sed "s/__HANDLE_SERVER_HTTP_PORT__/${HANDLE_SERVER_HTTP_PORT}/g" \ + | sed "s/__HANDLE_SERVER_TCP_PORT__/${HANDLE_SERVER_TCP_PORT}/g" \ + | sed "s/__HANDLE_SERVER_UDP_PORT__/${HANDLE_SERVER_UDP_PORT}/g" \ + | sed "s/__HANDLE_SERVER_ALLOW_NA_ADMINS__/${ALLOW_NA_ADMINS}/g" \ + | sed "s/__HANDLE_SERVER_TEMPLATE_NS_OVERRIDE__/${TEMPLATE_NS_OVERRIDE}/g" \ + | sed "s/__HANDLE_SERVER_SERVER_ADMINS__/${SERVER_ADMINS}/g" \ + | sed "s/__HANDLE_SERVER_REPLICATION_ADMINS__/${REPLICATION_ADMINS}/g" \ + > "$SRV_DIR/config.dct" # update siteinfo.json -sed "s/HANDLE_SERVER_IPV4_ADDRESS/${HANDLE_SERVER_IPV4_ADDRESS}/g" /hs/templates/siteinfo.json > "$SRV_DIR/siteinfo.json" +RSA_KEY_N="$(cat "${SRV_DIR}/pubkey.json" | jq .n)" +RSA_KEY_E="$(cat "${SRV_DIR}/pubkey.json" | jq .e)" + +sed "s/__HANDLE_SERVER_IPV4_ADDRESS__/${HANDLE_SERVER_IPV4_ADDRESS}/g" /hs/templates/siteinfo.json \ + | sed "s/__HANDLE_SERVER_DESCRIPTION__/${HANDLE_SERVER_DESCRIPTION}/g" \ + | sed "s/__HANDLE_SERVER_HTTP_PORT__/${HANDLE_SERVER_HTTP_PORT}/g" \ + | sed "s/__HANDLE_SERVER_TCP_PORT__/${HANDLE_SERVER_TCP_PORT}/g" \ + | sed "s/__HANDLE_SERVER_UDP_PORT__/${HANDLE_SERVER_UDP_PORT}/g" \ + | sed "s/\"__HANDLE_SERVER_PUBKEY_RSA_N__\"/${RSA_KEY_N}/g" \ + | sed "s/\"__HANDLE_SERVER_PUBKEY_RSA_E__\"/${RSA_KEY_E}/g" \ + > "$SRV_DIR/siteinfo.json" # ### Configure private handle network ### diff --git a/handle_server/templates/config.dct b/handle_server/templates/config.dct index 6a1ee17af711184cf789bbdbec58ad6b0425aa72..ce049b5b87b9edbea06a189b76d959550e648427 100644 --- a/handle_server/templates/config.dct +++ b/handle_server/templates/config.dct @@ -1,29 +1,29 @@ { "hdl_http_config" = { - "bind_address" = "HANDLE_SERVER_IPV4_ADDRESS" + "bind_address" = "__HANDLE_SERVER_BIND_ADDRESS__" "num_threads" = "15" - "bind_port" = "8000" + "bind_port" = "__HANDLE_SERVER_HTTP_PORT__" "log_accesses" = "yes" } "server_type" = "server" "hdl_udp_config" = { - "bind_address" = "HANDLE_SERVER_IPV4_ADDRESS" + "bind_address" = "__HANDLE_SERVER_BIND_ADDRESS__" "num_threads" = "15" - "bind_port" = "2641" + "bind_port" = "__HANDLE_SERVER_UDP_PORT__" "log_accesses" = "yes" } "hdl_tcp_config" = { - "bind_address" = "HANDLE_SERVER_IPV4_ADDRESS" + "bind_address" = "__HANDLE_SERVER_BIND_ADDRESS__" "num_threads" = "15" - "bind_port" = "2641" + "bind_port" = "__HANDLE_SERVER_TCP_PORT__" "log_accesses" = "yes" } "log_save_config" = { "log_save_directory" = "logs" - "log_save_interval" = "Monthly" + "log_save_interval" = "__HANDLE_SERVER_LOG_SAVE_INTERVAL__" } "no_udp_resolution" = "no" @@ -35,11 +35,11 @@ "server_config" = { "server_admins" = ( - "300:0.TEST/ADMIN" + "__HANDLE_SERVER_SERVER_ADMINS__" ) "replication_admins" = ( - "300:0.TEST/ADMIN" + "__HANDLE_SERVER_REPLICATION_ADMINS__" ) "max_session_time" = "86400000" @@ -47,10 +47,10 @@ "max_auth_time" = "60000" "server_admin_full_access" = "yes" "case_sensitive" = "no" - "allow_na_admins" = "no" - "template_ns_override" = "yes" + __HANDLE_SERVER_ALLOW_NA_ADMINS__ + __HANDLE_SERVER_TEMPLATE_NS_OVERRIDE__ "auto_homed_prefixes" = ( - "0.NA/0.TEST" + "0.NA/__HANDLE_SERVER_HOME_PREFIX__" ) } diff --git a/handle_server/templates/siteinfo.json b/handle_server/templates/siteinfo.json index c27f6c26df804750d55c11398f3f883f37236c46..77a609433995f2d3987f95d1532cf018c9f85eb5 100644 --- a/handle_server/templates/siteinfo.json +++ b/handle_server/templates/siteinfo.json @@ -7,19 +7,19 @@ "attributes": [ { "name": "desc", - "value": "" + "value": "__HANDLE_SERVER_DESCRIPTION__" } ], "servers": [ { "serverId": 1, - "address": "HANDLE_SERVER_IPV4_ADDRESS", + "address": "__HANDLE_SERVER_IPV4_ADDRESS__", "publicKey": { "format": "key", "value": { "kty": "RSA", - "n": "wqkCd9QfFxYwMhQM72k-nQ5yL0lbxz9OTOTgR2eFj6dz5YZzoDg3t4MauMVUt5pkByWScle-7mdVJHuEp1GErqyzW3dPagTgmzc1R1i2gQF5fUiJFx90hkAzh88PW4qFs_YBwOsChGanGzsqn6cbKV3VQn5K2QZHF7rxeKdstF72lFN7ewkk-Kw5i0I3akpGYu9YJ_Is8k7rDQ5P_KKfrn_N_0_seQO-IT9vW_u0IvK75_6VwNjU5wU6SDF9dgivSk-qv7R_rpl8eAow0zUkllsFqJxEEn63koK5gSsKitfN7Jt_71b_Nwmjpv2gEydh42bEOSHx0dFeALwY1rl74w", - "e": "AQAB" + "n": "__HANDLE_SERVER_PUBKEY_RSA_N__", + "e": "__HANDLE_SERVER_PUBKEY_RSA_E__" } }, "interfaces": [ @@ -27,19 +27,19 @@ "query": true, "admin": true, "protocol": "TCP", - "port": 2641 + "port": __HANDLE_SERVER_TCP_PORT__ }, { "query": true, "admin": false, "protocol": "UDP", - "port": 2641 + "port": __HANDLE_SERVER_UDP_PORT__ }, { "query": true, "admin": true, "protocol": "HTTP", - "port": 8000 + "port": __HANDLE_SERVER_HTTP_PORT__ } ] }