Июн 06

Asterisk, LUA и MySQL. Черный Список.

С помощью LUA делается элементарно:

В MySQL делаем табличку blacklist:

CREATE TABLE blacklist (
  NUMBER VARCHAR(20) NOT NULL,
  expires datetime DEFAULT NULL
)

Подключаем к LUA библиотеку luaSQL и luasql.mysql для работы с базой данных

 
-- расскажем, где искать
package.cpath = package.cpath .. ";/usr/lib/i386-linux-gnu/lua/5.1/?.so" 
-- и подключем
local luasql = require "luasql.mysql"
local mysql = assert (luasql.mysql())
 
-- данные для подключения к базе MySQL
local DB_HOST = "localhost"
local DB_NAME = "db_name"
local DB_USER = "db_user"
local DB_PASSWORD = "db_passwod"
 
-- и пишем функцию проверки: 
function is_banned(cid_number)
        local con = assert (env:connect(DB_NAME,DB_USER,DB_PASSWORD))
        local cur = assert (con:execute("SELECT * FROM blacklist where '".. cid_number.."' like number and (expires>now() or expires is NULL);"))
        c = cur:numrows()
        cur:close()
        con:close()
        return c>0
end
 
 
-- а дальше и начинаем использовать:
 
extensions = {
    ["incoming"] = {
        ["DID"] = function() 
            if is_banned(channel.CALLERID["number"]:get()) then
                -- Номер в черном списке, что-то с ним делаем
                app.answer()
                app.wait(1)
                app.hangup()
            end;
        end;
    }
}

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

Июн 05

Asterisk и Lua. Очень быстрый старт

Астериск из коробки может исползовать язык программирования LUA для написания диалплана. И это прекрасно! В диалплане можно подключить любую установленную lua-библиотеку и получить доступ к базе данных (SQLite, MySQL, PostgreSQL), работать с сетью, читать-записывать файлики. Причем, делается это все довольно просто.
Зная любой язык программирования и вооружившись справочником по синтаксису LUA, а так же прочитав пару абзацев ниже можно без проблем начать использовать всю мощь этой связки.
Continue reading

Май 03

DHCP client без default GW

Чтобы dhclient получал default route только с одного интерфейса, делаем хук в
/etc/dhcp/dhclient-enter-hooks.d
такого содержания:

#!/bin/sh
INTERFACE_DEFAULT_ROUTE="eth0"
case "$reason" in
    BOUND|RENEW|REBIND|REBOOT|TIMEOUT)
    if [ ${interface} != $INTERFACE_DEFAULT_ROUTE ]; then
        unset new_routers
    fi
      ;;
esac

после чего основной шлюз будет ловиться только у интерфейса INTERFACE_DEFAULT_ROUTE
и не надо костыльно править client.conf как все советуют.

Янв 11

SPA2102 FAX

Звонки ходят отлично, уже который год. Решил доковырять факс (не пользуюсь в принципе, но ведь надо чтобы работало)
Пробую — ReceiveFax на астериске через Linksys spa2102 работает отлично, а вот обратно (SendFax) не идет.
в логах ошибок нет, есть вот такое:
NOTICE[3972]: chan_sip.c:9188 process_sdp: No compatible codecs, not accepting this offer!
Причем, на тот же Zoiper факсы отправляются.
Continue reading

Апр 22

Asterisk & Huawei E1550 (VoIP GSM Gate)


Захотелось на досуге завести VoIP — GSM шлюз, дабы экономить на звонках на сотовые и иметь возможность переключать на сотовые входящие звонки.

После прочтения интернетов выяснилось, что 100% рабочий вариант это модем Huawei E1550. Под теми же циферками продающийся операторами большой тройки. Желательно иметь модем от МТС, т.к. на нем не заблокированы голосовые функции, но после выполнения квеста по поиску в радиусе 1 км от офиса, модем нашелся только в Мегафоне, где и был куплен.

Continue reading

Апр 20

Asterisk 1.8 sip.conf: secret или remotesecret?

На voip-info.org англицким по-белому:

secret : If Asterisk is acting as a SIP Server, then this SIP client must login with this Password (A shared secret). If Asterisk is acting as a SIP client to a remote SIP server that requires SIP INVITE authentication, then this field is used to authenticate SIP INVITEs that Asterisk sends to the remote SIP server. Asterisk 1.6.2.x: Changed the secret parameter to remotesecret.

Asterisk-1.8 сообщает, что secret is deprecated. А вот skype с remotesecret не работает. А D-Link с secret не всегда работает. А правда где?

Апр 19

Asterisk 1.8 LTS на ubuntu-10.04 LTS

пришла мысля совместить два LTS и радоваться…
Делается на раз, пакеты для убунты лежат в официальном репозитории астериска:

sudo apt-get install python-software-properties
sudo apt-key adv --keyserver pgp.mit.edu --recv-keys 175E41DF
sudo add-apt-repository "deb http://packages.asterisk.org/deb `lsb_release -cs` main"
sudo add-apt-repository "deb-src http://packages.asterisk.org/deb `lsb_release -cs` main"
sudo apt-get update
sudo apt-get install asterisk-1.8 asterisk-dahdi

взято с официального сайта: https://wiki.asterisk.org/wiki/display/AST/Asterisk+Packages
внимание, репозиторий proposed не подключать! Часто ломается. А сегодня, например, не стратрует вообще.

Апр 14

Hotline

Сколько раз уже спотыкался, и сколько еще раз буду.. Ну никак нельзя прописывать собственный номер как HotLine/WarmLine… любой другой, но не собственный