我最近想创建一个插件,该插件将运行从服务器到播放器的跟踪路由。
我在用Java时遇到了一些麻烦,因为我的服务器托管不允许我访问除minecraft部分之外的其他文件,因此我无法正确设置所需的库。

我考虑过要创建一个在我拥有所有权限的VPS上使用的Rest API,但是我不确定我们是否可以从另一个IP(而不是本地IP)运行traceroute,我需要将其从minecraft服务器运行到播放器。

我当前使用的跟踪路由是这样的:https://gist.github.com/djangofan/1d0e3de52ac5375d3f52249c5293d588

问题是它使用Jpcap,这是一个本机库,因此需要通过不同的系统属性等进行设置,而服务器托管不允许这样做。

你会怎么做?

最佳答案

我假设当您执行此类操作时,您和服务器操作员不再是朋友了……但这是您的决定。

当您无法将本机库应用于服务器时,您唯一的选择是用Java重新实现traceroute-尽管我不知道JVM是否具有足够深的系统访问权限,因为这可能是完全可能的。

如果您可以写入Minecraft服务器的文件系统,并且在向其中上传JAR时,为了安装插件,可以将本机库作为二进制资源添加到JAR中。如果只能上载一个类,则可以将库作为大BASE64字符串添加到该类。

在启动traceroute之前,您将本机库写到文件系统中,然后调用System.load(),最后执行traceroute。 –但这绝对属于“ Dirty Hack”类别,因为它可能会破坏服务器的稳定性,甚至可能无法正常工作,因为有效的SecurityManager会阻止您这样做。

当traceroute库本身对System.load()(或System.loadLibrary())进行调用时,您可能会喜欢操纵属性java.library.path而不是调用System.load(),但是,再次激活的SecurityManager可能会阻止这种情况……

10-07 18:48