#!/bin/bash
# FreeSwitch 配置检查和修复脚本
# 针对 rude-rejection 问题的完整解决方案
SERVER="14.103.165.199"
USERNAME="root"
echo "=== FreeSwitch ESL 配置修复脚本 ==="
echo "目标服务器: $SERVER"
echo "时间: $(date)"
echo ""
echo "步骤1: 查找 FreeSwitch 配置文件..."
echo "常见配置文件位置:"
echo " - /etc/freeswitch/autoload_configs/event_socket.conf.xml"
echo " - /usr/local/freeswitch/conf/autoload_configs/event_socket.conf.xml"
echo " - /opt/freeswitch/conf/autoload_configs/event_socket.conf.xml"
echo ""
echo "步骤2: 生成修复用的配置文件..."
# 生成正确的 event_socket.conf.xml
cat > event_socket_fixed.conf.xml << 'EOF'
EOF
echo "✅ 已生成修复配置文件: event_socket_fixed.conf.xml"
echo ""
# 生成更新的 ACL 配置
cat > acl_fixed.conf.xml << 'EOF'
EOF
echo "✅ 已生成修复ACL配置文件: acl_fixed.conf.xml"
echo ""
echo "步骤3: 手动修复指令 (需要在服务器上执行)..."
echo ""
echo "请在服务器 $SERVER 上执行以下命令:"
echo ""
echo "# 1. 备份原配置"
echo "sudo cp /usr/local/freeswitch/conf/autoload_configs/event_socket.conf.xml /usr/local/freeswitch/conf/autoload_configs/event_socket.conf.xml.backup.$(date +%Y%m%d)"
echo ""
echo "# 2. 查找实际配置文件位置"
echo "sudo find /etc /usr/local /opt -name 'event_socket.conf.xml' -type f 2>/dev/null"
echo ""
echo "# 3. 临时移除ACL限制的配置内容:"
echo "cat > /tmp/event_socket_temp.xml << 'INNER_EOF'"
echo ""
echo " "
echo " "
echo " "
echo " "
echo " "
echo " "
echo ""
echo "INNER_EOF"
echo ""
echo "# 4. 覆盖配置文件 (请根据实际路径调整)"
echo "sudo cp /tmp/event_socket_temp.xml /usr/local/freeswitch/conf/autoload_configs/event_socket.conf.xml"
echo ""
echo "# 5. 重新加载配置"
echo "sudo fs_cli -x 'reload mod_event_socket'"
echo ""
echo "# 6. 如果重新加载失败,重启FreeSwitch"
echo "sudo systemctl restart freeswitch"
echo "# 或者"
echo "sudo /etc/init.d/freeswitch restart"
echo ""
echo "# 7. 验证配置"
echo "sudo fs_cli -x 'show modules' | grep event_socket"
echo ""
echo "# 8. 测试连接"
echo "telnet localhost 8021"
echo ""
echo "步骤4: 验证修复..."
echo "请在执行上述命令后,运行以下测试:"
echo ""
echo "# 从服务器本地测试"
echo "telnet localhost 8021"
echo ""
echo "# 从客户端测试"
echo "telnet $SERVER 8021"
echo ""
echo "步骤5: 如果问题仍然存在..."
echo "1. 检查FreeSwitch日志:"
echo " tail -f /usr/local/freeswitch/log/freeswitch.log"
echo ""
echo "2. 检查是否有多个FreeSwitch实例:"
echo " ps aux | grep freeswitch"
echo ""
echo "3. 检查端口监听状态:"
echo " netstat -tlnp | grep 8021"
echo ""
echo "4. 检查防火墙规则:"
echo " iptables -L -n | grep 8021"
echo ""
echo "=== 脚本完成 ==="
echo "注意: 此配置移除了所有ACL限制,仅用于测试。"
echo "生产环境请重新添加适当的IP限制。"