Skip to content

Commit

Permalink
Merge pull request #395 from 0xKtota/dev
Browse files Browse the repository at this point in the history
Add switch for autopeering or static neighbors with configuration
  • Loading branch information
dlt-green authored Feb 19, 2024
2 parents 15d2a16 + 4abcacb commit 232d31e
Show file tree
Hide file tree
Showing 6 changed files with 156 additions and 6 deletions.
31 changes: 31 additions & 0 deletions common/scripts/prepare_docker_functions.sh
Original file line number Diff line number Diff line change
Expand Up @@ -287,3 +287,34 @@ stop_node () {
show_logs () {
docker compose logs -f --tail 1000
}

generate_peering_json() {
local peeringFilePath="$1"
local staticNeighbors="$2"

if [ -z "$staticNeighbors" ]; then
echo -e "No static neighbors defined"
jq -n '{peers: []}' > "$peeringFilePath"
return
fi
echo "Generating peering.json..."
local peersJson="[]"
IFS=','
for neighbor in $staticNeighbors; do
local cleanedNeighbor=$(echo "$neighbor" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
local alias=""
local multiAddress=""

if [[ "$cleanedNeighbor" =~ .*:.* ]]; then
alias=$(echo "$cleanedNeighbor" | cut -d ':' -f 1 | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
multiAddress=$(echo "$cleanedNeighbor" | cut -d ':' -f 2- | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
else
alias="Node-$(date +%s%N | sha256sum | head -c 8)"
multiAddress="$cleanedNeighbor"
fi

peersJson=$(jq --arg alias "$alias" --arg multiAddress "$multiAddress" '. += [{"alias": $alias, "multiAddress": $multiAddress}]' <<< "$peersJson")
done
unset IFS
echo "$peersJson" | jq '{peers: .}' > "$peeringFilePath" && echo "${peeringFilePath} successfully generated" || echo "Failed to generate peering.json"
}
1 change: 1 addition & 0 deletions iota-hornet/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ services:
volumes:
- "/etc/localtime:/etc/localtime:ro"
- "${HORNET_DATA_DIR:-./data}/config/config-${HORNET_NETWORK:-mainnet}.json:/app/config/config.json:ro"
- "${HORNET_DATA_DIR:-./data}/config/peering-${HORNET_NETWORK:-mainnet}.json:/app/config/peering.json"
- "${HORNET_DATA_DIR:-./data}/storage/${HORNET_NETWORK:-mainnet}:/app/storage"
- "${HORNET_DATA_DIR:-./data}/snapshots/${HORNET_NETWORK:-mainnet}:/app/snapshots"
- "${HORNET_DATA_DIR:-./data}/p2pstore/${HORNET_NETWORK:-mainnet}:/app/p2pstore"
Expand Down
6 changes: 5 additions & 1 deletion iota-hornet/prepare_docker.sh
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@ dataDir="${HORNET_DATA_DIR:-$scriptDir/data}"
configFilenameInContainer="config.json"
configFilename="config-${HORNET_NETWORK:-mainnet}.json"
configPath="${dataDir}/config/${configFilename}"
peeringFilenameInContainer="peering.json"
peeringFilename="peering-${HORNET_NETWORK:-mainnet}.json"
peeringFilePath="${dataDir}/config/${peeringFilename}"

validate_ssl_config "HORNET_SSL_CERT" "HORNET_SSL_KEY"
copy_common_assets
Expand Down Expand Up @@ -54,7 +57,7 @@ set_config "${configPath}" ".p2p.db.path" "\"/app/p2pstore\""
set_config "${configPath}" ".snapshots.fullPath" "\"/app/snapshots/full_snapshot.bin\""
set_config "${configPath}" ".snapshots.deltaPath" "\"/app/snapshots/delta_snapshot.bin\""
set_config "${configPath}" ".pruning.size.targetSize" "\"${HORNET_PRUNING_TARGET_SIZE:-64GB}\""
set_config "${configPath}" ".p2p.autopeering.enabled" "true"
set_config "${configPath}" ".p2p.autopeering.enabled" "${HORNET_AUTOPEERING_ENABLED:-true}"
set_config "${configPath}" ".restAPI.pow.enabled" "${HORNET_POW_ENABLED:-true}"
set_config "${configPath}" ".prometheus.enabled" "true"
set_config "${configPath}" ".prometheus.bindAddress" "\"0.0.0.0:9311\""
Expand All @@ -66,6 +69,7 @@ set_config_if_present_in_env "${configPath}" "HORNET_PRUNING_MAX_MILESTONES_TO_K
if [ ! -z "${HORNET_PRUNING_MAX_MILESTONES_TO_KEEP}" ]; then
set_config "${configPath}" ".pruning.milestones.enabled" "true"
fi
generate_peering_json "$peeringFilePath" "${HORNET_STATIC_NEIGHBORS:-""}"
rm -f "${tmp}"

echo "Finished"
117 changes: 113 additions & 4 deletions node-installer.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2640,6 +2640,41 @@ IotaHornet() {
echo "$rd""Set PoW / proof of work: $VAR_IOTA_HORNET_POW""$xx"
fi

echo ''
VAR_IOTA_HORNET_AUTOPEERING=$(cat .env 2>/dev/null | grep HORNET_AUTOPEERING_ENABLED= | cut -d '=' -f 2)
VAR_DEFAULT='true'
if [ -z "$VAR_IOTA_HORNET_AUTOPEERING" ]; then
echo "Set autopeering (default: $ca$VAR_DEFAULT$xx):"; echo "Press [Enter] to use default value:"
else
echo "Set autopeering (config: $ca$VAR_IOTA_HORNET_AUTOPEERING$xx)"; echo "Press [Enter] to use existing config:"
fi
read -r -p '> Press [E] to enable Autopeering... Press [X] key to disable... ' VAR_TMP;
if [ -n "$VAR_TMP" ]; then
VAR_IOTA_HORNET_AUTOPEERING=$VAR_TMP
if [ "$VAR_IOTA_HORNET_AUTOPEERING" = 'e' ] || [ "$VAR_IOTA_HORNET_AUTOPEERING" = 'E' ]; then
VAR_IOTA_HORNET_AUTOPEERING='true'
else
VAR_IOTA_HORNET_AUTOPEERING='false'
fi
elif [ -z "$VAR_IOTA_HORNET_AUTOPEERING" ]; then VAR_IOTA_HORNET_AUTOPEERING=$VAR_DEFAULT; fi

if [ "$VAR_IOTA_HORNET_AUTOPEERING" = 'true' ]; then
echo "$gn""Set autopeering: $VAR_IOTA_HORNET_AUTOPEERING""$xx"
else
echo "$rd""Set autopeering: $VAR_IOTA_HORNET_AUTOPEERING""$xx"
fi

if [ "$VAR_IOTA_HORNET_AUTOPEERING" = 'false' ]; then
echo ''
VAR_IOTA_HORNET_STATIC_NEIGHBORS=$(cat .env 2>/dev/null | grep HORNET_STATIC_NEIGHBORS= | cut -d '=' -f 2)
VAR_DEFAULT='';
if [ -z "$VAR_IOTA_HORNET_STATIC_NEIGHBORS" ]; then
echo "Set static neighbor(s):"; echo "Press [Enter] to use default value:"; else echo "Set static neighbor(s) (config: $ca""$VAR_IOTA_HORNET_STATIC_NEIGHBORS | tr ',' '\n'""$xx)"; echo "Press [Enter] to use existing config:"; fi
read -r -p '> ' VAR_TMP
if [ -n "$VAR_TMP" ]; then VAR_IOTA_HORNET_STATIC_NEIGHBORS=$VAR_TMP; elif [ -z "$VAR_IOTA_HORNET_STATIC_NEIGHBORS" ]; then VAR_IOTA_HORNET_STATIC_NEIGHBORS=$VAR_DEFAULT; fi
echo "$gn""Set static neighbor(s): $VAR_IOTA_HORNET_STATIC_NEIGHBORS""$xx"
fi

echo ''
VAR_USERNAME=$(cat .env 2>/dev/null | grep DASHBOARD_USERNAME= | cut -d '=' -f 2)
VAR_DEFAULT=$(cat /dev/urandom | tr -dc '[:alpha:]' | fold -w "${1:-10}" | head -n 1);
Expand Down Expand Up @@ -2691,7 +2726,16 @@ IotaHornet() {
echo "HORNET_POW_ENABLED=$VAR_IOTA_HORNET_POW" >> .env
echo "HORNET_HTTPS_PORT=$VAR_IOTA_HORNET_HTTPS_PORT" >> .env
echo "HORNET_GOSSIP_PORT=15600" >> .env
echo "HORNET_AUTOPEERING_PORT=14626" >> .env
echo "HORNET_AUTOPEERING_ENABLED=$VAR_IOTA_HORNET_AUTOPEERING" >> .env

if [ "$VAR_IOTA_HORNET_AUTOPEERING" = 'true' ]; then
echo "HORNET_AUTOPEERING_PORT=14626" >> .env
fi

if [ -n "$VAR_IOTA_HORNET_STATIC_NEIGHBORS" ]; then
echo "HORNET_STATIC_NEIGHBORS=$VAR_IOTA_HORNET_STATIC_NEIGHBORS" >> .env
fi

echo "RESTAPI_SALT=$VAR_SALT" >> .env

if [ "$VAR_CERT" = 0 ]
Expand Down Expand Up @@ -2741,6 +2785,11 @@ IotaHornet() {
if [ -f .env ]; then sed -i "s/INX_POI_VERSION=.*/INX_POI_VERSION=$VAR_IOTA_INX_POI_VERSION/g" .env; fi
if [ -f .env ]; then sed -i "s/INX_DASHBOARD_VERSION=.*/INX_DASHBOARD_VERSION=$VAR_IOTA_INX_DASHBOARD_VERSION/g" .env; fi

VAR_IOTA_HORNET_AUTOPEERING=$(cat .env 2>/dev/null | grep HORNET_AUTOPEERING_ENABLED | cut -d '=' -f 2)
if [ -z "$VAR_IOTA_HORNET_AUTOPEERING" ]; then
echo "HORNET_AUTOPEERING_ENABLED=true" >> .env
fi

VAR_HOST=$(cat .env 2>/dev/null | grep _HOST | cut -d '=' -f 2)
fgrep -q "RESTAPI_SALT" .env || echo "RESTAPI_SALT=$VAR_SALT" >> .env
fi
Expand Down Expand Up @@ -2807,7 +2856,10 @@ IotaHornet() {

echo ufw allow "$VAR_IOTA_HORNET_HTTPS_PORT/tcp" && ufw allow "$VAR_IOTA_HORNET_HTTPS_PORT/tcp"
echo ufw allow '15600/tcp' && ufw allow '15600/tcp'
echo ufw allow '14626/udp' && ufw allow '14626/udp'

if [ "$VAR_IOTA_HORNET_AUTOPEERING" = "true" ]; then
echo ufw allow '14626/udp' && ufw allow '14626/udp'
fi

echo "$fl"; PromptMessage "$opt_time" "Press [Enter] / wait [""$opt_time""s] to continue... Press [P] to pause / [C] to cancel"; echo "$xx"; clear

Expand Down Expand Up @@ -2881,6 +2933,8 @@ IotaHornet() {
echo "domain name: $VAR_HOST"
echo "https port: $VAR_IOTA_HORNET_HTTPS_PORT"
echo "-------------------------------------------------------------------------------"
echo "autopeering: $VAR_IOTA_HORNET_AUTOPEERING"
echo "-------------------------------------------------------------------------------"
echo "hornet dashboard: https://$VAR_HOST/dashboard"
echo "hornet username: $VAR_USERNAME"
echo "hornet password: $VAR_PASSWORD"
Expand Down Expand Up @@ -3395,6 +3449,42 @@ ShimmerHornet() {
echo "$rd""Set PoW / proof of work: $VAR_SHIMMER_HORNET_POW""$xx"
fi

echo ''
VAR_SHIMMER_HORNET_AUTOPEERING=$(cat .env 2>/dev/null | grep HORNET_AUTOPEERING_ENABLED= | cut -d '=' -f 2)
VAR_DEFAULT='true'
if [ -z "$VAR_SHIMMER_HORNET_AUTOPEERING" ]; then
echo "Set autopeering (default: $ca$VAR_DEFAULT$xx):"; echo "Press [Enter] to use default value:"
else
echo "Set autopeering (config: $ca$VAR_SHIMMER_HORNET_AUTOPEERING$xx)"; echo "Press [Enter] to use existing config:"
fi
read -r -p '> Press [E] to enable Autopeering... Press [X] key to disable... ' VAR_TMP;
if [ -n "$VAR_TMP" ]; then
VAR_SHIMMER_HORNET_AUTOPEERING=$VAR_TMP
if [ "$VAR_SHIMMER_HORNET_AUTOPEERING" = 'e' ] || [ "$VAR_SHIMMER_HORNET_AUTOPEERING" = 'E' ]; then
VAR_SHIMMER_HORNET_AUTOPEERING='true'
else
VAR_SHIMMER_HORNET_AUTOPEERING='false'
fi
elif [ -z "$VAR_SHIMMER_HORNET_AUTOPEERING" ]; then VAR_SHIMMER_HORNET_AUTOPEERING=$VAR_DEFAULT; fi

if [ "$VAR_SHIMMER_HORNET_AUTOPEERING" = 'true' ]; then
echo "$gn""Set autopeering: $VAR_SHIMMER_HORNET_AUTOPEERING""$xx"
else
echo "$rd""Set autopeering: $VAR_SHIMMER_HORNET_AUTOPEERING""$xx"
fi

if [ "$VAR_SHIMMER_HORNET_AUTOPEERING" = 'false' ]; then

echo ''
VAR_SHIMMER_HORNET_STATIC_NEIGHBORS=$(cat .env 2>/dev/null | grep HORNET_STATIC_NEIGHBORS= | cut -d '=' -f 2)
VAR_DEFAULT='';
if [ -z "$VAR_SHIMMER_HORNET_STATIC_NEIGHBORS" ]; then
echo "Set static neighbor(s):"; echo "Press [Enter] to use default value:"; else echo "Set static neighbor(s) (config: $ca""$VAR_SHIMMER_HORNET_STATIC_NEIGHBORS | tr ',' '\n'""$xx)"; echo "Press [Enter] to use existing config:"; fi
read -r -p '> ' VAR_TMP
if [ -n "$VAR_TMP" ]; then VAR_SHIMMER_HORNET_STATIC_NEIGHBORS=$VAR_TMP; elif [ -z "$VAR_SHIMMER_HORNET_STATIC_NEIGHBORS" ]; then VAR_SHIMMER_HORNET_STATIC_NEIGHBORS=$VAR_DEFAULT; fi
echo "$gn""Set static neighbor(s): $VAR_SHIMMER_HORNET_STATIC_NEIGHBORS""$xx"
fi

echo ''
VAR_USERNAME=$(cat .env 2>/dev/null | grep DASHBOARD_USERNAME= | cut -d '=' -f 2)
VAR_DEFAULT=$(cat /dev/urandom | tr -dc '[:alpha:]' | fold -w "${1:-10}" | head -n 1);
Expand Down Expand Up @@ -3446,7 +3536,16 @@ ShimmerHornet() {
echo "HORNET_POW_ENABLED=$VAR_SHIMMER_HORNET_POW" >> .env
echo "HORNET_HTTPS_PORT=$VAR_SHIMMER_HORNET_HTTPS_PORT" >> .env
echo "HORNET_GOSSIP_PORT=15600" >> .env
echo "HORNET_AUTOPEERING_PORT=14626" >> .env
echo "HORNET_AUTOPEERING_ENABLED=$VAR_SHIMMER_HORNET_AUTOPEERING" >> .env

if [ "$VAR_SHIMMER_HORNET_AUTOPEERING" = 'true' ]; then
echo "HORNET_AUTOPEERING_PORT=14626" >> .env
fi

if [ -n "$VAR_SHIMMER_HORNET_STATIC_NEIGHBORS" ]; then
echo "HORNET_STATIC_NEIGHBORS=$VAR_SHIMMER_HORNET_STATIC_NEIGHBORS" >> .env
fi

echo "RESTAPI_SALT=$VAR_SALT" >> .env

if [ "$VAR_CERT" = 0 ]
Expand Down Expand Up @@ -3496,6 +3595,11 @@ ShimmerHornet() {
if [ -f .env ]; then sed -i "s/INX_POI_VERSION=.*/INX_POI_VERSION=$VAR_SHIMMER_INX_POI_VERSION/g" .env; fi
if [ -f .env ]; then sed -i "s/INX_DASHBOARD_VERSION=.*/INX_DASHBOARD_VERSION=$VAR_SHIMMER_INX_DASHBOARD_VERSION/g" .env; fi

VAR_SHIMMER_HORNET_AUTOPEERING=$(cat .env 2>/dev/null | grep HORNET_AUTOPEERING_ENABLED | cut -d '=' -f 2)
if [ -z "$VAR_SHIMMER_HORNET_AUTOPEERING" ]; then
echo "HORNET_AUTOPEERING_ENABLED=true" >> .env
fi

VAR_HOST=$(cat .env 2>/dev/null | grep _HOST | cut -d '=' -f 2)
fgrep -q "RESTAPI_SALT" .env || echo "RESTAPI_SALT=$VAR_SALT" >> .env
fi
Expand Down Expand Up @@ -3562,7 +3666,10 @@ ShimmerHornet() {

echo ufw allow "$VAR_SHIMMER_HORNET_HTTPS_PORT/tcp" && ufw allow "$VAR_SHIMMER_HORNET_HTTPS_PORT/tcp"
echo ufw allow '15600/tcp' && ufw allow '15600/tcp'
echo ufw allow '14626/udp' && ufw allow '14626/udp'

if [ "$VAR_SHIMMER_HORNET_AUTOPEERING" = "true" ]; then
echo ufw allow '14626/udp' && ufw allow '14626/udp'
fi

echo "$fl"; PromptMessage "$opt_time" "Press [Enter] / wait [""$opt_time""s] to continue... Press [P] to pause / [C] to cancel"; echo "$xx"; clear

Expand Down Expand Up @@ -3636,6 +3743,8 @@ ShimmerHornet() {
echo "domain name: $VAR_HOST"
echo "https port: $VAR_SHIMMER_HORNET_HTTPS_PORT"
echo "-------------------------------------------------------------------------------"
echo "autopeering: $VAR_SHIMMER_HORNET_AUTOPEERING"
echo "-------------------------------------------------------------------------------"
echo "hornet dashboard: https://$VAR_HOST/dashboard"
echo "hornet username: $VAR_USERNAME"
echo "hornet password: $VAR_PASSWORD"
Expand Down
1 change: 1 addition & 0 deletions shimmer-hornet/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ services:
volumes:
- "/etc/localtime:/etc/localtime:ro"
- "${HORNET_DATA_DIR:-./data}/config/config-${HORNET_NETWORK:-mainnet}.json:/app/config/config.json:ro"
- "${HORNET_DATA_DIR:-./data}/config/peering-${HORNET_NETWORK:-mainnet}.json:/app/config/peering.json"
- "${HORNET_DATA_DIR:-./data}/storage/${HORNET_NETWORK:-mainnet}:/app/storage"
- "${HORNET_DATA_DIR:-./data}/snapshots/${HORNET_NETWORK:-mainnet}:/app/snapshots"
- "${HORNET_DATA_DIR:-./data}/p2pstore/${HORNET_NETWORK:-mainnet}:/app/p2pstore"
Expand Down
6 changes: 5 additions & 1 deletion shimmer-hornet/prepare_docker.sh
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@ dataDir="${HORNET_DATA_DIR:-$scriptDir/data}"
configFilenameInContainer="config.json"
configFilename="config-${HORNET_NETWORK:-mainnet}.json"
configPath="${dataDir}/config/${configFilename}"
peeringFilenameInContainer="peering.json"
peeringFilename="peering-${HORNET_NETWORK:-mainnet}.json"
peeringFilePath="${dataDir}/config/${peeringFilename}"

validate_ssl_config "HORNET_SSL_CERT" "HORNET_SSL_KEY"
copy_common_assets
Expand Down Expand Up @@ -54,7 +57,7 @@ set_config "${configPath}" ".p2p.db.path" "\"/app/p2pstore\""
set_config "${configPath}" ".snapshots.fullPath" "\"/app/snapshots/full_snapshot.bin\""
set_config "${configPath}" ".snapshots.deltaPath" "\"/app/snapshots/delta_snapshot.bin\""
set_config "${configPath}" ".pruning.size.targetSize" "\"${HORNET_PRUNING_TARGET_SIZE:-64GB}\""
set_config "${configPath}" ".p2p.autopeering.enabled" "true"
set_config "${configPath}" ".p2p.autopeering.enabled" "${HORNET_AUTOPEERING_ENABLED:-true}"
set_config "${configPath}" ".restAPI.pow.enabled" "${HORNET_POW_ENABLED:-true}"
set_config "${configPath}" ".prometheus.enabled" "true"
set_config "${configPath}" ".prometheus.bindAddress" "\"0.0.0.0:9311\""
Expand All @@ -66,6 +69,7 @@ set_config_if_present_in_env "${configPath}" "HORNET_PRUNING_MAX_MILESTONES_TO_K
if [ ! -z "${HORNET_PRUNING_MAX_MILESTONES_TO_KEEP}" ]; then
set_config "${configPath}" ".pruning.milestones.enabled" "true"
fi
generate_peering_json "$peeringFilePath" "${HORNET_STATIC_NEIGHBORS:-""}"
rm -f "${tmp}"

echo "Finished"

0 comments on commit 232d31e

Please sign in to comment.