#!/bin/bash # MosDNS 启动前检查脚本 # 自动创建必要目录,确保服务正常启动 set -e echo "=========================================" echo " MosDNS 启动前检查" echo "=========================================" echo "" # 颜色定义 GREEN='\033[0;32m' YELLOW='\033[1;33m' RED='\033[0;31m' NC='\033[0m' # No Color # 1. 检查当前目录 echo -e "${YELLOW}[1/5] 检查当前目录...${NC}" CURRENT_DIR=$(pwd) echo "当前目录: $CURRENT_DIR" echo "" # 2. 创建必要目录 echo -e "${YELLOW}[2/5] 创建必要目录...${NC}" directories=("config.d/rules" "domains" "config") for dir in "${directories[@]}"; do if [ ! -d "$dir" ]; then mkdir -p "$dir" echo -e "${GREEN}✓${NC} 创建目录: $dir" else echo -e "${GREEN}✓${NC} 目录已存在: $dir" fi done echo "" # 3. 检查配置文件 echo -e "${YELLOW}[3/5] 检查配置文件...${NC}" CONFIG_FILES=("config1.yaml" "config.yaml" "config-template.yaml" "config-minimal.yaml") FOUND_CONFIG="" for config in "${CONFIG_FILES[@]}"; do if [ -f "$config" ]; then echo -e "${GREEN}✓${NC} 找到配置文件: $config" FOUND_CONFIG="$config" break fi done if [ -z "$FOUND_CONFIG" ]; then echo -e "${RED}✗ 未找到配置文件${NC}" echo "请确保以下文件之一存在:" for config in "${CONFIG_FILES[@]}"; do echo " - $config" done exit 1 fi echo "" # 4. 检查可执行文件 echo -e "${YELLOW}[4/5] 检查可执行文件...${NC}" MOSDNS_BINS=("mosdns-linux-amd64" "mosdns" "./mosdns") FOUND_BIN="" for bin in "${MOSDNS_BINS[@]}"; do if [ -f "$bin" ] && [ -x "$bin" ]; then echo -e "${GREEN}✓${NC} 找到可执行文件: $bin" FOUND_BIN="$bin" break fi done if [ -z "$FOUND_BIN" ]; then echo -e "${RED}✗ 未找到可执行文件${NC}" exit 1 fi echo "" # 5. 显示目录结构 echo -e "${YELLOW}[5/5] 当前目录结构:${NC}" echo "" echo "$CURRENT_DIR/" echo "├── $FOUND_BIN (可执行文件)" echo "├── $FOUND_CONFIG (配置文件)" echo "├── config.d/" echo "│ └── rules/ (规则文件目录)" if [ -n "$(ls -A config.d/rules 2>/dev/null)" ]; then for file in config.d/rules/*.yaml; do if [ -f "$file" ]; then echo "│ └── $(basename $file)" fi done fi echo "├── domains/ (域名列表目录)" if [ -n "$(ls -A domains 2>/dev/null)" ]; then for file in domains/*; do if [ -f "$file" ]; then echo "│ └── $(basename $file)" fi done fi echo "└── config/ (其他配置)" echo "" echo "=========================================" echo -e "${GREEN}✓ 检查完成!${NC}" echo "=========================================" echo "" echo "启动命令:" echo " $FOUND_BIN start -c $FOUND_CONFIG" echo "" echo "按回车键启动服务,或按 Ctrl+C 取消..." read # 启动服务 echo "" echo -e "${YELLOW}正在启动 MosDNS...${NC}" echo "" $FOUND_BIN start -c $FOUND_CONFIG