Testnet related changes for existing network (#322)

This commit is contained in:
Chalith Desaman
2023-12-20 10:52:26 +05:30
committed by GitHub
parent 5a249e6695
commit 0b365c07fc
4 changed files with 83 additions and 32 deletions

View File

@@ -18,29 +18,22 @@ instances_per_core=3
max_non_ipv6_instances=5
max_ipv6_prefix_len=112
evernode_alias=/usr/bin/evernode
log_dir=/tmp/evernode
log_dir=/tmp/evernode-beta
repo_owner="EvernodeXRPL"
repo_name="evernode-resources"
desired_branch="main"
latest_version_endpoint="https://api.github.com/repos/$repo_owner/$repo_name/releases/latest"
latest_version_data=$(curl -s "$latest_version_endpoint")
latest_version=$(echo "$latest_version_data" | jq -r '.tag_name')
if [ -z "$latest_version" ]|| [ "$latest_version" = "null" ]; then
echo "Failed to retrieve latest version data."
exit 1
fi
# Prepare resources URLs
resource_storage="https://github.com/$repo_owner/$repo_name/releases/download/$latest_version"
licence_url="https://raw.githubusercontent.com/$repo_owner/$repo_name/$desired_branch/license/evernode-license.pdf"
cloud_storage="https://stevernode.blob.core.windows.net/evernode-beta-v3"
licence_url="$cloud_storage/licence.txt"
config_url="https://raw.githubusercontent.com/$repo_owner/$repo_name/$desired_branch/definitions/definitions.json"
setup_script_url="$resource_storage/setup.sh"
installer_url="$resource_storage/installer.tar.gz"
jshelper_url="$resource_storage/setup-jshelper.tar.gz"
setup_script_url="$cloud_storage/setup.sh"
installer_url="$cloud_storage/installer.tar.gz"
jshelper_url="$cloud_storage/setup-jshelper.tar.gz"
installer_version_timestamp_file="installer.version.timestamp"
setup_version_timestamp_file="setup.version.timestamp"
default_rippled_server="wss://xahau.network"
setup_helper_dir="/tmp/evernode-setup-helpers"
nodejs_util_bin="/usr/bin/node"
@@ -71,7 +64,7 @@ export MB_XRPL_USER="sashimbxrpl"
export CG_SUFFIX="-cg"
export EVERNODE_AUTO_UPDATE_SERVICE="evernode-auto-update"
export NETWORK="${NETWORK:-mainnet}"
export NETWORK="${NETWORK:-testnet}"
# Private docker registry (not used for now)
export DOCKER_REGISTRY_USER="sashidockerreg"
@@ -799,11 +792,21 @@ function generate_qrcode() {
qrencode -s 1 -l L -t UTF8 "$input_string"
}
function generate_and_save_keyfile() {
function backup_key_file() {
key_file_path="$default_key_filepath"
account_json=$(exec_jshelper generate-account) || { echo "Error occurred in account setting up."; exit 1; }
xrpl_address=$(jq -r '.address' <<< "$account_json")
xrpl_secret=$(jq -r '.secret' <<< "$account_json")
key_dir=$(dirname "$key_file_path")
if [ ! -d "$key_dir" ]; then
mkdir -p "$key_dir"
fi
[ -f "$MB_XRPL_DATA/secret.cfg" ] && cp "$MB_XRPL_DATA/secret.cfg" "$key_file_path" \
chmod 400 "$key_file_path" && \
chown $MB_XRPL_USER: $key_file_path && \
echomult "Key file backed up successfully at $key_file_path" || { echomult "Error occurred in permission and ownership assignment of key file."; exit 1; }
}
function generate_and_save_keyfile() {
if [ "$#" -ne 1 ]; then
echomult "Error: Please provide the full path of the secret file."
@@ -844,6 +847,24 @@ function generate_and_save_keyfile() {
exit 1
fi
else
while true ; do
read -p "Specify the XRPL account address: " xrpl_address </dev/tty
! [[ $xrpl_address =~ ^r[0-9a-zA-Z]{24,34}$ ]] && echo "Invalid XRPL account address." && continue
echo "Checking account $xrpl_address..."
! exec_jshelper validate-account $rippled_server $EVERNODE_GOVERNOR_ADDRESS $xrpl_address $account_validate_criteria && xrpl_address="" && continue
# Take hidden input and print empty echo (new line) at the end.
read -s -p "Specify the XRPL account secret (your input will be hidden on screen): " xrpl_secret </dev/tty && echo ""
! [[ $xrpl_secret =~ ^s[1-9A-HJ-NP-Za-km-z]{25,35}$ ]] && echo "Invalid XRPL account secret." && continue
echo "Checking account keys..."
! exec_jshelper validate-keys $rippled_server $xrpl_address $xrpl_secret && xrpl_secret="" && continue
break
done
echo "{ \"xrpl\": { \"secret\": \"$xrpl_secret\" } }" > "$key_file_path" && \
chmod 400 "$key_file_path" && \
@@ -1015,9 +1036,8 @@ function uninstall_failure() {
}
function online_version_timestamp() {
latest_version_data=$(curl -s "$latest_version_endpoint")
latest_version_timestamp=$(echo "$latest_version_data" | jq -r '.published_at')
echo "$latest_version_timestamp"
# Send HTTP HEAD request and get last modified timestamp of the installer package or setup.sh.
curl --silent --head $1 | grep 'Last-Modified:' | sed 's/[^ ]* //'
}
function enable_evernode_auto_updater() {
@@ -1089,8 +1109,10 @@ function install_evernode() {
local upgrade=$1
# Get installer version (timestamp). We use this later to check for Evernode software updates.
local installer_version_timestamp=$(online_version_timestamp)
local installer_version_timestamp=$(online_version_timestamp $installer_url)
[ -z "$installer_version_timestamp" ] && echo "Online installer not found." && exit 1
# Get setup version (timestamp).
local setup_version_timestamp=$(online_version_timestamp $setup_script_url)
local tmp=$(mktemp -d)
cd $tmp
@@ -1142,6 +1164,7 @@ function install_evernode() {
# Write the verison timestamp to a file for later updated version comparison.
echo $installer_version_timestamp > $SASHIMONO_DATA/$installer_version_timestamp_file
echo $setup_version_timestamp > $SASHIMONO_DATA/$setup_version_timestamp_file
}
function check_exisiting_contracts() {
@@ -1186,11 +1209,13 @@ function uninstall_evernode() {
function update_evernode() {
echo "Checking for updates..."
local latest_installer_script_version=$(online_version_timestamp)
local latest_installer_script_version=$(online_version_timestamp $installer_url)
local latest_setup_script_version=$(online_version_timestamp $setup_script_url)
[ -z "$latest_installer_script_version" ] && echo "Could not check for updates. Online installer not found." && exit 1
local current_installer_script_version=$(cat $SASHIMONO_DATA/$installer_version_timestamp_file)
[ "$latest_installer_script_version" == "$current_installer_script_version" ] && echo "Your $evernode installation is up to date." && exit 0
local current_setup_script_version=$(cat $SASHIMONO_DATA/$setup_version_timestamp_file)
[ "$latest_installer_script_version" == "$current_installer_script_version" ] && [ "$latest_setup_script_version" == "$current_setup_script_version" ] && echo "Your $evernode installation is up to date." && exit 0
echo "New $evernode update available. Setup will re-install $evernode with updated software. Your account and contract instances will be preserved."
$interactive && ! confirm "\nDo you want to install the update?" && exit 1
@@ -1201,6 +1226,12 @@ function update_evernode() {
if [ "$latest_installer_script_version" != "$current_installer_script_version" ] ; then
uninstall_evernode 1
install_evernode 1
elif [ "$latest_setup_script_version" != "$current_setup_script_version" ] ; then
[ -d $log_dir ] || mkdir -p $log_dir
logfile="$log_dir/installer-$(date +%s).log"
remove_evernode_alias
! create_evernode_alias && echo "Alias creation failed."
echo $latest_setup_script_version > $SASHIMONO_DATA/$setup_version_timestamp_file
fi
rm -r $setup_helper_dir >/dev/null 2>&1
@@ -1708,10 +1739,11 @@ if [ "$mode" == "install" ]; then
elif [ "$mode" == "uninstall" ]; then
echomult "\nNOTE: By continuing with this, you will not LOSE the SECRET; it remains within the specified path.
\nThe secret path can be found inside the configuration stored at '$MB_XRPL_DATA/mb-xrpl.cfg'."
\nThe secret can be found inside the configuration stored at '$default_key_filepath'."
! confirm "\nAre you sure you want to uninstall $evernode?" && exit 1
! backup_key_file && echo "Error backing up key file." && exit 1
# Check contract condtion.
check_exisiting_contracts 0

View File

@@ -25,13 +25,24 @@ appenv = {
ORPHAN_PRUNE_SCHEDULER_INTERVAL_HOURS: 4,
SASHIMONO_SCHEDULER_INTERVAL_SECONDS: 2,
SASHI_CLI_PATH: appenv.IS_DEV_MODE ? "../build/sashi" : "/usr/bin/sashi",
MB_VERSION: '0.8.0',
TOS_HASH: '0801677EBCB2F76EF97D531549D8B27DB2C7A4A8EE7F60032AE40184247F0810', // This is the sha256 hash of EVERNODE-HOSTING-PRINCIPLES.pdf.
NETWORK: 'mainnet'
MB_VERSION: '0.7.3',
TOS_HASH: '757A0237B44D8B2BBB04AE2BAD5813858E0AECD2F0B217075E27E0630BA74314', // This is the sha256 hash of TOS text.
NETWORK: 'testnet'
}
const getSecretPath = () => {
return fs.existsSync(appenv.CONFIG_PATH) ? JSON.parse(fs.readFileSync(appenv.CONFIG_PATH).toString()).xrpl.secretPath : "";
if (fs.existsSync(appenv.CONFIG_PATH)) {
const config = JSON.parse(fs.readFileSync(appenv.CONFIG_PATH).toString());
if (config.xrpl && config.xrpl.secretPath) {
return config.xrpl.secretPath;
}
else {
return (appenv.DATA_DIR + '/secret.cfg');
}
}
else {
return "";
}
}
appenv = { ...appenv, SECRET_CONFIG_PATH: getSecretPath() }

View File

@@ -230,6 +230,14 @@ class Setup {
if (!cfg.xrpl.rippledServer)
cfg.xrpl.rippledServer = appenv.DEFAULT_RIPPLED_SERVER
// Write network and secret for older installations //
if (!cfg.xrpl.network)
cfg.xrpl.network = appenv.NETWORK;
if (!cfg.xrpl.secretPath)
cfg.xrpl.secretPath = appenv.SECRET_CONFIG_PATH;
////
this.#saveConfig(cfg);
await Promise.resolve(); // async placeholder.

View File

@@ -6,7 +6,7 @@
namespace version
{
// Sashimono agent version. Written to new configs.
constexpr const char *AGENT_VERSION = "0.8.0";
constexpr const char *AGENT_VERSION = "0.7.3";
// Minimum compatible config version (this will be used to validate configs).
constexpr const char *MIN_CONFIG_VERSION = "0.5.0";