четверг, 17 января 2013 г.

Asterisk+Hylafax+Avantfax решает вопрос факсов

         Итак, мы имеем рабочий Asterisk, возможно с FreePbx или без, кому как нравится. Все работает, пользователи  довольны, но не проходит и пол часа, как к вам подходит девушка - секретарь с вопросом "Как быть с факсами??"
             Хорошо если у вас есть PAP2T и KX-FT934 или что то подобное, тогда вы подключаете все к Астериску, и разница со старой аналоговой АТС будет практически не заметна. Но что делать, если факса нет или не будет, а отправить нужно сейчас?? Разве всесильная "айпи-атс" , за которую уплачены космические сумы, и возможности которой ограничены только фантазией менеджера по продаже решения, не сможет решить эту задачу?Yes, it can! 
         Работу программного факса на нашем сервер обеспечит связка ОПО (Открытое ПО):
1)Asterisk+spandsp - астериск должен быть установлен с модулем приложения app_fax.so
для этого обязательно установить spandsp, иначе мы не сможем работать с факсами.
2)iaxmodem - программные виртуальные модемы, связующие астериск и hylafax через IAX2 каналы.
3)hylafax-server -  центр обработки факса, приложения для управления модемами, и пользователями.
4)avantfax - веб интерфейс с пользователями, и управлением факсами, а также мониторингом модемов и пересылка на почту.
5) postfix - будет осуществлять рассылку факсов по почтовым ящикам.
----------------------------------------------------------------------------------------------------
         Теперь по порядку.
1) Asterisk ставим из репозиториев, либо компилируем из исходников. Spandsp пришлось компилировать. Брал здесь http://soft-switch.org
----------------------------------------------------------------------------------------------------
2) IAXMODEM - Это ставим из репозитория, плюс то что понадобится:
apt-get update
apt-get install gcc libtiff-tools libtiff4-dev
apt-get install iaxmodem 


Идем в /etc/iaxmodem/ и создаем конфигурации модемов, например если нужно 3 шт
touch ttyIAX0 ttyIAX1 ttyIAX2    
в каждом  параметы модема
device /dev/ttyIAX0
owner uucp:uucp
mode 660
port 4800
refresh 3600
server 127.0.0.1
peername 5500
secret iax2peerpass
codec alaw

 добавляем в /etc/inittab  параметры для запуска модемов
# Load modem
IA00:23:respawn:/usr/bin/iaxmodem ttyIAX0
IA01:23:respawn:/usr/bin/iaxmodem ttyIAX1
# Faxgetty
m0:2345:respawn:/usr/sbin/faxgetty ttyIAX0
m1:2345:respawn:/usr/sbin/faxgetty ttyIAX1
и запускаем модемы  # telinit q  перезапускает все что прописано в /etc/inittab
в Астериске создаем IAX2 пиры с соответсвующими параметрами,

[667]
type=friend
secret=megapass
port=4800
host=dynamic
context=out
disallow=all
allow=alaw
requirecalltoken=no
qualify=yes

перезапускаем /etc/init.d/iaxmodem restart 
модемы должны зарегистрироватся как пиры, проверить можно 
# asterisk –rx “iax2 show peers”
Name/Username Host Mask Port Status    

667              127.0.0.1       (D)  255.255.255.255  41178         OK (1 ms) 
669              127.0.0.1       (D)  255.255.255.255  57495         OK (3 ms) 
668              127.0.0.1       (D)  255.255.255.255  38258         OK (1 ms) 
3 iax2 peers [3 online, 0 offline, 0 unmonitored]

На данный момент модемы готовы, и позвонив на них вы должны услышать "гудки". Поднимать "трубку" и слать тоны факса будет HylaFax.
------------------------------------------------------------------------

