billing:configuration:omega

СОРМ Омега

  • 1.1.1 ABONENT
  • 1.1.2 ABONENT_IDENT
  • 1.1.3 ABONENT_SRV
  • 1.1.4 ABONENT_ADDR
  • 1.2.1 PAYMENTS
  • 1.3.1 REGIONS
  • 1.3.2 SUPPLEMENTARY_SERVICE
  • 1.3.3 PAY_TYPE
  • 1.3.4 DOC_TYPE
  • 1.3.5 IP_PLAN
  • 1.3.7 GATEWAY
  • 1.3.8 IP_GATEWAY
  • 1.3.14 SWITCHES

Переходим в меню системных опций, выбираем СОРМ Омега

Включаем "Разрешить", придумываем пароль в поле Секрет (в дальнейшем в скриптах 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":"2024-12-31 21:59:59",
            "REGION_ID":"1",
            "GATE_TYPE":"7",
            "ADDRESS_TYPE_ID":"1",
            "ADDRESS_TYPE":"3",
            "UNSTRUCT_INFO":"г.Москва, ул Ленина, 47А, офис 1",
            "DESCRIPTION":"AAA Сервер (Авторизация)",
            "IP_TYPE":"0",
            "IPV4":"C0A801F7",
            "IP_PORT":"0714"
        },
        {
            "BEGIN_TIME":"2012-12-31 21:59:59",
            "END_TIME":"2024-12-31 21:59:59",
            "REGION_ID":"1",
            "GATE_TYPE":"7",
            "ADDRESS_TYPE_ID":"1",
            "ADDRESS_TYPE":"3",
            "UNSTRUCT_INFO":"г.Москва, ул Ленина, 47А, офис 1",
            "DESCRIPTION":"AAA Сервер (Аккаунтинг)",
            "IP_TYPE":"0",
            "IPV4":"C0A801F7",
            "IP_PORT":"0715"
        }
    ]
}

Затем проверяем отредактированные данные на сайте https://jsonformatter.curiousconcept.com/ . Если все ок то должны получить - зеленую надпись VALID.

Сохраняем полученнное содержимое в файл config.json. Данный файл ложим на сервере с админкой по пути ../modules/omega/config.json относительно admin/index.php. т.е. рядом с папкой admin/ надо создать (если еще нет) modules/omega/.

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

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

В данном скрипте необходимо подставить свои данные в переменные:
ADMIN_URL, API_KEY, FTP_ADDRESS.
Так же, если по требованиям необходимо несколько аккаунтов ftp под каждый тип выгрузки (cdr, dict, abon, pay),
в скрипте необходимо заменить пароль FTP_PASS под каждый такой аккаунт.

Скрипт запуска unloading.sh

#!/bin/bash
 
# в этой директории должен находится downloader.php
WORK_DIR="/root/"
ADMIN_URL="https://admin.isp.demo"
API="omega"
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=(
			PAYMENTS
		)
		EXTRA="&full=true"	
	else
		REQUESTS=$1
	fi
else
	# обычный запуск
	REQUESTS=(
		ABONENT
		ABONENT_SRV
		ABONENT_ADDR
		ABONENT_IDENT
		DOC_TYPE
		REGIONS
		PAY_TYPE
		PAYMENTS
		IP_PLAN
		GATEWAY
		SUPPLEMENTARY_SERVICE
		IP_GATEWAY
	)
fi
 
cdr="CONNECTION_AAA"
dict="REGIONS DOC_TYPE PAY_TYPE IP_PLAN SWITCHES GATEWAY SUPPLEMENTARY_SERVICE IP_GATEWAY"
abon="ABONENT ABONENT_ADDR ABONENT_ID ABONENT_SRV"
pay="PAYMENTS"
 
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 должен находится в WORK_DIR скрипта unloading.sh

<?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/json/index/omega/?key=XXXX&request=ABONENT&debug=true
  • billing/configuration/omega.txt
  • Последнее изменение: 15 мес. назад
  • alexd