Просмотр Исходного

{toc}

h2. Примечания! Прочтите перед настройкой
{warning}

_Важно\! VSFTPD работает в chroot /app/asr_billing/var/_

_Важно\! Для загрузки CDR необходимо создать отдельное оборудование т.к. при загрузке CDR биллинг по Radius отправляет данные ввиде Acct-Stop пакетов с виртуального адреса 169.1.28.12_

_Важно\! Владельецем директории, в которую планируется выгрузка cdr, должен быть пользователь cdr_ftp_{warning}
{info}Обработанные CDR перемещаются в архив: например, если папка для загрузки cdr */var/oss/core/VOIP/cdr*, архив будет в папке */var/oss/core/VOIP/cdr_archive*{info}

h2. Настройка

_Для оборудования не поддерживающего Radius AAA существует альтернативный способ обсчета звонков через загрузку CDR, также рекомендуется его использовать и для оборудования с настроенным Radius AAA на случай проблем сети._
Основные шаги, которые необходимо выполнить для настройки ftp-сервера:
* Добавить подсети или конкретные ip-адреса в формате XXX.XXX.XXX.XXX в список разрешенных ip-адресов или подсетей. Разделитель списка - пробел.
* Установить пароль ftp сервера

h3. Настройка разрешенных ip адресов

*шаг 1* Заходим в "Настройки(в файле)"
!Выделение_010.png|width=1200,border=1!
*шаг 2*
!Выделение_011.png|width=1200,border=1!
*шаг 3*
!Настройки фтп-ip.png|width=1200,border=1!

h3. Настройка пароля пользователя cdr_ftp через веб-интерфейс

*шаг 1* Заходим в "Настройки(в файле)"
!Выделение_010.png|width=1200,border=1!
*шаг 2*
!Выделение_011.png|width=1200,border=1!
*шаг 3*
!Настройки фтп-пароль.png|width=1200,border=1!

h3. Настройка пароля пользователя cdr_ftp через терминал( для версий младше 51204273 )
{code}
$ chroot /app/asr_billing/
(asr_billing) $ passwd cdr_ftp # вводим пароль
(asr_billing) $ rsync /etc/shadow /cfg/etc/shadow # необходимо выполнить для сохранения пароля после рестарта контейнера
{code}

h3. Настройка пассивного режима FTP
Откройте файл конфигурации сервера */app/asr_billing/etc/vsftpd/vsftpd.conf* и добавьте в конец файла следующие строки:
{code}pasv_enable=Yes
pasv_max_port=10100
pasv_min_port=10090{code}
Перезапустите FTP-сервер
{code}chroot /app/asr_billing/ service vsftpd restart{code}
Добавьте правило iptables в [хук|CarbonBilling:Дополнительные настройки. hooks. Хуки. Свои правила в firewall]:
{code}iptables -I asr_billing_input -s 169.254.80.82/32 -p tcp -m tcp --dport 10090:10100 -j ACCEPT{code}
Адрес *169.254.80.82* замените на адрес Вашей АТС

h3. Пример скрипта выгрузки cdr файлов с asterisk
{code}
#!/bin/bash

set -eu

CDR_SRC_FILE='/var/log/asterisk/cdr-csv/Master.csv'
CDR_DST_DIR='/var/log/asterisk/cdr-csv-rotate/'
FTP_SERVER='46.19.46.169'
FTP_LOGIN='cdr_ftp'
FTP_PASSWORD='servicemode'
FTP_DIRECTORY='cdr'

cd "$CDR_DST_DIR"

[ ! -d "$CDR_DST_DIR" ] && mkdir $CDR_DST_DIR

if [ -f "$CDR_SRC_FILE" ]; then
DATE=`date +%Y%m%d%H%M%S`
mv $CDR_SRC_FILE $CDR_DST_DIR/cdr-${DATE}.csv
touch $CDR_SRC_FILE
fi

for f in $CDR_DST_DIR/cdr-*.csv; do
echo $f
f_name="${f##*/}"
ftp -v -n $FTP_SERVER <<End-Of-Session > /tmp/ftplog.$$
user $FTP_LOGIN "$FTP_PASSWORD"
binary
cd $FTP_DIRECTORY
put "$f" "$f_name"
bye
End-Of-Session
if fgrep -q "226 Transfer complete" /tmp/ftplog.$$ ;then
echo "ftp OK"
mv $f ${f}.uploaded
fi
done

{code}

{info}
1. Вы настроили выгрузку по фтп в папку /cdr
2. Учетная запись cdr_ftp поумолчанию заперта в /var поэтому в настройка оборудования биллинга необходимо указать путь /var/cdr/{info}

h2. Отладка.
В файле */app/asr_billing/etc/vsftpd/vsftpd.conf* настройте сохранение логов в отдельный файл:
{code}xferlog_std_format=NO
xferlog_file=/var/log/vsftpd.log{code}
Перезапустите FTP-сервер
{code}chroot /app/asr_billing/ service vsftpd restart{code}