SCROLL

Статьи в категории «Linux»

Столкнулся с таким вопросом — как удалить пакет собранный из исходников и установленный make install.

Для памятки оставлю для метода как это сделать, все ниже действия производится на Debian 10 (более чем уверен что все описанное ниже будет применимо для всех deb-like Linux систем).

Для памятки опишу как установить модуль chan_sccp в FreePBX на базе Asterisk 18.

Описывать конфиги и настройку не буду (по крайней мере на момент написания статьи), вся исчерпывающая информация тут — https://github.com/chan-sccp

 

Устанавливаем необходимые для успешной сборки пакеты и скачиваем chan_sccp:

apt-get install git build-essential make install-headers -y

cd /opt/
git clone https://github.com/chan-sccp/chan-sccp.git chan-sccp
cd /opt/chan-sccp

Посмотрим какая версия Asterisk установлена, чтобы для нее сконфигурировать chan_sccp:

asterisk -rx "core show version"

Конфигурируем, компилируем и устанавливаем:

./configure --with-asterisk-version=18.7
make
make install

 

После установки обязательно отключаем модуль chan_skinny.so и включаем chan_sccp.so в GUI FreePBX в модули Asterisk.

Для памятки себе оставлю, как установить\обновить версии PHP 8.3, 8.2, 8.1, 8.0 / 7.4, 7.3, 7.2, 7.1 на Debian 12/11/10 (более чем уверен что все описанное ниже будет применимо для всех deb-like Linux систем).

При использовании Linux и необходимости подключения к сервису Exchange Online через PowerShell, то это можно легко сделать, рассмотрим ниже как это сделать.

Imapsync — инструмент командной строки, который позволяет инкрементную и рекурсивную передачу данных IMAP из одного почтового ящика в другой, где бы они ни находились в интернете или в локальной сети.

MSMTP — это SMTP-клиент, который позволяет различным скриптам и приложениям на PHP, Python и т. п. использовать отправку почты посредством стороннего сервера. 

Greenbone — это программное обеспечение для сканирования уязвимостей и управления ими с открытым исходным кодом. Оно предоставляет набор тестов на сетевую уязвимость для поиска лазеек безопасности в системах и приложениях.

[stextbox id=’info’]ИНФОРМАЦИЯ. Немного актуализировал статью под новую версию Debian, чтобы установка из статьи проходила в режиме copy-paste без ошибок.[/stextbox]

Рассмотрим как установить FreePBX 14 в связке с Asterisk 18 на Debian 10 Buster.

 

Подготовка системы

Перед началом установки обновляем систему до актуального состояния:

apt-get update && apt-get upgrade -y

Устанавливаем необходимые зависимости:

apt-get install build-essential linux-headers-`uname -r` apt-transport-https bison flex curl sox libncurses5-dev libssl-dev mpg123 libxml2-dev libnewt-dev sqlite3 libsqlite3-dev pkg-config automake libtool autoconf git unixodbc-dev uuid uuid-dev libasound2-dev libogg-dev libvorbis-dev libicu-dev libcurl4-openssl-dev libical-dev libneon27-dev libspandsp-dev subversion libtool-bin python-dev unixodbc dirmngr sudo apache2 mariadb-server mariadb-client default-libmysqlclient-dev -y

[stextbox id=’alert’]ВНИМАНИЕ. Обязательно перезагружаем систему и после этого продолжаем установку.[/stextbox]

 

Устанавливаем PHP версии 5.6 (для корректной работы FreePBX fwconsole):

curl https://packages.sury.org/php/apt.gpg | apt-key add -
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/deb.sury.org.list
apt-get update && apt-get install php5.6 php5.6-curl php5.6-cli php5.6-mysql php5.6-mbstring php5.6-gd php5.6-xml php-pear -y

Устанавливаем NodeJS :

