Установление vpn-соединения из веб-приложения Java

У меня есть весеннее загрузочное веб-приложение, которое должно запустить VPN-подключение и подключиться к FTP-серверу за ним. Так что шаги просты:

  1. начать VPN соединение
  2. подождите 5 секунд (Thread.sleep)
  3. подключиться к FTP
  4. делать вещи

Для запуска VPN я использую системную утилиту pppd и запускаю ее из webapp с помощью ProcessBuilder. Код выглядит примерно так:

ProcessBuilder processBuilder = new ProcessBuilder("sh", "-c", "pon myconnection");
processBuilder.redirectErrorStream();
processBuilder.redirectOutput();
Process p = processBuilder.start();
p.waitFor();

Для подключения к FTP я использую Apache FTPClient.

Проблема в том, что приложение зависает при попытке подключиться к FTP, а затем возвращает исключение тайм-аута подключения, поэтому FTP-сервер недоступен. Но что странно

  1. В то время как приложение висит, я могу открыть терминал и пинговать FTP-сервер. И можете использовать shell ftp для подключения к нему. Таким образом, это означает, что VPN-соединение установлено успешно. Когда позднее приложение закрывает VPN-соединение (оно выполняет команду poff) - тогда FTP-пинг не работает. Похоже, нет проблем с установлением соединения.
  2. Если я сначала устанавливаю VPN-соединение из оболочки (выполняя ту же команду "pon myconneciton" из оболочки), а затем запускаю приложение для подключения к FTP - тогда оно успешно подключается. Поэтому настройки FTP-соединения также верны.
  3. Но когда приложение делает и то и другое: включите VPN и подключитесь к FTP - тогда FTP-сервер недоступен.

Кто-нибудь может предложить, в каком направлении мне копать?

0 ответов

Другие вопросы по тегам