RexxeЯ
Заметки для себя

SMS-gate своими руками

13.12.2011 . Автор: rexxer

Понадобилась отправка алертов на телефон.

Рассылку смс через почту операторы закрыли.

Самый недорогой смс-шлюз с ком-портом - около 500грн, либо искать телефон с кабелем и т.п.

Нашел в хозяйстве PCMCIA GSM-modem Sony Ericsson GC89 и переходник PCMCIA-PCI (100 + 70грн).

Вставил в имеющуюся машинку с FreeBSD 8.0, определилось как:

none1 at pci0:3:0:1:       class=0x070002 card=0x000318de chip=0x434414e4 rev=0x03 hdr=0x00
    vendor     = 'Broadcom Corporation'
    device     = 'EDGE/GPRS data and 802.11b/g combo cardbus [GC89]'
    class      = simple comms
    subclass   = UART
    bar   [10] = type I/O Port, range 32, base 0x1000, size 256, enabled

kernel: cardbus0: <simple comms, UART> at device 0.0 (no driver attached)

Порылся в инете - патчим:

add it string:
{ 0x14e4, 0x4344, 0xffff, 0, "Sony Ericsson GC89 PC Card", 0x10},
to file
sys/dev/uart/uart_bus_pci.c

пересобираем ядро: make buildkernel && make installkernel

получаем:

uart2: <16550 or compatible> port 0×1000-0×10ff irq 11 at device 0.0 on cardbus0

в девайсах появился cuau2

Проверяем отправку смс напрямую (не забыть вставить сим-карту :)):

коннектимся cu -l /dev/cuau2 -s 57600 (на скорости 115200 сыпался мусор - команды не вводились) b вводим команды:

AT+CFUN=1
AT
AT+CGREG=1
AT+CMGF=1
AT+CMGS=”+380501430001″
>test,CTRL+Z

смс прошла.

Для упрощения отправки смс поставил /usr/ports/comms/smstools3.

smsd.conf получился такой:

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

[GSM1]
device = /dev/cuau2
baudrate = 57600
#incoming = yes
pin = ignore

Для отладки можно поставить логлевел в 7, для принятия и чтения смс - incoming=yes, пробовал инициализировать модем - были ошибки - поэтому init убрал совсем.

Кроме того, при отправке смс сыпало ошибками типа:

Cannot handle /var/spool/sms/outgoing/send_WJReV3: Access denied. Check the file and directory permissions.

Для фикса правим /usr/local/bin/sendsms, там было smsd_user=”smsd”. Меняем на smsd_user=”uucp”

Пробуем отправить смс:

sendsms 380501430001 ‘Test’

Работает!

Затем я настроил запуск скрипта на отправку с другой Freebsd машины по ssh, и тут меня ждал облом - сообщение создавалось от имени запускающего обычного юзера и снова сыпались ошибки с пермишшенами. После долгих мучений, изменил скрипт sendsms - добавил chmod 666 $TMPFILE:

chmod 666 $TMPFILE

chown $owner $TMPFILE

После этого смс стасли отправляться нормально с правами обычного пользователя.

Полезные ссылки:

http://www.lissyara.su/articles/freebsd/programms/smstools_3/

http://smstools3.kekekasvi.com/

P.S.: После перезагрузки модем не втыкал - прописал инит:

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

[GSM1]
device = /dev/cuau2
baudrate = 57600
#rtscts = no
init = AT+CFUN=1
init2 = AT+CREG=1
incoming = yes
pin = ignore

Еще настроил обработку событий при получении смс - добавляется строка в конфиг:

devices = GSM1
logfile = /var/log/smsd.log
loglevel = 5
eventhandler = /usr/local/share/smstools/fwd2mail

[GSM1]
device = /dev/cuau2
baudrate = 57600
#rtscts = no
init = AT+CFUN=1
init2 = AT+CREG=1
incoming = yes
pin = ignore

Сам скрипт fwd2mail:

#!/bin/sh

if [ "$1" = "RECEIVED" ]; then
mail -s “SMS” youremail@domain.com < $2
fi

Smsd gives two or three arguments to the eventhandler. The first one is SENT, RECEIVED, FAILED, REPORT or CALL.

The second one is the SMS file filename. The third argument is the message id of the SENT message, it is only used if you sent a message successfully with status report enabled.

Следующим шагом будет управление чем-либо посредством смс.


Mikrotik + IPTV

01.12.2011 . Автор: rexxer

Знакомые подключились к УТСК Велтон-Телеком - по оптике идет инет, телефон и IPTV.

Роутер у них Mikrotik 750G. Подружил я все это так …

Для начала нужно обновить прошивку роутера. Да - у роутера самая последняя прошивка 5.9, но не такая :).

Идем на сайт микротика и скачиваем соотв-ю прошивку в zip-файле.

Там содержатся все модули. Копируем модули (явно ненужные - не надо, типа ipv6, hotspot, …) в Files на микротике.

Перегружаем роутер. В меню Routing появится пункт IGMP Proxy.

Первый порт - это WAN (Инет), второй - LAN (master), 3-5 - LAN (Slave).

