#!/bin/bash # Feed Hunter Portal Monitor Setup Script set -e SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" SYSTEMD_USER_DIR="$HOME/.config/systemd/user" echo "=== Feed Hunter Portal Monitor Setup ===" echo "Script directory: $SCRIPT_DIR" echo "Systemd user directory: $SYSTEMD_USER_DIR" echo # Function to show status show_status() { echo "=== Current Status ===" echo "Portal Monitor Service:" systemctl --user status feed-hunter-portal-monitor.service --no-pager -l || echo " Not found or inactive" echo echo "Business Hours Timer:" systemctl --user status feed-hunter-portal-monitor-business.timer --no-pager -l || echo " Not found or inactive" echo echo "Off-Hours Timer:" systemctl --user status feed-hunter-portal-monitor-offhours.timer --no-pager -l || echo " Not found or inactive" echo echo "Active Timers:" systemctl --user list-timers feed-hunter-portal-monitor-* || echo " No active timers found" echo } # Function to install/update services install_services() { echo "Installing systemd services..." # Reload systemd to pick up any changes systemctl --user daemon-reload # Enable the timers (this also enables the service as a dependency) echo "Enabling business hours timer..." systemctl --user enable feed-hunter-portal-monitor-business.timer echo "Enabling off-hours timer..." systemctl --user enable feed-hunter-portal-monitor-offhours.timer echo "Services installed and enabled." } # Function to start services start_services() { echo "Starting monitoring services..." systemctl --user start feed-hunter-portal-monitor-business.timer systemctl --user start feed-hunter-portal-monitor-offhours.timer echo "Services started." } # Function to stop services stop_services() { echo "Stopping monitoring services..." systemctl --user stop feed-hunter-portal-monitor-business.timer 2>/dev/null || true systemctl --user stop feed-hunter-portal-monitor-offhours.timer 2>/dev/null || true echo "Services stopped." } # Function to restart services restart_services() { stop_services sleep 2 start_services } # Function to run a manual test test_monitor() { echo "Running manual monitor test..." echo "Output will be shown below:" echo "================================" cd "$SCRIPT_DIR" python3 portal_monitor.py echo "================================" echo "Test completed. Check the output above for any issues." } # Function to show logs show_logs() { echo "Recent monitor logs (last 50 lines):" echo "================================" journalctl --user -u feed-hunter-portal-monitor.service -n 50 --no-pager || echo "No logs found" echo "================================" echo "To follow logs in real-time, run:" echo "journalctl --user -u feed-hunter-portal-monitor.service -f" } # Function to show monitor status show_monitor_status() { echo "Running monitor status check..." cd "$SCRIPT_DIR" python3 monitor_status.py } # Function to uninstall uninstall_services() { echo "Uninstalling monitoring services..." stop_services systemctl --user disable feed-hunter-portal-monitor-business.timer 2>/dev/null || true systemctl --user disable feed-hunter-portal-monitor-offhours.timer 2>/dev/null || true echo "Services disabled and stopped." echo "Note: Service files are still in $SYSTEMD_USER_DIR" echo "Remove them manually if desired." } # Main menu case "${1:-menu}" in "install") install_services echo echo "✅ Installation completed!" echo "Run '$0 start' to start the monitoring services." ;; "start") start_services echo echo "✅ Services started!" echo "Run '$0 status' to check status or '$0 logs' to view logs." ;; "stop") stop_services echo echo "✅ Services stopped!" ;; "restart") restart_services echo echo "✅ Services restarted!" ;; "status") show_status ;; "monitor-status") show_monitor_status ;; "test") test_monitor ;; "logs") show_logs ;; "uninstall") uninstall_services echo echo "✅ Services uninstalled!" ;; "menu"|*) echo "Feed Hunter Portal Monitor Management" echo echo "Usage: $0 [command]" echo echo "Commands:" echo " install Install and enable systemd services" echo " start Start monitoring services" echo " stop Stop monitoring services" echo " restart Restart monitoring services" echo " status Show systemd service status" echo " monitor-status Show detailed monitor status" echo " test Run manual monitor test" echo " logs Show recent logs" echo " uninstall Stop and disable services" echo echo "Quick setup:" echo " $0 install && $0 start" echo ;; esac