TOMODACHI SHELL

Free Palestine !! - Free Gaza !!


 
OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON
Directory (0755) :  /opt/managed_servers/

 Home   ☍ Command   ☍ Upload File   ☍Info Server   ☍ Buat File   ☍ Mass deface   ☍ Jumping   ☍ Config   ☍ Symlink   ☍ About 

Current File : //opt/managed_servers/utils.sh
#!/bin/bash

COMPLETE="complete";
BASIC="basic";

export CONF_DIR='/etc/hc_managed_servers'
export CONFIG_FILE="${CONF_DIR}/app.conf"
export ENV_FILE="${CONF_DIR}/.env"
export VENV_PATH="${PROJECT_ROOT}/env"

function check_exit() {
if [[ "$1" == "ex" ]]; then
    shift; local EXIT_FLAG=1
fi
eval "$@" &>/dev/null;
if [ $? -ne 0 ]; then
    write_log "$@";
    eval "$@" 2>&1 | sed '1s/^/[log_start:'$(hostname)']\n/' | sed '$s/$/\n[log_end]/'
    write_log 'Failed!'
    if [[ -n $EXIT_FLAG ]]; then
        write_log 'Exiting!'
        rm $0
        exit 1
    fi
fi
}

function management_type_check() {
  grep -q backup /etc/fstab && type=$COMPLETE || type=$BASIC
  echo "$type"
}

read_conf() {
  [ ! -e "$ENV_FILE" ] && { echo "Env file $ENV_FILE is missing" ; exit 1 ; }
  [ ! -e "$CONFIG_FILE" ] && { echo "Config file $CONFIG_FILE is missing" ; exit 1 ; }

  local key value
  for file in "$ENV_FILE" "$CONFIG_FILE"; do
    while IFS='=' read -r key value; do
      if [[ $key =~ ^[[:space:]]*# || -z $key ]]; then
        continue
      fi
      key=$(echo $key | tr -d '[:space:]' | tr '[:lower:]' '[:upper:]')
      value=$(echo $value | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')

      if [[ -z $value ]]; then
        echo "Error: Missing value for $key in $file" >&2
        exit 1
      fi

      case $key in
        CRON_INTERVAL_MIN)
          if ! [[ $value =~ ^[0-9]+$ ]] || [[ $value -lt 10 ]]; then
            echo "Error: Invalid value for $key: $value. Must be a number greater or equal to 10." >&2
            exit 1
          fi
          ;;
        LOG_FILE)
          if [[ ! $value =~ ^/ ]]; then
            echo "Error: Invalid value for $key: $value. Must be an absolute path." >&2
            exit 1
          fi
          ;;
      esac

      export "$key"="$value"
    done < "$file"
  done

  if [[ -z $CRON_INTERVAL_MIN || -z $LOG_FILE || -z $API_GW_URL || -z $API_TOKEN ]]; then
    echo "Error: Missing one or more required variables: CRON_INTERVAL_MIN, LOG_FILE, API_GW_URL, API_TOKEN in $ENV_FILE or $CONFIG_FILE" >&2
    exit 1
  fi
}

read_conf

function write_log() {
  mkdir -p "$(dirname "$LOG_FILE")"
  echo -e "$(date +'%Y-%m-%d %T %z') $(hostname) [alert_fixer]:" $(echo "$*") | tee -a "$LOG_FILE"
}

TOMODACHI | Tempest Hacker