В меню interfaces выбираю 5й порт, переименовываю чтобы было понятнее, в св-вах порта ставлю Master Port: none. Т.е. это у нас будет второй WAN-интерфейс.

Соединяю второй порт велтоновского “модема” с 5-ым на Микротике.

Если порт работает - будет видна “R” напротив этого интерфейса (Running).

Раздел IP - Adresses: добавляем адрес для нашего WAN2 (в инструкции сказано 169.254.1.1-254, техподдержка сказала - можно любой адрес внутренней сети).

Открываем окно терминала и вставляем следующие команды (отредактируйте под себя):

routing igmp-proxy interface add comment="Upstream" disabled="no" interface="ether1-gateway1" threshold="1" upstream="yes" alternative-subnets="0.0.0.0/0"
routing igmp-proxy interface add comment="Downstream" disabled="no" interface="ether5-IPTV" threshold="1"
routing igmp-proxy set quick-leave="yes" query-interval="00:01:00" query-response-interval="00:00:10"

Обратите внимание, без destination network не заработало.

Добавляем правила в файрволл:

ip firewall filter add chain="input" action="accept" protocol="igmp" comment="Allow IGMP"
ip firewall filter add chain="input" action="drop" in-interface="ether1-IPTV" comment="Drop input"

Собственно все, скачал клиент и все заработало.


D-Link 2100AP - автоматизация рутины

04.11.2011 . Автор: rexxer

Количество точек доступа в моем хозяйстве увеличилось до 3 шт.

Включен фильтр по МАКам.

Чтобы добавить МАК нужно зайти на каждую точку через веб-интерфейс и добавить вручную.

Дабы автоматизировать сей рутинный процесс я слепил скриптик на VBScript.

Он создает шелл и эмулирует ввод с клавиатуры.

На точке доступа должен быть открыт вход telnet.

В цикле перебираются все три точки доступа 192.168.200.31-33.

PWD = InputBox(”Enter Password”)
MAC = InputBox(”Enter MAC-address”)
For i = 1 to 3
Set oShell = WScript.CreateObject(”WScript.Shell”)
command = “telnet 192.168.200.3″ & i
oShell.Run command
WScript.Sleep 1000
oShell.SendKeys “admin” & chr(13)
WScript.Sleep 1000
oShell.SendKeys PWD & chr(13)
WScript.Sleep 1000
oShell.SendKeys “set acl allow ” & MAC & chr(13)
WScript.Sleep 1000
oShell.SendKeys “reboot” & chr(13)
Next
WScript.Echo “Done!”

Легким движением руки скрипт переделывается для удаления маков - команда: del acl <MAC>

Примерно то же самое пробовал сделать с помощью ssh, cmd и plink, но plink чего-то ожидал бесконечно после ввода команды, а при прерывании Ктрл-Ц уводил точку в ребут.

plink -v -ssh 192.168.200.31 -l admin -pw 123 -s set acl allow 11:22:33:44:55:77


D-Link DWL-2100AP - прошивка и танцы с бубном

25.10.2011 . Автор: rexxer

Попала ко мне в руки точка доступа Dlink DWL-2100AP revision A5 прошивка 2.13 с американским блоком питания на 120В - 5В 2А.

У меня был отечественный 5В 1А - 1 ампера хватило - все работает.

Далее, мне нужно было обновить прошивку до текущей 2.50eu.

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

Ладно - мы пойдем другим путем: захожу телнетом - пытаюсь обновить - ошибка.

Порылся в инете - нашел хорошую статью о переделке 2100 в 3200: http://stas.noskov.name/wi-fi/2100ap/

Я экспериментировать не стал и воспользовался данным методом для прошивки версии 2.50.

Сделал все как доктор прописал:

  • поднял фтп,
  • сконвертил 2100-v250eu.tfp в 2100.apimg,
  • зашел в инженерное меню,
  • скачал прошивку.

telnet 192.168.0.50

D-Link Access Point login: admin
Password:

Atheros Access Point Rev 3.3.0.156
D-Link Access Point wlan1 -> alpha
Password-> ******** <— sdd21234
Ok
D-Link Access Point wlan1 ->

D-Link Access Point wlan1 -> superftp 192.168.0.11
Username-> anonymous
Password-> *** <— от балды, я набрал asd
Remote File-> apimg1
Local File-> apimg1
download or upload-> download
Getting anonymous@192.168.0.11:apimg1 -> apimg1
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#######################################
done
1633178 bytes
1633178 bytes read
D-Link Access Point wlan1 ->

Внимание, скачал в файл не apimg1, а с другим именем - это была моя ошибка, перезаливаю в правильное имя - облом: Invalid file length — 1453056 bytes written, 1452032 bytes read, делаю

ls

rm apppimg1

места стало достаточно :)

Этого я не делал:

D-Link Access Point wlan1 -> delpcode
[WARNING] Deleting the Product Code File…
D-Link Access Point wlan1 -> set factorydefault

заливаю снова - success!

reboot

Через 30сек точка поднялась - я получил то что хотел :).

Все мои предыдущие настройки сохранились.