Мы — долго запрягаем, быстро ездим, и сильно тормозим.

FreeBSD
  настройка
  подсчёт трафика
  программы
  frox
  SARG
  samba & ClamAV
  named
  proftpd
  cacti
  SAMBA+AD+NT ACL
  MySQL
  hylafax
  DDNS+DHCP
  cvsupd
  Samba как PDC
  Основы LDAP
  LDAP+SSL
  LDAP auth
  knockd
  rsync
  MRTG
  Rejik
  Jabber - OpenFire
  Samba(PDC) + Ldap
  squid+AD
  ATSlog
  vsftpd
  LDAP: samba, dns, dhcp
  Free-SA
  cups-samba на samba+AD
  irc + services
  Nagios - мониторинг сети
  TeamSpeak
  icecast2
  verlihub (p2p)
  Icecast2 + Darkice
  OOPS
  vsftpd + mysql
  Amanda
  HAVP
  Рыбалка на FreeBSD
  DNS сервер NSD
  DNS сервер Unbound
  mpd5, msmtp, dynamic ip
  ProFTPd + LDAP
  OpenVPN + LDAP
  Samba (PDC+BDC)
  BIND & AD
  ProFTP+PgSQL
  POWERDNS
  3proxy
  eGroupWare
  GLPI
  SugarForge CRM
  Bacula
  Mysql - базовое описание
  Asterisk IP PBX
  Samba & CUPS & AD & ACL
  SMSTools 3
  Samba+ NT ACL
  phpmyadmin
  1С:Предприятие 8.1
  PurefFTPd
  qemu network
  AimSniff
  comms/scmxx
  Zoneminder
  Openfire Jabber Server
  Zoneminder 2
  Принт-Сервер Samba+LPD & AD
  Кластер OpenLDAP 2.4
  Lightsquid
  Установка Zabbix-1.6
  Установка net2ftp
  VSFTPD + AD && MySQL
  Network UPS Tools
  mpd5 L2TP client
  Apache 2.2 as a proxy
  ejabberd+mysql+icq
  HotSpot
  Установка и использование Zenoss на FreeBSD 7.2
  mysql-proxy
  DNS zones
  squid+sams+sqstat
  transmission-daemon
  Squid+AD (group access)
  named 9.7.0
  SysAid Server
  MySQL Master+Master
  proftpd file auth&quota
  usb_modeswitch
  NSDadmin
  iperf Тест скорости между хостами
  почтовые системы
  Шелезяки
  Мелочи
  Файловая система
  WWW
  Security
  system
  Games Servers
  X11
  Programming
Очумелые Ручки
OpenBSD
Cisco
www.lissyara.su —> статьи —> FreeBSD —> программы —> SMSTools 3

SMSTools 3 - шлюз для отправки SMS

Автор: lexy.


