По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие
наши статьи:
В статье поговорим о борьбе со спамом в мире телефонии. Существует множество различных программ для блокировки спама на мобильных телефонах, а вот найти что-то подобное для IP-АТС и IP-телефонов – уже сложнее.
В Telegram есть специальный бот для определения спам-звонков. Бот определяет спамеров, местоположение и оператора связи. Предназначен для IP-АТС (Asterisk, FreePBX, FreeSWITCH), IP-телефонов и CRM. Если фиксируется спам-звонок, то сервис присылает уведомление в Telegram с соответствующей пометкой и названием оператора связи. API ссылка так же возвращает текст с названием оператора.
Таким образом если указать эту ссылку в Asterisk, то сообщение с пометкой спам и оператором связи отобразится в Telegram и на экране IP-телефона, а в статистике CDR всегда можно будет фильтровать выдачу по операторам связи.
Помечая звонок как “спам”, все пользователи вносят свой вклад в расширение спам-базы. Возможности сервиса:
Определение номеров по спам-базам;
Персональный спам список;
Определение страны/города;
Определение оператора связи;
Добавление комментариев к звонку.
Подключение API
Телеграм бот:
telegram.org/phone_info_bot
t.me/phone_info_bot
Альтернативная ссылка:
tele.gg/phone_info_bot
Ссылка:
http://rustyle.tmweb.ru/bots/tgbots/phone_info_bot/callerid_lookup_src/callerid_lookup.php?in_num=ВХОДЯЩИЙ_НОМЕР&dst_num=НОМЕР_НАЗНАЧЕНИЯ&user_id=ВАШ_USER_ID
Получить user ID можно обратившись к боту по одной из ссылок выше.
Подключение FreePBX
Перейдите в Web-интерфейс, в меню Admin → CallerID Lookup Sources → Add CID Lookup Source и заполните следующие поля:
В поле Source type выберите HTTP;
В поле Host укажите rustyle.tmweb.ru;
В поле Path введите bots/tgbots/phone_info_bot/callerid_lookup_src/callerid_lookup.php;
И наконец – в поле Query введите следующее: in_num=[NUMBER]&dst_num=${FROM_DID}&user_id=ВАШ_USER_ID;
В поле Query не забудьте заменить ВАШ_USER_ID. Параметры [NUMBER] и ${FROM_DID} менять не нужно - оставьте без изменений.
Далее переходим в меню Connectivity → Inbound Routes, выбираем или создаем маршрут, переходим на вкладку Other → CID Lookup Source и выбираем источник из предыдущего шага.
ВХОДЯЩИЙ_НОМЕР - Код страны и телефон. Пример: 74991234567;
НОМЕР_НАЗНАЧЕНИЯ - Код страны и телефон. Пример: 74991234567;
ВАШ_USER_ID = Выдается при запуске бота;
Готово. Есть вопрос – пиши в комментариях :)
Команда ip - это сетевой инструмент Linux для системных и сетевых администраторов. IP означает Интернет-протокол и, как следует из названия, инструмент используется для настройки сетевых интерфейсов. В старых дистрибутивах Linux использовалась команда ifconfig, которая работает аналогично. Однако ifconfig имеет ограниченный диапазон возможностей по сравнению с командой ip.
В этом руководстве мы рассмотрим все важные операции, которые команда ip может выполнять в Linux.
Как использовать команду ip
Команда ip имеет следующий синтаксис:
ip [OPTION] OBJECT {COMMAND | help}
К объектам OBJECT (или подкомандам), которые вы будете использовать чаще всего, относятся:
link (l) - используется для отображения и изменения сетевых интерфейсов
address (addr/a) - используется для отображения и изменения адресов протокола (IP, IPv6)
route (r) - используется для отображения и изменения таблицы маршрутизации
neigh (n) - используется для отображения и управления соседними объектами (таблица ARP)
Они могут использоваться как в полной, так и сокращенной форме.
Есть много других доступных объектов и команд. Чтобы увидеть полный список, введите следующую команду:
ip help
Для выполнения команд вы можете использовать либо полную, либо сокращенную формы. Например, ip link и ip l будут давать одинаковые результаты.
При настройке сетевых интерфейсов вы должны запускать команды как пользователь root или пользователь с привилегиями sudo. В противном случае вы увидите сообщение RTNETLINK answers: Operation not permitted
Предупреждение: по умолчанию система не сохраняет изменения перманентно. После перезапуска Linux-сервера вновь измененное состояние будет потеряно. Есть два способа сделать ваши настройки постоянными: добавить команды в сценарий запуска или отредактировать дистрибутивные файлы конфигурации.
Управление и отображение сетевых интерфейсов
Вы можете получить список всех параметров команды link, набрав:
ip link help
Получить информацию о сетевом интерфейсе
Чтобы увидеть информацию канального уровня обо всех доступных устройствах (у которых загружен драйвер), используйте команду:
ip link show
Пример вывода:
1: lo: mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
link/ether 12:24:01:8c:67:45 brd ff:ff:ff:ff:ff:ff
Если вы хотите, чтобы команда отображала информацию для одного конкретного устройства, введите следующее:
ip link show dev [device]
Чтобы просмотреть статистику по всем сетевым интерфейсам (такие детали, как переданные или отброшенные пакеты или даже ошибки), используйте:
ip -s link
Вы также можете увидеть аналогичную информацию для отдельного сетевого интерфейса:
ip -s link ls [interface]
Если вам нужно больше подробностей, добавьте еще -s в синтаксис:
ip -s -s link ls [interface]
Чтобы увидеть список только работающих интерфейсов, используйте:
ip link ls up
Изменить статус сетевого интерфейса
Если вы хотите включить сетевой интерфейс, используйте команду:
ip link set [interface] up
Отключите интерфейс, введя:
ip link set [interface] down
Команда ip link позволяет вам изменять очередь передачи, ускоряя или замедляя интерфейсы в соответствии с вашими потребностями и аппаратными возможностями.
ip link set txqueuelen [number] dev [interface]
Вы можете установить MTU (Maximum Transmission Unit) для улучшения производительности сети:
ip link set mtu [number] dev [interface]
Чтобы узнать все опции команды link, наберите:
ip link help
Мониторинг и управление IP-адресами
Узнайте все команды address, набрав следующее:
ip addr help
Мониторинг IP-адресов
Выведите все устройства с помощью следующей команды:
ip addr
Чтобы вывести список всех сетевых интерфейсов и связанных IP-адресов, используйте команду:
ip addr show
Пример вывода:
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 51:55:07:8a:62:44 brd ff:ff:ff:ff:ff:ff
inet 192.168.120.24/24 brd 192.168.120.255 scope global dynamic eth0
valid_lft 2900sec preferred_lft 2900sec
inet6 fe80::5054:ff:fe8c:6244/64 scope link
valid_lft forever preferred_lft forever
Вы также можете увидеть информацию об отдельной сети:
ip addr show dev [interface]
Чтобы получить список всех IPv4 адресов, используйте:
ip -4 addr
Чтобы получить список всех IPv6 адресов, используйте:
ip -6 addr
Как добавить IP-адрес в Linux
Добавьте IP-адрес в интерфейс с помощью команды:
ip addr add [ip_address] dev [interface]
Если указанный интерфейс не существует, отобразится сообщение: Cannot find device [interface]
Чтобы добавить два адреса на один интерфейс также используйте эту команду:
ip address add 192.168.1.41/24 dev eth0
ip address add 192.168.1.40/24 dev eth0
Если вам нужно добавить широковещательный (broadcast) адрес для интерфейса, используйте команду:
ip addr add brd [ip_address] dev [interface]
Чтобы удалить IP-адрес из интерфейса, выполните следующие действия.
ip addr del [ip_address] dev [interface]
Управление и отображение таблицы IP-маршрутизации
Просмотрите полный список команд ip routeс помощью следующей команды:
ip route help
Показать таблицу маршрутизации IP
Для просмотра всех записей в таблице маршрутизации используйте одну из следующих команд:
ip route
ip route list
Пример вывода:
default via 192.168.1.1 dev eth0 proto dhcp src 192.168.1.241 metric 100
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.241
192.168.1.1 dev eth0 proto dhcp scope link src 192.168.1.241 metric 100
С помощью команд, приведенных выше, выходные данные отображают все записи маршрута в ядре. Если вам нужно сузить поиск, добавьте объект SELECTOR:
ip route list SELECTOR
Чтобы просмотреть маршрутизацию для отдельной сети, используйте следующий синтаксис:
ip route list [ip_address]
Изменить таблицу IP-маршрутизации
Чтобы добавить новую запись в таблицу маршрутизации, введите команду:
ip route add [ip_address] dev [interface]
Или вы можете добавить новый маршрут через шлюз, набрав:
ip route add [ip_address] via [gateway_IP]
Также команда позволяет добавить маршрут для всех адресов через локальный шлюз, добавив параметр default:
ip route add default [ip_address] dev [device]
ip route add default [network/mask] via [gateway_IP]
Чтобы удалить существующую запись в таблице маршрутизации, используйте команды:
ip route del [ip_address]
ip route del default
ip route del [ip_address] dev [interface]
Отображение и изменение IP-записей соседей
При помощи команды ip neigh можно манипулировать таблицами ARP (Address Resolution Protocol). Это аналог команды arp
Для получения полного списка всех параметров команды neigh используйте:
ip neigh help
Отображение IP-адресов соседей
Чтобы отобразить таблицы соседей, используйте следующую команду:
ip neigh show
Выходные данные показывают MAC-адреса устройств, которые являются частью системы, и их состояние. Состояние устройства может быть:
REACHABLE - означает валидную, достижимую запись до истечения таймаута.
PERMANENT - означает постоянную запись, которую может удалить только администратор
STALE - означает действительную, но недоступную запись
DELAY - означает, что ядро все еще ожидает проверки из устаревшей записи
Изменить IP-записи соседей
Добавьте новую запись в таблицу с помощью команды:
ip neigh add [ip_address] dev [interface]
Или удалите существующую запись ARP:
ip neigh del [ip_address] dev [interface]
Сегодня подробно расскажем как найти практическое применение знаниям, полученным в статье про структуру asteriskcdrdb, а именно, как сделать ежедневные отчеты о входящих звонках на почту.
Создание скрипта
Чтобы наш .php скрипт смог подключиться к базе данных, необходимо создать пользователя, с правами, которые буду позволять ему извлекать необходимую информацию. Для этого, подключимся к нашему серверу по SSH
[root@asterisk]# mysql
mysql>CREATE USER ' user'@'localhost' IDENTIFIED BY 'P@ssw0rd';
На данном этапе мы создали пользователя user с паролем P@ssw0rd. Далее дадим ему необходимые права:
mysql> GRANT SELECT ON asteriskcdrdb.cdr TO 'user'
Создадим файл с расширением .php, в котором мы отразим подключение к нашей базе данных. Запишем эту конструкцию так:
$hostname = "localhost"; //адрес хоста. Скрипт мы будем запускать на той же машине, на которой находится БД asteriskcdrdb;
$username = "user"; //отражаем пользователя
$password = "P@ssw0rd"; //пароль для созданного нами пользователя
$dbName = "asteriskcdrdb"; //база данных, в которой хранятся необходимые нам данные
$today = date('y-m-d'); // сегодняшняя дата в формате 2016-03-25
$counter = 1; // счетчик
mysql_connect($hostname,$username,$password) OR DIE("Не могу создать соединение "); // соединиться к БД
mysql_select_db($dbName) or die(mysql_error()); //выбрать базу данных. Если произойдет ошибка - вывести ее
$headers = "; charset=windows-1251
"; //заголовок для письма
$headers .= "From: Мерион Нетворкс <info@merionet.ru>
";
$headers .= "Reply-To: info@merionet.ru
";
Предположим, что все входящие звонки приходят на номер секретаря – 100. Так же мы знаем, что при звонке из города, мы видим номер звонящего, который содержит в себе больше 3 символов (пусть у нас используется трехзначная внутренняя нумерация). Наша задача сводится к формулировке запроса к таблице cdr. Добавляем к нашему .php файлу:
$query = "SELECT `dst` , `src` , `duration` , `dstchannel` , `calldate` , `disposition` FROM `cdr` WHERE `calldate` >='$today 00:00:00' AND `calldate` <='$today 23:59:59' AND LENGTH( `src` ) >3 AND `dst` = '100';" ;
$res=mysql_query($query) or die(mysql_error()); // Выполнить запрос. Если произойдет ошибка - вывести ее.
$number = mysql_num_rows($res); // Как много нашлось строк
У нас почти все готово. Осталось только обработать данные на выходе. Для этого, нам понадобится следующая конструкция:
//формируем шапку нашей таблицы со значениями
$mes .= '
table style="max-width: 575px;border-bottom:none; margin: 0 auto;border-spacing: inherit;">
thead>
tr style="border-bottom: 2px solid #05477c;">
th style="padding:10px; color: #fff; max-width: 150px;background:#05477c;">Порядковый номер</th>
th style="padding:10px; color: #fff; max-width: 150px;background:#05477c;">Дата</th>
th style="padding:10px; color: #fff; max-width: 100px;background:#05477c;">От кого</th>
th style="padding:10px; color: #fff; max-width: 45px;background:#05477c;">Кому</th>
th style="padding:10px; color: #fff; max-width: 45px;background:#05477c;">Статус звонка</th>
/tr>
/thead>';
//перебираем значения ассоциативного массива. Число элементов данного массива равно числу строк на выходе sql запроса
while ($row=mysql_fetch_array($res)) { $mes .= '
tbody>
tr style="width: 100px;">
td style="padding:10px; border-bottom: 1px solid #eee; text-align:center;">'.$counter.'</td>
td style="padding:10px; border-bottom: 1px solid #eee; text-align:center;min-width: 100px;">'. $row['calldate'].'</td>
td style="padding:10px; border-bottom: 1px solid #eee; text-align:center;min-width: 100px;">'. $row['src'].'</td>
td style="padding:10px; border-bottom: 1px solid #eee; text-align:center;">'.$row['dst'].'</td>
td style="padding:10px; text-align:center; border-bottom: 1px solid #eee; min-width: 120px; ">'.$row['disposition'].'</td>
/tr>';
$counter = $counter + 1;
}
Теперь, мы храним в переменной $mes html таблицу, которая готова к отправке на почту. Добавим в конец скрипта:
mail("info@merionet.ru", 'Все входящие за '.$today.'', $mes, $headers);
ВАЖНО! Если вы используете кириллические символы, установите кодировку .php файла на Кириллицу (windows-1251)
Итак, готово. Давайте посмотрим что приходит нам на почту:
Работает. Давайте сделаем ежедневное задание на отработку этого скрипта через cron. Сделаем, например, ежедневно, в 17:30, когда рабочий день подходит к концу:
30 17 * * * php /home/admin/mail_report.php
Не забудьте в начала скрипта поставить открывающий тэг php, а в конце скрипта закрывающий.