This commit is contained in:
0xOzgur 2024-06-02 20:54:10 +03:00
parent b62a91cf2c
commit 83060941d7

View File

@ -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 <<EOF
[Unit]
Description=Ceremony Client Go App Service
[Service]
Type=simple
Restart=always
RestartSec=5s
WorkingDirectory=$NODE_PATH
ExecStart=$EXEC_START
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable ceremonyclient
# Step 7: Start the ceremonyclient service
echo "✅Starting Ceremonyclient Service"
sleep 1 # Add a 1-second delay
sudo service ceremonyclient start
# Step 8: See the logs of the ceremonyclient service
echo "🎉Welcome to Quilibrium Ceremonyclient"
}
configure_grpcurl() {
@ -80,6 +251,36 @@ check_visibility() {
node_info() {
echo "Getting node info..."
# Your code here
cd ~/ceremonyclient/node && ./${NODE_BINARY} -node-info
}
node_logs() {
echo "Getting node logs..."
udo journalctl -u ceremonyclient.service -f --no-hostname -o cat
}
# Menu
echo "Welcome! Please choose an option:"
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) Node Logs"
echo "7) Exit"
read -p "Enter your choice: " choice
case $choice in
1) install_prerequisites ;;
2) install_node ;;
3) configure_grpcurl ;;
4) check_visibility ;;
5) node_info ;;
6) node_logs ;;
7) break ;;
*) echo "Invalid option, please try again." ;;
esac
done