From 9e699025a66bbe4f2e8255d509daa809d7b2dda2 Mon Sep 17 00:00:00 2001 From: cschantz Date: Tue, 11 Nov 2025 18:22:10 -0500 Subject: [PATCH] Add wrapper script for automatic cleanup with zero manual steps New workflow: 1. User runs: source run.sh (instead of bash launcher.sh) 2. Launcher runs normally 3. On exit with cleanup=yes, launcher sets flag file 4. Wrapper detects flag and does ALL cleanup automatically: - Cleans ~/.bash_history file - Clears current shell's in-memory history - Removes toolkit directory - No manual commands needed The key: wrapper is SOURCED so it runs in parent shell and can modify history. User experience: answer "yes" and cleanup happens instantly, automatically. --- README.md | 6 +++--- launcher.sh | 44 +++--------------------------------------- run.sh | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 61 insertions(+), 44 deletions(-) create mode 100755 run.sh diff --git a/README.md b/README.md index 209a389..9b8adb5 100644 --- a/README.md +++ b/README.md @@ -75,14 +75,14 @@ server-toolkit/ ### Installation & Running ```bash -curl -sL https://git.mull.lol/cschantz/Linux-Server-Management-Toolkit/archive/main.tar.gz | tar xz && cd linux-server-management-toolkit && bash launcher.sh +curl -sL https://git.mull.lol/cschantz/Linux-Server-Management-Toolkit/archive/main.tar.gz | tar xz && cd linux-server-management-toolkit && source run.sh ``` -**Privacy:** When exiting (option 0), answer "yes" to cleanup and run the source command shown to remove all traces. +**Privacy:** When exiting (option 0), answer "yes" - cleanup happens automatically with no extra steps. Or if already downloaded: ```bash -bash /root/server-toolkit/launcher.sh +source /root/server-toolkit/run.sh ``` ## ✨ Key Features diff --git a/launcher.sh b/launcher.sh index db70caf..be7ad3d 100755 --- a/launcher.sh +++ b/launcher.sh @@ -1507,48 +1507,10 @@ main() { read -p "Clean history and remove traces? (yes/no): " clean_hist if [ "$clean_hist" = "yes" ]; then - # Clean history in .bash_history file + # Signal wrapper script to do cleanup + touch /tmp/.cleanup_requested echo "" - echo "→ Cleaning bash history..." - GREP_PATTERN="git\.mull\.lol|linux-server-management-toolkit|server-toolkit|launcher\.sh|erase-toolkit-traces" - - if [ -f ~/.bash_history ]; then - cp ~/.bash_history ~/.bash_history.bak.$$ - grep -Ev "$GREP_PATTERN" ~/.bash_history.bak.$$ > ~/.bash_history 2>/dev/null || true - rm -f ~/.bash_history.bak.$$ - fi - - # Verify curl command is gone from file - if grep -q "git\.mull\.lol.*toolkit" ~/.bash_history 2>/dev/null; then - echo -e "${RED}✗ Warning: curl command still in history file${NC}" - else - echo -e "${GREEN}✓ Verified: No curl download commands in history file${NC}" - fi - - # Remove logs and temp files - echo "→ Removing logs and temp files..." - rm -f "$BASE_DIR/logs/"*.log 2>/dev/null - rm -f "$BASE_DIR/"*_report_*.txt 2>/dev/null - rm -rf /tmp/live-monitor-* /tmp/server-toolkit-* 2>/dev/null - - # Remove toolkit directory - echo "→ Removing toolkit directory..." - cd /root 2>/dev/null - TOOLKIT_DIR="$BASE_DIR" - rm -rf "$TOOLKIT_DIR" 2>/dev/null - - clear - echo "" - echo -e "${GREEN}✓ All traces removed from files${NC}" - echo "" - echo -e "${YELLOW}IMPORTANT: Your current shell still has history in memory.${NC}" - echo -e "${YELLOW}Run these commands to finish:${NC}" - echo "" - echo "history -c" - echo "unset HISTFILE" - echo "exit" - echo "" - echo "Then start a new shell." + echo "Cleanup will happen automatically..." echo "" else echo "" diff --git a/run.sh b/run.sh new file mode 100755 index 0000000..baafe4c --- /dev/null +++ b/run.sh @@ -0,0 +1,55 @@ +#!/bin/bash + +################################################################################ +# Wrapper script for Server Toolkit +################################################################################ +# This wrapper allows proper history cleanup by running in the current shell +################################################################################ + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + +# Check if being sourced or executed +if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then + echo "ERROR: This script must be sourced, not executed." + echo "" + echo "Run it like this:" + echo " source $0" + echo "" + echo "Or use the alias:" + echo " . $0" + exit 1 +fi + +# Run the launcher +bash "$SCRIPT_DIR/launcher.sh" + +# Check if cleanup is requested +if [ -f /tmp/.cleanup_requested ]; then + rm -f /tmp/.cleanup_requested + + # Clean history in current shell + GREP_PATTERN="git\.mull\.lol|linux-server-management-toolkit|server-toolkit|launcher\.sh|erase-toolkit-traces|run\.sh" + + if [ -f ~/.bash_history ]; then + cp ~/.bash_history ~/.bash_history.bak.$$ + grep -Ev "$GREP_PATTERN" ~/.bash_history.bak.$$ > ~/.bash_history 2>/dev/null || true + rm -f ~/.bash_history.bak.$$ + fi + + # Clear current shell's history + history -c + history -r ~/.bash_history + unset HISTFILE + set +o history + + # Remove toolkit directory + cd /root 2>/dev/null + rm -rf "$SCRIPT_DIR" 2>/dev/null + + clear + echo "" + echo "✓ All traces removed" + echo "" + echo "Type 'exit' and start a new shell." + echo "" +fi