Авг 29 2009

ipfw и ipacctd. Считаем трафик.

Существует достаточно готовых систем подсчета трафика, но большая часть из них черезчур навороченная для небольшого оффиса и часто не стоят того времени, которое нужно на их внедрение. Маленький биллинг легко создать самому. В принципе нам нужны 2 составляющие для учета трафика. 1-я это система сбора данных по трафику и вторая — система которая посчитает трафик.
Для сбора трафика воспользуемся файерволом, ipacctd и небольшим перловым скриптом, который будет импортировать данные по трафику в базу MySQL.
Read more »

Авг 26 2009

Качаем ролики с youtube на FreeBSD.

Так уж получилось, что почти все статьи на моем сайте о серьезных вещах. Строим свитчи, bgp, делаем IVR. Но не все ж время заниматься этими вещами. Хочется отдохнуть, посмотреть ролики с youtube и понравившиеся сохранить себе на диск. Так вот, в портах есть /usr/ports/www/youtube_dl — скрипт написанный на python для выкачивания ролика с youtube. Вот его и установим:

cd /usr/ports/www/youtube_dl
make install clean

Read more »

Авг 25 2009

Asterisk. Автоматические исходящие звонки.

Многие сталкивались со звонками от крупных компаний, когда происходит звонок и зачитывается автоматическое сообщение, рекламное или уведомление о просроченой оплате. Такую систему можно сделать на астериске с помощью внешнего скрипта.
Исходящий звонок Asterisk может выполнять при размещении специального файла в директории /var/spool/asterisk/outgoing. Файл должен выглядеть так:

Channel: SIP/prov1/8067xxxxxxx
MaxRetries: 2
RetryTime: 60
WaitTime: 30
Context: auto-dialout
Extension: 800 
Priority: 1

Read more »

Авг 23 2009

Asterisk. Интерфейс AGI. Функция GotoIf.

Asterisk Gateway Interface или сокращенно AGI — интерфейс взаимодействия с внешними скриптами. С помощью AGI можно получить информацию, которая не доступна напрямую из астериска. Вообще скрипты из Asterisk можно выполнять из функций System и через AGI. System выполняет скрипты без обратной связи, через AGI можно устанавливать переменные используемые далее в extensions.conf.
К примеру можно воспользоватся вызовом скрипта для определения типа дня недели. Подобная информация может понадлбится если вам нужно проигрывать один вид меню, а в выходные дни другой. Для определения дня недели воспользуемся таким скриптом:
Read more »

Авг 21 2009

Asterisk. Делаем простейшее голосовое меню (IVR).

Одним из основных достоинств Астериск является легкость, с которой с помощью него создаются IVR.
Для того что бы создать IVR нужно в первую очередь представить себе его структуру, то есть что за чем и как будет делаться, и составить тексты.
Сейчас мы опишем создание простейшего голосового меню, состоящего из приветствия и после приветствия, переключение на оператора. Файл в котором хранится фраза «Здравствуйте, вы позвонили в нашу компанию» называется welcome.wav и находится в директории /home/menu. Номер, который принимает звонки 444. А выглядеть меню будет так:
Read more »

Авг 19 2009

ffmpeg, подготавливаем звуковые файлы для Asterisk

Если вы хотите создать голосовое меню(IVR) с помощью Asterisk, вам понадобится подготовить файлы начиток так, что бы астериск смог их проигрывать. Сконвертировать файл в формат который понимает Asterisk можно с помощью ffmpeg. ffmpeg есть в портах, из них и установим:

cd /usr/ports/multimedia/ffmpeg
make install clean

В начале появится диалог настроек. Я обычно выставляю такие флаги:
Read more »

Авг 17 2009

Редирект портов во FreeBSD с использованием ipfw и natd.

Перенаправление портов довольно востребованно, если у вас внутри сети кто-то использует torrent, нужно пустить наружу вебсервер и т.д. и т.п. Для того, что бы реализовать это перенаправление в первую очередь нужно настроить natd. Сделать это можно двумя способами. Первый вариант — это передать нужные настройки в командной строке natd. Для этого в /etc/rc.conf делаем такие настройки:

natd_enable="YES"
natd_interface="89.252.34.107"
natd_program="/sbin/natd"
natd_flags="-redirect_port tcp 192.168.0.3:80 89.252.34.107:80"

Read more »

Авг 15 2009

Asterisk. Запись телефонных разговоров.

Запись разговоров — довольно удобная вещь. Можно всегда прослушать кто, что кому говорил. Настройка не сложная, достаточно включить в dialplan на обработку этого направления функции Monitor или MixMonitor. Отличие этих функций заключается в том, что Monitor пишет раздельно голос звонившего и голос звонящего, в разные файлы. А MixMonitor создает один файл, который содержит оба направления разговора.
В диалплане это выглядит для Monitor так:

[dial]
exten => _8.,1,Set(fname=${STRFTIME(${EPOCH},,%Y%m%d%H%M)}-${CALLERID(number)}-${EXTEN})
exten => _8.,2,Monitor(wav,/home/share/monitor/${fname},mb)
exten => _8.,3,Dial(SIP/prov1)

Read more »