Установление vpn-соединения из веб-приложения Java
У меня есть весеннее загрузочное веб-приложение, которое должно запустить VPN-подключение и подключиться к FTP-серверу за ним. Так что шаги просты:
- начать VPN соединение
- подождите 5 секунд (Thread.sleep)
- подключиться к FTP
- делать вещи
Для запуска 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-сервер недоступен. Но что странно
- В то время как приложение висит, я могу открыть терминал и пинговать FTP-сервер. И можете использовать shell ftp для подключения к нему. Таким образом, это означает, что VPN-соединение установлено успешно. Когда позднее приложение закрывает VPN-соединение (оно выполняет команду poff) - тогда FTP-пинг не работает. Похоже, нет проблем с установлением соединения.
- Если я сначала устанавливаю VPN-соединение из оболочки (выполняя ту же команду "pon myconneciton" из оболочки), а затем запускаю приложение для подключения к FTP - тогда оно успешно подключается. Поэтому настройки FTP-соединения также верны.
- Но когда приложение делает и то и другое: включите VPN и подключитесь к FTP - тогда FTP-сервер недоступен.
Кто-нибудь может предложить, в каком направлении мне копать?