LoginSignup
5
4

More than 5 years have passed since last update.

Asterisk と MySQL で始める迷惑電話対策

Posted at

はじめに

Web 画面のボタンを押すだけで迷惑電話をブロックできるよ!
…という目論見でやった話です。Asterisk には「BLACKLIST」という関数があるみたいですがコンソールで操作するしかない感じ1だったので「じゃあ実際にやってみっか!w」という軽いノリでやりました。
SQL 文は結構雑なのでご了承ください。
Web UI の話などは一切しません。が、PHP でゴリゴリやってるということだけポロッと口を滑らせておきます。
「こうすればイケるんじゃない?」という読み物な感じでご覧ください。

なお、

  • すでに ODBC 経由で CDR をやってる方は「Make TABLE」まで
  • 設定だけ見たいんだけどという方は「Asterisk function」まで

それぞれかっ飛ばしてご覧ください。

スペック

  • FreeBSD(10.3-RELEASE / amd64)
  • Asterisk(13.0 / by ports)
  • MySQL(5.6 / by ports)

設定

MySQL DATABASE

create_db.sql
CREATE DATABASE **使うデータベース名**;

Asterisk ODBC2

odbcinst.ini
[**ドライバ名**]
Description = ODBC for MySQL
Driver      = /usr/local/lib/libmyodbc5a.so
Setup       = /usr/local/lib/libodbcmyS.so
FileUsage   = 1
CharSet     = utf8
console
# odbcinst -q -d
[**ドライバ名**]
odbc.ini
[**DSN**]
Description = MySQL connection to 'asterisk' database
Driver      = **ドライバ名**
Database    = **使うデータベース名**
Server      = localhost
Port        = 3306
Socket      = /tmp/mysql.sock
Charset     = utf8
console
# isql -v **DSN** **DB ユーザー ID** **DB パスワード**
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> quit
# 

Make TABLE

create_table.sql
CREATE TABLE IF NOT EXISTS **使うテーブル名**(
  id int(11) NOT NULL AUTO_INCREMENT,
  number varchar(20) NOT NULL,
  ban tinyint(1) NOT NULL DEFAULT '0'
);

Asterisk function3

func_odbc.conf
[CHECKBL]
dsn      = **DSN**
readsql  = SELECT COUNT(*) FROM **使うテーブル名** WHERE ban = '1' AND number='${SQL_ESC(${ARG1})}'
synopsis = Check if a caller is in the blacklist table

Asterisk extentions example

extentions.conf
exten => 0.,n,GotoIf(${ODBC_CHECKBL(${CALLERID(num)})}?**実行するコンテキスト**,1)

参考リンク/注釈

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4