urfaclient на php

Вопросы по сопутствующим продуктам производства партнеров
Ответить
Kayfolom
Сообщения: 746
Зарегистрирован: Вс фев 12, 2006 17:15

Сообщение Kayfolom »

solomon писал(а):Скажите плиз вот функция в api.xml rpcf_add_service_to_user
в urfa-php есть функция rpcf_add_once_service_to_user
Есть у них отличия какие нить?
rpcf_add_once_service_to_user добавляет разовую услугу, а с помощью rpcf_add_service_to_user можно добавить любую.
Фактически rpcf_add_once_service_to_user упрощенный вариант функции rpcf_add_service_to_user

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

Сообщение solomon »

Но все же отличия есть в самом даже URFAClient_Admin
функция add_once_service_to_user с несколькими параметрами
а функция add_service_to_user с одним $service
Сегодня целый день мучал функции так и не привязал IP адрес для подсчета трафика Netflow потоком...
Завтра продолжу мучать

ЗЫ Если есть какие-то идеи... подскажите... если все тестирования получатся то выложу готовый проект Netup 5.0 + Freeradius 2(dynamic) + DHCP (python Option82) + URFAClient

Все отлажено в кольце кроме вот URFA, необходимо привязывать клиентам адреса для подсчета трафика и все...

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

Сообщение solomon »

Но все же отличия есть в самом даже URFAClient_Admin
функция add_once_service_to_user с несколькими параметрами
а функция add_service_to_user с одним $service
Сегодня целый день мучал функции так и не привязал IP адрес для подсчета трафика Netflow потоком...
Завтра продолжу мучать

ЗЫ Если есть какие-то идеи... подскажите... если все тестирования получатся то выложу готовый проект Netup 5.0 + Freeradius 2(dynamic) + DHCP (python Option82) + URFAClient

Все отлажено в кольце кроме вот URFA, необходимо привязывать клиентам адреса для подсчета трафика и все...

dk
Сообщения: 424
Зарегистрирован: Чт авг 10, 2006 08:52

Сообщение dk »

Много параметров было в первых версиях, сейчас как правило передаётся один хэш. Поля можно посмотреть в исходнике функции.

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

Сообщение solomon »

