billing:configuration:mfisoft

СОРМ 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/.

Если все верно сделали то в СОРМЕ должны подтягиваться данные из конфига при выгрузке указанных справочников.

Скрипты дорабатываются и могут изменяться!

В данном скрипте необходимо подставить свои данные в переменные:
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;
}
# ежедневная выгрузка
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
  • billing/configuration/mfisoft.txt
  • Последнее изменение: 10 мес. назад
  • alexd