CVS logs for:
Working file: cdr2rad.pl
head: 1.30
branch:
locks: strict
access list:
symbolic names:
keyword substitution: kv
total revisions: 30; selected revisions: 30
description:
date: 2007-03-08 11:49:14 +0300; author: gosha; state: Exp; lines: +24 -7; commitid: 39d045efcdeb4567;регистронезависимые алиасы и имена полей в таблице роутинга сделал
date: 2007-01-01 10:32:33 +0300; author: gosha; state: Exp; lines: +14 -9; commitid: 55924598b8e04567;шаблон MD5 теперь не зависит от параметрова random_id и no_check
от выше приведенных параметров зависит SESSION_ID
date: 2006-12-15 12:30:44 +0300; author: gosha; state: Exp; lines: +26 -22; commitid: 493d45826ae14567;в шаблон радиус пакета куски из регекспа передаются только если нет
переопределенных контейнеров
( борьба с багом при наличии start_date и START_DATE )
date: 2006-10-07 18:05:18 +0400; author: gosha; state: Exp; lines: +44 -5; commitid: 5b894527b2fb4567;Добавил параметр командной строки rebuild - просто пересборка CDR
тоесть не проверяется ни дата ни чего, в шаблон отдаются только
те поля что описаны. Изначально предполагалось испольщовать для
конфертации именованных CDR в другой формат.
Параметр smart_date не был описан в списке возможных к испольщованию
в файле конфигурации.
date: 2006-10-05 11:33:45 +0400; author: gosha; state: Exp; lines: +9 -5; commitid: 647a4524b5454567;не коректно время высчитывалось при использовании smart_date
date: 2006-10-02 13:10:53 +0400; author: gosha; state: Exp; lines: +9 -3; commitid: 8d84520d77f4567;при -debug & 8 логируются все праки времени ( и больше суток и до суток )
date: 2006-09-30 17:18:05 +0400; author: gosha; state: Exp; lines: +62 -6; commitid: 5272451e6e194567;Добавил новый параметр командной строки smart_date - определение
`разрывов` в дате, используется только при определении даты
при наличии только одной даты ( или stop_date или start_date )
и времени начала и окончания звонка.
При проверке времени используется предыдущий CDR.
В процедуру filter ( -preprocess ) первым параметром передается
обьект из cdr2rad
date: 2006-09-26 16:32:57 +0400; author: gosha; state: Exp; lines: +122 -49; commitid: 584645191a6d4567;Добавил возможность разбора в CDR записях именованных параметров
формат примерно такой SRC-NUM=12,DURATION=123
Для активации этой фичи использовтаь опцию -use_names
Парамтетры в `-f` и именованные теперь регистро-независимые
Добавил алиасы. То есть при использовании именованных параметров
возможно отсутствие необходимых для работы полей ( snum, dnum, etc )
в этом случае надо написать что то такое:
DST-NUMBER dnum, и т.д. Работают только с use_names.
Добавил новый параметр командной строки date_format_in
шаблон для разбора даты средствами POSIX::strptime
При наличии POSIX::strptime определение даты возможно
по контейнеру:
1) start_date_time + duration
2) stop_date_time + duration
3) stop_date_time + start_date_time
date: 2006-09-21 23:51:48 +0400; author: gosha; state: Exp; lines: +29 -29; commitid: 30ce4512ed0d4567;ПОменял немного формат ругани при ошибках в CDR формате
теперь сначала пишется строка CDR а потом комментарий.
Поправил текстовые сообщения для обфускатора...
date: 2006-09-21 10:50:43 +0400; author: gosha; state: Exp; lines: +20 -1; commitid: 61e6451235e94567;При разборе CDR строк `\r` на конце обрезаются
При отключенной опции no_convert и не нахождении
шаблонов конвертации номера ругаемся на некорректный CDR
date: 2006-09-18 11:55:53 +0400; author: gosha; state: Exp; lines: +14 -13; commitid: 1422450e50c54567;Добавил новый параметр командной строки date_format
формат даты в `макросах` START_TIME STOP_TIME
описание в man strftime
date: 2006-09-14 17:46:40 +0400; author: gosha; state: Exp; lines: +104 -30; commitid: dd245095a424567;Вытащил в отдельный файл правила преобразования номеров
формат примерно такой:
^12(3)$ => ${1}456
666 => 999
Добавил параметр командной строки conv_table - имя файла
с правилами преобразования номеров...
date: 2006-09-13 17:40:29 +0400; author: gosha; state: Exp; lines: +7 -7; commitid: 4fd645080a2b4567;контейнеры при разборе exe_command не корректно парсились
date: 2006-09-13 16:38:13 +0400; author: gosha; state: Exp; lines: +40 -10; commitid: 4d594507fa914567;Добавил новый параметр командной строки - exe - программа
обработчик сгенерированных данных. В строке парсятся сл
шаблоны:
# В имени внешней программы есть разбор следующих контейнеров.
#
# HOST - имя из rad_host
# PORT - имя из rad_port
# PSWD - пароль из rad_pswd
# IN_FILE - файл со сгенерированными из шаблона данными
# RESULT_FILE - файл в который кладем выхлоп программы
# CDR_FILE - имя файла с CDR который обрабатываем
#
Ну и в свете вышеизложенных новшеств exec_radclient теперь зовется
exec_handler....
date: 2006-09-13 12:06:08 +0400; author: gosha; state: Exp; lines: +119 -8; commitid: 420c4507ba974567;В файле конфигурации теперь возможны массивы ( -f )
Одно из значений start_date или stop_date может отсутствовать
Добавил параметр preprocesse - имя перлового модуля
с пакетом CDR::Filter внутри и с процедурой filter
при обработке каждой записи вызывается процедура
CDR::Filter::filter с параметром обрабатываемой строкой
. Если возвращает пустую строку то она не обрабатывается
иначе продолжаем обработку...
date: 2006-09-12 11:45:56 +0400; author: gosha; state: Exp; lines: +148 -28; commitid: 795f4506646b4567;ПОменял параметр командной строки export_ext => conv_ext;
Добавил параметр командной строки config_file - имя и путь
до файла конфигурации
Добавил параметр командной строки no_convert - не конвертировать
входящий и исходящий телефонный номер при генерации радиус
пакета
Добавил поддержку внешнего конфигурационного файла.
В exec_radclient теперь кладем на код возврата
radclient'a. Тоесть при ненулевой длине
файла ( того в котором храним выхлоп -x )
продолжаем работу.
date: 2006-09-12 00:39:33 +0400; author: gosha; state: Exp; lines: +156 -117; commitid: 6bd24505c8044567;Добавил новый параметр командной строки: md5_rpkt_re - регексп для
для поиска md5 суммы в дебаге радиус-клиента
Удалил параметр step за не актуальностью.
Заменил:
$str =~ s#\[%\s*\Q$key\E\s*%\]#$replaces{$key}#g
на:
my $val = $replaces{$key};
$str =~ s#\[%\s*\Q$key\E\s*%\]#$val#g;
в perl 5.8.1 как минимум на этом коде была утечка памяти
~40mb на 5000 записях cdr... :( и что самое интересное в
5.8.7 этого небыло...
SkipNumber сообщение пишется при debug & 1
Загруску шаблона с радиус пакетом вынес из main
в отдельную процедуру.
date: 2006-09-11 17:16:50 +0400; author: gosha; state: Exp; lines: +157 -39; commitid: 45da45055eb34567;ИД радиус пакетов при проверке результата теперь равен id % 256
Поддержку таблицы маршрутизации добавил:
примерный формат конфига:
внутренние = snum=^63;dnum=^63
исходящие = snum=^63
Добавил параметр командной строки route_table - путь
к вышеприведенному конфигу
Параметр pid_file заменил на pid - путь к директории с пид файлом
имя файла == имени_процесса.pid
В шаблон для генерации радиус пар теперь передаются также
все поля описанные в параметре `-f`
В шаблоне радиус-пар по умолчанию h323-gw-id теперь == имя_маршрута
из таблицы маршрутизации
date: 2006-09-10 13:46:19 +0400; author: gosha; state: Exp; lines: +330 -185; commitid: 2d674503dc3b4567;Удалил параметр командной строки dump
Удалил параметр командной строки sleep_time
Параметр step не обрабатывается ( генерм один большой файл )
Добавил параметр командной строки dup_ok - обрабатывать дублирующиеся cdr
записи
Добавил параметр командной строки error_ext - расширение файла с
отвергнутыми cdr записями ( примерно тоже самое что было dump )
Добавил параметр командной строки export_ext - при наличии данного
расшиирения обработанный файл переименовывается в файл с данным
расширение после успешной обработки
Изменил процедуру read_cdr на convert_cdr - сейча она генерирует
один большой файл с запросами для обработки радиус клиентом
В exec_radclient отказался от open3 ( при большом количестве
вызовов ругалось на fork error ). Сейчас запускается radclient
с параметром дебуги и входящим файлом сгенерированных пакетов.
Результат кладем в заранее определенный файл, для дальнейшей обработки
результатата.
Check_result теперь парсит debug log от radclient'a на предмет детектирования
корректности отправки пакетов серверу....
P.S. версия промежуточная не тестирована с сервером...
date: 2006-06-07 12:22:20 +0400; author: gosha; state: Exp; lines: +22 -8;Добавил новый параметр командной строки skip_num
регулярное выражение, соответствие вызываемого
номера с которым приводит к пропуску данной записи CDR
( типа префикс выхода на IP телефонию не обсчитывать )
date: 2006-06-06 16:09:27 +0400; author: gosha; state: Exp; lines: +2 -2;Не корректно описание параметра командной строки random_id
date: 2006-06-06 16:06:31 +0400; author: gosha; state: Exp; lines: +115 -41;Убрал контейнер CONF-ID из обработки шаблона радиус пакетов
При определении направления звонка добавил проверку на
направление `внутрисетевое' ( и src и dst принадлежат нашей АТС )
Расширил возможности обработки CDR: теперь дата может определяться одним из
трех способов:
duration + stop_date, stop_date_day, stop_date_mon, stop_date_year, stop_time, stop_time_hour, stop_time_min, stop_time_sec
duration + start_date, start_date_day, start_date_mon, start_date_year, start_time, start_time_hour, start_time_min, start_time_sec
stop_date, stop_date_day, stop_date_mon, stop_date_year, stop_time, stop_time_hour, stop_time_min, stop_time_sec
+
start_date, start_date_day, start_date_mon, start_date_year, start_time, start_time_hour, start_time_min, start_time_sec
date: 2006-06-06 12:22:26 +0400; author: gosha; state: Exp; lines: +17 -63;dump файл теперь не перезаписывается ( тоесть записи добавляются в конец файла )
новый параметр random_id - генерировать conf-id случайным образом
nas_ip по умолчанию равен src_ip
Откатился назад до аккаутинга звонка в 2 радиус пакета
( старт\стоп == originate == VoIP )
date: 2006-06-05 23:34:59 +0400; author: gosha; state: Exp; lines: +84 -23; commitid: 2ace448486f14567;Добавил новый параметр p_pattern - имя файла с шаблоном
запросов к радиус серверу ( если не определено то
пользуем то что описано в DATA )
1 CDR по умолчанию обрабатывается 4 запросами к радиусу...
date: 2006-06-05 18:41:35 +0400; author: gosha; state: Exp; lines: +62 -55;Параметр debug может принимать значения 1 или 2
новый параметр nas_ip
новый параметр sleep_time - время в секундах между запросами
к радиусу
корректность работы радиуса проверяется регекспом...
date: 2006-06-05 13:13:57 +0400; author: gosha; state: Exp; lines: +11 -5;изменил умолчания step до 1
удалил use File::Temp
date: 2006-06-05 12:53:10 +0400; author: gosha; state: Exp; lines: +91 -78;Добавил параметр командной строки debug
Добавил параметр командной строки no_check
не проверять ответ радиус сервера
Добавил параметр командной строки self_num
регексп для определения собственных номеров
АТС ( определять направления звонка )
Пакеты radclient'у передаются через STDIN
date: 2006-06-04 23:09:34 +0400; author: gosha; state: Exp; lines: +101 -30; commitid: 403e44832ec74567;Поменял параметр командной строки nas_ip на src_ip
Добавил праметр командной строки step
количество CDR скармливаемых за раз
radclient'у. 0 - выполнить все одним запросом
Добавил параметр командной строки dump
сбрасывать в данный файл все не обработанные
с точки зрения системы CDR записи
Добавил некторое подобие проверки
результатов запроса к радиусу
( проверяем на ответ на код возврата 5 )
В запросах к радиусу теперь отдаем вместо пары NAS-IP-Address
пары
h323-gw-id = "h323-gw-id=[% SRC_IP %]"
Cisco-AVPair = "h323-gw-address=[% SRC_IP %]"
date: 2006-06-02 15:23:01 +0400; author: gosha; state: Exp; lines: +2 -2;регексп замены нижегородских обласных не корректный был
date: 2006-06-02 15:19:52 +0400; author: gosha; state: Exp;Импорт CDR записей в IPSoft-billing
пока без проверки результатов
=============================================================================
Working file: ser-log.pl
head: 1.16
branch:
locks: strict
access list:
symbolic names:
keyword substitution: kv
total revisions: 16; selected revisions: 16
description:
date: 2006-12-07 16:41:13 +0300; author: gosha; state: Exp; lines: +4 -4; commitid: 1b7d457819f34567;поправил пути
date: 2006-10-18 14:46:57 +0400; author: gosha; state: Exp; lines: +7 -7; commitid: 632b453605fa4567;убрал eof из определения конца данных ( при чтение из пайпа не
срабатывал alarm )
date: 2006-09-16 11:06:50 +0400; author: gosha; state: Exp; lines: +59 -31; commitid: 3f4b450ba1e84567;Добавил параметр командной строки nosyslog - не пользовать
syslog для логирования сообщений
Теперь если не определено stty_opt то stty не зовем.
Можно пользовать для чтения логов не только из
ком порта. -dev '../full_path_to_pipe_file' например...
date: 2006-09-15 15:10:06 +0400; author: gosha; state: Exp; lines: +18 -1; commitid: 30a2450a89f34567;Добавил параметр командной строки file - читать логи из файла
tail'om -f
date: 2006-09-13 20:49:41 +0400; author: gosha; state: Exp; lines: +19 -6; commitid: 60d4450836474567;Добавил новый параметр date_tmpl - шаблон имени файла
от strftime
date: 2006-09-06 11:33:24 +0400; author: gosha; state: Exp; lines: +82 -44; commitid: 647344fe79174567;Пофиксил засаду с ротацией логов ( небыло ротации пока не получали новые данные... )
Добавил новый параметр командной строки notifempty - не сохранять пустые логи
Добавил обработчик сигнала SIG_PIPE
date: 2006-07-14 23:51:54 +0400; author: gosha; state: Exp; lines: +65 -4; commitid: 648d44b7f5b64567;добавил под документацию
date: 2006-06-22 17:51:35 +0400; author: gosha; state: Exp; lines: +3 -3;Не корректно инициализировались переменные filename и lasttime
date: 2006-06-22 17:41:11 +0400; author: gosha; state: Exp; lines: +33 -25;Заменил все глобальные переменные,
теперь все храним в self->{'conf'}
date: 2006-06-21 20:11:25 +0400; author: gosha; state: Exp; lines: +60 -23; commitid: 1c8444996f504567;Добавил возможность сбора CDR с удаленной машины
для этого 3 новых параметра:
r_host - удаленный хост
r_port - удаленный порт
r_proto - протокол tcp\udp
То есть если r_host не undef то собираем логи по сети иначе
из файла.
date: 2006-06-21 10:48:42 +0400; author: gosha; state: Exp; lines: +75 -57;Новый параметр командной строки - tmp - использовать или нет
временный файлы ( по умолчанию - ДА )
Добавил обработку TERM сигнала
date: 2006-06-21 00:37:49 +0400; author: gosha; state: Exp; lines: +2 -2; commitid: 38c744985c6e4567;Ошибка в используемом параметре конфигурации
при расчете периода логирования
date: 2006-06-21 00:32:16 +0400; author: gosha; state: Exp; lines: +211 -52; commitid: 37d344985ab94567;Добавил именованные параметры командной строки
( смотреть по -help )
...ну и... короче осталась только логика чтения из компорта,
все остальное переписано с некоторым закосом под ООП...
date: 2006-06-20 22:37:35 +0400; author: gosha; state: Exp; lines: +125 -49; commitid: 2bf04498400c4567;Два новых параметра коммандной строки:
3 - имя расширения создаваемых файлов
4 - режим отладки
Оформил все в виде процедур.
date: 2006-06-20 18:37:53 +0400; author: gosha; state: Exp; lines: +21 -1;Обработчик сигнала HUP добавил
date: 2006-06-20 18:14:49 +0400; author: gosha; state: Exp;Чтение CDR записей из ком-порта АТС
=============================================================================