тесты сегодняшнего дня не привели ни к чему (((( бьюсь как рыба (((
помогите пожалуйста реализовать связку средствами URFA-PHP по схеме wingmana :
/etc/raddb/rad.pl -- это прилагаемый к поставке фрирадиуса example.pl с переделанной ф-ией accounting.
rad.pl:
Код:

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

use strict; 
use DBI; 

my $DBH = DBI->connect("DBI:mysql:database=UTM5;host=localhost", "xxx", "xxx"); 
$DBH->{mysql_auto_reconnect}=1; 
my $sth = ""; 
my $URFA_CALL = "/netup/utm5/bin/utm5_urfaclient "; 


..................... 
# Function to handle accounting 
sub accounting { 

        # Тут проверяется, не из диапазона ли реальных внешников выдан IP 
        if($RAD_REQUEST{'Acct-Status-Type'} eq 'Start' && not($RAD_REQUEST{'Framed-IP-Address'} =~ m/93.157.(xxx|yyy|zzz|zxc|cxz).[0-9]+/i) ) 
        { 
                my $fip = $RAD_REQUEST{'Framed-IP-Address'}; 
                my $uname = $RAD_REQUEST{'SQL-User-Name'}; 
                my $sessid = $RAD_REQUEST{'Acct-Session-Id'}; 

                # 1. Find ip-goup with this (dynamic) ip AND! empty login (just ensure it's dynamic) AND remove it 
                $sth = $DBH->prepare("SELECT ip_group_id FROM `ip_groups` where `ip`=inet_aton('$fip') AND uname='' AND is_deleted=0");
                $sth->execute; 
                if($sth->rows) 
                { 
                        while(my $ref = $sth->fetchrow_arrayref) 
                        { 
                                my $ipg_id = $$ref[0]; 
                                `$URFA_CALL -a iphome_delete_from_ipgroup -ip_group_id $ipg_id -ip_address "$fip"`; 
                        } 
                } 

                # 2. Find connected user info AND add this ip to hem: 
                $sth = $DBH->prepare("SELECT service_links.id as slink_id, service_links.service_id as service_id, 
                users.id as uid, accounts.id as aid, periodic_service_links.discount_period_id AS did 
                FROM ip_groups 
                INNER JOIN iptraffic_service_links isl ON isl.ip_group_id=ip_groups.ip_group_id 
                INNER JOIN service_links ON service_links.id=isl.id 
                INNER JOIN periodic_service_links ON periodic_service_links.id=service_links.id 
                INNER JOIN accounts ON accounts.id=service_links.account_id 
                INNER JOIN users ON users.basic_account=accounts.id 
                WHERE ip_groups.uname='$uname' AND ip_groups.is_deleted=0 
                AND isl.is_deleted=0 
                AND accounts.is_deleted=0 
                AND users.is_deleted=0"); 
                $sth->execute; 
                while(my $ref = $sth->fetchrow_arrayref) 
                { 
                        my $slink_id = $$ref[0]; 
                        my $service_id = $$ref[1]; 
                        my $uid = $$ref[2]; 
                        my $aid = $$ref[3]; 
                        my $did = $$ref[4]; 
                        `$URFA_CALL -a iphome_add_ip -user_id $uid -account_id $aid -slink_id $slink_id -service_id $service_id -ip_address "$fip" -discount_period_id $did`; 
                } 


        } 

        return RLM_MODULE_OK; 
} 

/netup//utm5/xml/iphome_delete_from_ipgroup.xml
Код:

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

<?xml version="1.0"?> 
<urfa> 
        <parameter name="ip_group_id"/> 
        <parameter name="ip_address"/> 
<call function="rpcf_delete_from_ipgroup_by_ipgroup"/> 
</urfa>



/netup//utm5/xml/iphome_add_ip.xml
Код:

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

<?xml version="1.0"?> 
<urfa> 
    <parameter name="user_id"/> 
    <parameter name="account_id"/> 
    <parameter name="slink_id"/> 
    <parameter name="service_id"/> 
    <parameter name="service_type" value="3"/> 
    <parameter name="discount_period_id"/> 
    <parameter name="ip_address"/> 
    <parameter name="ip_not_vpn" value="0"/> 
    <parameter name="mask" value="255.255.255.255"/> 
    <parameter name="return_type" value="integer_return"/> 
<call function="rpcf_add_service_to_user"/> 
</urfa> 

kara
Сообщения: 125
Зарегистрирован: Вс мар 21, 2010 21:02

Сообщение kara »

jamaikaoleg писал(а):Пытаюсь установить рудиус тарибут (чуть изменил функцию передачи радиус атрибутов,чтоб принимал не масив а переменные)

функция
function rpcf_set_radius_attr($sid,$st,$vendor,$attr,$param1) { //0x10100
$ret = array();
$cnt = 1;
if (!$this->connection->urfa_call(0x10100)) {
print "Error calling function ". __FUNCTION__ ."\n";
return FALSE;
}
$packet = $this->connection->getPacket();
$packet->DataSetInt($sid);
$packet->DataSetInt($st);
$packet->DataSetInt($cnt);
$packet->DataSetInt($vendor);
$packet->DataSetInt($attr);
$packet->DataSetInt($param1);
$packet->DataSetString($cval);

$this->connection->urfa_send_param($packet);
}


вызов функции print_r($urfa_admin->rpcf_set_radius_attr(1107,10000,0,11,123));
На основе этой функции пытаюсь выставить RADIUS-атрибут.

Строка вызова:
print_r($urfa_admin->rpcf_set_radius_attr(16,10000,0,11,123));
В логах такое:
?Debug : Mar 10 19:25:09 StreamManager: connection <30> created
Info : Mar 10 19:25:09 RPCConn<init@127.0.0.1>: Access granted to <init@127.0.0.1> (UID: -1)
?Debug : Mar 10 19:25:09 RPCConn<init@127.0.0.1>: Call: 0x10100 (rpcf_set_raduis_attr)
?Debug : Mar 10 19:25:09 RPCConn<init@127.0.0.1>: Real Call: 0x10100 (rpcf_set_raduis_attr)
?Debug : Mar 10 19:25:09 DBCtx: <148312584> SQL query: DELETE FROM radius_data WHERE owner_id='16' AND owner_type='10000'
ERROR : Mar 10 19:25:09 UTM5 DBA: unknown radius attribute type <-1>
?Debug : Mar 10 19:25:09 DBCtx: <148312584> SQL query: INSERT INTO radius_data(owner_id,owner_type,vendor,attr,attr_type,value) VALUES('16','10000','0','11','-1','')
?Debug : Mar 10 19:25:09 UTM5 DBA: Calling reread custom radius attributes for dialup slink
?Debug : Mar 10 19:25:09 DBCtx: <148312584> SQL SELECT query: SELECT id,vendor,attr,attr_type,value FROM radius_data WHERE owner_id='16' AND owner_type='10000'
ERROR : Mar 10 19:25:09 UTM5 DBA: Unknown radius data type <-1> id <135>
Подскажите, почему может быть такое?

Аватара пользователя
hRUst
Сообщения: 56
Зарегистрирован: Ср фев 22, 2006 13:16
Откуда: Канск

Сообщение hRUst »

$cval не объявлена?

kara
Сообщения: 125
Зарегистрирован: Вс мар 21, 2010 21:02

Сообщение kara »

Нет, впрочем, объявление ничего не меняет.

Аватара пользователя
hRUst
Сообщения: 56
Зарегистрирован: Ср фев 22, 2006 13:16
Откуда: Канск

Сообщение hRUst »

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

<if variable="param1" value="1" condition="eq">
          <string name="cval" array_index="i" />
        </if>
        <if variable="param1" value="1" condition="ne">
          <integer name="ival" array_index="i" />
Следовательно ставьте $param1=1 и в $cval принять значение 123.

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

Сообщение solomon »

Подскажите как можно привязать/отвязать пользователю ip адресс через urfa-php, если мне известны его user_id, account_id, slink_id, service_id и есть сам ip адрес?
Могу ли я с этими параметрами привязать адрес или нужны еще дополнительно?

duzer
Сообщения: 82
Зарегистрирован: Сб ноя 04, 2006 12:50

Сообщение duzer »

Да, для удаления function rpcf_delete_from_ipgroup($slink_id,$ip,$mask="255.255.255.255")
Для добавления/изменения function rpcf_add_service_to_user($service) требуется $service['discount_period_id']

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

Сообщение solomon »

Спасибо, буду делать...

Alexis
Сообщения: 7
Зарегистрирован: Пт мар 05, 2010 10:56

Сообщение Alexis »

Помогите плиз
Кто может поделиться функцией: rpcf_add_iptraffic_service_ex() //0x1304 на php ?

HighwayStar
Сообщения: 13
Зарегистрирован: Вт окт 18, 2011 15:12
Откуда: Россия

Сообщение HighwayStar »

У кого-нибудь работает текущая версия urfaclient php отсюда http://wiki.flintnet.ru/doku.php?id=urfaclient_php с php5.3?

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

 php --version
PHP 5.3.8 &#40;cli&#41;
Copyright &#40;c&#41; 1997-2011 The PHP Group
Zend Engine v2.3.0, Copyright &#40;c&#41; 1998-2011 Zend Technologie
у меня не работает ни одна функция из URFAClient_User5.php, с тем же сервером биллинга, но с использованием php 5.2 этот код работает.

при выполнении example.php получаю ошибку

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

Error calling function rpcf_user5_get_services
[/code]

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

Сообщение solomon »

Пытаюсь PHP скриптом смоделировать привязку ip адреса, но что то много ругается - скажите что не правильно делаю ? обязательно все параметры 0х2551 указывать ?

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

@ini_set&#40;"display_errors", "1"&#41;;
error_reporting&#40;E_ALL&#41;;

require_once&#40;"/netup/utm5/urfaphp/URFAClient.php"&#41;;

$UTMCore_Login='init';
$UTMCore_Password='Ld12turs#S';
$UTMCoreHost='172.16.2.15';
$UTMCorePort='11758';
$URFA_CALL = '/netup/utm5/urfaphp/';
try &#123;
        $urfa_user5 = new URFAClient_User5&#40;"test", "test",$UTMCoreHost,$UTMCorePort&#41;;
        $urfa_admin = new URFAClient_Admin&#40;$UTMCore_Login, $UTMCore_Password&#41;;
    &#125; catch &#40;Exception $exception&#41; 
        &#123; 
         echo "Error in line ", $exception->getLine&#40;&#41;;
         echo $exception->getMessage&#40;&#41;; 
        &#125; 
 //$URFA_CALL -a iphome_add_ip -user_id "108" -account_id "108" -slink_id "266" -service_id "151" -ip_address "172.18.6.3" -discount_period_id "61";
 //$urfa_admin -user_id "108" -account_id "108" -slink_id "266" -service_id "151" -ip_address "172.18.6.3" -discount_period_id "61";
//print_r&#40;$argv&#41;;
/*
$service = array&#40;&#41;;
$service&#91;'user_id'&#93; = $argv&#91;1&#93;;
echo $service&#91;'user_id'&#93;."\n";
$service&#91;'account_id'&#93; = $argv&#91;2&#93;;
echo $service&#91;'account_id'&#93;."\n";
$service&#91;'slink_id'&#93; = $argv&#91;3&#93;;
echo $service&#91;'slink_id'&#93;."\n";
$service&#91;'service_id'&#93; = $argv&#91;4&#93;;
echo $service&#91;'service_id'&#93;."\n";
$service&#91;'discount_period_id'&#93; = $argv&#91;5&#93;;
echo $service&#91;'discount_period_id'&#93;."\n";
$service&#91;'ip_address'&#93; = "$argv&#91;6&#93;";
echo $service&#91;'ip_address'&#93;."\n";
*/


$service = array&#40;&#41;;
$service&#91;'user_id'&#93; = 108;
echo $service&#91;'user_id'&#93;."\n";
$service&#91;'account_id'&#93; = 108;
echo $service&#91;'account_id'&#93;."\n";
$service&#91;'slink_id'&#93; = 693;
echo $service&#91;'slink_id'&#93;."\n";
$service&#91;'service_id'&#93; = 150;
$service&#91;'service_type'&#93; = 2;
echo $service&#91;'service_id'&#93;."\n";
$service&#91;'discount_period_id'&#93; = 61;
echo $service&#91;'discount_period_id'&#93;."\n";
$service&#91;'ip_groups'&#93;&#91;0&#93;&#91;'ip_address'&#93; = '172.18.6.3';
$service&#91;'ip_groups'&#93;&#91;0&#93;&#91;'mask'&#93; = '255.255.255.0';
$service&#91;'ip_groups'&#93;&#91;0&#93;&#91;'mac'&#93; = '';
$service&#91;'quotas'&#93;=array&#40;&#41;;
//$service&#91;'ip_groups'&#93;&#91;0&#93;&#91;'ip_address'&#93; = "172.18.6.3";
//echo $service&#91;'ip_address'&#93;."\n";
$service_to_user = $urfa_admin->rpcf_add_service_to_user&#40;$service&#41;;  //0x2551
//print_r&#40;$service_to_user&#41;;
print "<BR>****************************************<BR>";

echo "</pre>";
запускаю

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

php -f example_ipadd.php
выдает мне

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

&#91;root@solomon urfaphp&#93;# php -f example_ipadd.php 
108
108
693
150
61
PHP Notice&#58;  Undefined index&#58; return_type in /netup/utm5/urfaphp/URFAClient_Admin.php on line 918

Notice&#58; Undefined index&#58; return_type in /netup/utm5/urfaphp/URFAClient_Admin.php on line 918
PHP Notice&#58;  Undefined index&#58; tariff_link_id in /netup/utm5/urfaphp/URFAClient_Admin.php on line 919

Notice&#58; Undefined index&#58; tariff_link_id in /netup/utm5/urfaphp/URFAClient_Admin.php on line 919
PHP Notice&#58;  Undefined index&#58; is_blocked in /netup/utm5/urfaphp/URFAClient_Admin.php on line 926

Notice&#58; Undefined index&#58; is_blocked in /netup/utm5/urfaphp/URFAClient_Admin.php on line 926
PHP Notice&#58;  Undefined index&#58; start_date in /netup/utm5/urfaphp/URFAClient_Admin.php on line 928

Notice&#58; Undefined index&#58; start_date in /netup/utm5/urfaphp/URFAClient_Admin.php on line 928
PHP Notice&#58;  Undefined index&#58; expire_date in /netup/utm5/urfaphp/URFAClient_Admin.php on line 930

Notice&#58; Undefined index&#58; expire_date in /netup/utm5/urfaphp/URFAClient_Admin.php on line 930
PHP Notice&#58;  Undefined index&#58; unabon in /netup/utm5/urfaphp/URFAClient_Admin.php on line 932

Notice&#58; Undefined index&#58; unabon in /netup/utm5/urfaphp/URFAClient_Admin.php on line 932
PHP Notice&#58;  Undefined index&#58; unprepay in /netup/utm5/urfaphp/URFAClient_Admin.php on line 933

Notice&#58; Undefined index&#58; unprepay in /netup/utm5/urfaphp/URFAClient_Admin.php on line 933
<BR>****************************************<BR></pre>&#91;root@solomon urfaphp&#93;#

Ответить