====== СОРМ MFI SOFT ======
{{:billing:configuration:2020-07-22_14-15-18.png?100|}}
https://www.mfisoft.ru/
===== Настройка в биллинге =====
Переходим в меню системных опций, выбираем СОРМ MFI SOFT
Включаем "Разрешить", придумываем пароль в поле Секрет (в дальнейшем в скриптах API_KEY)
При желании можно настроить фильтр выгрузок по тарифам если необходимо выгружать данные частично
{{:billing:configuration:2020-07-22_14-17-30.png?400|}}
===== Настройка файла конфигурации =====
Редактируем под себя данные для справочников: regions, doc_type, radius.
{
"regions":[
{
"ID":"1",
"BEGIN_TIME":"2012-12-31 21:59:59",
"DESCRIPTION":"ООО \"ПУПКИН\" г. Москва"
}
],
"doc_type":[
{
"DOC_TYPE_ID":"1",
"BEGIN_TIME":"2012-12-31 21:59:59",
"DESCRIPTION":"Паспорт",
"REGION_ID":"1"
}
],
"radius":[
{
"BEGIN_TIME":"2012-12-31 21:59:59",
"END_TIME":"2049-12-31 21:59:59",
"REGION_ID":"1",
"GATE_TYPE":"7",
"ADDRESS_TYPE_ID":"1",
"ADDRESS_TYPE":"3",
"UNSTRUCT_INFO":"г.Москва, ул Ленина, 1, офис 1",
"DESCRIPTION":"AAA Сервер (Авторизация)",
"IP_TYPE":"0",
"IPV4":"C0A801F7",
"IP_PORT":"0714"
},
{
"BEGIN_TIME":"2012-12-31 21:59:59",
"END_TIME":"2049-12-31 21:59:59",
"REGION_ID":"1",
"GATE_TYPE":"7",
"ADDRESS_TYPE_ID":"1",
"ADDRESS_TYPE":"3",
"UNSTRUCT_INFO":"г.Москва, ул Ленина, 1, офис 1",
"DESCRIPTION":"AAA Сервер (Аккаунтинг)",
"IP_TYPE":"0",
"IPV4":"C0A801F7",
"IP_PORT":"0715"
}
],
"phone_special":[
{
"PHONE_NUMBER":"+74018058154",
"DESCRIPTION":"Пример для выгрузки справочника phone_special",
"BEGIN_TIME":"2011-03-22 09:00:00",
"END_TIME":"",
"IP_TYPE":"0",
"IPV4":"192.168.241.222",
"REGION_ID":"1"
},
{
"PHONE_NUMBER":"+74018058163",
"DESCRIPTION":"Пример для выгрузки справочника phone_special",
"BEGIN_TIME":"2011-03-22 09:00:00",
"END_TIME":"2022-12-30 00:00:00",
"IP_TYPE":"1",
"IPV6":"b4dc:5d75:1652:e595:c0b4:2ec9:2a30:f885",
"REGION_ID":"1"
}
]
}
Затем проверяем отредактированные данные на сайте https://jsonformatter.curiousconcept.com/ . Если все ок то должны получить - зеленую надпись VALID.
Сохраняем полученнное содержимое в файл config.json. Данный файл ложим на сервере с админкой по пути ../modules/mfi/config.json относительно admin/index.php.
т.е. рядом с папкой admin/ надо создать (если еще нет) modules/mfi/.
Если все верно сделали то в СОРМЕ должны подтягиваться данные из конфига при выгрузке указанных справочников.
===== Скрипт выгрузки[Обновлен 2020-04-14] =====
Скрипты дорабатываются и могут изменяться!
В данном скрипте необходимо подставить свои данные в переменные:\\
**ADMIN_URL**, **API_KEY**, **FTP_ADDRESS**.\\
Так же, по требованиям MFISoft, необходимо несколько аккаунтов ftp под каждый тип выгрузки (cdr, dict, abon, pay),\\
в скрипте необходимо заменить пароль **FTP_PASS** под каждый такой аккаунт.\\
Скрипт запуска **unloading.sh**
#!/bin/bash
WORK_DIR="/root/"
ADMIN_URL="https://admin.isp.demo"
API="mfisoft"
API_KEY="0123456789"
EXTENSION="txt"
EXTRA=""
FTP_ENABLED=1
FTP_ADDRESS="192.168.0.1"
FTP_DIR="/"
WGET=$(which wget)
PHP=$(which php)
FTP=$(which ftp)
ftpupload() {
$FTP -n $FTP_ADDRESS < /dev/null; then
work=1
FTP_USER="cdr"
FTP_PASS="1234567890"
fi
if echo $dict | grep -w $REQUEST > /dev/null; then
work=1
FTP_USER="dict"
FTP_PASS="1234567890"
fi
if echo $abon | grep -w $REQUEST > /dev/null; then
work=1
FTP_USER="abon"
FTP_PASS="1234567890"
fi
if echo $pay | grep -w $REQUEST > /dev/null; then
work=1
FTP_USER="pay"
FTP_PASS="1234567890"
fi
if [ "$work" -eq "1" ]; then
if [ ! -z $FILE ]; then
echo "`date` $FTP_ADDRESS $FTP_USER, SEND FILE: $FILE"
ftpupload
fi
fi
fi
if [ ! -z $FILE ]; then
rm -f $FILE
fi
done
else
echo "command 'wget' not found!"
fi
exit 0
===== Скрипт загрузчика =====
**downloader.php**
===== CRON =====
# ежедневная выгрузка
00 06 * * * root /root/unloading.sh
# выгрузка сессий каждые 15 мин.
*/15 * * * * root /root/unloading.sh CONNECTION_AAA
===== Первый запуск =====
Так как при первом запуске необходима полная выгрузка платежей (далее ежедневная), \\
необходимо вручную запустить скрипт с параметром **ACTIVATE**:\\
/root/unloading.sh ACTIVATE
===== Режим отдладки =====
Для запуска режима чекера данных запустить в браузере:
https://admin.isp.demo/ajax/index/mfisoft/?key=$API_KEY&request=ABONENT&debug=true
**Очистка таблицы sorm_data (только в debug или для ABONENT без debug)**
В debug-режиме доступна принудительная очистка таблицы sorm_data (TRUNCATE).
Использовать только для тестов/отладки, т.к. операция удаляет все записи в таблице.
**Пример запуска в браузере:**
https://admin.isp.demo/ajax/index/mfisoft/?key=$API_KEY&request=ABONENT&debug=true&truncate_sorm_data=1
https://admin.isp.demo/ajax/index/mfisoft/?key=$API_KEY&request=ABONENT&truncate_sorm_data=1
**Результат: таблица sorm_data будет очищена командой TRUNCATE TABLE sorm_data**
**Проверка config.json в режиме отладки (debug)**
Иногда СОРМ не видит настройки из config.json или файл содержит ошибку в JSON.
Чтобы быстро понять, какой конфиг видит биллинг сейчас и валиден ли JSON, есть debug-опция debug_config.
Как запустить
Откройте в браузере:
https://admin.isp.demo/ajax/index/mfisoft/?key=$API_KEY&request=ABONENT&debug=true&debug_config=1
Что вернётся в ответе
Ответ будет в формате JSON и содержит:
* path — путь, по которому биллинг ищет файл config.json
* file_exists — найден ли файл по этому пути
* json_valid — валиден ли JSON в файле
* json_error — текст ошибки JSON (если json_valid=false)
* config_from_file — конфиг, прочитанный из файла (если JSON валиден)
* config_in_use — конфиг, который реально используется сейчас в коде