MC服务器异常ip入侵过滤——使用GeoLite2-Country.mmdb离线数据库定位玩家IP归属国家

服务器插件 ipvalidate-for-mcpaper1.21.jar。

在搞一些东西时发现了GeoLite2这个数据库,本质上它应该算是一个离线的ip地理数据库,就是可以查询到IP对应的国家或地区,MAXMIND还提供了更具体的城市数据库,似乎也可以查到ip对应的城市位置。

那么言归正传,突然想起来之前我的世界服务器被入侵的鸟事🤬,就是有陌生的玩家闯入未设防的私人服务器,然后在里面搞破坏,或者乱插牌子。查询ip地址发现这些入侵者ip均来自国外虚拟服务提供商。
类似于[个人Minecraft服务器被境外黑客/熊孩子攻击的事例分享]。(https://www.bilibili.com/opus/829121476347035681?spm_id_from=333.1007.0.0&jump_opus=1)

这种类似的入侵其实不难理解,毕竟ipv4的范围也没多大,像咱们一般租用的这种阿里云或者腾讯云的小服务器本身就没啥防御,还在Discord上发现了一个叫ServerSeeker的机器人,声称能扫描到整个互联网的私人服务器。

所以之前的思路是写一个判断玩家的ip地址的paper插件Minecraft服务器被境外黑客/熊孩子入侵——开启IP验证,如果是国外ip就直接踢出去,但是当时采用的方法是插件查询类似http://www.cip.cc/这种网站,然后根据网站返回的结果判断ip属于哪个国家。但问题是这个网站也不太靠谱,经常拒绝访问什么的。

既然有GeoLite2这个东西,那就好办了,直接把数据库放到本地查询呗。

获取GeoLite2-Country.mmdb

从官网下载最新的离线数据库。
MAXMIND_GEOLITE2
在这里插入图片描述
解压后里面的GeoLite2-Country.mmdb就是我们需要的数据库。

代码

一点参考
intellij创建一个新项目,插件市场下载那个Minecraft developer插件
就是这个玩意
新建一个minecraft plugin项目,记得Build System选maven
在这里插入图片描述
在pom.xml里添加依赖

	<dependencies><dependency>...其他的一些依赖...</dependency><dependency><groupId>com.maxmind.geoip2</groupId><artifactId>geoip2</artifactId><version>3.0.1</version></dependency></dependencies>

把GeoLite2-Country.mmdb丢到resources文件夹下边
在这里插入图片描述
然后主函数里的代码:

package org.iplocation.ipvalidate;import com.maxmind.geoip2.DatabaseReader;
import com.maxmind.geoip2.exception.GeoIp2Exception;
import com.maxmind.geoip2.model.CountryResponse;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerLoginEvent;
import org.bukkit.plugin.java.JavaPlugin;import java.io.File;
import java.io.IOException;
import java.net.InetAddress;public class Ipvalidate extends JavaPlugin implements Listener {private DatabaseReader databaseReader;@Overridepublic void onEnable() {// 加载 GeoLite2 数据库try {File dbFile = new File(getDataFolder(), "GeoLite2-Country.mmdb");if (!dbFile.exists()) {saveResource("GeoLite2-Country.mmdb", false);}databaseReader = new DatabaseReader.Builder(dbFile).build();getLogger().info("GeoLite2-Country database loaded successfully.");} catch (IOException e) {getLogger().severe("Failed to load GeoLite2-Country.mmdb: " + e.getMessage());getServer().getPluginManager().disablePlugin(this);}// 注册事件监听器getServer().getPluginManager().registerEvents(this, this);}@Overridepublic void onDisable() {// 关闭数据库连接if (databaseReader != null) {try {databaseReader.close();} catch (IOException e) {getLogger().severe("Failed to close GeoLite2-Country database: " + e.getMessage());}}}@EventHandlerpublic void onPlayerLogin(PlayerLoginEvent event) {String playerName = event.getPlayer().getName();InetAddress ipAddress = event.getAddress();try {String country = getCountryByIp(ipAddress);if (!"China".equalsIgnoreCase(country)) {event.disallow(PlayerLoginEvent.Result.KICK_OTHER, "You are not welcomed.");getLogger().info("Player " + playerName + " was kicked. Country: " + country);}String message ="Player " + playerName + " enters the game. Player IP: " + ipAddress + " Location: " + country;Player player = event.getPlayer();player.sendMessage(message);Bukkit.broadcastMessage(message);getLogger().info(message);} catch (Exception e) {getLogger().severe("Failed to determine country for IP: " + ipAddress + " - " + e.getMessage());}}// 根据 IP 获取国家名称private String getCountryByIp(InetAddress ipAddress) throws IOException, GeoIp2Exception {CountryResponse response = databaseReader.country(ipAddress);return response.getCountry().getName();}// 测试函数public void testIp(String ipAddress) {try {InetAddress inetAddress = InetAddress.getByName(ipAddress);String country = getCountryByIp(inetAddress);getLogger().info("IP: " + ipAddress + " belongs to country: " + country);} catch (Exception e) {getLogger().severe("Error testing IP: " + ipAddress + " - " + e.getMessage());}}
}

接下来就可以构建jar包了

在这里插入图片描述
左侧,先双击clean,再双击package
导出的jar包丢到mc服务器的plugin目录下
启动服务器就行了。

ipvalidate-for-mcpaper1.21.jar

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/65209.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【计算机视觉基础CV-图像分类】05 - 深入解析ResNet与GoogLeNet:从基础理论到实际应用

引言 在上一篇文章中&#xff0c;我们详细介绍了ResNet与GoogLeNet的网络结构、设计理念及其在图像分类中的应用。本文将继续深入探讨如何在实际项目中应用这些模型&#xff0c;特别是如何保存训练好的模型、加载模型以及使用模型进行新图像的预测。通过这些步骤&#xff0c;读…

sentinel限流+其他

quick-start | Sentinel sentinel 作用 限流 熔断降级 1&#xff0c;限制什么 QPS 并发线程数 2&#xff0c;限制什么 资源&#xff0c;什么资源 服务&#xff0c;方法&#xff0c;接口&#xff0c;或者一段代码 3&#xff0c;实现方式 配置规则 注解 其他 Java常见5种限流…

运行Zr.Admin项目(后端)

1.下载Zr.Admin代码压缩包 https://codeload.github.com/izhaorui/Zr.Admin.NET/zip/refs/heads/main 2.打开项目 我这里装的是VS2022社区版 进入根目录&#xff0c;双击ZRAdmin.sln打开项目 3.安装.net7运行时 我当时下载的代码版本是.net7的 点击安装 点击安装&#xff0…

webrtc-internals调试工具

Google 的 Chrome&#xff08;87 或更高版本&#xff09;WebRTC 内部工具是一套内置于 Chrome 浏览器中的调试工具; webrtc-internals 能够查看有关视频和音频轨道、使用的编解码器以及流的一般质量的详细信息。这些知识对于解决音频和视频质量差的问题非常有帮助。 webrtc-int…

Webpack在Vue CLI中的应用

webpack 作为目前最流行的项目打包工具&#xff0c;被广泛使用于项目的构建和开发过程中&#xff0c;其实说它是打包工具有点大材小用了&#xff0c;我个人认为它是一个集前端自动化、模块化、组件化于一体的可拓展系统&#xff0c;你可以根据自己的需要来进行一系列的配置和安…

如何用gpt来分析链接里面的内容(比如分析论文链接)和分析包含多个文件中的一块代码

如何用gpt来分析链接里面的内容&#xff0c;方法如下 这里使用gpt4里面有一个网路的功能 点击搜索框下面这个地球的形状即可启动搜索网页模式 然后即可提出问题在搜索框里&#xff1a;发现正确识别和分析了链接里面的内容 链接如下&#xff1a;https://arxiv.org/pdf/2009.1…

Docker Search失败,但是Pull成功的解决方法(环境:腾讯云服务器CentOS7系统安装Docker)

Docker Search失败&#xff0c;但是Pull成功的解决方法&#xff08;环境&#xff1a;腾讯云服务器CentOS7系统安装Docker&#xff09; 背景解决思路 背景 在安装完成Docker后&#xff0c;成功启动Docker(Systemctl start Docker)&#xff0c;使用搜索镜像命令&#xff08;Dock…

负载均衡式在线OJ

文章目录 项目介绍所用技术与开发环境所用技术开发环境 项目框架compiler_server模块compiler编译功能comm/util.hpp 编译时的临时文件comm/log.hpp 日志comm/util.hpp 时间戳comm/util.hpp 检查文件是否存在compile_server/compiler.hpp 编译功能总体编写 runner运行功能资源设…

NiChart 多模态神经影像(structural MRI,functional MRI,and diffusion MRI)处理和分析工具包安装

NiChart多模态神经影像部署 NiChart 本地安装Git clone 问题personal access token PAT 问题 NiChart 云端注册AWS验证问题 NiChart 是UPenn大学&#xff0c;Christos Davatzikos教授开发的一个多模态MRI影像&#xff0c;structural (sMRI), diffusion (dMRI)&#xff0c; and …

xinput1_3.dll放在哪里?当xinput1_3.dll丢失时的应对策略:详细解决方法汇总

在计算机系统的运行过程中&#xff0c;我们偶尔会遇到一些令人困扰的问题&#xff0c;其中xinput1_3.dll文件丢失就是较为常见的一种情况。这个看似不起眼的动态链接库文件&#xff0c;实则在许多软件和游戏的正常运行中发挥着至关重要的作用。一旦它丢失&#xff0c;可能会导致…

【VScode】第三方GPT编程工具-CodeMoss安装教程

一、CodeMoss是什么&#xff1f; CodeMoss是一款集编程、学习和办公于一体的高效工具。它兼容多种主流平台&#xff0c;包括VSCode、IDER、Chrome插件、Web和APP等&#xff0c;支持插件安装&#xff0c;尤其在VSCode和IDER上的表现尤为出色。无论你是编程新手还是资深开发者&a…

智慧农业物联网传感器:开启农业新时代

在当今科技飞速发展的时代&#xff0c;农业领域正经历着一场前所未有的变革&#xff0c;而智慧农业物联网传感器无疑是这场变革中的关键利器。它宛如农业的 “智慧大脑”&#xff0c;悄然渗透到农业生产的各个环节&#xff0c;为传统农业注入了全新的活力&#xff0c;让农业生产…

Pytorch | 利用AI-FGTM针对CIFAR10上的ResNet分类器进行对抗攻击

Pytorch | 利用AI-FGTM针对CIFAR10上的ResNet分类器进行对抗攻击 CIFAR数据集AI-FGTM介绍算法流程初始化迭代更新&#xff08; t 0 t 0 t0 到 T − 1 T - 1 T−1&#xff09;迭代完成 AI-FGTM代码实现AI-FGTM算法实现攻击效果 代码汇总aifgtm.pytrain.pyadvtest.py 之前已经…

【AI系列】从零开始学习大模型GPT (1)- Build a Large Language Model (From Scratch)

Build a Large Language Model 背景文章第1章&#xff1a;理解大型语言模型什么是LLMs?什么是Transformer&#xff1f;什么是BERT和GPT?GPT的架构设计构建GPT有哪些步骤&#xff1f; 第2章&#xff1a;处理文本数据第3章&#xff1a;编码Attention机制第4章&#xff1a;从零实…

Unity2021.3.16f1可以正常打开,但是Unity2017.3.0f3却常常打开闪退或者Unity2017编辑器运行起来就闪退掉

遇到问题&#xff1a; 从今年开始&#xff0c;不知道咋回事&#xff0c;电脑上的Unity2017像是变了个人似得&#xff0c;突然特别爱闪退掉&#xff0c;有时候还次次闪退&#xff0c;真是让人无语&#xff0c;一直以来我都怀疑是不是电脑上安装了什么别的软件了&#xff0c;导致…

ArkTs组件(2)

一.下拉列表组件&#xff1a;Select 1.接口 Select(options: Array<SelectOption>) 参数名类型必填说明optionsArray<SelectOption>是设置下拉选项。 SelectOption对象说明 名称类型必填说明valueResourceStr是 下拉选项内容。 iconResourceStr否 下拉选项图片…

微机接口课设——基于Proteus和8086的打地鼠设计(8255、8253、8259)Proteus中Unknown 1-byte opcode / Unknown 2-byte opcode错误

原理图设计 汇编代码 ; I/O 端口地址定义 IOY0 EQU 0600H IOY1 EQU 0640H IOY2 EQU 0680HMY8255_A EQU IOY000H*2 ; 8255 A 口端口地址 MY8255_B EQU IOY001H*2 ; 8255 B 口端口地址 MY8255_C EQU IOY002H*2 ; 8255 C 口端口地址 MY8255_MODE EQU IOY003H*2 ; …

2024年12月一区SCI-加权平均优化算法Weighted average algorithm-附Matlab免费代码

引言 本期介绍了一种基于加权平均位置概念的元启发式优化算法&#xff0c;称为加权平均优化算法Weighted average algorithm&#xff0c;WAA。该成果于2024年12月最新发表在中JCR1区、 中科院1区 SCI期刊 Knowledge-Based Systems。 在WAA算法中&#xff0c;加权平均位置代表当…

实现某海外大型车企(T)Cabin Wi-Fi 需求的概述 - 4

大家好&#xff0c;我是Q&#xff0c;邮箱&#xff1a;1042484520qq.com。 今天我们在上几讲的基础上再扩展下 Cabin Wi-Fi 的功能需求&#xff0c;讲讲如何使能 5G TCU Wi-Fi STA Bridge 模式。 参考&#xff1a; 实现某海外大型车企&#xff08;T&#xff09;Cabin Wi-Fi 需求…

《CS2》报错dxgi.dll缺失怎么办?《CS2》游戏提示dxgi.dll缺失要怎么解决?

一、dxgi.dll缺失的根源 游戏安装问题&#xff1a;dxgi.dll文件是DirectX图形接口的一部分&#xff0c;如果游戏安装不完整或安装过程中出现问题&#xff0c;可能会导致该文件缺失。 系统更新或配置变动&#xff1a;Windows操作系统的更新或某些系统配置的变动&#xff0c;有时…