xxx: мой телефон крякнул :-(
xxx: все. я теперь не мобильная. сссукаааааааа . ну не прет так сразу во всем ]:->
yyy: че с ним? ))
xxx: он уже не жилец((((. у него белый свет ....в конце тунеля
xxx: экран белым светиться ..ни че не вижу...
yyy: знач будешь ходить со старым сименсом :-P
xxx: откуда у меня появится старый сименс?
yyy: у всех есть старые сименсы :-D
Цитата #400329 bash.org.ru


Нет, мы, как раз, немобильными не останемся, именно потому, что у нас есть «старый сименс»!
Постановка задачи: есть база партнеров по бизнесу, которых нужно уведомлять о состоянии их счета независимо от менеджеров, которые с ними работают. Переговоры с сотовыми операторами по поводу SMS-гейтов зашли в тупик в виду неадекватного ценника, неповоротливости (срок исполнения ведь обычно - «уже вчера должно работать») или сложности реализации, поэтому
имеем:

  • старый Siemens M75;
  • родной (семёновский) дата-кабель DCA-510 к нему;
  • машинку с правильной осью (FreeBSD 7.0)

    НАДО: создать автоматизированную систему рассылки SMS

    Детали полной реализации я выкладывать не буду, т.к. задача весьма специфическая, но рассмотрю все основные моменты отправки SMS.

    В портах нашел вот что:
    Port:   smstools-3.1.3
    Path:   /usr/ports/comms/smstools3
    Info:   SMS Gateway software for GSM modems and mobile phones
    Maint:  mm@FreeBSD.org
    WWW:    http://smstools3.kekekasvi.com
    

    sudo make -C /usr/ports/comms/smstools3 install clean
    

    Теперь цепляем телефон. Как я понял, проблем при подключении датакабеля через обычный comm-port не возникает, но в данной ситуации кабель USB. Чип используется  PL2303, в FreeBSD поддерживается. Проверяем:
     ~> kldstat -v | grep 'u[pl]*com'
    

    если не видим чего-то подобного:
    212 ucom
    223 uhub/uplcom

    берем бубен и собираем ядро, добавив в конфигурацию следующиме опции:
    device          ucom
    device          uplcom
    

    как это сделать очень хорошо расписано здесь: http://www.lissyara.su/?id=1072, поэтому, повторятся не буду (а можно и отдельно модули собрать, но это тема другой статьи).
    ВНИМАНИЕ! Без установленных модулей кабель тоже будет определятся как /dev/ugenX, но работать не будет.
    Если все модули на месте — подключаем кабель и смотрим:
    ~> ls -lah /dev/cuaU*
    crw-rw---- 1 uucp dialer 0, 69 28 окт 15:01 /dev/cuaU0
    crw-rw---- 1 uucp dialer 0, 70 24 окт 10:27 /dev/cuaU0.init
    crw-rw---- 1 uucp dialer 0, 71 24 окт 10:27 /dev/cuaU0.lock

    Кабель увидели, можно подключать телефон и приступать к настройке SMS-шлюза.
    Так как по умолчанию smsd стартует от рута, а это не тру, создаем пользователя:
    ~# pw groupadd smsd -g 151
    ~# pw  useradd -n smsd -u 151 -c 'SMS Gate worker' -g smsd \
    ? -G uucp,dialer -w no -s /sbin/nologin -d /nonexistent
    

    теперь настраиваем SMS Tools, файл /usr/local/etc/smsd.conf

    # структура файла такая:
    # глобальные настройки
    # ...
    # ...
    # [ модем 1 ]
    # ...
    # [ модем 2 ]
    # ...
    # [ модем 3 ]
    # ...
    
    # используемые устройства, если несколько — пишем через запятую
    devices = GSM0
    # лог, если не указан — пишется в syslog, если = 1, пишет в stdout
    logfile = /var/log/smsd.log
    # писать фсё
    loglevel = 7
    
    # No comments, я надеюсь ;-)
    USER = smsd
    GROUP = dialer
    
    # No comments too , главное — не забыть создать
    # /var/run/smsd/ и дать все права юзеру smsd
    PIDFILE= /var/run/smsd/smsd.pid
    INFOFILE= /var/run/smsd/smsd.working
    
    # Теперь настраиваем все телефоны, ГСМ-момеды и пр. шелезяки
    # Siemens M75
    [GSM0]
    # порт
    device = /dev/cuaU0
    # скорость в нем
    baudrate = 115200
    # аппаратное управление потоком
    rtscts = no
    # строка инициализации (взял с сайта программы), 
    # подробная справка по командам в приложениях
    init = AT+CPMS="ME","ME","ME"
    init2 = AT+CNMI=1,1,0,2
    # приоритет входящих сообщений
    incoming = high
    # хотим отчет о доставке
    report = yes
    # задержка перед отправкой
    send_delay = 20
    

    По минимуму достаточно, уже будет работать.
    Еще пару движений:
    в /usr/local/etc/rc.d/smsd
    pidfile=/var/run/smsd.pid
    

    меняем на
    pidfile=/var/run/smsd/smsd.pid
    

    ~# echo smsd_enable=»YES» >> /etc/rc.conf
    ~# /usr/local/etc/rc.d/smsd start
    

    смотрим

    ~> ps ax | grep smsd
    16711 ?? Ss 0:00,00 /usr/local/bin/smsd
    16712 ?? S 0:00,01 /usr/local/bin/smsd

    ~> tail -f /var/log/smsd.log
    Oct 28 16:39:40 smsgate smsd: Smsd v3.1.3 started.
    Oct 28 16:39:40 smsgate smsd: Running as smsd:dialer.
    Oct 28 16:39:40 smsgate smsd: File mode creation mask: 022 (0644, rw-r--r--).
    Oct 28 16:39:40 smsgate smsd: Outgoing file checker has started. PID: 16711.
    Oct 28 16:39:40 smsgate GSM0: GSM0: Modem handler 0 has started. PID: 16712.
    Oct 28 16:39:40 smsgate GSM0: GSM0: Checking device for incoming SMS
    Oct 28 16:39:40 smsgate GSM0: GSM0: Checking if modem is ready
    Oct 28 16:39:40 smsgate GSM0: GSM0: -> AT^M
    Oct 28 16:39:40 smsgate GSM0: GSM0: Command is sent, waiting for the answer
    Oct 28 16:39:40 smsgate GSM0: GSM0: <- OK
    Oct 28 16:39:40 smsgate GSM0: GSM0: Pre-initializing modem

    Все завелось, комментируем в конфиге 'logfile', ставим loglevel = 5, в /etc/syslog.conf добавляем:
    !+smsd,GSM0
    *.*                                             /var/log/smsd.log
    

    (если надо, после GSM0 через запятую перечисляем все названия модемов из smsd.conf)
    в /etc/newsyslog.conf добавляем:
    /var/log/smsd.log       smsd:dialer     644  7     100  *     JC
    

    Теперь самое вкусное — отправлять эсэмэски.
    Ничего сложного, процесс отправки похож на процесс печати, в /var/spool/sms/ есть три каталога:
    checked, incoming, outgoing. В каталог  outgoing кидаются файлы для отправки, по формату очень похожие на MIME: сначала заголовки, потом, через пустую строку, тело сообщения. Подробнее формат опишу ниже. В пакет входит утилита sendsms, надо добавить пользователя, от которого будут отправлятся sms в группу smsd. Затем пробуем:

    sendsms 79xxxxxxxxx 'Hello! How are You?'
    

    (обратите внимание, номера вводятся в международном формате но без знака «+»)
    И, о Чудо!, через несколько секунд придет желанная SMS. Но мы рано радуемся. Вавилон нас ждет! А точнее — отправка SMS кириллицей. Привычно берем бубен, напильник, и допиливаем "до придания нужной формы". SMSTools умеет обрабатывать события при помощи внешних программ, используем эту возможность и нарисуем скрипт проверки сообщения перед отправкой (за прототип был взят unicode2sms, все скрипты пакета можно найти в /usr/local/share/smstools):
    #!/bin/sh
    
    # checkhandler for SMS Tools 3
    # autoconverts cyrillic messages to UCS-2BE
    # add checkhandler=/path/to/ucsautoconvert into global part of smsd.conf
    # written by lexy (lexy@mrlexy.ru), 2008
    
    FILE=`mktemp /tmp/smsd_XXXXXX`
    
    if [ ! `grep '[А-Яа-я]' $1 > /dev/null` -o `grep 'Alphabet:\s*U' $1 > /dev/null` ]
        then exit 0
    fi
    
    cat $1 | awk '{if(NF==0) {s=1} if(s==0 && NF>0 && $0!~/Alphabet:[ \t]*U/){print}}' > $FILE
    echo Alphabet: Unicode >> $FILE
    cat $1 | awk '{if(NF==0) {s=1} if(s==1){print}}' | iconv -t UCS-2BE >> $FILE
    
    mv $FILE $1
    chmod 664 $1
    

    добавляем в smsd.conf, в основную часть (до описания модемов):
    checkhandler=/path/to/ucsautoconvert
    

    перезапускаем smsd:
    #~ /usr/local/etc/rc.d/smsd restart
    

    пробуем: sendsms 79xxxxxxxxx 'Привет! Мы победили Вавилон ?'
    ждем...ждем... телефончик — Плюмммм!!! Смотрим... Аллилуя!



    Кроме того можно добавить поддержку обработки и других событий (SENT, RECEIVED, FAILED, REPORT, CALL), белый и черный список.
    За это отвечают параметры конфигурации:
    eventhandler = /path/to/handler
    whitelist = /path/to/list
    blacklist = /path/to/list
    

    Т.к. гейт не публичный, то чернобелые списки я использовать не стал, а вот обработчик событий написал. Вы можете его найти в приложениях. Это perl-скрипт, достаточно откоменнтированный, чтоб подогнать его под свои нужды.

    Теперь вкратце про формат файла сообщений, более полный вольный и сокращенный перевод документации можно найти в приложениях.

    Текстовые сообщения

    Файл SMS-сообщения похож на файл электронной почты: текстовый файл состоящий из заголовков и содержимого сообщения после пустой строки.
    Простой пример:

    To: 491721234567
    
    Hello, this is the sms.
    



    Номер указывается в международном формате но без знака «+». Если необходимо отправить сообщение на короткий номер, то перед номером нужно указать "s".
    Расширеный пример:

    To: 491721234567
    Flash: yes
    Alphabet: ISO
    
    Hello Stefan, how are you?
    



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

    X-Db-Id: 777888
    

    После отправки файл сообщения сохранится в папке отправленных с этим заголовком.

    Приложения

    Подробное описание многих заголовков можно найти в этом приложении:
    Формат файла SMS сообщения
    файл скачан размер размещён примечание
    SMSTools3_appx1.pdf
    1265 130.9kb 2008-11-10 Формат файла SMS сообщения

    Скрипт обработки событий и автоматической перекодировки сообщений в кирилице здесь:
    Обработчики событий для SMSTools
    файл скачан размер размещён примечание
    smstools-events.zip
    1213 2.1kb 2008-11-07 Обработчики событий для SMSTools

    Справочную информацию по AT-командам для работы с GSM-устройствами можно найти на FTP этого сайта



    Ссылка на обсуждение: http://forum.lissyara.su/viewtopic.php?t=12237.

    размещено: 2008-11-10,
    последнее обновление: 2009-01-23,
    автор: lexy

    оценить статью:





  • Хостинг HOST-FOOD

    2010-08-25, manefesto
    freebsd lvm

    Использование linux_lvm для работы с LVM разделами из-под FreeBSD. Проблемы которые возники при монтирование lvm раздела
    2010-04-30, gonzo111
    proftpd file auth&quota

    Proftpd - квоты и авторизация из файлов, без использования базы данных и/или системных пользователей
    2010-04-22, lissyara
    tw_cli

    Пошаговая инструкция по восстановлению RAID на контроллере 3ware, из которого выпал один диск. Настройка мониторинга состояния рейда и отчётов о его состоянии на email.
    2010-04-14, fox
    MySQL Master+Master

    MySQL (Master Master) and (Master Slave) Как настроить репликацию…
    2010-03-22, Mufanu
    named 9.7.0

    Система доменных имен (Domain Name Service, DNS) - одна из тех незаметных, закулисных программ, которым не уделяется и половины того внимания, которого они заслуживают.
    2010-03-09, terminus
    DNS zones

    Краткий ликбез про управление DNS зонами. Примеры проведения делегирования прямых и обратных DNS зон.
    2010-03-09, aspera
    Squid+AD (group access)

    Настройка прокси сервера SQUID с автроризацией пользователей в AD. Разделение пользователей на группы
    2010-03-02, BlackCat
    Шлюз: Часть 4

    Настройка дополнительных сервисов: синхронизация времени (OpenNTPD), клиент DynDNS.org.
    2010-03-01, BlackCat
    Шлюз: Часть 3

    Настройка DHCP и DNS серверов для работы внутри частной сети, c поддержкой внутренних (частных зон) DNS, а так же интеграция DHCP и DNS сервисов.
    2010-03-01, BlackCat
    Шлюз: Часть 2

    Конфигурация МСЭ pf для проброса портов с изменением порта назначения и без, а так же поддержки активного режима FTP и ограничения максимального размера сегмента
    2010-03-01, BlackCat
    Шлюз: Часть 1

    Быстрая настройка шлюза/маршрутизатора с установлением PPPoE-соединения, поддержкой NAT и DNS-forwarding.
    2010-02-23, Morty
    darkstat

    Простая считалка траффика, со встроенным веб-сервером. Очень маленькая, может делать отчеты трафика по хостам, портам, протоколам, а также строить графики
    2010-01-23, gonzo111
    squid+sams+sqstat

    Пилим squid и sams - примеры конфигов с объяснениями. Установка SqStat.
    2009-12-19, schizoid
    mpd5 + radius + ng_car + Abills

    Настройка pppoe-сервера с биллинговой системой Abills и шейпером ng_car
    2009-11-16, lissyara
    UFS->ZFS

    Удалённая миграция с UFS на ZFS. Загрузка с раздела zfs. Настройка для работы с малым количеством памяти под архитектурой i386.
    2009-11-13, gx_ua
    fusefs-ntfs

    Установка, настройка и использование fusefs-ntfs, драйвер NTFS, предназанченного для монтирования NTFS разделов под FreeBSD
    2009-11-12, Morty
    LiveCD

    Создание собственного LiveCD с необходимыми вам изменениями, автоматизирование данного процесса, а так же вариант скоростной сборки СД.
    2009-09-27, lissyara
    Samba как PDC

    Контроллер домена - аналог M$ NT4 домена под самбой, без использования LDAP и прочей хиромантии. Просто и быстро =)
    2009-08-30, terminus
    Подробное руководство по ipfw nat

    Подробное руководство по ipfw nat, сложные случаи конфигурации.
    2009-08-24, levantuev
    HotSpot

    Установка Hotspot системы в общественное заведение.
    2009-08-18, lissyara
    diskless

    Создание бездисковых терминалов под управлением FreeBSD - с загрузкой по сети. Используются для старта rdesktop и подключения к виндовому серверу терминалов.
    2009-07-29, BAV_Lug
    Видеонаблюдение

    Настройка бюджетного варианта видеонаблюдения на удаленном объекте
    2009-07-22, Cancer
    OpenLDAP адресная книга

    Настройка и создание адресной книги на базе OpenLDAP + phpLDAPadmin
    2009-06-30, SergeySL
    AimSniff

    Руководство по созданию системы мониторинга ICQ-переписки на базе AimSniff, использующей базу данных MySQL для хранения и Web-интерфейс WAS (Web Aim Sniff) для просмотра перехваченных сообщений
    2009-06-25, atrium
    Управление правами доступа

    Полномочия пользователей и файлов, принадлежащих им, формирует концепцию ОС UNIX.
    2009-06-16, DNK
    Exim+PgSQL

    Установка почтовой системы exim+pgsql на FreeBSD 7.1
    2009-05-30, mvalery
    HDD(mbr) -> HDD(gpt)

    Как разбить диск размером более 2TB на разделы, сделать загрузочным, а затем перенести на него информацию с рабочей системы — донора.
    2009-05-22, Cancer
    SendXMPP

    Отправка сообщений на Джаббер сервер по средствам SendXMPP
    2009-05-11, Raven2000
    Network UPS Tools

    Network UPS Tools представляет собой набор программ, которые обеспечивают общий интерфейс для мониторинга и администрирование UPS оборудования.
    подписка

        вверх      
    Статистика сайта
    Сейчас на сайте находится: 57 чел.
    За последние 30 мин было: 232 человек
    За сегодня было
    15865 показов,
    1784 уникальных IP
     

      Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
      Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

    © lissyara 2006-10-24 08:47 MSK

    Время генерации страницы 0.1314 секунд
    Из них PHP: 59%; SQL: 41%; Число SQL-запросов: 80 шт.
    Исходный размер: 181292; Сжатая: 31950