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.
Splunk_Deploiement/apps/pusher_app_prem/bin/start_git_pusher.sh

250 lines
6.3 KiB

#!/bin/bash
# ============================================
# Git Pusher - Start Script
# Version 2.0 avec système de licence
# ============================================
# Configuration
SPLUNK_HOME=${SPLUNK_HOME:-/opt/splunk}
APP_HOME="${SPLUNK_HOME}/etc/apps/pusher_app_prem"
BIN_DIR="${APP_HOME}/bin"
LOG_DIR="${SPLUNK_HOME}/var/log/splunk"
PID_FILE="${BIN_DIR}/git_pusher.pid"
# Couleurs pour les logs
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# Fonction de logging
log_info() {
echo -e "${GREEN}[INFO]${NC} $1"
}
log_warn() {
echo -e "${YELLOW}[WARN]${NC} $1"
}
log_error() {
echo -e "${RED}[ERROR]${NC} $1"
}
# Vérifier si le serveur est déjà en cours d'exécution
check_running() {
if [ -f "$PID_FILE" ]; then
PID=$(cat "$PID_FILE")
if ps -p $PID > /dev/null 2>&1; then
return 0 # Running
fi
fi
return 1 # Not running
}
# Démarrer le serveur
start_server() {
log_info "Starting Git Pusher server..."
# Vérifier si déjà en cours
if check_running; then
log_warn "Git Pusher is already running (PID: $(cat $PID_FILE))"
return 1
fi
# Créer le répertoire de logs
mkdir -p "$LOG_DIR"
# Variables d'environnement pour l'authentification Splunk
# IMPORTANT: Modifiez ces valeurs ou utilisez des variables d'environnement
export SPLUNK_USERNAME=${SPLUNK_USERNAME:-admin}
export SPLUNK_PASSWORD=${SPLUNK_PASSWORD:-changeme}
# Démarrer le serveur Python
cd "$BIN_DIR"
python3 git_pusher.py > "${LOG_DIR}/git_pusher_startup.log" 2>&1 &
# Sauvegarder le PID
echo $! > "$PID_FILE"
# Attendre un peu et vérifier
sleep 2
if check_running; then
log_info "Git Pusher started successfully (PID: $(cat $PID_FILE))"
log_info "Server listening on port 9999"
# Vérifier le statut de la licence
HOSTNAME=$(hostname)
log_info "Hostname: $HOSTNAME"
if [ -f "${APP_HOME}/local/license.lic" ]; then
log_info "License file found"
else
log_warn "No license file found at ${APP_HOME}/local/license.lic"
log_warn "The application will require license activation"
fi
return 0
else
log_error "Failed to start Git Pusher"
log_error "Check logs at ${LOG_DIR}/git_pusher.log"
return 1
fi
}
# Arrêter le serveur
stop_server() {
log_info "Stopping Git Pusher server..."
if [ -f "$PID_FILE" ]; then
PID=$(cat "$PID_FILE")
if ps -p $PID > /dev/null 2>&1; then
kill $PID
sleep 2
# Force kill si nécessaire
if ps -p $PID > /dev/null 2>&1; then
log_warn "Force killing process..."
kill -9 $PID
fi
rm -f "$PID_FILE"
log_info "Git Pusher stopped"
return 0
else
log_warn "Process not running, cleaning up PID file"
rm -f "$PID_FILE"
return 0
fi
else
log_warn "PID file not found, Git Pusher may not be running"
return 1
fi
}
# Redémarrer le serveur
restart_server() {
log_info "Restarting Git Pusher server..."
stop_server
sleep 1
start_server
}
# Afficher le statut
show_status() {
echo "============================================"
echo "Git Pusher Status"
echo "============================================"
if check_running; then
PID=$(cat "$PID_FILE")
echo -e "Status: ${GREEN}RUNNING${NC}"
echo "PID: $PID"
echo "Port: 9999"
else
echo -e "Status: ${RED}STOPPED${NC}"
fi
echo ""
echo "Paths:"
echo " App Home: $APP_HOME"
echo " Bin Dir: $BIN_DIR"
echo " Log Dir: $LOG_DIR"
echo ""
# Statut de la licence
echo "License:"
if [ -f "${APP_HOME}/local/license.lic" ]; then
echo -e " File: ${GREEN}Present${NC}"
# Essayer de lire quelques infos
if command -v python3 &> /dev/null; then
python3 -c "
import sys
sys.path.insert(0, '$BIN_DIR')
from license_validator import validate_license
result = validate_license()
if result.get('valid'):
print(f\" Type: {result.get('type_name', 'N/A')}\")
print(f\" Expires: {result.get('expires', 'N/A')}\")
print(f\" Days remaining: {result.get('days_remaining', 'N/A')}\")
else:
print(f\" Status: Invalid - {result.get('error', 'Unknown error')}\")
" 2>/dev/null || echo " Unable to read license details"
fi
else
echo -e " File: ${YELLOW}Not found${NC}"
fi
echo ""
echo "Hostname: $(hostname)"
echo "============================================"
}
# Afficher les logs
show_logs() {
LOG_FILE="${LOG_DIR}/git_pusher.log"
if [ -f "$LOG_FILE" ]; then
if [ "$1" == "-f" ]; then
tail -f "$LOG_FILE"
else
tail -n 50 "$LOG_FILE"
fi
else
log_warn "Log file not found at $LOG_FILE"
fi
}
# Menu d'aide
show_help() {
echo "Git Pusher - Server Management Script"
echo ""
echo "Usage: $0 {start|stop|restart|status|logs|help}"
echo ""
echo "Commands:"
echo " start Start the Git Pusher server"
echo " stop Stop the Git Pusher server"
echo " restart Restart the Git Pusher server"
echo " status Show the current status"
echo " logs Show recent logs (use -f for follow)"
echo " help Show this help message"
echo ""
echo "Environment variables:"
echo " SPLUNK_USERNAME Splunk admin username (default: admin)"
echo " SPLUNK_PASSWORD Splunk admin password (default: changeme)"
echo " SPLUNK_HOME Splunk installation directory (default: /opt/splunk)"
}
# Main
case "$1" in
start)
start_server
;;
stop)
stop_server
;;
restart)
restart_server
;;
status)
show_status
;;
logs)
show_logs "$2"
;;
help|--help|-h)
show_help
;;
*)
# Par défaut, démarrer le serveur (pour compatibilité)
if [ -z "$1" ]; then
start_server
else
echo "Unknown command: $1"
show_help
exit 1
fi
;;
esac