Запустите traceroute из плагина Minecraft - PullRequest
0 голосов
/ 09 апреля 2020

Недавно я хотел создать плагин, который запускал бы трассировку с сервера на плеер. У меня есть некоторые проблемы с java, потому что мой хостинг не позволяет мне иметь доступ к другому файлу, кроме части майнкрафта, поэтому я не могу правильно настроить нужные мне библиотеки.

Я думал о создании API отдыха, который был бы на VPS, где у меня есть все разрешения, но я не уверен, что мы можем запустить трассировку с другого IP-адреса, кроме локального, и мне нужно запустить его с сервера minecraft на проигрыватель.

Трассировка, которую я сейчас использую, такова: https://gist.github.com/djangofan/1d0e3de52ac5375d3f52249c5293d588

Проблема в том, что она использует Jpcap, которая является нативной библиотекой, и поэтому она требует ее настройки. через различные свойства системы и т. д. c, что мне запрещено на моем хостинге.

Как бы вы поступили?

1 Ответ

0 голосов
/ 09 апреля 2020

Я предполагаю, что вы и оператор сервера больше не друзья, когда вы делаете что-то подобное ... но это ваше решение.

Когда вы не можете применить собственную библиотеку к серверу, ваш единственный вариант будет следует повторно внедрить traceroute в Java - хотя я и понятия не имею, имеет ли JVM достаточно глубокий доступ к системе, поскольку это вообще возможно.

Если вы можете записывать в файловую систему вашего сервера Minecraft, и когда вы загружаете JAR на него, чтобы установить плагин, вы можете добавить нативную библиотеку в качестве бинарного ресурса в JAR. Если вы можете загружать только класс, вы можете добавить библиотеку в виде большой строки BASE64 для этого класса.

Прежде чем запустить трассировку, вы записываете собственную библиотеку в файловую систему, затем вызываете * 1008. * для этого, и, наконец, вы выполните трассировку. - Но это определенно относится к категории "Dirty Hack", так как это может дестабилизировать сервер и даже не работать из-за активного SecurityManager, который мешает вам сделать это.

Когда библиотека traceroute выполняет сам вызов System.load() (или System.loadLibrary()), вы можете согласиться с манипулированием свойством java.library.path вместо вызова System.load(), но, опять же, активный SecurityManager может предотвратить что ...

...