Плагин OpenVPN Python

У меня есть задача об аутентификации пользовательская база данных использования OpenVPN, которая расположена на удаленном сервере (не хост с экземпляром сервера OpenVPN). И мы используем Python в качестве основного языка для всех наших инструментов.

Общим решением для этой задачи может быть использование опции [b] OpenVPN auth-user-pass-verify [/b] с путем к моему сценарию Python, которые выполняют любую логику аутентификации, которую я хочу. Но выполнение моего сценария Python может занять время, например, удаленный сервер далеко, или это может сделать серьезные вычисления для аутентификации пользователя. Я думаю, что подлинный сценарий может занять несколько секунд для выполнения. Как Вы знаете, OpenVPN является единственным приложением потока, и он использует не блокирующийся ввод-вывод для обработки нескольких клиентов. Именно поэтому, когда OpenVPN выполняют некоторый сценарий, он останавливает все операции ввода-вывода и ожидает конца выполнения сценария. В случае, если у нас есть долговременный подлинный сценарий и большое количество пользователей, кто хочет автору, мы можем испытать затруднения производительности из-за сети OpenVPN. Было бы замечательно, если бы OpenVPN начал задержанные подлинные операции поддержки. И это действительно имеет эту поддержку, но только в сменной системе. Все современные плагины используют его, например, openvpn-радиус. Но я не хочу, пишут всю логику в c/c ++ или имеют стычку с созданием плагина OpenVPN на другом языке. Я думаю, что хорошее решение было бы записью плагин OpenVPN в cm, этот плагин будет использовать задержанный метод для автора и звонить, код Python разделил поток или процесс. Этот код Python может сделать вещи как - обертки дб использования, пользоваться библиотекой запросов и т.д. И этот код Python не остановит обработку OpenVPN других клиентов.

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

Я могу попытаться записать этот Плагин OpenVPN Python, но прежде, чем запуститься я решил провести это исследование и спросить Вас: OpenVPN имеет некоторые методы для вызова подлинного сценария, не останавливая обработку другой сети I/O? Я хотел бы услышать, что у нас есть эта опция и никакая потребность записать такой плагин, но я действительно не смог найти что-то вроде этого.

2
задан 23 February 2015 в 21:52
2 ответа

Я создал плагин. Если вам это интересно, вы можете проверить https://github.com/greendev5/openvpn-python

P.S. Этот плагин немного бессмысленен, потому что вы можете использовать интерфейс управления OpenVPN, чтобы получать уведомления о соединениях и обрабатывать их, не блокируя основной поток OpenVPN. Может быть, кто-то подумает, что плагин проще, чем прослушивание интерфейса управления.

2
ответ дан 3 December 2019 в 11:39

Посмотри вот это. https://github.com/aborche/openvpn-plugin-python-proxy Это прокси для интерфейса плагина OpenVPN с питоном

0
ответ дан 3 December 2019 в 11:39

Теги

Похожие вопросы