urfaclient на php

Вопросы по сопутствующим продуктам производства партнеров
Ответить
mikkey finn
Сообщения: 1612
Зарегистрирован: Пт ноя 10, 2006 15:23

Сообщение mikkey finn »

ds писал(а):
mikkey finn писал(а):что-то я не понял.
Кто мне расскажет, что я делаю не так?
Хочу использовать rpcf_get_ipgroup
Вызываю:
$ipg=$urfa_admin->rpcf_get_ipgroup(2814);
работает.
$ipg=$urfa_admin->rpcf_get_ipgroup($ipg_id);
не работает.
Error calling function rpcf_add_to_ipgroup
Можешь выложить код всех этих функций? + rpcf_get_free_ips_for_house, я посмотрю что не так. и еще urfa_get_data
Это решил, надо сделать перелогин и все начинает работать.

Аватара пользователя
mmv software
Сообщения: 8
Зарегистрирован: Вс фев 22, 2009 12:38

Сообщение mmv software »

Кто знает, как правильно пользоваться функцией rpcf_user5_traffic_report_detail" id="-0x4031", я её вызываю с теми же аргументами, что и при вызове функции rpcf_user5_traffic_report" id="-0x4009", но сервер присылает пустой массив данных.

mikkey finn
Сообщения: 1612
Зарегистрирован: Пт ноя 10, 2006 15:23

Сообщение mikkey finn »

api.xml открой, там все функции расписаны. Как ввод(параметры) так и результат.

mikkey finn
Сообщения: 1612
Зарегистрирован: Пт ноя 10, 2006 15:23

Сообщение mikkey finn »

Я так понял, что для добавления квот в передаче трафика надо функцию DataSetLong(). Вот только в том, что у меня имеется - отсутствует такая функция, только DataGetLong.
ds, у Вас в планах нет реализации этой функции?

Systemnick
Сообщения: 14
Зарегистрирован: Пт янв 30, 2009 16:10
Откуда: Россия

DataSetLong

Сообщение Systemnick »

Очевидно, она будет выглядеть так:

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

    function DataSetLong($param1,$param2)
    {
		$this->data[] = pack("N2", $param1, $param2);
		$this->len += 12;
    }
Только вот с вызовом проблемно... нужно передавать верхнюю и нижнюю часть по отдельности.

mikkey finn
Сообщения: 1612
Зарегистрирован: Пт ноя 10, 2006 15:23

Сообщение mikkey finn »

хорошо, как выделить эти части? гугль с наскока молчит аки партизан.
Я правильно понимаю, что верхняя часть - это количество повторений (2^31)-1 в числе?

Systemnick
Сообщения: 14
Зарегистрирован: Пт янв 30, 2009 16:10
Откуда: Россия

Сообщение Systemnick »

mikkey finn писал(а):хорошо, как выделить эти части? гугль с наскока молчит аки партизан.
Я правильно понимаю, что верхняя часть - это количество повторений (2^31)-1 в числе?
В одном параметре нельзя передавать число более 2^32 = 4294967296 (4 гигабайта), то есть всё число, которое нужно передать делим на 2^32, результат передаём в $param1, остаток - в $param2.

Пример. Нужно сделать квоту размером в 8 гигабайт и один байт (8589934593 байт).
8589934593 делим нацело (откидываем остаток) на 2^32 = 2.
Остаток от деления 8589934593 на 2^32 = 1.
Ответ: DataSetLong(2,1).

kf72
Сообщения: 1
Зарегистрирован: Вс мар 22, 2009 06:07

Сообщение kf72 »

Здравствуйте! дайте ссылочку на наработки или киньте плиз на kf72(s)yandex.ru.

раньше использовал ТИ - там саппорт прям в форуме помогает.

Аватара пользователя
mmv software
Сообщения: 8
Зарегистрирован: Вс фев 22, 2009 12:38

Сообщение mmv software »

api.xml открой, там все функции расписаны. Как ввод(параметры) так и результат.
Понятно, но у меня нет этого файла. Я писал на .NET только по исходным кодам urfaphp на PHP и материалов на сайте по этой ссылке, но, к сожалению там не все функции документированы.
Буду очень признателен, если кто пришлёт мне на адрес электронной почты mmvsoftware@mail.ru файл “api.xml”.

Systemnick
Сообщения: 14
Зарегистрирован: Пт янв 30, 2009 16:10
Откуда: Россия

Сообщение Systemnick »

Отправил. Но не понятно, если у тебя нет этого файла, значит у тебя нет самой UTM? :)

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

Re: DataSetLong

Сообщение ds »

Systemnick писал(а):Очевидно, она будет выглядеть так:

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

    function DataSetLong($param1,$param2)
    {
		$this->data[] = pack("N2", $param1, $param2);
		$this->len += 12;
    }
Только вот с вызовом проблемно... нужно передавать верхнюю и нижнюю часть по отдельности.
Не совсем так. С наскока не получилось сделать, вечером попробую сообразить.

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

