You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
120 lines
2.7 KiB
120 lines
2.7 KiB
#!/usr/bin/env bash
|
|
|
|
unset -v progname
|
|
progname="${0##*/}"
|
|
|
|
unset -f msg err
|
|
|
|
msg() {
|
|
case $# in
|
|
[1-9]*)
|
|
echo "${progname}: $*" >&2
|
|
;;
|
|
esac
|
|
}
|
|
|
|
err() {
|
|
local code
|
|
code="${1}"
|
|
shift 1
|
|
msg "$@"
|
|
exit "${code}"
|
|
}
|
|
|
|
# https://www.linuxjournal.com/content/validating-ip-address-bash-script
|
|
function valid_ip()
|
|
{
|
|
local ip=$1
|
|
local stat=1
|
|
|
|
if [[ $ip =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
|
|
OIFS=$IFS
|
|
IFS='.'
|
|
ip=($ip)
|
|
IFS=$OIFS
|
|
[[ ${ip[0]} -le 255 && ${ip[1]} -le 255 \
|
|
&& ${ip[2]} -le 255 && ${ip[3]} -le 255 ]]
|
|
stat=$?
|
|
fi
|
|
return $stat
|
|
}
|
|
|
|
function myip() {
|
|
# get ipv4 address only, right now only support ipv4 addresses
|
|
PUB_IP=$(dig -4 @resolver1.opendns.com ANY myip.opendns.com +short)
|
|
if valid_ip $PUB_IP; then
|
|
msg "public IP address autodetected: $PUB_IP"
|
|
else
|
|
err 1 "NO valid public IP found: $PUB_IP"
|
|
fi
|
|
}
|
|
|
|
function add_env
|
|
{
|
|
filename=$1
|
|
shift
|
|
grep -qxF "$@" $filename || echo "$@" >> $filename
|
|
}
|
|
|
|
function setup_env
|
|
{
|
|
sysctl -w net.core.somaxconn=1024
|
|
sysctl -w net.core.netdev_max_backlog=65536
|
|
sysctl -w net.ipv4.tcp_tw_reuse=1
|
|
sysctl -w net.ipv4.tcp_rmem='4096 65536 16777216'
|
|
sysctl -w net.ipv4.tcp_wmem='4096 65536 16777216'
|
|
sysctl -w net.ipv4.tcp_mem='65536 131072 262144'
|
|
|
|
add_env /etc/security/limits.conf "* soft nproc 65535"
|
|
add_env /etc/security/limits.conf "* hard nproc 65535"
|
|
add_env /etc/security/limits.conf "* soft nofile 65535"
|
|
add_env /etc/security/limits.conf "* hard nofile 65535"
|
|
add_env /etc/security/limits.conf "root soft nproc 65535"
|
|
add_env /etc/security/limits.conf "root hard nproc 65535"
|
|
add_env /etc/security/limits.conf "root soft nofile 65535"
|
|
add_env /etc/security/limits.conf "root hard nofile 65535"
|
|
add_env /etc/pam.d/common-session "session required pam_limits.so"
|
|
}
|
|
|
|
# find my public ip address
|
|
myip
|
|
|
|
# setup runtime environment
|
|
setup_env
|
|
|
|
keydir=/harmony/.hmy
|
|
|
|
args=(
|
|
-log_folder "/harmony/log"
|
|
-node_type "validator"
|
|
-network_type "mainnet"
|
|
-bootnodes "$NODE_BN_MNET"
|
|
-ip "$PUB_IP"
|
|
-port "$NODE_PORT"
|
|
-dns_zone "$NODE_DNS_ZONE"
|
|
-blspass "file:${keydir}/$NODE_BLSPASS"
|
|
-blskey_file "${keydir}/$NODE_BLSKEY"
|
|
)
|
|
|
|
if [ "$NODE_BLACKLIST" != "" ]; then
|
|
args+=(
|
|
-blacklist "$NODE_BLACKLIST"
|
|
)
|
|
fi
|
|
|
|
if [ "$NODE_RPC" == "true" ]; then
|
|
args+=(
|
|
-public_rpc
|
|
)
|
|
fi
|
|
|
|
if [ -n "$NODE_EXTRA_OPTIONS" ]; then
|
|
extra_args="$NODE_EXTRA_OPTIONS"
|
|
fi
|
|
|
|
msg "harmony ${args[@]} $extra_args"
|
|
ls -al ${keydir}
|
|
|
|
harmony "${args[@]} $extra_args"
|
|
|
|
# vim: ai ts=2 sw=2 et sts=2 ft=sh
|
|
|