Тут своял пару билингов небольших, может кому сгодится.
У меня работает в паре с ipcad-ом. Статистику ложит в MySQL.
http://fagot.110mb.com/bi/
>Тут своял пару билингов небольших, может кому сгодится.
>У меня работает в паре с ipcad-ом. Статистику ложит в MySQL.
>http://fagot.110mb.com/bi/Симпатично. Только комментариев не хватает в исходниках.
Не всегда понятно, что там программа делает.
Как насчёт PostgreSQL ?
>Симпатично. Только комментариев не хватает в исходниках.
>Не всегда понятно, что там программа делает.
>Как насчёт PostgreSQL ?Коментарии добавлю, не проблема.
А вот с PosgreSQL я не особо дружу.
Хотя можно и дописать там это савсем несложно делается.
Просто взять за основу mysql.c
так что если есть желание!
Для bi-0.1 написал комментарии.
Вечером сваяю статейку как для всего этого дела Linux настраивался!
(Обещаю неупоминать слова ./configure и ./make !)
>Для bi-0.1 написал комментарии.
>Вечером сваяю статейку как для всего этого дела Linux настраивался!
>(Обещаю неупоминать слова ./configure и ./make !)Ткнулся в первый попавшийся файл:
1. char srcIP[15] - а надо 16. Под завершающий ноль место уже не модно выделять?
2. хранить и сравнивать IP в строках. Ну-ну. А чем in_addr_t (или int на худой конец) не устраивает? А кто-то хотел сэкономить на портах=)
3. configure, configure, configure - повторять пока не наступить счастье.Дальше специально не смотрел =)
И вообще, возьмите исходники опенсорсных пакетов (не один, а несколько) посмотрите как люди пишут, почитайте опенсорсные доки и стандарты. И будет счастье, т.к. не надо будет писать всякие извинения типа:
"З.Ы.1. Прошу ошибки считать за улыбки!
З.Ы.2. Выпады типа зачем всё это надо Free-форева непринимается.
Писалось для себя. Да и так время свободное занять!"Стремитесь к лучшему.
>Ткнулся в первый попавшийся файл:
>1. char srcIP[15] - а надо 16. Под завершающий ноль место уже
>не модно выделять?
Исправлю не долго. Хотя проверял всё нормально без глюков выводит и при 15.
>2. хранить и сравнивать IP в строках. Ну-ну. А чем in_addr_t (или
>int на худой конец) не устраивает? А кто-то хотел сэкономить на
>портах=)
:-) Хорошая память! Это тоже можно испраить тока у меня глюк был,
изначально я и пытался сделать чтоб как int хранилось.
Получал адрес 335548844
Делаю в MySQL: select inet_ntoa(335548844); Результат: 20.0.17.172
Делаю на Си: inet_ntoa(335548844); Результат нормальный: 172.17.0.20
Не знаю в чём косяк.
>3. configure, configure, configure - повторять пока не наступить счастье.
Счастье так хрупко!
>
>Дальше специально не смотрел =)
>
>И вообще, возьмите исходники опенсорсных пакетов (не один, а несколько) посмотрите как
>люди пишут, почитайте опенсорсные доки и стандарты. И будет счастье, т.к.
>не надо будет писать всякие извинения типа:
>"З.Ы.1. Прошу ошибки считать за улыбки!
>З.Ы.2. Выпады типа зачем всё это надо Free-форева непринимается.
> Писалось для себя. Да и
>так время свободное занять!"
>
>Стремитесь к лучшему.
Буду стараться! Спасибо!
>>Ткнулся в первый попавшийся файл:
>>1. char srcIP[15] - а надо 16. Под завершающий ноль место уже
>>не модно выделять?
>Исправлю не долго. Хотя проверял всё нормально без глюков выводит и при
>15.
Проверяй чительней:
192.168.21.134 еще жив (14 байт значимых) :)
192.168.212.134 уже мертв (все 15 байт значимых) :)>>2. хранить и сравнивать IP в строках. Ну-ну. А чем in_addr_t (или
>>int на худой конец) не устраивает? А кто-то хотел сэкономить на
>>портах=)
>:-) Хорошая память!
Птица говорун отличается умом и сообразительностью <c> Говорун. :)> Это тоже можно испраить тока у меня глюк был,
>изначально я и пытался сделать чтоб как int хранилось.
>Получал адрес 335548844
>Делаю в MySQL: select inet_ntoa(335548844); Результат: 20.0.17.172
>Делаю на Си: inet_ntoa(335548844); Результат нормальный: 172.17.0.20
>Не знаю в чём косяк.
А я знаю :) В сетевом порядке байт. А делать в мускуле подобные преобразования не надо.
Достаточно Си-ных, все равно проверку делать на корректность нуна ;)
Курить сетевое программирование Стивенса, рфс-ки всякие тож.
>> Это тоже можно испраить тока у меня глюк был,
>>изначально я и пытался сделать чтоб как int хранилось.
>>Получал адрес 335548844
>>Делаю в MySQL: select inet_ntoa(335548844); Результат: 20.0.17.172
>>Делаю на Си: inet_ntoa(335548844); Результат нормальный: 172.17.0.20
>>Не знаю в чём косяк.
>А я знаю :) В сетевом порядке байт. А делать в мускуле
>подобные преобразования не надо.
>Достаточно Си-ных, все равно проверку делать на корректность нуна ;)
>Курить сетевое программирование Стивенса, рфс-ки всякие тож.Убадал этот глюк, щас усё нормально. Буду переделывать структуру БД.
(Будут храниться айпишники как int(10) )А может сбор статистики по трафику завязать на имя пользователя?
Т.е. будет ложиться в бд:
UserName InternetIP Port Bytes [?Cost-типа скока в рублях получилось?]
???
Тогда можно не привязывать пользователя к конкретному IP,
а просто отслеживать это на момент обсчёта???
>Первой попыткой был скрипт на sh.
>Второй попыткой стал скриптик на perl.
>Ну это собственно третья попытка на писано на Си.
Как на счет первых двух попытом, интерено просто посматреть реализацию
>>Первой попыткой был скрипт на sh.
>>Второй попыткой стал скриптик на perl.
>>Ну это собственно третья попытка на писано на Си.
>Как на счет первых двух попытом, интерено просто посматреть реализациюЯ их удалил. Просто посмотрел на скоростные результаты, ну и удалил.
На баше просто циклом обрабатывается отет от rsh и даные пихаются в БД путём вызова mysql -uuser -ppass bdname --exec="insert update etc..."В перле аналогичный перебор ответа от rsh, но в БД данные пихал через DBI.
>Тут своял пару билингов небольших, может кому сгодится.
>У меня работает в паре с ipcad-ом. Статистику ложит в MySQL.
>http://fagot.110mb.com/bi/не открывается этот сайт:
The page you're accessing no longer exists.
>>Тут своял пару билингов небольших, может кому сгодится.
>>У меня работает в паре с ipcad-ом. Статистику ложит в MySQL.
>>http://fagot.110mb.com/bi/
>
>не открывается этот сайт:
>The page you're accessing no longer exists.Грохнул я его за непотребностью.
Сейчас новую версию ваяю. Пока не плохо получается.
Потом как-нить выложу если надо.