make dynr persistent
All checks were successful
Update Dispatches / refresh-news (push) Successful in 3s
All checks were successful
Update Dispatches / refresh-news (push) Successful in 3s
This commit is contained in:
177
install.sh
177
install.sh
@@ -5,9 +5,11 @@
|
||||
|
||||
# --- 1. OS DETECTION & PATHING ---
|
||||
if [[ "$OSTYPE" == "darwin"* ]]; then
|
||||
OS_TYPE="macOS"; DYNR_PATH="$HOME/.dynr"
|
||||
OS_TYPE="macOS"
|
||||
DYNR_PATH="$HOME/.dynr"
|
||||
else
|
||||
OS_TYPE="Linux"; DYNR_PATH="/opt/dynr"
|
||||
OS_TYPE="Linux"
|
||||
DYNR_PATH="/opt/dynr"
|
||||
fi
|
||||
|
||||
# --- 2. SOURCE OF TRUTH ---
|
||||
@@ -16,69 +18,85 @@ REPO_RAW="https://git.dynastyrevolution.com/DYNR/DynastyRevolution-Scripts/raw/b
|
||||
CURRENT_DATE=$(date +"%m-%d-%Y")
|
||||
|
||||
# --- 3. STYLING ---
|
||||
BLUE='\033[38;5;45m'; PURPLE='\033[38;5;127m'; GOLD='\033[38;5;178m'; RED='\033[38;5;196m'; NC='\033[0m'
|
||||
BLUE='\033[38;5;45m'
|
||||
PURPLE='\033[38;5;127m'
|
||||
GOLD='\033[38;5;178m'
|
||||
RED='\033[38;5;196m'
|
||||
NC='\033[0m'
|
||||
|
||||
clear
|
||||
echo -e "${BLUE}🐉 Dynasty Revolution Systems Initializing...${NC}"
|
||||
|
||||
# --- 4. DYNASTY PULSE CHECK (No Sudo Required) ---
|
||||
echo -e "${PURPLE}📡 Dynasty Pulse Check:${NC}"
|
||||
|
||||
# OS Check
|
||||
echo -e " [${GOLD}OK${NC}] OS: $OS_TYPE ($(uname -m))"
|
||||
|
||||
# Mesh Check (Using standard 'netbird status' which is read-only)
|
||||
if command -v netbird &> /dev/null && netbird status &> /dev/null; then
|
||||
echo -e " [${GOLD}OK${NC}] Mesh: NetBird Connected"
|
||||
else
|
||||
echo -e " [${RED}!!${NC}] Mesh: NetBird Disconnected / Not Installed"
|
||||
fi
|
||||
|
||||
# Repo Check
|
||||
if curl -o /dev/null -sL --connect-timeout 1 "$REPO_RAW/dispatches.txt"; then
|
||||
echo -e " [${GOLD}OK${NC}] Repository: Gitea Reachable"
|
||||
else
|
||||
echo -e " [${RED}!!${NC}] Repository: Gitea Offline (Local Mode Only)"
|
||||
fi
|
||||
|
||||
# Storage Check
|
||||
DISK_USAGE=$(df / | tail -1 | awk '{print $5}' | sed 's/%//')
|
||||
if [ "$DISK_USAGE" -gt 90 ]; then
|
||||
echo -e " [${RED}!!${NC}] Storage: ${DISK_USAGE}% Full - Caution advised."
|
||||
else
|
||||
echo -e " [${GOLD}OK${NC}] Storage: ${DISK_USAGE}% Nominal"
|
||||
fi
|
||||
|
||||
echo -e "${PURPLE}-------------------------------------------------${NC}"
|
||||
|
||||
# --- 5. NEWS DISPATCH ---
|
||||
echo -e "${GOLD}📜 LATEST ARCHIVE DISPATCHES:${NC}"
|
||||
NEWS_DATA=$(curl -sL -A "Mozilla/5.0" --connect-timeout 1 "$REPO_RAW/dispatches.txt")
|
||||
if [[ -z "$NEWS_DATA" || "$NEWS_DATA" == *"404"* ]]; then
|
||||
echo -e " ${RED}The Archives are currently silent.${NC}"
|
||||
else
|
||||
echo "$NEWS_DATA" | sed "s/^/ /"
|
||||
fi
|
||||
echo -e "${PURPLE}-------------------------------------------------${NC}"
|
||||
|
||||
# --- 6. FIRST STRIKE (INSTALLATION) ---
|
||||
# --- 4. FIRST STRIKE (INSTALLATION) ---
|
||||
if [ ! -f "/usr/local/bin/dynr" ]; then
|
||||
clear
|
||||
echo -e "${BLUE}🐉 Dynasty Revolution Systems Initializing...${NC}"
|
||||
echo -e "${GOLD}⚠️ Dynasty Framework is not yet manifested on this $OS_TYPE system.${NC}"
|
||||
read -p "📥 Initiate First Strike (Install)? (y/n): " INSTALL_CONFIRM < /dev/tty
|
||||
|
||||
if [[ "$INSTALL_CONFIRM" == "y" || "$INSTALL_CONFIRM" == "Y" ]]; then
|
||||
echo -e "${BLUE}📡 Manifesting core files in $DYNR_PATH...${NC}"
|
||||
[[ "$OS_TYPE" == "macOS" ]] && mkdir -p "$DYNR_PATH/modules" || sudo mkdir -p "$DYNR_PATH/modules"
|
||||
|
||||
# Create module directory
|
||||
if [[ "$OS_TYPE" == "macOS" ]]; then
|
||||
mkdir -p "$DYNR_PATH/modules"
|
||||
else
|
||||
sudo mkdir -p "$DYNR_PATH/modules"
|
||||
fi
|
||||
|
||||
# Download and set permissions
|
||||
sudo curl -sSL "$REPO_RAW/install.sh" -o /usr/local/bin/dynr
|
||||
sudo chmod +x /usr/local/bin/dynr
|
||||
echo -e "${GOLD}✅ System Manifested! Type 'dynr' to begin.${NC}"
|
||||
exit 0
|
||||
else
|
||||
echo -e "${RED}❌ Manifestation cancelled.${NC}"
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
||||
# --- 7. MAIN MENU ---
|
||||
if [ -f "/usr/local/bin/dynr" ]; then
|
||||
CURRENT_VER=$(grep -m 1 "VERSION=" /usr/local/bin/dynr | sed -E 's/.*VERSION="?([^"]*)"?.*/\1/')
|
||||
# --- 5. PERSISTENT MAIN LOOP ---
|
||||
while true; do
|
||||
clear
|
||||
echo -e "${BLUE}🐉 Dynasty Revolution Systems Initializing...${NC}"
|
||||
|
||||
# --- Pulse Check ---
|
||||
echo -e "${PURPLE}📡 Dynasty Pulse Check:${NC}"
|
||||
echo -e " [${GOLD}OK${NC}] OS: $OS_TYPE ($(uname -m))"
|
||||
|
||||
# Check NetBird Mesh
|
||||
if command -v netbird &> /dev/null && netbird status &> /dev/null; then
|
||||
echo -e " [${GOLD}OK${NC}] Mesh: NetBird Connected"
|
||||
else
|
||||
echo -e " [${RED}!!${NC}] Mesh: NetBird Disconnected"
|
||||
fi
|
||||
|
||||
# Check Gitea Reachability
|
||||
if curl -o /dev/null -sL --connect-timeout 1 "$REPO_RAW/dispatches.txt"; then
|
||||
echo -e " [${GOLD}OK${NC}] Repository: Gitea Reachable"
|
||||
else
|
||||
echo -e " [${RED}!!${NC}] Repository: Gitea Offline"
|
||||
fi
|
||||
|
||||
# Check Storage
|
||||
DISK_USAGE=$(df / | tail -1 | awk '{print $5}' | sed 's/%//')
|
||||
if [ "$DISK_USAGE" -gt 90 ]; then
|
||||
echo -e " [${RED}!!${NC}] Storage: $DISK_USAGE% Full - Caution advised."
|
||||
else
|
||||
echo -e " [${GOLD}OK${NC}] Storage: $DISK_USAGE% Nominal"
|
||||
fi
|
||||
|
||||
echo -e "${PURPLE}-------------------------------------------------${NC}"
|
||||
|
||||
# --- News Dispatch ---
|
||||
echo -e "${GOLD}📜 LATEST ARCHIVE DISPATCHES:${NC}"
|
||||
NEWS_DATA=$(curl -sL -A "Mozilla/5.0" --connect-timeout 1 "$REPO_RAW/dispatches.txt")
|
||||
if [[ -z "$NEWS_DATA" || "$NEWS_DATA" == *"404"* ]]; then
|
||||
echo -e " ${RED}The Archives are currently silent.${NC}"
|
||||
else
|
||||
echo "$NEWS_DATA" | sed "s/^/ /"
|
||||
fi
|
||||
echo -e "${PURPLE}-------------------------------------------------${NC}"
|
||||
|
||||
# --- Main Menu ---
|
||||
CURRENT_VER=$(grep -m 1 "VERSION=" /usr/local/bin/dynr | sed -E 's/.*VERSION="?([^"]*)"?.*/\1/')
|
||||
echo -e "${GOLD}⚠️ Dynasty Framework (v$CURRENT_VER)${NC}"
|
||||
echo -e "1) ${BLUE}Quick Strike${NC} (Modules)"
|
||||
echo -e "2) ${PURPLE}Remove Modules${NC}"
|
||||
@@ -95,44 +113,77 @@ if [ -f "/usr/local/bin/dynr" ]; then
|
||||
|
||||
echo -e "\n${BLUE}☁️ Cloud Manifest (Available):${NC}"
|
||||
CLOUD_DATA=$(curl -sL -A "Mozilla/5.0" --connect-timeout 1 "$REPO_RAW/modules_list.txt" | grep -v "Not found")
|
||||
[[ -z "$CLOUD_DATA" ]] && echo -e " ${GOLD}(Offline or No modules found)${NC}" || echo "$CLOUD_DATA" | sed 's/^/ ☁️ /'
|
||||
if [[ -z "$CLOUD_DATA" ]]; then
|
||||
echo -e " ${GOLD}(Offline or No modules found)${NC}"
|
||||
else
|
||||
echo "$CLOUD_DATA" | sed 's/^/ ☁️ /'
|
||||
fi
|
||||
|
||||
echo -e "\n${BLUE}Enter module name to run (or 'exit'):${NC}"
|
||||
read -p "dynr > " CMD_INPUT < /dev/tty
|
||||
|
||||
if [[ -n "$CMD_INPUT" && "$CMD_INPUT" != "exit" ]]; then
|
||||
if [ ! -f "$DYNR_PATH/modules/$CMD_INPUT" ]; then
|
||||
echo -e "${GOLD}🔎 Fetching module...${NC}"
|
||||
echo -e "${GOLD}🔎 Fetching module from cloud...${NC}"
|
||||
curl -s -o "$DYNR_PATH/modules/$CMD_INPUT" "$REPO_RAW/modules/$CMD_INPUT"
|
||||
chmod +x "$DYNR_PATH/modules/$CMD_INPUT"
|
||||
fi
|
||||
"$DYNR_PATH/modules/$CMD_INPUT" </dev/tty
|
||||
echo -e "\n${GOLD}Strike Complete. Press Enter to return to menu...${NC}"
|
||||
read < /dev/tty
|
||||
fi
|
||||
;;
|
||||
2)
|
||||
echo -e "\n${RED}🗑️ MODULE PURGE PROTOCOL${NC}"
|
||||
ls "$DYNR_PATH/modules" 2>/dev/null | sed 's/^/ ❌ /' || echo " (Nothing to remove)"
|
||||
echo ""
|
||||
read -p "Enter module name to delete (or 'cancel'): " RM_INPUT < /dev/tty
|
||||
|
||||
if [[ -n "$RM_INPUT" && "$RM_INPUT" != "cancel" ]]; then
|
||||
rm -f "$DYNR_PATH/modules/$RM_INPUT"
|
||||
echo -e "${GOLD}✅ Module '$RM_INPUT' removed.${NC}"
|
||||
if [ -f "$DYNR_PATH/modules/$RM_INPUT" ]; then
|
||||
rm -f "$DYNR_PATH/modules/$RM_INPUT"
|
||||
echo -e "${GOLD}✅ Module '$RM_INPUT' has been removed.${NC}"
|
||||
echo -e "Press Enter to continue..."
|
||||
read < /dev/tty
|
||||
else
|
||||
echo -e "${RED}❌ Module not found.${NC}"
|
||||
sleep 1
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
3)
|
||||
# This requires sudo to overwrite /usr/local/bin
|
||||
echo -e "${BLUE}🔄 Updating Dynasty Framework...${NC}"
|
||||
sudo curl -sSL "$REPO_RAW/install.sh" -o /usr/local/bin/dynr
|
||||
sudo chmod +x /usr/local/bin/dynr
|
||||
echo -e "${GOLD}✅ System Updated.${NC}"
|
||||
echo -e "${GOLD}✅ System Updated. Press Enter to re-initialize...${NC}"
|
||||
read < /dev/tty
|
||||
exec /usr/local/bin/dynr
|
||||
;;
|
||||
4)
|
||||
read -p "⚠️ Uninstall Framework? (y/n): " UN_CONFIRM < /dev/tty
|
||||
if [[ "$UN_CONFIRM" == "y" ]]; then
|
||||
sudo rm -f /usr/local/bin/dynr; rm -rf "$DYNR_PATH"
|
||||
sudo rm -f /usr/local/bin/dynr
|
||||
rm -rf "$DYNR_PATH"
|
||||
echo -e "${RED}Framework purged.${NC}"
|
||||
exit 0
|
||||
fi
|
||||
;;
|
||||
5) exit 0 ;;
|
||||
*) echo "Invalid selection." ;;
|
||||
5)
|
||||
# Clean DYNR Exit Art
|
||||
echo -e "\n${GOLD}"
|
||||
echo " ____ __ __ _ _ ____ "
|
||||
echo " | _ \ \ \ / /| \ | || _ \ "
|
||||
echo " | | | | \ V / | \| || |_) |"
|
||||
echo " | |_| | | | | |\ || _ < "
|
||||
echo " |____/ |_| |_| \_||_| \_\\\\"
|
||||
echo -e "${NC}"
|
||||
echo -e "${BLUE} 🐉 DEPARTING THE DYNASTY...${NC}"
|
||||
echo -e "${PURPLE} Safe travels, Architect.${NC}\n"
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo -e "${RED}Invalid selection.${NC}"
|
||||
sleep 1
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
echo -e "\n${BLUE}System Initialized. Version: $VERSION${NC}"
|
||||
done
|
||||
Reference in New Issue
Block a user