diff --git a/Quilibrium.sh b/Quilibrium.sh index dbef7e1..bcff590 100644 --- a/Quilibrium.sh +++ b/Quilibrium.sh @@ -1,36 +1,207 @@ #!/bin/bash - echo "Welcome! Please choose an option:" -# Menu -while true; do - echo "1) Install Prerequisites" - echo "2) Install Node" - echo "3) Configure grpcurl" - echo "4) Check Visibility" - echo "5) Node Info" - echo "6) Exit" - read -p "Enter your choice: " choice +# Get system information +ARCH=$(uname -m) +OS=$(uname -s) - case $choice in - 1) install_prerequisites ;; - 2) install_node ;; - 3) configure_grpcurl ;; - 4) check_visibility ;; - 5) node_info ;; - 6) break ;; - *) echo "Invalid option, please try again." ;; - esac -done +# Determine the node binary name based on the architecture and OS +if [ "$ARCH" = "x86_64" ]; then + if [ "$OS" = "Linux" ]; then + NODE_BINARY='node-1.4.18-linux-amd64' + elif [ "$OS" = "Darwin" ]; then + NODE_BINARY='node-1.4.18-darwin-amd64' + fi +elif [ "$ARCH" = "aarch64" ]; then + if [ "$OS" = "Linux" ]; then + NODE_BINARY='node-1.4.18-linux-arm64' + elif [ "$OS" = "Darwin" ]; then + NODE_BINARY='node-1.4.18-darwin-arm64' + fi +fi # Function for each menu option install_prerequisites() { - echo "Installing prerequisites..." - # Your code here +echo "Installing prerequisites..." +wget https://go.dev/dl/go1.20.14.linux-amd64.tar.gz +sudo tar -xvf go1.20.14.linux-amd64.tar.gz || { echo "Failed to extract Go! Exiting..."; exit_message; exit 1; } +sudo mv go /usr/local || { echo "Failed to move go! Exiting..."; exit_message; exit 1; } +sudo rm go1.20.14.linux-amd64.tar.gz || { echo "Failed to remove downloaded archive! Exiting..."; exit_message; exit 1; } + + +# Step 4: Set Go environment variables +echo "⏳Setting Go environment variables..." +sleep 5 # Add a 5-second delay + +# Check if GOROOT is already set +if grep -q 'GOROOT=/usr/local/go' ~/.bashrc; then + echo "GOROOT already set in ~/.bashrc." +else + echo 'GOROOT=/usr/local/go' >> ~/.bashrc + echo "GOROOT set in ~/.bashrc." +fi + +# Check if GOPATH is already set +if grep -q "GOPATH=$HOME/go" ~/.bashrc; then + echo "GOPATH already set in ~/.bashrc." +else + echo "GOPATH=$HOME/go" >> ~/.bashrc + echo "GOPATH set in ~/.bashrc." +fi + +# Check if PATH is already set +if grep -q 'PATH=$GOPATH/bin:$GOROOT/bin:$PATH' ~/.bashrc; then + echo "PATH already set in ~/.bashrc." +else + echo 'PATH=$GOPATH/bin:$GOROOT/bin:$PATH' >> ~/.bashrc + echo "PATH set in ~/.bashrc." +fi + +# Source .bashrc to apply changes +echo "⏳Sourcing .bashrc to apply changes" +source ~/.bashrc +sleep 5 # Add a 5-second delay + +# Check GO Version +go version +sleep 5 # Add a 5-second delay + +# Install gRPCurl +echo "⏳Installing gRPCurl" +sleep 1 # Add a 1-second delay +go install github.com/fullstorydev/grpcurl/cmd/grpcurl@latest } install_node() { echo "Installing node..." - # Your code here + # Step 1: Update and Upgrade the Machine +echo "Updating the machine" +echo "⏳Processing..." +sleep 2 # Add a 2-second delay + +# Fof DEBIAN OS - Check if sudo and git is installed +if ! command -v sudo &> /dev/null +then + echo "sudo could not be found" + echo "Installing sudo..." + su -c "apt update && apt install sudo -y" +else + echo "sudo is installed" +fi + +if ! command -v git &> /dev/null +then + echo "git could not be found" + echo "Installing git..." + su -c "apt update && apt install git -y" +else + echo "git is installed" +fi + +sudo apt upgrade -y + + +# Step 2: Adjust network buffer sizes +echo "Adjusting network buffer sizes..." +if grep -q "^net.core.rmem_max=600000000$" /etc/sysctl.conf; then + echo "net.core.rmem_max=600000000 found inside /etc/sysctl.conf, skipping..." +else + echo -e "\n# Change made to increase buffer sizes for better network performance for ceremonyclient\nnet.core.rmem_max=600000000" | sudo tee -a /etc/sysctl.conf > /dev/null +fi +if grep -q "^net.core.wmem_max=600000000$" /etc/sysctl.conf; then + echo "net.core.wmem_max=600000000 found inside /etc/sysctl.conf, skipping..." +else + echo -e "\n# Change made to increase buffer sizes for better network performance for ceremonyclient\nnet.core.wmem_max=600000000" | sudo tee -a /etc/sysctl.conf > /dev/null +fi +sudo sysctl -p + +# Step 3: Check if directory ~/ceremonyclient exists, download from github +if [ -d ~/ceremonyclient ]; then + # Check if backup directory ~/backup/qnode_keys exists, if not create it + if [ ! -d ~/backup/qnode_keys ]; then + mkdir -p ~/backup/qnode_keys + fi + + # Check if files exist, then backup + if [ -f ~/ceremonyclient/node/.config/keys.yml ]; then + cp ~/ceremonyclient/node/.config/keys.yml ~/backup/qnode_keys/ + echo "✅ Backup of keys.yml created in ~/backup/qnode_keys folder" + fi + + if [ -f ~/ceremonyclient/node/.config/config.yml ]; then + cp ~/ceremonyclient/node/.config/config.yml ~/backup/qnode_keys/ + echo "✅ Backup of config.yml created in ~/backup/qnode_keys folder" + fi +fi + +# Step 4:Download Ceremonyclient +echo "⏳Downloading Ceremonyclient" +sleep 1 # Add a 1-second delay +cd ~ +if [ -d "ceremonyclient" ]; then + echo "Directory ceremonyclient already exists, skipping git clone..." +else + until git clone https://source.quilibrium.com/quilibrium/ceremonyclient.git || git clone https://git.quilibrium-mirror.ch/agostbiro/ceremonyclient.git; do + echo "Git clone failed, retrying..." + sleep 2 + done +fi +cd ~/ceremonyclient/ +git remote set-url origin https://source.quilibrium.com/quilibrium/ceremonyclient.git || git remote set-url origin https://git.quilibrium-mirror.ch/agostbiro/ceremonyclient.git +git checkout release + +# Set the version number +# VERSION="1.4.18" + +# Get the system architecture +# ARCH=$(uname -m) + +# Step 5:Determine the ExecStart line based on the architecture +# Get the current user's home directory +HOME=$(eval echo ~$HOME_DIR) + +# Use the home directory in the path +NODE_PATH="$HOME/ceremonyclient/node" +EXEC_START="$NODE_PATH/release_autorun.sh" + +# Step 6:Create Ceremonyclient Service +echo "⏳ Creating Ceremonyclient Service" +sleep 2 # Add a 2-second delay + +# Check if the file exists before attempting to remove it +if [ -f "/lib/systemd/system/ceremonyclient.service" ]; then + # If the file exists, remove it + rm /lib/systemd/system/ceremonyclient.service + echo "ceremonyclient.service file removed." +else + # If the file does not exist, inform the user + echo "ceremonyclient.service file does not exist. No action taken." +fi + +sudo tee /lib/systemd/system/ceremonyclient.service > /dev/null <