Курсы по использованию Asterisk

IP-телефония — технология будущего. Обучитесь работе с IP-АТС Asterisk для того чтобы внедрить и профессионально использовать при решении коммуникационных задач.

Работайте с Asterisk профессионально!

Многоуровневая защита IP-АТС Asterisk

Телефонные станции очень часто становятся объектами хакерских атак. Узнайте, каким образом необходимо строить многоуровневую защиту для Вашей IP-АТС.

Не оставьте хакерам шансов. Защитите свой Asterisk от атак.

Используйте Веб-Интерфейс для удобства настройки

Панель управление FreePBX позволяет легко и удобно управлять всей системой. Научитесь эффективно использовать FreePBX для решения своих задач.

Управление станцией и статистика в окне браузера.

Научитесь работать с Asterisk из консоли

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

Научитесь «тонкой» настройке Asterisk

Цель курсов - максимум практики.

Обучение нацелено на практическую работу с IP-оборудованием: платы потоков E1, VoIP-телефонные аппараты, голосовые шлюзы FXS и прочее.

Обучение на реальном оборудовании — залог успеха.

Отправка и прием SMS сообщений с помощью пакета smstools3 и GSM модема

База знаний Настройка VoIP-оборудования

В данной статье будет описан способ организации SMS-шлюза c помощью модема Huawei E1750 и пакета smstools3. Описанные шаги верны для дистрибутива CentOS 5.8.

Настройка модема

Настройка smstools3

Настройка модема

1. Для переключения устройства в режим модема, воспользуемся инструментом usb_modeswitch. Готовый RPM-пакет есть в репозитории rpmforge, скачиваем, устанавливаем:

wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el5.rf.x86_64.rpm
rpm -ivh rpmforge-release-0.5.3-1.el5.rf.x86_64.rpm
yum install usb_modeswitch

Добавляем в /etc/usb_modeswitch.conf

DefaultVendor = 0x12d1
DefaultProduct = 0x1001
MessageEndpoint = 0x01
MessageContent = "55534243000000000000000000000011060000000000000000000000000000"

Переключаем устройство в режим модема командой

usb_modeswitch -c /etc/usb_modeswitch.conf

Если usb_modeswitch отработает без ошибок, в системе должно появиться некоторое количество устройств /dev/ttyUSB*. Если этого не произошло, значит драйвер usbserial нужно загружать вручную

modprobe usbserial vendor=0x12d1 product=0x1001

Чтобы не делать этого вручную после каждой перезагрузки, нужно добавить в конфиг udev строку

SYSFS{idVendor}=="12d1", SYSFS{idProduct}=="1001", RUN+="/sbin/modprobe usbserial vendor=0x12d1 product=0x1001"

2. Устанавливаем пакет minicom, настраиваем устройство для постоянной работы в режиме модема

yum install minicom
minicom -s

В "Serial port setup" выставляем значения "Serial Device" - /dev/ttyUSB0, "Bps/Par/Bits" - 38400 8N1. Выбиваем пункт "Save setup as dfl" для сохранения настроек и подключаемся к модему. Посылаем модему команду

AT^U2DIAG=0

Это заставит устройство всегда включаться в режиме модема, не возвращаясь в режим хранилища данных. Использование usb_modeswitch более не понадобится.

Настройка smstools3

1. Скачиваем smstools3 с сайта разработчика, устанавливаем

wget http://smstools3.kekekasvi.com/packages/smstools3-3.1.15.tar.gz
cd smstools3
make install

2. Настройка smstools3

Настройки smstools3 хранятся в файле /etc/smsd.conf. Пример настроек:

devices = GSM1
logfile = /var/log/smsd.log
loglevel = 2

pidfile = /var/run/smsd/smsd.pid
infofile = /var/run/smsd/smsd.working

checkhandler = /opt/sms_to_ucs2.sh
eventhandler = /opt/sms_from_ucs2.sh

[GSM1]
device = /dev/ttyUSB0
baudrate = 115200
init = AT+CPMS="ME","ME","ME"
incoming = high

Пояснения:

  • GSM1 - произвольное имя
  • при loglevel равном 2, в лог пишется только информация о запуске/завершении программы. Для начала, лучше поставить сделать значение равным 7 и проверить лог на предмет ошибок.
  • checkhandler - в этом параметре указан путь к скрипту, который будет запускаться каждый раз при отправке сообщения. Путь к файлу сообщения передается в первом параметре, текст скрипта будет приведен ниже.
  • eventhandler - в этом параметре указан путь к скрипту, который будет запускаться каждый раз при получении сообщения. Путь к файлу сообщения передается во втором параметре, текст скрипта будет приведен ниже.
  • init - команды, которые будут отправлены модему перед получением и отправкой сообщений. Команда AT+CPMS казывает, какую память следует использовать для работы с SMS. В данном случае, для всех операций с SMS будет использоваться память модема.
  • incoming - значение high означает, что получение сообщений будет происходить с большим приоритетом, чем отправка. Если это поведение нежелательно, данный параметр указывать не нужно.

3. Скрипты для обработки отправляемых и получаемых SMS сообщений

SMS сообщения, содержащие символы кириллицы, приходят в кодировке UCS2 и отправляться должны в кодировке UCS2.
Отправка SMS:

#!/bin/bash

export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

FROM_FILE="$1"
[ ! -r "$FROM_FILE" ] && exit 1

if grep -q '[а-яА-Я]' $FROM_FILE; then
TMPFILE=$(mktemp /tmp/smsd_XXXXXX)
sed -e '/^$/ q' < "$FROM_FILE" > $TMPFILE
echo 'Alphabet: Unicode' >> $TMPFILE
sed -e '1,/^$/ d' < "$FROM_FILE" | iconv -f UTF-8 -t UNICODEBIG >> $TMPFILE
mv $TMPFILE "$FROM_FILE"
fi

Отправлять SMS можно с помощью команды sendsms (входит в пакет smstools3)

sendsms <номер> "<текст>"

Получение SMS, пересылка на почту sms@example.com

#!/bin/bash

export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

MAIL_FROM=smstools@example.com
MAIL_TO=sms@example.com
FROM_FILE="$2"
[ ! -r "$FROM_FILE" ] && exit 1
[[ ! $FROM_FILE == /var/spool/sms/incoming* ]] && exit 0

TEXT=''
CONV=''
if sed -e '/^$/ q' < "$FROM_FILE" | grep -q "^Alphabet: UCS2"; then
CONV=yes
fi

if [ ! "$CONV" ]; then
TEXT="$(sed -e '1,/^$/ d' < "$FROM_FILE")"
else
TMPFILE=$(mktemp /tmp/smsd_XXXXXX)
sed -e '/^$/ q' < "$FROM_FILE" | sed -e 's/Alphabet: UCS2/Alphabet: UTF-8/g' > $TMPFILE
TEXT="$(sed -e '1,/^$/ d' < "$FROM_FILE" | iconv -f UNICODEBIG -t UTF-8)"
echo "$TEXT" >> $TMPFILE
mv $TMPFILE "$FROM_FILE"
fi
NUM="$(grep -E '^From:' "$FROM_FILE" | sed -e 's|^From:[[:space:]]*\(.*\)|\1|')"

cat <<__eof__ sendmail="" -t="" br="">From: $MAIL_FROM
To: $MAIL_TO
Subject: Входящее SMS сообщение с номера $NUM
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit

$TEXT
__EOF__

linux sms smstools smstools3 sendsms