Jump to content

Recommended Posts

Posted

Есть биллинговая система, включающая в себя 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 не очень подходит для написания серверов.

Posted

5. Обычный http запрос от сервера авторизации к серверу БД. На сервере БД соответственно web-сервер + реализация нужного функционала на чем угодно (например php).

Posted

На сервере СУБД нет веб-сервера, там вообще никакого постороннего ПО кроме Oracle нет.

Ставить без веской причины постороннее ПО я бы не хотел.

Хотелось бы решить задачу, не трогая сервера биллинга и БД.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.