SMS-Server для GOIP-шлюзов (Multy Channels GSM VoIP Gateway)

by Anton Chernousov aka GITA-DEV


Опубликовано: 14 Авг 2018 (последние правки 2 месяца)


SMS-Server для GOIP-шлюзов (Multy Channels GSM VoIP Gateway)

Наконец то появилась интересная и нестандартная задача, а именно, надо реализовать отправку СМС-уведомлений о задачах в JIRA по нескольким проектам. Если с Jira все относительно понятно и c его API я уже работал, то реализовать отправку уведомлений через SMS Gateway это задачка уже интереснее.

В интернете (на GitHub) имеется несколько проектов которые реализуют фактически один и тот же функционал, а именно, приложение использует request-запросы, авторизуется на GOIP-шлюзе, заполняет необходимые поля и уже после этого выполняет пост запрос для отправки СМС.

Это все выглядит так, как будто вы нажали кнопку "Send" в Web-интерфейсе GOIP-шлюза. Честно говоря, это вообще какой-то костыль и для обеспечения гарантированной отправки надо будет отслеживать статусы ответа сервера, создать очередь отправки и много-много прочей шелухи которую надо будет отлаживать.

Я в свою очередь решил пойти другим путем и использовать родной SMS-сервер от разработчика GSM VOIP-шлюза. Страница где вы можете скачать необходимые компоненты находится по адресу:

http://www.hybertone.com/en/news_detail.asp?newsid=21

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

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

Starting GoIP SMS System install 
ln: failed to create symbolic link '/var/lib/mysql/mysql.sock': No such file or directory 
Configure httpd config: 
Enter the httpd config file PATH: (default: /etc/apache2/sites-enabled) 
Defautl press Enter

Соответственно, первым делом, мы как обычно установим необходимые для работы SMS Server пакеты:

# aptitude install libapache2-mod-php apache2
# aptitude install mysql-server

Установку будем проводить на платформу Debian 9.3 и начнем с загрузки SMS Server по ссылке на официальном сайте производителя оборудования:

# wget http://118.142.51.162/update/goip_install-v1.24.4.tar.gz
# tar -xvf ./goip_install-v1.24.4.tar.gz
# cd ./goip_install/

Запускаем инсталятор и следуем мастеру установки:

# ./goip_install.sh

Фактически вам надо просто нажимать Enter и в чистой установке все отрабатывает нормально, вам конечно может потребоваться ввести логин и пароль root-пользователя базы данных.

В современных версиях Debian уже не используется файл /etc/rc.local, но так как приложение древнее как мамонт, вам придется создать этот файл и сделать его исполняемым (сервис который его исполняет все еще присутствует).

# touch /etc/rc.local
# chmod +x /etc/rc.local

Так же, не забудьте добавить в конец скрипта exit 0.

Как я уже говорил, приложение довольно старое и для его нормальной работы требуется установить библиотеки совместимости с i386-режимом и PHP версии 5.5.

Устанавливаем требуемые для работы i386-библиотеки:

# dpkg --add-architecture i386 
# apt-get update 
# aptitude install libstdc++6:i386 libgcc1:i386 zlib1g:i386 libncurses5:i386 
# aptitude install libgssapi-krb5-2:i386

Вместо того, чтобы устанавливать PHP версии 5.5 вы можете просто переписать модуль отвечающий за взаимодействие с базой данных с mysql_connect на mysqli_connect и мой экспериментальный патч выполняющий эту операцию выглядит следующим образом:

diff --git a/inc/conn.inc.php b/inc/conn.inc.php 
index 1e27ea6..b6ca06c 100755 
--- a/inc/conn.inc.php 
+++ b/inc/conn.inc.php 
@@ -1,6 +1,6 @@ 
 <?php 
 set_time_limit(0); 