Сообщение ds »

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

    function DataSetLong($param)
    {

              $hi = base_convert(bcdiv($param,4294967296),10,16);
              $lo = base_convert(bcmod($param,4294967296),10,16);
              $this->data[] = pack('H*', $hi.$lo);
              $this->len += 12;
    }

Проверяйте

hcube
Сообщения: 14
Зарегистрирован: Вт фев 10, 2009 16:33

Сообщение hcube »

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

function rpcf_del_user_contact($id) { //0x2023 
    $ret=array(); 
    if (!$this->connection->urfa_call(0x2023)) { 
          print "Error calling function ". __FUNCTION__ ."\n"; 
          return FALSE; 
    } 

    $packet = $this->connection->getPacket(); 

    $packet->DataSetInt($id); 
    $this->connection->urfa_send_param($packet); 
    $this->connection->urfa_get_data(); 
    return $ret; 
}


function rpcf_put_user_contact($id,$user_id,$person,$descr,$contact,$email,$email_notify,$short_name,$birthday,$id_exec_man) { //0x2022 
    $ret=array(); 
    if (!$this->connection->urfa_call(0x2022)) { 
          print "Error calling function ". __FUNCTION__ ."\n"; 
          return FALSE; 
    } 

    $packet = $this->connection->getPacket(); 

    $packet->DataSetInt($id); 
    $packet->DataSetInt($user_id); 
    $packet->DataSetString($person); 
    $packet->DataSetString($descr); 
    $packet->DataSetString($contact); 
    $packet->DataSetString($email); 
    $packet->DataSetInt($email_notify); 
    $packet->DataSetString($short_name); 
    $packet->DataSetString($birthday); 
    $packet->DataSetString($id_exec_man); 

    $this->connection->urfa_send_param($packet); 
    // $this->connection->urfa_get_data(); 
    return $ret; 
}

function rpcf_get_user_contact($user_id) { //0x2021 
    $ret=array(); 
    if (!$this->connection->urfa_call(0x2021)) { 
          print "Error calling function ". __FUNCTION__ ."\n"; 
          return FALSE; 
    } 

    	$packet = $this->connection->getPacket(); 

  	$packet->DataSetInt($user_id);
	$this->connection->urfa_send_param($packet);
	if($x = $this->connection->urfa_get_data())
	{
		$ret['size'] = $x->DataGetInt();
		for &#40;$i=0;$i<$ret&#91;'size'&#93;;$i++&#41; 
		&#123;
			$x = $this->connection->urfa_get_data&#40;&#41;;
			$temp&#91;'id'&#93; = $x->DataGetInt&#40;&#41;;
			$temp&#91;'person'&#93; = $x->DataGetString&#40;&#41;;
			$temp&#91;'descr'&#93; = $x->DataGetString&#40;&#41;;
			$temp&#91;'contact'&#93; = $x->DataGetString&#40;&#41;;
			$temp&#91;'email'&#93; = $x->DataGetString&#40;&#41;;
			$temp&#91;'email_notify'&#93; = $x->DataGetInt&#40;&#41;;
			$temp&#91;'short_name'&#93; = $x->DataGetString&#40;&#41;;
			$temp&#91;'birthday'&#93; = $x->DataGetString&#40;&#41;;
			$temp&#91;'id_exec_man'&#93;=$x->DataGetInt&#40;&#41;;
			$ret&#91;&#93; = $temp;
		&#125;
	&#125;
	$this->connection->urfa_get_data&#40;&#41;; 
	return $ret; 
&#125;
Написал еще три функции. Get И Del работают, а вот Put - не работает, несмотря на то, что поле пустое (предварительно зачищенно del'ом, либо создается с другим ID). Кто проверит? ;-)

Аватара пользователя
mmv software
Сообщения: 8
Зарегистрирован: Вс фев 22, 2009 12:38

Сообщение mmv software »

Отправил. Но не понятно, если у тебя нет этого файла, значит у тебя нет самой UTM?
Спасибо огромное за файлик. Очень помог. Да у меня нет UTM, я пишу утилиту замену UTM wintray, а то он довольно кривовато сделан. Подробности можно узнать на нашем форуме. Пока проект на ранней стадии, написано ядро и немного окружения.

mikkey finn
Сообщения: 1612
Зарегистрирован: Пт ноя 10, 2006 15:23

Сообщение mikkey finn »

ds писал(а):

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

    function DataSetLong&#40;$param&#41;
    &#123;

              $hi = base_convert&#40;bcdiv&#40;$param,4294967296&#41;,10,16&#41;;
              $lo = base_convert&#40;bcmod&#40;$param,4294967296&#41;,10,16&#41;;
              $this->data&#91;&#93; = pack&#40;'H*', $hi.$lo&#41;;
              $this->len += 12;
    &#125;

Проверяйте
я вообще квотами не пользуюсь, а вообще добавление сервисов заработало в части добавления Ip-traffic
Спасибо

Ответить