21.12.2018

увеличение скорости работы интерфейса elastix и issabel

чтобы увеличить скорость работы интерфейса предлагаю включить сжатие на уровне web сервера, делается это очень просто:

добавить строчку в ssl.conf перед “sslengine on”

AddOutputFilterByType DEFLATE text/html text/plain text/css application/javascript

20.12.2018

sox asterisk wav mp3

Хорошая статья по теме конвертации в mp3 для centos7. 

у меня лично возникла проблема со входящими файлами wav почему-то – sox не видел данных в них, пришлось явно указывать.

скрипт для конвертации всех файлов в каталоге в mp3

#!/usr/bin/perl
use strict;
use Proc::PID::File;

if (Proc::PID::File->running()) {
        print "Already running, exiting now\n";
        exit(0);
}


my @monitor_dirs=("/var/spool/asterisk/monitor");

foreach my $monitor_dir (@monitor_dirs) {
    opendir(my $dh,$monitor_dir) or die ("Cannot open dir $monitor_dir");
    print "Processing dir $monitor_dir\n";
    while (my $file=readdir($dh))  {

        next if $file !~m/\.wav$/;
        print "Processing file $file\n";
        my $newfile=$file;
        $newfile=~s/\.wav$/\.mp3/;

        system ("/usr/local/bin/sox -t raw -r 8000 -b 16 -e signed-integer  $monitor_dir/$file -t mp3 -C32 $monitor_dir/$newfile");
        sleep(0.01);
        if (-e "$monitor_dir/$newfile") {
            print "Coneverted sucessfully $file\n";
            unlink "$monitor_dir/$file";
        }

    }
    closedir($dh);
}

10.12.2018

migrate freepbx inaflash to issabel 2.11

update: После действий необходимо проверить IVR и какие outbound_trunk  включены или выключены. 

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

  1. развернуть дам базы данных freepbx в новую базу данных на машине, где расположен issabel, например в test_aster
  2. дополнить удалить колонки в старой базе данных:  

alter table test_aster.fax_users add column faxattachformat varchar(10);
alter table test_aster.incoming drop column faxexten;
alter table test_aster.incoming drop column faxemail;
alter table test_aster.incoming drop column answer;
alter table test_aster.incoming drop column wait;
alter table test_aster.queues_config add column destcontinue varchar(50);
alter table test_aster.queues_config add column callback_id varchar(8);
alter table test_aster.ivr_details add column timeout_ivr_ret tinyint(1);
alter table test_aster.ivr_details add column invalid_ivr_ret tinyint(1);
alter table test_aster.ivr_details drop column timeout_enabled;
alter table test_aster.timeconditions add column timeconditions varchar(50);

Теперь можно копировать данные из этих таблиц простым запросом:

insert into asterisk.ivr_entries select * from test_aster.ivr_entries;

Список таблиц которые надо скопировать, все таблицы копировать я полагаю нельзя, т.к. в них содержится конфигурация всей системы – это может привести к неисправимым поломкам в GUI. 

insert into asterisk.announcement select * from test_aster.announcement;
insert into asterisk.cidlookup select * from test_aster.cidlookup;
insert into asterisk.cidlookup_incoming select * from test_aster.cidlookup_incoming;
insert into asterisk.daynight select * from test_aster.daynight;
insert into asterisk.devices select * from test_aster.devices;
//directory tables not found in issabelPBX maybe we have to install directory module;
insert into asterisk.fax_users select * from test_aster.fax_users;
//featurecodes table is present and seems we don’t need to update it
//freepbx_users not in issabel maybe we have to install it
//hotelwakeup_calls not in issabelPBX
insert into asterisk.incoming select * from test_aster.incoming;
insert into asterisk.ivr_details select * from test_aster.ivr_details;
//outbound_route_patterns linked with route_id so it maybe differend between systems
insert into asterisk.outbound_route_patterns select * from test_aster.outbound_route_patterns;
insert into asterisk.outbound_routes select * from test_aster.outbound_routes;
insert into asterisk.paging_groups select * from test_aster.paging_groups;
insert into asterisk.queues_config select * from test_aster.queues_config;
insert into asterisk.queues_details select * from test_aster.queues_details;
insert into asterisk.recordings select * from test_aster.recordings;
insert into asterisk.ringgroups select * from test_aster.ringgroups;
insert into asterisk.sip select * from test_aster.sip;
//superfectaconfig tables not present maybe we have to install module superfecta
insert into asterisk.timeconditions select * from test_aster.timeconditions;
insert into asterisk.timegroups_details select * from test_aster.timegroups_details;
insert into asterisk.timegroups_groups select * from test_aster.timegroups_groups;
insert into asterisk.trunks select * from test_aster.trunks;
insert into asterisk.users select * from test_aster.users;

6.12.2018

firewalld asterisk fail2ban

На centos 7 по умолчанию используется firewalld и возникла проблема с тем что fail2ban не банит после неуспешных попыток авторизации и звонков

проблемы тут 2:

Первая это сами правила которыми пользуется  fail2ban чтобы банить, я их заменил на 

actionban = firewall-cmd –direct –add-rule ipv4 raw PREROUTING 0 -s -j DROP && firewall-cmd –change-source= –zone=block && firewall-cmd –change-source= –zone=block –permanent

actionunban = firewall-cmd –direct –remove-rule ipv4 raw PREROUTING 0 -s -j DROP && firewall-cmd –change-source= –zone=block && firewall-cmd –change-source= –zone=block –permanent && firewall-cmd –remove-source= –zone=block && firewall-cmd –remove-source= –zone=block –permanent 

Вторая это то, что firewalld разрешает все соединения которые были установлены и остались в таблицах, посмотреть их можно командой iptstate

решается первым правилом 
firewall-cmd –direct –add-rule ipv4 raw PREROUTING 0 -s -j DROP 

Которое добавляет блокировку пакетов до проверки ESTABLESHED,RELATED

А третья проблема была в фильтре fail2ban который смотрит для регистраций accountID, и по мнению fail2ban он может быть только числовым или <unknown> 

решается изменением регулярного выражения accountID = “(.+)” в фильтрах fail2ban.