urfaclient на php

Вопросы по сопутствующим продуктам производства партнеров
Ответить
solomon
Сообщения: 316
Зарегистрирован: Вт мар 16, 2010 08:39

Сообщение solomon »

извините за скоропостижную отписку - с урфа вашим еще не полностью разобрался - но иду к этому - моя проблема в поспешности - отключил ssl и все заработало - если кому нужно есть скрипты урезающие скорость на циске с условно безлимитными тарифами при превышении определенной границы мб

nik247
Сообщения: 45
Зарегистрирован: Пт окт 23, 2009 13:16

Сообщение nik247 »

solomon писал(а):извините за скоропостижную отписку - с урфа вашим еще не полностью разобрался - но иду к этому - моя проблема в поспешности - отключил ssl и все заработало - если кому нужно есть скрипты урезающие скорость на циске с условно безлимитными тарифами при превышении определенной границы мб
Интересно было бы посмотреть...

Аватара пользователя
ds
Сообщения: 380
Зарегистрирован: Пн сен 18, 2006 14:06

Сообщение ds »

nik247 писал(а):
solomon писал(а):извините за скоропостижную отписку - с урфа вашим еще не полностью разобрался - но иду к этому - моя проблема в поспешности - отключил ssl и все заработало - если кому нужно есть скрипты урезающие скорость на циске с условно безлимитными тарифами при превышении определенной границы мб
Интересно было бы посмотреть...
Тоже интересно посмотреть, как 007 может работать с отключенным ssl-ем. Там оно не убирается вроде

Cramac
Сообщения: 454
Зарегистрирован: Сб июл 01, 2006 17:59

Сообщение Cramac »


solomon
Сообщения: 316
Зарегистрирован: Вт мар 16, 2010 08:39

Сообщение solomon »

ds писал(а):
nik247 писал(а):
solomon писал(а):извините за скоропостижную отписку - с урфа вашим еще не полностью разобрался - но иду к этому - моя проблема в поспешности - отключил ssl и все заработало - если кому нужно есть скрипты урезающие скорость на циске с условно безлимитными тарифами при превышении определенной границы мб
Интересно было бы посмотреть...
Тоже интересно посмотреть, как 007 может работать с отключенным ssl-ем. Там оно не убирается вроде
я наверное уникум ))))) я отключил ssl=false
Последний раз редактировалось solomon Пт авг 06, 2010 05:22, всего редактировалось 1 раз.

solomon
Сообщения: 316
Зарегистрирован: Вт мар 16, 2010 08:39

Сообщение solomon »

собственно скрипты извнините что загромождаю
cisco.sh

Код: Выделить всё

#!/bin/sh

DATE=`/bin/date`
LOG_FILE='/netup/utm5/log/cisco_sh.log'
GLOB_PARAM="$1"

if [ -z "$GLOB_PARAM" ]; then
    echo "$DATE Отсутствует параметр" >> $LOG_FILE
    exit
fi

PROG=`echo $GLOB_PARAM 2> /dev/null | awk -F'[;]' '{print $1}'`

if [ -z "$PROG" ]; then
    echo "$DATE Отсутствует 1-й параметр" >> $LOG_FILE
    exit
fi

PARAM=`echo $GLOB_PARAM 2> /dev/null | awk -F'[;]' '{print $2}'`

if [ -z "$PARAM" ]; then
    echo "$DATE Отсутствует 2-й параметр" >> $LOG_FILE
    exit
fi

/bin/sh $PROG $PARAM
echo "$DATE Команда $PROG $PARAM выполнена" >> $LOG_FILE

exit 0
kill_user.sh

Код: Выделить всё

#!/bin/sh

USERLOGIN="$1"
DATE=`/bin/date`
CISCO_IP='172.16.X.Y'
LOG_FILE='/netup/utm5/log/close-vpn.log'
PID_FILE='/netup/utm5/log/close-vpn-pid'

unset TUN_PID

