urfaclient на php
Интересно было бы посмотреть...solomon писал(а):извините за скоропостижную отписку - с урфа вашим еще не полностью разобрался - но иду к этому - моя проблема в поспешности - отключил ssl и все заработало - если кому нужно есть скрипты урезающие скорость на циске с условно безлимитными тарифами при превышении определенной границы мб
Тоже интересно посмотреть, как 007 может работать с отключенным ssl-ем. Там оно не убирается вродеnik247 писал(а):Интересно было бы посмотреть...solomon писал(а):извините за скоропостижную отписку - с урфа вашим еще не полностью разобрался - но иду к этому - моя проблема в поспешности - отключил ssl и все заработало - если кому нужно есть скрипты урезающие скорость на циске с условно безлимитными тарифами при превышении определенной границы мб
я наверное уникум ))))) я отключил ssl=falseds писал(а):Тоже интересно посмотреть, как 007 может работать с отключенным ssl-ем. Там оно не убирается вродеnik247 писал(а):Интересно было бы посмотреть...solomon писал(а):извините за скоропостижную отписку - с урфа вашим еще не полностью разобрался - но иду к этому - моя проблема в поспешности - отключил ssl и все заработало - если кому нужно есть скрипты урезающие скорость на циске с условно безлимитными тарифами при превышении определенной границы мб
Последний раз редактировалось solomon Пт авг 06, 2010 05:22, всего редактировалось 1 раз.
собственно скрипты извнините что загромождаю
cisco.sh
kill_user.sh
unblock.php
usl_unlim.php
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
Код: Выделить всё
#!/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
} < $PID_FILE
if [ -z "$TUN_PID" ]; 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
Код: Выделить всё
#!/usr/bin/php
<?php
require_once('URFAClient.php');
$DBHOST = "localhost";
$PORT = 11758;
$DBUSER = "netup";
$DBPASS = "netup";
$DBNAME = "UTM5";
$path_to_log_file = "/netup/utm5/log/unblock.log"; //путь к логу
$dt = date('Y-m-d [H:i:s]'); //формат вывода даты и времени (для лога)
$urfa_name = "web"; //логин для урфы
$urfa_passwd = "web"; //пароль для урфы
$urfa_is_connected = 0; //должен быть =0 (нужен для проверки подключения к урфе)
//откроем лог для записи
$log_file = fopen($path_to_log_file,'a');
//подключимся к БД
$db = mysql_connect($DBHOST,$DBUSER,$DBPASS) or die("Ошибка: подключение к базе данных\n".mysql_error()."\n");
mysql_select_db($DBNAME);
//найдем все отключенные (незаблокированные админом) аккаунты
$query = "SELECT a.id,u.login
FROM accounts a left join users u on (a.id=u.id)
WHERE a.int_status=0
AND a.is_blocked=0
AND a.is_deleted=0";
$res = mysql_query($query) or die("Ошибка: Получение аккаунтов <br>\n".mysql_error()."\n");
while ($row=mysql_fetch_array($res)){
//проверим подключение к урфе, если нет, откроем
if ($urfa_is_connected==0){
$urfa_admin = new URFAClient_Admin($urfa_name,$urfa_passwd);
$urfa_is_connected = 1;
}
$urfa_admin->rpcf_change_intstat_for_user($row['id'],0);
fwrite($log_file,$dt." Снята блокировка аккаунта #".$row['id']." (".$row['login'].")\n");
}
//закроем лог
fclose($log_file);
?>
Код: Выделить всё
#!/usr/bin/php
<?php
require_once('URFAClient.php');
$DBHOST = "localhost";
$PORT = 11758;
$DBUSER = "netup";
$DBPASS = "netup";
$DBNAME = "UTM5";
//$tariffs = array(1=>10737418240,20=>21474836480,18=>32212254720); //id тарифа => объем трафика
//2Gb-2147483648,10Gb-2147483648,20Gb-21474836480,30Gb-32212254720
$tariffs = array(1=>41943040,39=>21474836480,40=>42212254720); //id тарифа => объем трафика
$tariffs_r = array(1=>'256000 32000 32000',39=>'512000 64000 64000',40=>'1024000 128000 128000'); //id тарифа => параметр скорости для циски
$tariffs_r2 = array(1=>'64000 8000 8000',39=>'128000 16000 16000',40=>'128000 16000 16000'); //id тарифа => параметр скорости для циски
$radius_value = "lcp:interface-config#1=no rate-limit input xxx conform-action transmit exceed-action drop";
$radius_value1 = "lcp:interface-config#1=rate-limit input yyy conform-action transmit exceed-action drop";
$radius_value2= "lcp:interface-config#1=no rate-limit output xxx conform-action transmit exceed-action drop";
$radius_value3 = "lcp:interface-config#1=rate-limit output yyy conform-action transmit exceed-action drop";
$t_class = array(70,90); //класс трафика для учета
$path_to_log_file = "/netup/utm5/log/usl_unlim.log"; //путь к логу
$dt = date('Y-m-d [H:i:s]'); //формат вывода даты и времени (для лога)
$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 (нужен для проверки подключения к урфе)
$monthstart = mktime(0,0,0,date("m"),1,date("Y")); //начало месяца
$nd = strtotime(date("Y-m-d",$monthstart)." +1 Month"); //строковая запись начала след. месяца
$nextmonth = mktime(0,0,0,date("m",$nd),1,date("Y",$nd)); //начало след. месяца в timestamp
//откроем лог для записи
$log_file = fopen($path_to_log_file,'a');
//подключимся к БД
$db = mysql_connect($DBHOST,$DBUSER,$DBPASS) or die("Ошибка: подключение к базе данных\n".mysql_error()."\n");
mysql_select_db($DBNAME);
//найдем всех юзверей с условно-безлимитными тарифами
//выборка -id аккаунта, баланс аккаунта, id тарифа
$query = sprintf("SELECT a.id,a.balance,atl.tariff_id
FROM accounts a left join account_tariff_link atl on (a.id=atl.account_id)
WHERE atl.is_deleted=0
AND (atl.tariff_id in (%s))",join(',',array_keys($tariffs)));
$res = mysql_query($query) or die("Ошибка: Получение аккаунтов <br>\n".mysql_error()."\n");
while ($row=mysql_fetch_array($res)){
//выцепим данные по трафику
$query = sprintf("SELECT d.account_id, d.slink_id, d.t_class, SUM(d.bytes) as total
FROM discount_transactions_iptraffic_all d left join service_links sl on (d.slink_id=sl.id)
WHERE d.discount_date >= '%d'
AND d.discount_date <= '%d'
AND sl.is_deleted=0
AND d.account_id='%d' and (d.t_class in (%s))
GROUP BY d.t_class,d.account_id,d.slink_id
ORDER BY total desc, d.account_id",$monthstart,$nextmonth,$row['id'],join(',',$t_class));
$res_traf = mysql_query($query) or die("Ошибка полчения трафика для аккаунта ".$row['id']."<br>$query<br>\n".mysql_error()."\n");
$t = mysql_fetch_array($res_traf);
//проверим есть ли вообще трафик (результат SQL запроса не пустой)
if (mysql_num_rows($res_traf)<>0){
//узнаем логин аккаунта
$query = "select * from users where is_deleted=0 AND id=".$row['id'];
$res2 = mysql_query($query) or die("Ошибка: проверка логина пользователя\n".mysql_error()."\n");
$user_login = mysql_fetch_array($res2);
$user_login_value = $user_login['login'];
if ($t['total']>$tariffs[$row['tariff_id']]){
//есть превышение
$query = "select * from dialup_service_links where is_deleted=0 AND login='$user_login_value'";
$res2 = mysql_query($query) or die("Ошибка: проверка наличия услуги dial-up\n".mysql_error()."\n");
//проверим наличие услуги dial-up
//если есть - будем назначать атрибуты ее сервисной связке
if (mysql_num_rows($res2)<>0){
$d = mysql_fetch_array($res2);
$t['slink_id']=$d['id'];
}
$query = "select * from radius_data where owner_id = ".$t['slink_id'];
$res2 = mysql_query($query) or die("Ошибка: проверка радиус атрибутов\n".mysql_error()."\n");
//проверим наличие атрибута
if (mysql_num_rows($res2)==0){
//проверим подключение к урфе, если нет, откроем
if ($urfa_is_connected==0){
$urfa_admin = new URFAClient_Admin($urfa_name, $urfa_passwd);
$urfa_is_connected = 1;
}
//атрибута нет - установим его
$str1 = str_replace('xxx',$tariffs_r[$row['tariff_id']],$radius_value);
$str2 = str_replace('yyy',$tariffs_r2[$row['tariff_id']],$radius_value1);
$str3 = str_replace('xxx',$tariffs_r[$row['tariff_id']],$radius_value2);
$str4 = str_replace('yyy',$tariffs_r2[$row['tariff_id']],$radius_value3);
$urfa_admin->rpcf_set_radius_attr($t['slink_id'],$str1,$str2,$str3,$str4);
//сбросим пользователя с циски
system(str_replace('zzz',$user_login_value,$user_drop));
//запишем результат в лог
fwrite($log_file,$dt." Добавлен атрибут аккаунту #".$row['id']." (".$user_login_value.") - сервисная связка #".$t['slink_id']."\n");
}
}
if ($t['total']<$tariffs[$row['tariff_id']]){
//нет превышения
$query = "select * from dialup_service_links where is_deleted=0 AND login='$user_login_value'";
$res2 = mysql_query($query) or die("Ошибка: проверка наличия услуги dial-up\n".mysql_error()."\n");
//проверим наличие услуги dial-up
//если есть - будем назначать атрибуты ее сервисной связке
if (mysql_num_rows($res2)<>0){
$d = mysql_fetch_array($res2);
$t['slink_id']=$d['id'];
}
$query = "select * from radius_data where owner_id = ".$t['slink_id'];
$res2 = mysql_query($query) or die("Ошибка: проверка радиус атрибутов\n".mysql_error()."\n");
//проверим наличие атрибута
if (mysql_num_rows($res2)<>0){
//проверим подключение к урфе, если нет, откроем
if ($urfa_is_connected==0){
$urfa_admin = new URFAClient_Admin($urfa_name, $urfa_passwd);
$urfa_is_connected = 1;
}
//атрибут есть - уберем его
$urfa_admin->rpcf_del_radius_attr($t['slink_id']);
//сбросим пользователя с циски
system(str_replace('zzz',$user_login_value,$user_drop));
//запишем результат в лог
fwrite($log_file,$dt." Удален атрибут аккаунта #".$row['id']." (".$user_login_value.") - сервисная связка #".$t['slink_id']."\n");
}
}
}
}
//закроем лог
fclose($log_file);
?>
выложите кто нить URFAClient_Packet.php
а то некоторые функции что то не работают, думаю старая версия у меня...
или может кто пришлет на cramac@mail.ru
в частности интересует работа функции get_dhs_report
сейчас при вызове данной функции выводится ошибки типо:
а то некоторые функции что то не работают, думаю старая версия у меня...
или может кто пришлет на cramac@mail.ru
в частности интересует работа функции get_dhs_report
сейчас при вызове данной функции выводится ошибки типо:
Код: Выделить всё
Notice: Undefined offset: 1 in /home/www/htdocs/urfaphp/URFAClient_Packet.php on line 103
Warning: unpack() [function.unpack]: Type N: not enough input, need 4, have 0 in /home/www/htdocs/urfaphp/URFAClient_Packet.php on line 171
Notice: Undefined offset: 2 in /home/www/htdocs/urfaphp/URFAClient_Packet.php on line 103
Warning: unpack() [function.unpack]: Type N: not enough input, need 4, have 0 in /home/www/htdocs/urfaphp/URFAClient_Packet.php on line 171
Notice: Undefined offset: 3 in /home/www/htdocs/urfaphp/URFAClient_Packet.php on line 103
Warning: unpack() [function.unpack]: Type N: not enough input, need 4, have 0 in /home/www/htdocs/urfaphp/URFAClient_Packet.php on line 171
Notice: Undefined offset: 4 in /home/www/htdocs/urfaphp/URFAClient_Packet.php on line 103
Warning: unpack() [function.unpack]: Type N: not enough input, need 4, have 0 in /home/www/htdocs/urfaphp/URFAClient_Packet.php on line 171
Notice: Undefined offset: 5 in /home/www/htdocs/urfaphp/URFAClient_Packet.php on line 103
Warning: unpack() [function.unpack]: Type N: not enough input, need 4, have 0 in /home/www/htdocs/urfaphp/URFAClient_Packet.php on line 171
Notice: Undefined offset: 6 in /home/www/htdocs/urfaphp/URFAClient_Packet.php on line 137
Notice: Undefined offset: 7 in /home/www/htdocs/urfaphp/URFAClient_Packet.php on line 137
Notice: Undefined offset: 8 in /home/www/htdocs/urfaphp/URFAClient_Packet.php on line 103
+1, чет я патчил патчил и ничего не напатчил. Точнее коннектиться урфа стала, но ничего не работает. На вызов админских функций в дебаг лог падает следующиеPuzan_aga писал(а):Добрый день.
Выложите пожалусто URFAClient_Connection.php пропатченный под 8 версию
Зарание спсибо!
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
Попробуй такmrDefault писал(а):+1, чет я патчил патчил и ничего не напатчил. Точнее коннектиться урфа стала, но ничего не работает. На вызов админских функций в дебаг лог падает следующиеPuzan_aga писал(а):Добрый день.
Выложите пожалусто URFAClient_Connection.php пропатченный под 8 версию
Зарание спсибо!
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("init", "init","10.0.0.1","11758",true,true);
-
- Сообщения: 4
- Зарегистрирован: Чт авг 26, 2010 22:38
Поделитесь и со мной пропатченными файлами.
Я вроде все вручную поменял, но при попытке открыть 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 на яндексе.
заранее благодарю.
Я вроде все вручную поменял, но при попытке открыть 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 на яндексе.
заранее благодарю.