Запустите traceroute из плагина minecraft

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

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

Маршрут трассировки, который я сейчас использую, следующий: /а>

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

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


person NoeXWolf    schedule 09.04.2020    source источник


Ответы (1)


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

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

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

Перед запуском трассировки вы записываете собственную библиотеку в файловую систему, затем вызываете для нее System.load() и, наконец, выполняете трассировку. – Но это определенно относится к категории «Грязный взлом», так как может дестабилизировать сервер, а может даже и не работать из-за активного SecurityManager, который мешает вам это сделать.

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

person tquadrat    schedule 09.04.2020