Выгрузка mfisoft

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

В данном скрипте необходимо подставить свои данные в переменные:
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_SERVICE
		ABONENT_ADDRESS
		ABONENT_IDENT
		DOC_TYPE
		REGIONS
		PAY_TYPE
		PAYMENT
		IP_PLAN
		COMMUTATORS
		GATEWAYS
		SUPPLEMENTARY_SERVICE
		IP_GATEWAY
	)
fi
 
cdr="CONNECTION_AAA"
dict="REGIONS DOC_TYPE PAY_TYPE IP_DATA_POINTS IP_PLAN COMMUTATORS GATEWAYS SUPPLEMENTARY_SERVICE IP_GATEWAY"
abon="ABONENT ABONENT_ADDRESS ABONENT_IDENT ABONENT_SERVICE"
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 "$FTP_ADDRESS: $FTP_USER/$FTP_PASS, 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
  • billing/configuration/mfisoft.txt
  • Последние изменения: 12 месяц (-ев) назад
  • — Александр Дудяк