СОРМ MFI SOFT
Настройка в биллинге
Переходим в меню системных опций, выбираем СОРМ MFI SOFT
Включаем "Разрешить", придумываем пароль в поле Секрет (в дальнейшем в скриптах API_KEY)
При желании можно настроить фильтр выгрузок по тарифам если необходимо выгружать данные частично
Настройка файла конфигурации
Редактируем под себя данные для справочников: 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 <<END_SCRIPT
quote USER $FTP_USER
quote PASS $FTP_PASS
binary
put $FILE
quit
END_SCRIPT
}
if [ "$#" -gt 0 ]; then
# особые параметры
if [ "$1" == "ACTIVATE" ]; then
REQUESTS=(
PAYMENT
)
EXTRA="&full=true"
else
REQUESTS=$1
fi
else
# обычный запуск
REQUESTS=(
ABONENT
ABONENT_SRV
ABONENT_ADDR
ABONENT_ID
DOC_TYPE
REGIONS
PAY_TYPE
PAYMENT
PHONE_SPECIAL
IP_PLAN
COMMUTATORS
GATEWAYS
SUPPLEMENTARY_SERVICE
IP_GATEWAY
)
fi
cdr="CONNECTION_AAA"
dict="REGIONS DOC_TYPE PAY_TYPE IP_DATA_POINTS PHONE_SPECIAL IP_PLAN COMMUTATORS GATEWAYS SUPPLEMENTARY_SERVICE IP_GATEWAY"
abon="ABONENT ABONENT_ADDR ABONENT_ID ABONENT_SRV"
pay="PAYMENT"
if [ ! -z $WGET ]; then
cd $WORK_DIR
for REQUEST in ${REQUESTS[*]}
do
URL="$ADMIN_URL/ajax/index/$API/?key=$API_KEY&request=$REQUEST&file=true$EXTRA"
RESULT=$($PHP downloader.php $URL)
echo "$RESULT"
if [ "$RESULT" == "1" ]; then
echo "error"
exit 1
else
FILE="$RESULT"
fi
if [ "$FTP_ENABLED" -eq 1 ]; then
work=0
if echo $cdr | grep -w $REQUEST > /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
<?php if( isset($argv[1]) AND count($argv) == 2 ) { $URL=$argv[1]; $ch = curl_init($URL); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_POST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $data = curl_exec($ch); $header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE); $header = substr($data, 0, $header_size); $body = substr($data, $header_size); curl_close($ch); $filename = explode ("filename=", $header); if( isset($filename[1]) ) { $name = str_replace('"', "", $filename[1]); $name = str_replace(array("\n", "\r"), '', $name); file_put_contents($name, $body); echo "{$name}"; } } else { echo 0; }
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
