Нас невозможно сбить с пути - нам пофигу куда идти.

Автонастройка (auto provision) VoIP телефонов в Астериске

Т.к. потихоньку движется проект по мегапереходу на VoIP телефонию, начал разбираться с автонастройкой телефонов. Т.к. у меня планируются все телефоны Panasonic, соответственно, разбирался под них.

Астериск умеет сам генерировать файлы автоматической конфигурации клиентов. У него есть два модуля - http и phoneprov.

http - отвечает за то, чтобы asterisk мог работать web-сервером, а phoneprov - за автоматическое создание файлов конфигурации.

Чего нормально не могу придумать, так это защиту от несанкционированного получения параметров. Вроде, есть идея прогонять через nginx с его авторизацией, но это пока в процессе размышления. Человек, по статье которого делал, пишет, что после запуска всех телефонов, оно отключал http, но я не уверен, что панасоники вспомнят автоматические настройки после перезагрузки при отсутствии сервера.
(P.S. После получения настроек - телефоны их сохраняют и сервер не требуется. Соответственно, после того как телефоны получили настройки, можно спокойно у пользователя отключать провижен.)

Для получения файлов автоконфигурации нам нужно включить оба модуля.

1. Включаем http, для этого в файле http.conf пишем:

[general]
enabled=yes
bindaddr=0.0.0.0
bindport=8088

2. Настраиваем автоматиское создание файлов конфигурации телефонов - phoneprov.conf.

0
Your rating: Нет

Подготовка звуковых файлов для Asterisk

В очередной раз потребовалось подготовить голосовые файлы для астериска, и так как долго вспоминал как делается, нарисовал скриптик, который это все автоматизирует.

  1. Сначала нормализуем файл, чтобы громкость была правильная
  2. Конвертируем файл в нужные форматы

#!/bin/sh