curl -sL https://deb.nodesource.com/setup_11.x | sudo -E bash -
apt-get install nodejs -y
pear install Console_Getopt

Устанавливаем поддержку MariaDB ODBC

wget https://downloads.mariadb.com/Connectors/odbc/latest/mariadb-connector-odbc-3.1.9-debian-buster-amd64.tar.gz
tar -zxvf mariadb*
cp -v mariadb-connector-odbc-3.1.9-debian-buster-amd64/lib/mariadb/libmaodbc.so /usr/lib/x86_64-linux-gnu/odbc/

[stextbox id=’alert’]ВНИМАНИЕ. На момент написание статьи версия MariaDB ODBC — 3.1.9, поэтому обращаем внимание на случай ошибок и при необходимости корректируйте версионность. Последние версии можно посмотреть на оф. сайте — https://downloads.mariadb.com/Connectors/odbc/latest/.[/stextbox]

Рассмотрим как реализовать доступ к FreePBX GUI через HTTPS. Все действия производились на FreePBX установленный на Debian 9 Stretch (как установить можно почитать тут) и Apache.

 

Любым удобным вам способом копируем сертификат, закрытый ключ, промежуточные + корневой сертификат в систему (как это сделать через SSH можно почитать тут). Так как сертификатом будет пользоваться веб-сервер Apache, то не забываем прописать на файлы сертификатов соответствующие права. Я выставляю такие права доступа на файлы сертификатов:

chown root:www-data {путь к файлу}
chmod 640 {путь к файлу}

 

Включаем модуль SSL в Apache:

a2enmod ssl

 

Конфигурация виртуального хоста. Приводим дефолтный вирт. хост /etc/apache2/sites-available/000-default.conf к виду:

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

<VirtualHost *:443>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        SSLEngine On
        SSLCertificateFile /etc/ssl/crt.crt
        SSLCertificateKeyFile /etc/ssl/key.key
        SSLCACertificateFile /etc/ssl/crt-ca.crt
</VirtualHost>

[stextbox id=’warning’]ВНИМАНИЕ. Обращаю внимание что в SSLCertificateFileSSLCertificateKeyFileSSLCACertificateFile указываем свой путь к файлам.[/stextbox]

Многие пользователи просили сделать возможность переадресации вызовов на мобильный при установке DND (do not disturb) режима на рабочем телефоне. Так как DND режим не предполагает переадресации, то пришлось свою обработку для этого режима.

В порядке рабочей необходимости поставилась задача по реализации динамических конференций на FreePBX. Из функционала должна быть возможность перевода активного разговора в конференцию, возможность приглашать новых участников в созданную динамическую конференцию находясь в ней, а так же возможность самостоятельному подключения к активной динамической конференции.

Разберем как установить phpMyAdmin последней версии из исходников в Debian 9 Stretch. Так же рассмотрим как обезопасить доступ к нему.

 

Устанавливаем необходимые пакеты:

apt-get install php php-common php-cli libapache2-mod-php php-gd php-mbstring php-zip php-xml php-curl php-bz2 php-mysql php-common php-tcpdf php-gettext mariadb-server -y

 

Скачиваем последнюю версию phpMyAdmin, распаковываем скачанный архив и перемещаем его в пользовательский каталог:

wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.zip

unzip phpMyAdmin-latest-all-languages.zip
rm phpMyAdmin-latest-all-languages.zip
mv phpMyAdmin-*-all-languages/ /usr/share/phpmyadmin

 

Создадим каталог в котором phpMyAdmin будет хранить свои временные файлы и назначаем права доступа к нему для веб-сервера (www-data):

mkdir -p /var/lib/phpmyadmin/tmp
chown -R www-data:www-data /var/lib/phpmyadmin

 

Создаем базу данных и таблицы конфигурации для phpMyAdmin. Применяем поставляемый вместе с phpMyAdmin скрипт:

mariadb < /usr/share/phpmyadmin/sql/create_tables.sql

