135 lines
3.0 KiB
Bash
135 lines
3.0 KiB
Bash
#!/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
|
|
|
|
|