if [ $1 ]; then
    /usr/bin/rsh $CISCO_IP -l root show vpdn session stat | grep -iw $USERLOGIN | awk '{print $3}' &>$PID_FILE
    {
    read TUN_PID
    &#125; < $PID_FILE
    if &#91; -z "$TUN_PID" &#93;; then
	echo "$DATE NO TUNNEL PID FOR USER $USERLOGIN!" >> $LOG_FILE    
	exit
    else
	/usr/bin/rsh $CISCO_IP -l root clear vpdn tunnel pptp id $TUN_PID > /dev/null
	echo "$DATE USER $USERLOGIN TUNNEL PID $TUN_PID CLOSED IN $CISCO_IP!" >> $LOG_FILE
    fi	
else
    echo "$DATE USERNAME EMPTY!" >> $LOG_FILE
    exit
fi
unblock.php

Код: Выделить всё

#!/usr/bin/php

<?php

require_once&#40;'URFAClient.php'&#41;;

$DBHOST = "localhost";
$PORT	= 11758;
$DBUSER = "netup";
$DBPASS = "netup";
$DBNAME = "UTM5";
$path_to_log_file = "/netup/utm5/log/unblock.log"; //путь к логу
$dt =  date&#40;'Y-m-d &#91;H&#58;i&#58;s&#93;'&#41;; //формат вывода даты и времени &#40;для лога&#41;
$urfa_name = "web"; //логин для урфы
$urfa_passwd = "web"; //пароль для урфы
$urfa_is_connected = 0; //должен быть =0 &#40;нужен для проверки подключения к урфе&#41;

//откроем лог для записи
$log_file = fopen&#40;$path_to_log_file,'a'&#41;;

//подключимся к БД
$db = mysql_connect&#40;$DBHOST,$DBUSER,$DBPASS&#41; or die&#40;"Ошибка&#58; подключение к базе данных\n".mysql_error&#40;&#41;."\n"&#41;;
mysql_select_db&#40;$DBNAME&#41;;

//найдем все отключенные &#40;незаблокированные админом&#41; аккаунты
$query = "SELECT a.id,u.login
	  FROM accounts a left join users u on &#40;a.id=u.id&#41;
	  WHERE a.int_status=0
	  AND a.is_blocked=0
	  AND a.is_deleted=0";
$res = mysql_query&#40;$query&#41; or die&#40;"Ошибка&#58; Получение аккаунтов <br>\n".mysql_error&#40;&#41;."\n"&#41;;

while &#40;$row=mysql_fetch_array&#40;$res&#41;&#41;&#123;
    //проверим подключение к урфе, если нет, откроем
    if &#40;$urfa_is_connected==0&#41;&#123;
        $urfa_admin = new URFAClient_Admin&#40;$urfa_name,$urfa_passwd&#41;;
        $urfa_is_connected = 1;
    &#125;
    $urfa_admin->rpcf_change_intstat_for_user&#40;$row&#91;'id'&#93;,0&#41;;
    fwrite&#40;$log_file,$dt." Снята блокировка аккаунта #".$row&#91;'id'&#93;." &#40;".$row&#91;'login'&#93;."&#41;\n"&#41;;
&#125;

//закроем лог
fclose&#40;$log_file&#41;;

?>
usl_unlim.php

Код: Выделить всё

#!/usr/bin/php

<?php

require_once&#40;'URFAClient.php'&#41;;

$DBHOST = "localhost";
$PORT	= 11758;
$DBUSER = "netup";
$DBPASS = "netup";
$DBNAME = "UTM5";
//$tariffs = array&#40;1=>10737418240,20=>21474836480,18=>32212254720&#41;; //id тарифа => объем трафика
//2Gb-2147483648,10Gb-2147483648,20Gb-21474836480,30Gb-32212254720
$tariffs = array&#40;1=>41943040,39=>21474836480,40=>42212254720&#41;; //id тарифа => объем трафика
$tariffs_r = array&#40;1=>'256000 32000 32000',39=>'512000 64000 64000',40=>'1024000 128000 128000'&#41;; //id тарифа => параметр скорости для циски
$tariffs_r2 = array&#40;1=>'64000 8000 8000',39=>'128000 16000 16000',40=>'128000 16000 16000'&#41;; //id тарифа => параметр скорости для циски
$radius_value = "lcp&#58;interface-config#1=no rate-limit input xxx conform-action transmit exceed-action drop";
$radius_value1 = "lcp&#58;interface-config#1=rate-limit input yyy conform-action transmit exceed-action drop";
$radius_value2= "lcp&#58;interface-config#1=no rate-limit output xxx conform-action transmit exceed-action drop";
$radius_value3 = "lcp&#58;interface-config#1=rate-limit output yyy conform-action transmit exceed-action drop";
$t_class = array&#40;70,90&#41;; //класс трафика для учета
$path_to_log_file = "/netup/utm5/log/usl_unlim.log"; //путь к логу
$dt =  date&#40;'Y-m-d &#91;H&#58;i&#58;s&#93;'&#41;; //формат вывода даты и времени &#40;для лога&#41;
$user_drop = "/netup/utm5/bin/cisco.sh '/netup/utm5/bin/kill_user.sh;zzz'"; //скрипт сброса пользователя
$urfa_name = "web"; //логин для урфы
$urfa_passwd = "web"; //пароль для урфы
$urfa_is_connected = 0; //должен быть =0 &#40;нужен для проверки подключения к урфе&#41;
$monthstart = mktime&#40;0,0,0,date&#40;"m"&#41;,1,date&#40;"Y"&#41;&#41;; //начало месяца
$nd = strtotime&#40;date&#40;"Y-m-d",$monthstart&#41;." +1 Month"&#41;; //строковая запись начала след. месяца
$nextmonth = mktime&#40;0,0,0,date&#40;"m",$nd&#41;,1,date&#40;"Y",$nd&#41;&#41;; //начало след. месяца в timestamp

//откроем лог для записи
$log_file = fopen&#40;$path_to_log_file,'a'&#41;;

//подключимся к БД
$db = mysql_connect&#40;$DBHOST,$DBUSER,$DBPASS&#41; or die&#40;"Ошибка&#58; подключение к базе данных\n".mysql_error&#40;&#41;."\n"&#41;;
mysql_select_db&#40;$DBNAME&#41;;

//найдем всех юзверей с условно-безлимитными тарифами
//выборка -id аккаунта, баланс аккаунта, id тарифа
$query = sprintf&#40;"SELECT a.id,a.balance,atl.tariff_id 
		  FROM accounts a left join account_tariff_link atl on &#40;a.id=atl.account_id&#41; 
		  WHERE atl.is_deleted=0 
		  AND &#40;atl.tariff_id in &#40;%s&#41;&#41;",join&#40;',',array_keys&#40;$tariffs&#41;&#41;&#41;;
$res = mysql_query&#40;$query&#41; or die&#40;"Ошибка&#58; Получение аккаунтов <br>\n".mysql_error&#40;&#41;."\n"&#41;;

while &#40;$row=mysql_fetch_array&#40;$res&#41;&#41;&#123;
	//выцепим данные по трафику
	$query = sprintf&#40;"SELECT d.account_id, d.slink_id, d.t_class, SUM&#40;d.bytes&#41; as total 
			  FROM discount_transactions_iptraffic_all d left join service_links sl on &#40;d.slink_id=sl.id&#41; 
			  WHERE d.discount_date >= '%d'
			  AND d.discount_date <= '%d'
			  AND sl.is_deleted=0
			  AND d.account_id='%d' and &#40;d.t_class in &#40;%s&#41;&#41; 
			  GROUP BY d.t_class,d.account_id,d.slink_id 
			  ORDER BY total desc, d.account_id",$monthstart,$nextmonth,$row&#91;'id'&#93;,join&#40;',',$t_class&#41;&#41;;
	$res_traf = mysql_query&#40;$query&#41; or die&#40;"Ошибка полчения трафика для аккаунта ".$row&#91;'id'&#93;."<br>$query<br>\n".mysql_error&#40;&#41;."\n"&#41;;
	$t = mysql_fetch_array&#40;$res_traf&#41;;
	
	//проверим есть ли вообще трафик &#40;результат SQL запроса не пустой&#41;
	if &#40;mysql_num_rows&#40;$res_traf&#41;<>0&#41;&#123;
	
	    //узнаем логин аккаунта
    	    $query = "select * from users where is_deleted=0 AND id=".$row&#91;'id'&#93;;
	    $res2 = mysql_query&#40;$query&#41; or die&#40;"Ошибка&#58; проверка логина пользователя\n".mysql_error&#40;&#41;."\n"&#41;;
	    $user_login = mysql_fetch_array&#40;$res2&#41;;
	    $user_login_value = $user_login&#91;'login'&#93;;
	
	    if &#40;$t&#91;'total'&#93;>$tariffs&#91;$row&#91;'tariff_id'&#93;&#93;&#41;&#123;
		//есть превышение
		$query = "select * from dialup_service_links where is_deleted=0 AND login='$user_login_value'";
		$res2 = mysql_query&#40;$query&#41; or die&#40;"Ошибка&#58; проверка наличия услуги dial-up\n".mysql_error&#40;&#41;."\n"&#41;;
		
		//проверим наличие услуги dial-up
		//если есть - будем назначать атрибуты ее сервисной связке
		if &#40;mysql_num_rows&#40;$res2&#41;<>0&#41;&#123;
		    $d = mysql_fetch_array&#40;$res2&#41;;
		    $t&#91;'slink_id'&#93;=$d&#91;'id'&#93;;
		&#125;
		
		$query = "select * from radius_data where owner_id = ".$t&#91;'slink_id'&#93;;
		$res2 = mysql_query&#40;$query&#41; or die&#40;"Ошибка&#58; проверка радиус атрибутов\n".mysql_error&#40;&#41;."\n"&#41;;
		
		//проверим наличие атрибута
		if &#40;mysql_num_rows&#40;$res2&#41;==0&#41;&#123;
			//проверим подключение к урфе, если нет, откроем
			if &#40;$urfa_is_connected==0&#41;&#123;
			    $urfa_admin = new URFAClient_Admin&#40;$urfa_name, $urfa_passwd&#41;;
			    $urfa_is_connected = 1;
			&#125;
			//атрибута нет - установим его		
			$str1 = str_replace&#40;'xxx',$tariffs_r&#91;$row&#91;'tariff_id'&#93;&#93;,$radius_value&#41;;
			$str2 = str_replace&#40;'yyy',$tariffs_r2&#91;$row&#91;'tariff_id'&#93;&#93;,$radius_value1&#41;;
			$str3 = str_replace&#40;'xxx',$tariffs_r&#91;$row&#91;'tariff_id'&#93;&#93;,$radius_value2&#41;;
			$str4 = str_replace&#40;'yyy',$tariffs_r2&#91;$row&#91;'tariff_id'&#93;&#93;,$radius_value3&#41;;
			$urfa_admin->rpcf_set_radius_attr&#40;$t&#91;'slink_id'&#93;,$str1,$str2,$str3,$str4&#41;;
			//сбросим пользователя с циски
			system&#40;str_replace&#40;'zzz',$user_login_value,$user_drop&#41;&#41;;
			//запишем результат в лог
			fwrite&#40;$log_file,$dt." Добавлен атрибут аккаунту #".$row&#91;'id'&#93;." &#40;".$user_login_value."&#41; - сервисная связка #".$t&#91;'slink_id'&#93;."\n"&#41;;
		&#125;
	    &#125;
	
	    if &#40;$t&#91;'total'&#93;<$tariffs&#91;$row&#91;'tariff_id'&#93;&#93;&#41;&#123;
		//нет превышения
		$query = "select * from dialup_service_links where is_deleted=0 AND login='$user_login_value'";
		$res2 = mysql_query&#40;$query&#41; or die&#40;"Ошибка&#58; проверка наличия услуги dial-up\n".mysql_error&#40;&#41;."\n"&#41;;

		//проверим наличие услуги dial-up
		//если есть - будем назначать атрибуты ее сервисной связке
		if &#40;mysql_num_rows&#40;$res2&#41;<>0&#41;&#123;
		    $d = mysql_fetch_array&#40;$res2&#41;;
		    $t&#91;'slink_id'&#93;=$d&#91;'id'&#93;;
		&#125;
		
		$query = "select * from radius_data where owner_id = ".$t&#91;'slink_id'&#93;;
		$res2 = mysql_query&#40;$query&#41; or die&#40;"Ошибка&#58; проверка радиус атрибутов\n".mysql_error&#40;&#41;."\n"&#41;;
		
		//проверим наличие атрибута
		if &#40;mysql_num_rows&#40;$res2&#41;<>0&#41;&#123;
			//проверим подключение к урфе, если нет, откроем
			if &#40;$urfa_is_connected==0&#41;&#123;
			    $urfa_admin = new URFAClient_Admin&#40;$urfa_name, $urfa_passwd&#41;;
			    $urfa_is_connected = 1;
			&#125;
			//атрибут есть - уберем его
			$urfa_admin->rpcf_del_radius_attr&#40;$t&#91;'slink_id'&#93;&#41;;
			//сбросим пользователя с циски
			system&#40;str_replace&#40;'zzz',$user_login_value,$user_drop&#41;&#41;;
			//запишем результат в лог
			fwrite&#40;$log_file,$dt." Удален атрибут аккаунта #".$row&#91;'id'&#93;." &#40;".$user_login_value."&#41; - сервисная связка #".$t&#91;'slink_id'&#93;."\n"&#41;;
		&#125;	
	    &#125;
	&#125;
&#125;

//закроем лог
fclose&#40;$log_file&#41;;

?>

Cramac
Сообщения: 454
Зарегистрирован: Сб июл 01, 2006 17:59

Сообщение Cramac »

выложите кто нить URFAClient_Packet.php
а то некоторые функции что то не работают, думаю старая версия у меня...
или может кто пришлет на cramac@mail.ru
в частности интересует работа функции get_dhs_report

сейчас при вызове данной функции выводится ошибки типо:

Код: Выделить всё

Notice&#58; Undefined offset&#58; 1 in /home/www/htdocs/urfaphp/URFAClient_Packet.php on line 103

Warning&#58; unpack&#40;&#41; &#91;function.unpack&#93;&#58; Type N&#58; not enough input, need 4, have 0 in /home/www/htdocs/urfaphp/URFAClient_Packet.php on line 171

Notice&#58; Undefined offset&#58; 2 in /home/www/htdocs/urfaphp/URFAClient_Packet.php on line 103

Warning&#58; unpack&#40;&#41; &#91;function.unpack&#93;&#58; Type N&#58; not enough input, need 4, have 0 in /home/www/htdocs/urfaphp/URFAClient_Packet.php on line 171

Notice&#58; Undefined offset&#58; 3 in /home/www/htdocs/urfaphp/URFAClient_Packet.php on line 103

Warning&#58; unpack&#40;&#41; &#91;function.unpack&#93;&#58; Type N&#58; not enough input, need 4, have 0 in /home/www/htdocs/urfaphp/URFAClient_Packet.php on line 171

Notice&#58; Undefined offset&#58; 4 in /home/www/htdocs/urfaphp/URFAClient_Packet.php on line 103

Warning&#58; unpack&#40;&#41; &#91;function.unpack&#93;&#58; Type N&#58; not enough input, need 4, have 0 in /home/www/htdocs/urfaphp/URFAClient_Packet.php on line 171

Notice&#58; Undefined offset&#58; 5 in /home/www/htdocs/urfaphp/URFAClient_Packet.php on line 103

Warning&#58; unpack&#40;&#41; &#91;function.unpack&#93;&#58; Type N&#58; not enough input, need 4, have 0 in /home/www/htdocs/urfaphp/URFAClient_Packet.php on line 171

Notice&#58; Undefined offset&#58; 6 in /home/www/htdocs/urfaphp/URFAClient_Packet.php on line 137

Notice&#58; Undefined offset&#58; 7 in /home/www/htdocs/urfaphp/URFAClient_Packet.php on line 137

Notice&#58; Undefined offset&#58; 8 in /home/www/htdocs/urfaphp/URFAClient_Packet.php on line 103

Puzan_aga
Сообщения: 105
Зарегистрирован: Чт сен 11, 2008 10:43

Сообщение Puzan_aga »

Добрый день.

Выложите пожалусто URFAClient_Connection.php пропатченный под 8 версию

Зарание спсибо!

mrDefault
Сообщения: 86
Зарегистрирован: Ср окт 29, 2008 12:04

Сообщение mrDefault »

Puzan_aga писал(а):Добрый день.

Выложите пожалусто URFAClient_Connection.php пропатченный под 8 версию

Зарание спсибо!
+1, чет я патчил патчил и ничего не напатчил. Точнее коннектиться урфа стала, но ничего не работает. На вызов админских функций в дебаг лог падает следующие

Info : Aug 16 16:35:12 RPCConn[SSL]<init@127.0.0.1>: Request for function <0x2005> not permitted
Info : Aug 16 16:24:23 RPCConn[SSL]<init@127.0.0.1>: Request for function <0x0060> not permitted

Если можно выложите рабочий urfaphp для 008 на вики или на kaa собака krabo.ru

Аватара пользователя
ds
Сообщения: 380
Зарегистрирован: Пн сен 18, 2006 14:06

Сообщение ds »

mrDefault писал(а):
Puzan_aga писал(а):Добрый день.

Выложите пожалусто URFAClient_Connection.php пропатченный под 8 версию

Зарание спсибо!
+1, чет я патчил патчил и ничего не напатчил. Точнее коннектиться урфа стала, но ничего не работает. На вызов админских функций в дебаг лог падает следующие

Info : Aug 16 16:35:12 RPCConn[SSL]<init@127.0.0.1>: Request for function <0x2005> not permitted
Info : Aug 16 16:24:23 RPCConn[SSL]<init@127.0.0.1>: Request for function <0x0060> not permitted

Если можно выложите рабочий urfaphp для 008 на вики или на kaa собака krabo.ru
Попробуй так

Код: Выделить всё

$urfa_admin = new URFAClient_Admin&#40;"init", "init","10.0.0.1","11758",true,true&#41;;
Плюс сертификат не забыть положить

mrDefault
Сообщения: 86
Зарегистрирован: Ср окт 29, 2008 12:04

Сообщение mrDefault »

ds Заработало, большое спасибо.

Puzan_aga
Сообщения: 105
Зарегистрирован: Чт сен 11, 2008 10:43

Сообщение Puzan_aga »

mrDefault Выложи плиз готовые файлики.

Puzan_aga
Сообщения: 105
Зарегистрирован: Чт сен 11, 2008 10:43

Сообщение Puzan_aga »

Поделитесь плиз готовыми файликами пропатченными под 8 версию!!

Зарание спасибо!

gil
Сообщения: 355
Зарегистрирован: Вт ноя 11, 2008 14:28

Сообщение gil »

по поводу SSL - какие у вас расширения подключены к PHP?
что в phpinfo(); по поводу SSL выдается?

Petrovich_Z
Сообщения: 4
Зарегистрирован: Чт авг 26, 2010 22:38

Сообщение Petrovich_Z »

Поделитесь и со мной пропатченными файлами.
Я вроде все вручную поменял, но при попытке открыть example.php броузер не дождавшись ответа отваливается (очень долго ждал). А если использовать не патченные файлы выдает следующее:
Error in line 27Error code 0
Notice: Undefined variable: urfa_admin in /var/www/html/up/example.php on line 21

Fatal error: Call to a member function rpcf_get_accountinfo() on a non-object in /var/www/html/up/example.php on line 21

У меня ситуация усугубляется еще и тем, что utm ставил не я и не я им управляю, я только переделываю web-интерфейс. Urfa_php мне нужна для смены тарифа.

если что мыло apz1 на яндексе.

заранее благодарю.

Ответить