IP Ban Plugin

一个管理封禁IP地址的Velocity插件。

资源图片
# Velocity IP Ban 插件 ![版本](https://img.shields.io/badge/version-1.0.0-blue) ![Java](https://img.shields.io/badge/java-21-orange) ![Velocity](https://img.shields.io/badge/velocity-3.3.0-green) ![许可证](https://img.shields.io/badge/license-MIT-lightgrey) > **由 Yunexal Labs 创建** - 一个用于 Velocity 代理服务器的简单高效的 IP 封禁插件 ## 📋 概述 Velocity IP Ban 插件是一个轻量级但功能强大的解决方案,用于管理 Velocity 代理服务器上的 IP 封禁。该插件提供即时 IP 阻止、自动在线玩家踢出以及对多 IP 管理的支持——所有这些都没有不必要的复杂性。 ## ✨ 功能 - 🚫 **即时 IP 阻止** - 在玩家能够连接到任何后端服务器之前,阻止封禁的 IP 地址 - 👥 **多 IP 支持** - 使用单个命令封禁或解封多个 IP 地址 - ⚡ **在线玩家踢出** - 当玩家的 IP 被封禁时,自动将在线玩家踢出 - 📊 **统计集成** - 内置 bStats 集成,用于使用分析 - 🎨 **彩色消息** - 美观的彩色控制台输出和玩家消息 - 💾 **SQLite 数据库** - 轻量级、无服务器数据库存储 - 🔧 **简单配置** - 首次运行时需要最少的设置 - 🌐 **无依赖** - 仅使用 Velocity 即可开箱即用 ## 🚀 安装 1. 从发布版下载最新的 `velocity-ip-ban-1.0.0.jar` 2. 将 JAR 文件放在您的 Velocity 服务器的 `plugins` 文件夹中 3. 重新启动您的 Velocity 服务器 4. 插件将在首次运行时自动创建配置文件 ## 📖 命令 ### `/ipban` - 封禁 IP 地址 **权限:** `velocityipban.ban` **别名:** `/banip` #### 使用示例: ```bash # 显示所有封禁 IP 的列表 /ipban # 封禁单个 IP 地址 /ipban 192.168.1.100 # 封禁多个 IP 地址一次 /ipban 192.168.1.100 10.0.0.50 172.16.0.10 # 混合有效和无效 IP (无效的将跳过并显示警告) /ipban 192.168.1.100 invalid.ip 10.0.0.50 ``` ### `/unbanip` - 解封 IP 地址 **权限:** `velocityipban.unban` **别名:** `/unban-ip` #### 使用示例: ```bash # 解封单个 IP 地址 /unbanip 192.168.1.100 # 解封多个 IP 地址一次 /unbanip 192.168.1.100 10.0.0.50 172.16.0.10 ``` ## ⚙️ 配置 ### config.yml ```yaml # Velocity IP Ban 插件配置 # 由 Yunexal Labs 创建 # # Velocity 代理服务器的简单高效的 IP 封禁系统 # 数据库设置 database: type: "sqlite" sqlite: file: "banned_ips.db" # 调试模式 debug: false ``` ### messages.properties 所有插件消息都可以通过 `messages.properties` 文件进行自定义: ```properties # 封禁消息 ban.message=&c您的 IP 已被 Yunexal Autonomous Security 封禁。无法申诉。技术问题? ban.kick_online=&c您的 IP 已被封禁,您正在在线。无法重新连接。 ban.success=&a已成功封禁 IP: &f{ip} ban.success_multiple=&a已成功封禁 &f{count} &a个 IP: &f{ips} ban.already=&cIP {ip} 已被封禁 ban.some_already=&e警告:某些 IP 已被封禁: &f{already_banned} # 解封消息 unban.success=&a已成功解封 IP: &f{ip} unban.success_multiple=&a已成功解封 &f{count} &a个 IP: &f{ips} unban.not_banned=&cIP {ip} 未被封禁 unban.some_not_banned=&e警告:某些 IP 未被封禁: &f{not_banned} # 列表消息 list.header=&6=== 封禁的 IP === list.entry=&7{ip} &8- &fbanned by &f{banned_by} list.empty=&7目前没有封禁的 IP # 错误消息 error.invalid_ip=&c无效的 IP 地址格式: &f{ip} error.no_permission=&c您没有使用此命令的权限 error.database=&c发生数据库错误。请检查控制台以获取详细信息。 # 使用消息 usage.ipban=&c用法: &f/ipban &7[显示列表] &f| &f/ipban [ip2] [ip3] ... usage.unbanip=&c用法: &f/unbanip [ip2] [ip3] ... ``` ## 🔒 权限 | 权限 | 描述 | 默认值 | |------------|-------------|---------| | `velocityipban.ban` | 允许使用 `/ipban` 命令 | `op` | | `velocityipban.unban` | 允许使用 `/unbanip` 命令 | `op` | ## 🗃️ 数据库模式 该插件使用一个简单的 SQLite 数据库,具有以下结构: ```sql CREATE TABLE banned_ips ( id INTEGER PRIMARY KEY AUTOINCREMENT, ip_address TEXT NOT NULL UNIQUE, banned_by TEXT NOT NULL, banned_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); ``` ## 📊 工作原理 1. **连接阻止**: 玩家尝试连接时,插件在 `PreLoginEvent` 中检查其 IP 是否在数据库中。 2. **多 IP 管理**: 命令支持空格分隔的 IP 地址以进行批量操作 3. **在线玩家踢出**: 当 IP 被封禁时,立即将所有具有该 IP 的在线玩家断开连接 4. **验证**: 所有 IP 地址在处理之前都会进行验证,并为无效格式提供详细的错误消息 5. **异步操作**: 所有数据库操作均以异步方式执行,以防止服务器滞后