В работе имеется веб-сайт на котором реализована авторизация посредством ЕСИА (Единая система идентификации и аутентификации). До недавнего времени можно было использовать самоподписной RSA сертификат, но с 1 апреля 2020 года, для взаимодействия с ЕСИА необходимо использовать сертификат с алгоритмом шифрования по ГОСТ Р 34.10-2012.

 

В связи с этим мне необходимо было реализовать возможность работы с алгоритмом ГОСТ Р 34.11-2012 в OpenSSL на Debian 9 Stretch.

 

Путем перелопачивания множества информации по этому вопросу и проб использования движка GOST-Engine с различными версиями OpenSSL, для себя определил рабочую связку OpenSSL 1.1.1d + GOST-Engine.

 

В качестве памятки опишу действия для реализации связки OpenSSL 1.1.1d + GOST-Engine на Debian 9 Stretch.

 

Устанавливаем необходимые пакеты:

apt-get install build-essential wget git cmake unzip gcc -y

 

Выполняем сборку OpenSSL 1.1.1d, выполняем команды:

cd /opt

wget "https://github.com/openssl/openssl/archive/OpenSSL_1_1_1d.zip" -O "OpenSSL_1_1_1d.zip"
unzip OpenSSL_1_1_1d.zip && cd openssl-OpenSSL_1_1_1d

./config shared -d --prefix=/usr/ssl --openssldir=/usr/ssl
make all && make install

rm /usr/bin/openssl
ln -s /usr/ssl/bin/openssl /usr/bin/openssl
echo "/usr/ssl/lib" >> /etc/ld.so.conf.d/ssl.conf && ldconfig

Понадобилось недавно подключить SIP-транк от Ростелекома к FreePBX 14 в связке с Asterisk 16. В качестве памятки опишу порядок действий, для того чтобы иметь возможность на FreePBX принимать\звонить через SIP-транк Ростелекома.

 

В личном кабинете Виртуальной АТС (Ростелеком) переходим в «Пользователи» и заходим в «user1» (можно создать нового, кому как удобней).

В качестве памятки опишу способ доработки функции второй линии (Call Waiting) в FreePBX 14.

От коллеги по цеху поступила просьба помочь с реализацией интересной задачи, которая заключается во исполнении №152-ФЗ (Федеральный закон «О персональных данных») по которому необходимо блокировать исходящие звонки на номера клиентов, который дали отказ на них.

 

Но нужно не просто блокировать исходящий звонок на определенный номер, но перед этим необходимо оператору проиграть сообщение и если после или в процессе сообщения нажать кнопку 1, то все же совершить звонок клиенту.

 

Я увидел решение задачи несколькими способами, рассмотрим этим варианты реализации.

 

Исходные данные:

  • Debian 9 Strech
  • Asterisk 16 + FreePBX 14
  • Номерная маска операторов — _146XX

 

Вариант #1

В файл конфигурации /etc/asterisk/extensions_custom.conf добавляем следующую обработку:

[from-internal-custom]
exten => _89858887766/_146XX,1,GoSub(sub-marketing-block,s,1)
exten => _89855554433/_146XX,1,GoSub(sub-marketing-block,s,1)
exten => _89852221100/_146XX,1,GoSub(sub-marketing-block,s,1)
; -- УКАЗЫВАЕМ ОСТАЛЬНЫЕ НОМЕРА КОТОРЫЕ ПОД ЗАПРЕТОМ --

[sub-marketing-block]
exten => s,1,Background(custom/message)
exten => s,2,WaitExten(3)
exten => 1,1,Goto(s,5)
exten => i,1,Goto(s,6)
exten => t,1,Goto(s,6)
exten => s,5,Return()
exten => s,6,Hangup()

По различными причинам, случается так что какой то файл может быть удален с файлового сервера и в этом случае он будет потерян на всегда. Для того чтобы иметь возможность восстановить удаленный файл на файловом сервере samba предусмотрен модуль VFS (Virtual File System) — recycle (сетевая корзина), рассмотрим его применение.

