alibek Опубликовано 14 февраля, 2014 · Жалоба Есть биллинговая система, включающая в себя RADIUS-сервер. Данные хранятся в СУБД Oracle. Оба сервера (и биллинг, и БД) работают под управлением RHLE (64-битной). Есть сервер, обслуживающий хотспот (управление хотспотом, DHCP, DNS, прокси и т.п.). Доступ к хотспоту должен предоставляться только тем пользователям, у которых в биллинге подключена определенная тарифная опция. Скрипт авторизации клиентов хотспота сделан на PHP. При авторизации клиента на портале хотспота нужно проверить, подключена ли у соответствующего абонента в биллинге тарифная опция. Если подключена, то авторизовать, если не подключена, то отказать в регистрации. Сервер работает под управлением FreeBSD 8.2 (64-битной). Проблема заключается в том, что для 64-разрядной FreeBSD не существует клиента Oracle. Соответственно подключиться к БД и проверить абонента нельзя. Пока что я только четыре способа нашел решить эту проблему. 1. Для FreeBSD все же существует клиент Oracle для JDBC (для работы ява-приложений). То есть можно установить ява-машину, JDBC, и в скрипте подключаться к БД через JDBC. Вариант вроде бы рабочий, но уж очень костыльный. Да и на PHP работать с JDBC не очень просто. 2. На сервере СУБД Oracle имеется DBI-Proxy. Можно написать на Perl скрипт, который будет подключаться через dbiproxy к биллинговой БД, загружать нужные данные (список абонентов с подключенной опцией) в локальную БД. А скрипт авторизации будет подключаться уже к локальной БД. У такого подхода есть и некоторые плюсы (у веб-сервера не будет связи с биллинговой БД на случай если в коде будут уязвимости), но основной минус с том, что актуальные данные будут запаздывать. Если скрипт синхронизации будет запускаться (к примеру) каждый час, значит в худшем случае абонент после подключения опции не сможет подключиться к хотспоту в течении почти часа. 3. На сервере FreeBSD установить линукслятор (или другой подобный эмулятор Linux) и использовать Oracle-клиент для Linux. Все вроде бы хорошо, но у меня так и не получилось из скрипта использовать линуксовый Oracle-клиент. То ли под эмулятором должно быть все, что использует клиент (в том числе PHP с Apache), то ли еще что, но не работает. 4. В скрипте авторизации можно проверять наличие нужной услуги у абонента не в БД, а через RADIUS-сервер. То есть я из скрипта авторизации шлю RADIUS-запрос к биллингу и в зависимости от ответа авторизовать абонента на портале или отказать в авторизации. Выглядит красиво, но насколько я понимаю, мне нужно будет эмулировать ISG, а PHP не очень подходит для написания серверов. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kaktak Опубликовано 14 февраля, 2014 · Жалоба 5. Обычный http запрос от сервера авторизации к серверу БД. На сервере БД соответственно web-сервер + реализация нужного функционала на чем угодно (например php). Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
alibek Опубликовано 14 февраля, 2014 · Жалоба На сервере СУБД нет веб-сервера, там вообще никакого постороннего ПО кроме Oracle нет. Ставить без веской причины постороннее ПО я бы не хотел. Хотелось бы решить задачу, не трогая сервера биллинга и БД. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...