-error_reporting(E_ALL & ~E_NOTICE); 
+/* error_reporting(E_ALL & ~E_NOTICE); */ 
 ini_set("memory_limit", "500M"); 
 /* 
       $dbhost='localhost';   //database server 
@@ -34,38 +34,37 @@ function myaddslashes($var) 
 } 
 
 class DB { 
+   public $conn; 
       function DB(){ 
               global $dbhost,$dbuser,$dbpw,$dbname; 
 
-              $conn=mysql_connect($dbhost,$dbuser,$dbpw) or die("Could not connect"); 
-              mysql_select_db($dbname,$conn); 
-              mysql_query("SET NAMES 'utf8'");                
-              mysql_query("set sql_mode='ANSI'"); 
+              $this->conn=mysqli_connect($dbhost,$dbuser,$dbpw) or die("Could not connect"); 
+              $this->conn->select_db($dbname); 
+              $this->conn->query("SET NAMES 'utf8'"); 
+              $this->conn->query("set sql_mode='ANSI'"); 
       } 
       function query($sql) { 
- 
-              $result=mysql_query($sql) or die("Bad query: ".mysql_error()."($sql)"); 
+          $result = $this->conn->query($sql); 
               return $result; 
       } 
       function updatequery($sql) { 
- 
-               $result=mysql_query($sql); 
-               return $result; 
+           $result = $this->conn->query($sql); 
+        return $result; 
        } 
 
       function fetch_array($query) { 
-              return mysql_fetch_array($query); 
+          return $query->fetch_array(MYSQLI_NUM); 
       } 
        
       function fetch_assoc($query) { 
-              return mysql_fetch_assoc($query); 
+          return $query->fetch_assoc(); 
       } 
        
       function num_rows($query) { 
-              return mysql_num_rows($query); 
+          return $query->num_rows; 
       } 
       function real_escape_string($item){ 
-              return mysql_real_escape_string($item); 
+              return mysqli_real_escape_string($item); 
       } 
 }

Если такая операция вам не по зубам, то вы можете все же откатить PHP до версии 5.5, но я бы рекомендовал тогда ограничить доступ к этому серверу только с адресов администраторов, так как в этой легаси версии слишком много потенциальных уязвимостей:

# echo "deb http://packages.dotdeb.org wheezy-php55 all" >> /etc/apt/sources.list.d/dotdeb.list 
# echo "deb-src http://packages.dotdeb.org wheezy-php55 all" >> /etc/apt/sources.list.d/dotdeb.list 
# wget http://www.dotdeb.org/dotdeb.gpg -O- |apt-key add - 
# apt-get update
# aptitude install libapache2-mod-php5

Переходим по адресу http://<ip-address-of-server>/goip/ и авторизуемся, а логин и пароль по умолчанию это root/root.

Выглядит это конечно как привет из диких 90-х, но да и черт с ним, главное что оно работает. После того как вы авторизовались в SMS-сервере, переходите в раздел: System manage -> Goip Manage, где выбирайте Add Goip.

Настраиваете исходящие шлюзы и можете попробовать отправлять SMS-ки.


Обратите внимание на статьи:


Основы настройки и управления FreePBX

Основы настройки и управления FreePBX

Представляю вашему вниманию небольшую, но достаточно подробную инструкцию как настроить FreePBX в минимальной комплектации. Если вы будете следовать этой инструкции то вы сможете настроить исходящие и входящие звонки, IVR, группу звонков и многое другое. Эта инструкция писалась как небольшая сопровождающая инструкция к одному из внедрений FreePBX и думаю будет многим полезна.


Плагины которые необходимо установить в FreePBX-Core для полноценной работы

Плагины которые необходимо установить в FreePBX-Core для полноценной работы

В качестве логического продолжения цикла статей по сборке FreePBX Core необходимо рассказать, о том как устанавливать плагины из репозитариев исходного кода. Если вы устанавливали стандартный FreePBX, то наверное у вас разбегались глаза от количества элементов меню, но если вы устанавливаете все по моей инструкции для FreePBX-core, то вы наверное наоборот удивились, что пунктов меню очень мало. Вы можете установить плагины через стандартное меню администрирования плагинов или установить их самостоятельно собрав пакет плагина.


Настройка Fail2ban для Asterisk (FreePBX)

Настройка Fail2ban для Asterisk (FreePBX)

Небольшое описание того, как я возился с настройкой Fail2ban в Centos 7. Что интересно, штатные правила конфигурации для FirewallD с виду работают, добавляют заблокированные адреса в соответствующие цепочки, но подключения клиентов все равно не блокируются. Для Asterisk который является просто лакомым кусочком для разного рода жуликов работать без Fail2Ban крайне опасно.


Установка FreePBX на Centos 7

Установка FreePBX на Centos 7

Перевод официальной документации по установке FreePBX в Centos 7. Я прошелся по всем этапам установки и удостоверился, что все работает. Казалось бы, чего там может быть непонятно, просто бери и вводи команды последовательно из официальной документации, но как оказалось переведенная инструкция достаточно актуальная штука.


Есть вопросы?
Спрашивайте и я обязательно вам отвечу!

* Поля обязательные для заполнения .

Блог это некоммерческий проект! Если вам понравился мой блог и то что я пишу помогло вам на практике, то можете сказать спасибо материально.