3)Ставим HylaFax
# apt-get install  hylafax-server
Программа установки задаст несколько вопросов, на многие из которых можно ответить нажав "да". Также необходимо указать имя модема, в нашем случае ttyIAX0 . Влюбой момент вы можите прервать установку <CTRL+C>. А запустить настройку faxsetup.
Добавить факс-модем можно настройкой faxaddmodem.
При добавлении факса создается его конфиг в виде  /etc/hylafax/config.ttyIAX0
в конец конфига необходимо добавить ссылки для Avantfax.
#
## Add for AvantFAX use
#
FaxRcvdCmd: bin/faxrcvd.php
DynamicConfig: bin/dynconf.php
UseJobTSI: true 
все готово для проверки работы факс тонов. /etc/init.d/hylafax restart
при наборе № пира факса вы должны услышать специфические тоны.
-----------------------------------------------------------------------------------------------------------
4) Ставим AvantFax
К этому моменту желательно иметь рабочий LAMP веб-сервер. Доставим необходимые пакеты
# apt-get install -y apache2-mpm-prefork apache2-utils apache2.2-common libapache2-mod-php5 libapr1 libaprutil1 libpq5 libsqlite3-0 php5-cli php5-common mysql-server imagemagick libtiff4-dev netpbm libnetpbm10-dev libungif-bin libungif4-dev sudo php-mail php-mail-mime php-file php-db php5-mysql sudo php-mail php-mail-mime php-file php-db php5-mysql

Качаем и ставим сам авантфакс

  1.  # wget http://downloads.sourceforge.net/project/avantfax/avantfax-3.3.3.tgz
  2.  # tar -zxvf avantfax-3.3.3.tgz 
  3.  # cd avantfax-3.3.3 
  4.  # mv /usr/src/avantfax-3.3.3/avantfax /var/www/ 
  5.  # chmod -R 777 /var/www/avantfax/tmp /var/www/avantfax/faxes 
  6.  # cd /var/spool/hylafax/bin 
  7.  # mv faxrcvd faxrcvd.old 
  8.  # mv notify notify.old 
  9.  # ln -s /var/www/avantfax/includes/faxrcvd.php /var/spool/hylafax/bin/faxrcvd 
  10.  # ln -s /var/www/avantfax/includes/notify.php /var/spool/hylafax/bin/notify 
  11.  # mv /usr/bin/faxcover /usr/bin/faxcover.old 
  12.  # ln -s /var/www/avantfax/includes/faxcover.php /usr/bin/faxcover 
  13.  # cd /usr/src/avantfax-3.3.3 
  14.  # nano create_tables.sql  этот скрипт создаст нужные таблицы в базе
  15.  обязательно добавить в начале  “USE avantfax;” - имя создаваемой базы
  16.  # nano debian-prefs.txt (обязательно указать пароль суперпользователя базы ROOTMYSQLPWD (is the root MySQL user), а также указать ползователя от которого запущен веб сервер httpuser and httpgroup (проверить можно ps –ef |grep apache ) 
  17.  Для логирования Avantfax 
  18.  # mkdir /etc/apache2/logs 
  19.  # touch /etc/apache2/logs/avantfax-error_log
  20.  # /etc/init.d/apache2 restart

21 ) На самом деле это все подготовка к самому главному - запускаем сам скрипт установки
# ./debian-install.sh 
22) Во время работы скрипта будет установлен POSTFIX,  у меня он работает в режиме "сайт-спутник
23) После установки мне пришлось поправить файл
hylafax/includes/local_config.php

        define('AFDB_USER',             'avantfax');    // username
        define('AFDB_PASS',             'avantfaxpass');             // password
        define('AFDB_NAME',             'avantfax');    // database name
        define('AFDB_ENGINE',   'mysql');               // database engine: mysql
        define('AFDB_HOST',             '127.0.0.1');   // database host

а для исходящих писем
define('ADMIN_EMAIL', 'fax-server@companyfaxserver.com');

24) заходим в админку  http(s)://<IPADDRESS>/avantfax/admin.

admin
password