Codeigniter поиск по БД и архивам NAT логов
Доработка существующего проекта на Codeigniter.
1) Поиск по архивированным логам двух NAT серверов.
Логи NAT серверов достаточно велики, чтобы с ними была возможность организовать работу в онлайн режиме. Поэтому предлагается решение аснхронного выполнения запроса, очереди запросов и страницы состояния выполнения запросов.
1. Пользователь на странице вводит параметры запроса: src_real_ip:port, dst_real_port, интервал времени (но не более суток)
2. Запрос отправляется на сервер и записываеься в БД в таблицу запросов (например назвать requests).
3. PHP скрипт опрашивает таблицу запросов скажем раз в 1-2 минуты и при наличии нового запроса:
- по дате определяет имя нужного архивного файла, который нужно скачать из хранилища
- проверяет, нет ли такого файла локально, уже скачанного (экономим время на закачку), если нет - скачивает
- разворачивает архив в текстовый файл
- сканирует файл на параметры запроса и сохраняет их в другой файл.
- опционально данные из из предыдущего запроса могут быть залиты в таблицу результатов запросов, чтобы можно было повторно их не делать (например request_reports)
4. Страница статуса запросов показывает состояние запроса на каждом этапе (по информации из соответствующей таблицы). При готовности запроса можно перейти и посмотреть данные
т.е. можно сделать запрос и зайти за результатами позднее
2) Поиск по таблице БД.
Добавлена таблица billdata.radacct со следующей структурой
`radacctid` - уникальный идентфикатор
`acctsessionid` - идентификатор сессии
`username` - формат: имя_сети:vlan-port:mac_адресс
`group_name` - группа в виде профиля + статус
`account` - аккаунт
`mobile` номер мобильного, указанного при авторизации через смс
`nasipaddress` - ip address ISG
`nasportid` - порт ISG
`acctstarttime` - начало сеанса
`acctstoptime` - конец сеанса
`acctsessiontime` - длительность сеанса в секундах
`acctinputoctets` - байт принято от абонента
`acctoutputoctets` - байт отправлено абоненту
`calledstationid` - пусто
`callingstationid` - mac адрес
`framedipaddress` - ip адрес, выданный в сеанс
`session_start`- начало сеанса для контроля даты/времени
`session_end`- конец сеанса для контроля даты/времени
`session_last_update`- последнее обновление сеанса для контроля даты/времени
`opdata_export` - экспорт для ФСБ
Данные обновляются каждый час.