file=$1
file_ext=${file##*.}
file_name=${file%.*}
ffmpeg_cmd="ffmpeg -loglevel quiet -i "
edit_file=/tmp/${file_name}_$$.wav
#echo ${edit_file} ${file_ext} ${file_name}

${ffmpeg_cmd} $1 ${edit_file}
normalize ${edit_file}
mkdir out
${ffmpeg_cmd} ${edit_file} -acodec pcm_s16le -ar 8000 -ac 1 -y out/${file_name}.wav
${ffmpeg_cmd} ${edit_file} -ar 8000 -ac 1 -ab 64 -f alaw -y out/${file_name}.alaw
${ffmpeg_cmd} ${edit_file} -ar 8000 -ac 1 -ab 64 -f mulaw -y out/${file_name}.ulaw
rm ${edit_file}

Вроде работает. wink

Соответственно, запускаем sound2asterisk.sh имя_файла, после выполнения в каталоге out забираем результат.

0
Your rating: Нет

Управление внешними устройствами по USB

Давным давно была мечта - научиться управлять внешними устройствами с компьютера и желательно по сети.

Недавно нашлась клевая статья "Включение чего угодно по HTTP без заморочек c OpenWRT", где с помощью роутера TP-Link TL-MR3020, usb-хаба, запчастей от usb-клавиатуры и нескольких радио-деталюшек, прикручивается управление к разъемам переключетелей на мамке компьтера (reset, power), а так же питанием 220.

Еще найденные клевые штуки, чтобы минимально поморачиваясь сделать управление чем бы то ни было:

По своему движению с TP-LINKом, прикручиваю GSM модем. Сей час получение смс работает, нуно писать скрипты, которые будут на смс реагировать и дергать лампочками правильно.

0
Your rating: Нет

Тарифы на звонки по SIP

Что-то утомило с некоторой периодичностью вспоминать, какой оператор дает какие плюшки по сипу, решил собрать в табличку. Надеюсь что-нить толковое получится.

 

0
Your rating: Нет

Какому оператору принадлежит сотовый номер

Сайт, через который можно узнать, какому оператору принадлежит, тот или иной номер мобильного телефона - http://np.zniis.ru/.

Нуно придумать, как сделать, чтобы астериск сам выяснял и выбирал оператора для исходящей связи.

0
Your rating: Нет

ZFS и iSCSI на FreeBSD

Поигрался немного с iSCSI и добавлением iSCSI устройств в zpool. Все хорошо, все работает, но к сожалению, ровно до тех пор, пока iSCSI не отваливается.

Как только отваливается iSCSI устройство, любой процесс обратившийся к пулу вешается навеки до перезагрузки или до восстановления устройства. Система не может нормально сообщить, что устройство в дауне и zfs ожидает ответа до упора. Как выяснилось позжее, на самом деле это зависает инициатор при потери связи с сервером. И все процессы пытающиеся подключиться к /dev/daX получают хардлок. Вроде, в каких-то случаях получается снять процес iscontrol, но не всегда.

0
Your rating: Нет

прослушивание линий в Asterisk

Иногда возникает задача прослушивание телефонных разговоров. На астериске это решается достаточно просто, несколькими строками в

exten => 115001,1,Answer()
exten => 115001,n,ChanSpy(SIP/extension,q)

Где extension - канал, который нужно прослушивать. Если не указать или указать общую часть для нескольких каналов (например 10, для телефонов 101, 102, 103), то будут прослушиваться все каналы совпадающие. При этом переключаться между каналами можно с помощью #.

q - означает, не оповещать о том, что канал прослушивается.

Набор: # циклически изменяет уровень звукового сигнала.
Набор: * останавливает контроль за одним абонентом и ищет другой подходящий канал для контроля.
Набор последовательности цифр, завершенный нажатием кнопки #, создает имя канала, которое будет добавлено к параметру
(например, выполните Chanspy(Agent) и наберите 1234#, в процессе контроля, тогда вы перейдете на канал Agent/1234)

0
Your rating: Нет

Резервное копирование ZFS на меньший диск.

Как обычно, пока что-нить не сдохнет, думать не начнешь.

И по закону подлости, если дохнет, то сразу все.

Некоторое время тому назад, сервер, на котором крутится стопка сервисов, начал себя странно вести - зажигать лампочку общения с винтами и терять доступность. Лечилось перезагрузкой. При этом никаких особых жалоб он не проявлял, после старта шуршал как настоящий.

Понятно дело, что что-то с винтами, но нормально выяснить было в лом/не хватало времени/сил/желания.

Теперь беда случилась несколько раз подряд и пришлось смотреть, благо выходные, что же ему не так. Как выяснилось у одного диска образовались проблемы при обращении к его началу - он цокал и становился недоступным.

А второй просто смартом ругался:

smartd[2027]: Device: /dev/ada2, 29 Currently unreadable (pending) sectors

Что то же, нифига не радует.

Хорошо что ZFS и его зеркало, да и диски с бекапами. Мертвый диск нашел, выдернул. Возник вопрос, что делать, при условии, что второй тоже может помереть, а в запасе, винт только меньший по размеру, т.е. в зеркало его не запихнешь.

Диски шифрованные и плюс файловая система смутной структурой (делал давно, почти по пьяни и структуры в голове не было), т.е. копировать через cp как-то не оно, но при этом хочется, чтобы в случае чего, данные были доступны достаточно шустро.

Итого подцепил диск, объемом чуть больше чем данных, через geli зашифровал, создал zpool и перелил пул на запасной диск.

0
Your rating: Нет

Создание из dhcpd.leases usertab для sarg

Потребовалось тут как-нить из ip адресов получить сколь-нить осмысленные имена в Sarg. Соответственно нужно подготовить файл соответствия и по возможности не ручками.

Самое простое это из базы DHCP получить выданные IP адреса и полученные имена компьютеров. Итого имеем простенькую строчку.

cat dhcpd.leases | grep -B10 -E "host" | grep -E "lease|hostname" | xargs -n5 echo | awk '{print $2" "$5}' | sed 's/;//'

Соответственно результат запихиваем в какой-нибудь файл, а в sarg.conf usertab прописываем путь к файлу.

0
Your rating: Нет
Ленты новостей