В FreePBX 14 Dashboard в Mail Queue висит ошибка:

Mail Queue: Unknown output from mailq: [[“exim: permission denied”], 1]

 

Данная ошибка означает что нет доступа списку очереди exim. Чтобы исправить эту ошибку в файле конфигурации (/etc/exim4/exim4.conf.template) в секцию MAIN CONFIGURATION SETTINGS добавим параметр:

queue_list_requires_admin = false

 

Обновим конфигурацию exim:

update-exim4.conf

 

Рассмотрим как установить FreePBX 14 в связке с Asterisk 16 на Debian 9 Stretch.

 

Подготовка системы

Перед началом установки обновляем систему до актуального состояния:

apt-get update && apt-get upgrade -y

Устанавливаем необходимые зависимости:

apt-get install build-essential linux-image-amd64 linux-headers-* apt-transport-https bison flex curl sox libncurses5-dev libssl-dev mpg123 libxml2-dev libnewt-dev sqlite3 libsqlite3-dev pkg-config automake libtool autoconf git unixodbc-dev uuid uuid-dev libasound2-dev libogg-dev libvorbis-dev libicu-dev libcurl4-openssl-dev libical-dev libneon27-dev libsrtp0-dev libspandsp-dev subversion libtool-bin python-dev unixodbc dirmngr sudo apache2 mariadb-server mariadb-client default-libmysqlclient-dev -y

[stextbox id=’alert’]ВНИМАНИЕ. Обязательно перезагружаем систему и после этого продолжаем установку.[/stextbox]

 

Устанавливаем PHP версии 5.6 (для корректной работы FreePBX fwconsole):

curl https://packages.sury.org/php/apt.gpg | apt-key add -
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/deb.sury.org.list
apt-get update && apt-get install php5.6 php5.6-curl php5.6-cli php5.6-mysql php5.6-mbstring php5.6-gd php5.6-xml php-pear -y

Устанавливаем NodeJS :

curl -sL https://deb.nodesource.com/setup_11.x | sudo -E bash -
apt-get install nodejs -y
pear install Console_Getopt

Устанавливаем поддержку MariaDB ODBC

wget https://downloads.mariadb.com/Connectors/odbc/connector-odbc-2.0.15/mariadb-connector-odbc-2.0.15-ga-debian-x86_64.tar.gz
tar -zxvf mariadb*
cp -v mariadb-connector-odbc-2.0.15-ga-debian-x86_64/lib/libmaodbc.so /usr/lib/x86_64-linux-gnu/odbc/

 

Столкнулся недавно с задачей по маршрутизации звонков между несколькими FreePBX соединенными SIP-транками. Необходимо вызов пришедший из одного SIP-транка на определенный номерной план передать в другой SIP-транк.

 

Имеется три АТС на базе FreePBX (13, 14) — FreePBX «A» (номерной план 1ХХ), FreePBX «B» (номерной план 2ХХ), FreePBX «C» (номерной план 3ХХ). Которые соединены между собой SIP-транками следующим образом:

FreePBX «A» <—-SIP TRUNK «A»—-> FreePBX «B» <—-SIP TRUNK «B»—-> FreePBX «C»

 

Для наглядности рассмотрим к примеру ситуацию когда необходимо дозваниваться с FreePBX «A» (1ХХ) до абонентов находящихся в FreePBX «С» (3ХХ) и в обратном направлении.

 

Можно конечно решить задачу соединив отдельным SIP-транком  FreePBX «A» и FreePBX «С», но рассмотрим другой вариант, когда к примеру нет возможности соединить их на прямую, тогда в этом случае посредником для звонков будет выступать FreePBX «B», т.к. он имеет связь по SIP-транку с FreePBX «С» и FreePBX «A».