URFAClient PHP на основе api.xml (UTM 5.2.1-008+, 5.3+)

Вопросы по сопутствующим продуктам производства партнеров
shym
Сообщения: 8
Зарегистрирован: Чт окт 09, 2014 13:14

URFAClient PHP на основе api.xml (UTM 5.2.1-008+, 5.3+)

Сообщение shym »

https://github.com/k-shym/URFAClient

Универсальный PHP клиент для биллинговой системы NetUp UTM5 на основе api.xml
  • Зависимости:
    UTM 5.2.1-008+
    PHP 5.3+
    Bcmath
    Filter
    Hash
    OpenSSL
    SimpleXML
P.S. Надеюсь, мои наработки будут для Вас полезны. :)

shym
Сообщения: 8
Зарегистрирован: Чт окт 09, 2014 13:14

Ошибка в api.xml UTM5.3-002-update16

Сообщение shym »

Ошибка в api.xml UTM5.3-002-update16, забыли изменить описание функции rpcf_user5_change_password_service. Изменили id и добавили login.

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

  
  <function name="rpcf_user5_change_password_service" id="-0x4302">
    <input>
      <integer name="slink_id" />
      <integer name="item_id" />
      <string name="login" />
      <string name="old_password" />
      <string name="new_password" />
      <string name="new_password_ret" />
    </input>
    <output>
      <integer name="status" />
    </output>
  </function>

valaykhal
Сообщения: 25
Зарегистрирован: Вт апр 19, 2011 23:02

Смена услуг средствами урфа

Сообщение valaykhal »

Скажите возмож ли поменя услуги абоненту средствами данного урфа клиента? Пример: абон вошел в личный кабинет. зашел в раздел IPTV и выбрал себе пакет тв, ему он добавился, прошло какое то время, чел вошел и выбрал другой пакет, старый пакет удалился. Возможно такое? управление в сервисных связках определенными услугами

shym
Сообщения: 8
Зарегистрирован: Чт окт 09, 2014 13:14

Re: Смена услуг средствами урфа

Сообщение shym »

valaykhal писал(а):Скажите возмож ли поменя услуги абоненту средствами данного урфа клиента? Пример: абон вошел в личный кабинет. зашел в раздел IPTV и выбрал себе пакет тв, ему он добавился, прошло какое то время, чел вошел и выбрал другой пакет, старый пакет удалился. Возможно такое? управление в сервисных связках определенными услугами
Да, вызывать можно любые функции. Выполните действия в ЛК и посмотрите в лог файле какие функции для этого используются.

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

Сообщение Cramac »

Что то не работает отчет по сессиям
<function name="rpcf_get_dhs_report" id="0x5019">

выдает какую то путаницу...

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

Array
&#40;
    &#91;dhs_log_size&#93; => Array
        &#40;
            &#91;0&#93; => Array
                &#40;
                    &#91;id&#93; => 6588597
                    &#91;account_id&#93; => 115
                    &#91;slink_id&#93; => 15631
                    &#91;recv_date&#93; => 1438403288
                    &#91;last_update_date&#93; => 1438413266
                    &#91;Called_Station_Id&#93; => 10.10.10.1
                    &#91;Calling_Station_Id&#93; => 10.10.7.14
                   &#91;b&#93; &#91;framed_ip4&#93; => 104.0.168.192&#91;/b&#93; наоборот
                    &#91;framed_ip6&#93; => &#58;&#58;
                    &#91;nas_port&#93; => 364
                    &#91;acct_session_id&#93; => 69688d7e6b128fb3
                    &#91;nas_port_type&#93; => 5
                    &#91;uname&#93; => user
                    &#91;service_type&#93; => 2
                    &#91;framed_protocol&#93; => 1
                    &#91;nas_ip&#93; => 67176970
                    &#91;nas_id&#93; => 10.10.10.1
                    &#91;acct_status_type&#93; => 2
                    &#91;acct_inp_pack&#93; => 22335.0000000
                    &#91;acct_inp_oct&#93; => 3571748.0000000
                    &#91;acct_inp_giga&#93; => 0.0000000
                    &#91;acct_out_pack&#93; => 29183.0000000
                    &#91;acct_out_oct&#93; => 25746045.0000000
                    &#91;acct_out_giga&#93; => 0.0000000
                    &#91;acct_sess_time&#93; => 9979.0000000
                    &#91;acct_term_cause&#93; => 0
                    &#91;total_cost&#93; => 
                &#41;

            &#91;1&#93; => Array
                &#40;
                    &#91;id&#93; => 0
                    &#91;account_id&#93; => 0
                    &#91;slink_id&#93; => 6593245
                    &#91;recv_date&#93; => 115
                    &#91;last_update_date&#93; => 15631
                    &#91;Called_Station_Id&#93; => U&#65533;&#948;
                    &#91;Calling_Station_Id&#93; => U&#65533;&#1930;
                    &#91;framed_ip4&#93; => 
                    &#91;framed_ip6&#93; => 
                    &#91;nas_port&#93; => 73924776
                    &#91;acct_session_id&#93; => 
                    &#91;nas_port_type&#93; => 232
                    &#91;uname&#93; => 69688d7e6b18c522
                    &#91;service_type&#93; => 5
                    &#91;framed_protocol&#93; => 1802464879
                    &#91;nas_ip&#93; => 2
                    &#91;nas_id&#93; => 
                    &#91;acct_status_type&#93; => 67176970
                    &#91;acct_inp_pack&#93; => 3544383695537189168.0000000
                    &#91;acct_inp_oct&#93; => 
                    &#91;acct_inp_giga&#93; => 37546.0000000
                    &#91;acct_out_pack&#93; => 6852331.0000000
                    &#91;acct_out_oct&#93; => 0.0000000
                    &#91;acct_out_giga&#93; => 47403.0000000
                    &#91;acct_sess_time&#93; => 42833182.0000000
                    &#91;acct_term_cause&#93; => 0
                    &#91;total_cost&#93; => 2.0039302595321E-320
                &#41;

            &#91;2&#93; => Array
                &#40;
                    &#91;id&#93; => 0
                    &#91;account_id&#93; => 0
                    &#91;slink_id&#93; => 0
                    &#91;recv_date&#93; => 0
                    &#91;last_update_date&#93; => 6594344
                    &#91;Called_Station_Id&#93; => s
                    &#91;Calling_Station_Id&#93; => =
                    &#91;framed_ip4&#93; => 
                    &#91;framed_ip6&#93; => 
                    &#91;nas_port&#93; => 825241137
                    &#91;acct_session_id&#93; => 10.10.7.14
                    &#91;nas_port_type&#93; => 73924776
                    &#91;uname&#93; => 
                    &#91;service_type&#93; => 230
                    &#91;framed_protocol&#93; => 909719096
                    &#91;nas_ip&#93; => 5
                    &#91;nas_id&#93; => konovalov
                    &#91;acct_status_type&#93; => 2
                    &#91;acct_inp_pack&#93; => 
                    &#91;acct_inp_oct&#93; => 
                    &#91;acct_inp_giga&#93; => 3544383695537189168.0000000
                    &#91;acct_out_pack&#93; => 
                    &#91;acct_out_oct&#93; => 122982.0000000
                    &#91;acct_out_giga&#93; => 19331435.0000000
                    &#91;acct_sess_time&#93; => 0.0000000
                    &#91;acct_term_cause&#93; => 0
                    &#91;total_cost&#93; => 6.9501214389355E-316
                &#41;

            &#91;3&#93; => Array
                &#40;
                    &#91;id&#93; => 0
                    &#91;account_id&#93; => 0
                    &#91;slink_id&#93; => 0
                    &#91;recv_date&#93; => 0
                    &#91;last_update_date&#93; => 0
                    &#91;Called_Station_Id&#93; => 
                    &#91;Calling_Station_Id&#93; => d&#65533;&#65533;
                    &#91;framed_ip4&#93; => 
                    &#91;framed_ip6&#93; => 
                    &#91;nas_port&#93; => 1438585017
                    &#91;acct_session_id&#93; => U&#65533;\&#65533;
                    &#91;nas_port_type&#93; => 825241137
                    &#91;uname&#93; => 10.10.7.14
                    &#91;service_type&#93; => 73924776
                    &#91;framed_protocol&#93; => 100663296
                    &#91;nas_ip&#93; => 29
                    &#91;nas_id&#93; => 69688d7e6b1e9e52
                    &#91;acct_status_type&#93; => 5
                    &#91;acct_inp_pack&#93; => 7741527709479693423.0000000
                    &#91;acct_inp_oct&#93; => 
                    &#91;acct_inp_giga&#93; => 
                    &#91;acct_out_pack&#93; => 
                    &#91;acct_out_oct&#93; => 3544383695537189168.0000000
                    &#91;acct_out_giga&#93; => 
                    &#91;acct_sess_time&#93; => 335961.0000000
                    &#91;acct_term_cause&#93; => 0
                    &#91;total_cost&#93; => 0
                &#41;
тоже самое в админке работает норм. После первой записи идет фигня. Похоже на смещение полей, как будто поля какого-то не хватает.

Посмотрел по смещению, не хватает двух полей каких то. Как определить какие?


UTM - 5.3-002

mrmix25
Сообщения: 104
Зарегистрирован: Вт июн 07, 2011 11:43

Сообщение mrmix25 »

в файле api.xml функция rpcf_get_dhs_report написана с ошибкой...
приведите её к этому виду и отчет заработает

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

<function name="rpcf_get_dhs_report" id="0x5019">
    <input>
      <integer name="user_id" />
      <integer name="account_id" />
      <integer name="apid" />
      <integer name="t_start" />
      <integer name="t_end" />
    </input>
    <output>
      <integer name="dhs_log_size" />
      <for name="i" from="0" count="dhs_log_size">
        <integer name="id" array_index="i" />
        <integer name="account_id" array_index="i" />
        <integer name="slink_id" array_index="i" />
        <integer name="recv_date" array_index="i" />
        <integer name="last_update_date" array_index="i" />
        <string name="Called_Station_Id" array_index="i" />
        <string name="Calling_Station_Id" array_index="i" />
        <ip_address name="framed_ip4" array_index="i" />
        <ip_address name="framed_ip6" array_index="i" />
        <integer name="nas_port" array_index="i" />
        <string name="acct_session_id" array_index="i" />
        <integer name="nas_port_type" array_index="i" />
        <string name="uname" array_index="i" />
        <integer name="service_type" array_index="i" />
        <integer name="framed_protocol" array_index="i" />
        <integer name="nas_ip" array_index="i" />
        <string name="nas_id" array_index="i" />
        <integer name="acct_status_type" array_index="i" />
        <long name="acct_inp_pack" array_index="i" />
        <long name="acct_inp_oct" array_index="i" />
        <long name="acct_inp_giga" array_index="i" />
        <long name="acct_out_pack" array_index="i" />
        <long name="acct_out_oct" array_index="i" />
        <long name="acct_out_giga" array_index="i" />
        <long name="acct_sess_time" array_index="i" />
        <integer name="acct_term_cause" array_index="i" />
        <double name="total_cost" array_index="i" />
        <integer name="tmp" array_index="i" />
        <integer name="online" array_index="i" />
      </for>
    </output>
  </function>

shym
Сообщения: 8
Зарегистрирован: Чт окт 09, 2014 13:14

Сообщение shym »

Ошибка в api.xml, функция rpcf_user5_set_next_tp, не указан первый параметр account_id:

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

  
  <function name="rpcf_user5_set_next_tp" id="-0x15006">
    <input>
      <integer name="account_id" />
      <integer name="tp_link" default="0"/>
      <integer name="tp_next" default="0"/>
    </input>
    <output>
      <integer name="result"/>
    </output>
  </function>

apathy_sidex
Сообщения: 14
Зарегистрирован: Ср июл 30, 2014 16:39

Сообщение apathy_sidex »

Помогите пожалуйста адаптировать эти функции к 5.3.002-up 18 я так понимаю Ваша урфа работает с 5.3.002 но я не нашел этих функции в API

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

try &#123;   $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;; 
      exit;&#125; 

foreach&#40;$payment_array as $key => $value&#41; &#123; 
   $payment_account = $key; 
   $payment_summa = $value&#91;'summa'&#93;; 
   $user_id = $value&#91;'user_id'&#93;; 

   $loyalty = get_loyalty&#40;$payment_account,$loyalty_config&#41;; 

   $bonus_summa = $payment_summa*$loyalty; 
   $str_log = "Лояльность &#58; ".&#40;$loyalty * 100&#41;."%, Аккаунт ".$payment_account.", User_ID=".$user_id." , Платеж = ".$payment_summa."р."." , Бонус = ".$bonus_summa."р."; 
  if &#40;$loyalty<>0&#41; &#123; 
      $urfa_admin->rpcf_add_once_service_new&#40;0, 0, $ServiceID, 'Бонус лояльности', '', 0, -$bonus_summa, 0&#41;; //0x2116 
      sleep&#40;1&#41;; 
      $urfa_admin->rpcf_add_once_service_to_user&#40;$user_id,$payment_account,$ServiceID,0,0,time&#40;&#41;,1,0&#41;; //0x2555 
      sleep&#40;1&#41;; 
   &#125; 

shym
Сообщения: 8
Зарегистрирован: Чт окт 09, 2014 13:14

Сообщение shym »

apathy_sidex писал(а):Помогите пожалуйста адаптировать эти функции к 5.3.002-up 18 я так понимаю Ваша урфа работает с 5.3.002 но я не нашел этих функции в API
Данная урфа работает с версии 5.2 (UTM 5.2.1-008+)
Ваша проблема в том, что функции rpcf_add_once_service_to_user в 5.3.002 уже нет. Вам нужно использовать функцию rpcf_add_once_slink_ex.

В версии URFAClient 1.1.0, появилась возможность получить описание функции (см. README.md):

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

&#91;shym@shym URFAClient&#93;$ php cmd.php -f rpcf_add_once_service_new
array &#40;
  'parent_id' => 0,
  'tariff_id' => 0,
  'service_id' => 0,
  'service_name' => '',
  'comment' => '',
  'link_by_default' => 0,
  'cost' => 0,
  'drop_from_group' => 0,
&#41;

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

&#91;shym@shym URFAClient&#93;$ php cmd.php -f rpcf_add_once_slink_ex
array &#40;
  'user_id' => 0,
  'account_id' => 0,
  'service_id' => 0,
  'tariff_link_id' => 0,
  'discount_date' => 0,
  'cost_coef' => 0,
&#41;

lovestocode
Сообщения: 8
Зарегистрирован: Вт дек 01, 2015 14:12

Сообщение lovestocode »

Прошу помощи:
Вводные:
UTM версия ядра 5.3
используемое Апи xml 5.3 002
Задача:
Сменить Мак юзера ничего больше при этом не меняя.
Метод решения:
1) удаляем через rpcf_remove_ip_from_slink
2) добавляем через rpcf_add_ip_to_slink
Проблемма:
Ничего не происходит (ни удаления, ни добавления), все данные которые я вношу в методы правильные, пробовал и руками вводить, все тоже самое.

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

//Deleting ipgroup
$report = $this->urfa->rpcf_remove_ip_from_slink&#40;Array&#40;
   "slink_id" => $service_new&#91;'slink_id'&#93;,
   "ip" => long2ip&#40;$service_new&#91;'ip_address'&#93;&#41;,
   "mask" => $service_new&#91;'mask'&#93;,
   "login" => $service_new&#91;'iptraffic_login'&#93;,
   "mac" => $service_new&#91;'mac'&#93;
&#41;&#41;;
 echo "<br \>" . var_dump&#40;$report&#41; . "<br \>";
//Adding service for user with different Mac rest stays the same
$report = $this->urfa->rpcf_add_ip_to_slink&#40; Array&#40;
   "slink_id" => $service_new&#91;'slink_id'&#93;,
   "ip" => long2ip&#40;$service_new&#91;'ip_address'&#93;&#41;,
   "mask" => $service_new&#91;'mask'&#93;,
   "mac" => $mac
&#41;&#41;; 
echo "<br \>" . var_dump&#40;$report&#41; . "<br \>";
var_dump результатов и дебаг от php:

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

<!--Для rpcf_remove_ip_from_slink-->
Notice&#58; Undefined offset&#58; 0 in /usr/local/www/apache24/data/userside/urfa/lib/URFAClient/classes/URFAClient/Packet.php on line 95

Warning&#58; unpack&#40;&#41;&#58; Type N&#58; not enough input, need 4, have 0 in /usr/local/www/apache24/data/userside/urfa/lib/URFAClient/classes/URFAClient/Packet.php on line 275

Notice&#58; Undefined offset&#58; 1 in /usr/local/www/apache24/data/userside/urfa/lib/URFAClient/classes/URFAClient/Packet.php on line 139
array&#40;2&#41; &#123; &#91;"result"&#93;=> NULL &#91;"err_desc"&#93;=> string&#40;0&#41; "" &#125;

<!--Для rpcf_add_ip_to_slink-->
Notice&#58; Undefined offset&#58; 0 in /usr/local/www/apache24/data/userside/urfa/lib/URFAClient/classes/URFAClient/Packet.php on line 95

Warning&#58; unpack&#40;&#41;&#58; Type N&#58; not enough input, need 4, have 0 in /usr/local/www/apache24/data/userside/urfa/lib/URFAClient/classes/URFAClient/Packet.php on line 275

Notice&#58; Undefined offset&#58; 1 in /usr/local/www/apache24/data/userside/urfa/lib/URFAClient/classes/URFAClient/Packet.php on line 139
array&#40;2&#41; &#123; &#91;"result"&#93;=> NULL &#91;"err_desc"&#93;=> string&#40;0&#41; "" &#125; 
По этой информации мне понятно только то, что ничего не происходит поэтому в результат ничего и не пишется. Я бьюсь над этим уже не первый день, поэтому решил написать. Может быть в 5.3 002 есть другой метод решения поставленной задачи? или же я что-то не так делаю.

Заранее спасибо за ответ.

lovestocode
Сообщения: 8
Зарегистрирован: Вт дек 01, 2015 14:12

Сообщение lovestocode »

Все спасибо, на будущее, решение проблемы было в просто заюзать rpcf_edit_ip_slink_ex

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

Сообщение Cramac »

Приветствую.
Подскажите, делаю переход с 005 на 5.3
с урфы утм на пхп урфу.
вопрос.
делаю блокировку пользователя, вроде правильно
$accinfo = $urfa->rpcf_get_accountinfo(array('account_id' => '4',));
$accinfo["is_blocked"]= '256';
$accinfo["account_id"]= '4';
$accinfo["int_status"]= "1";


$all_service = $urfa->rpcf_save_account($accinfo);

срабатывает как то через раз или с задержкой, не могу понять.

И еще вопрос, раньше было
rpcf_delete_from_ipgroup
что сейчас?
Суть вопроса - как сменить логин и пароль в сервисной связке.
На 5,3 оно вроде идет через rpcf_edit_iptraffic_service_link_ipv6
может кто подсобит примером?

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

Сообщение Cramac »

пробую сделать смену логина и пароля в утм 5,3
Выполняю такие действия:

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

$service_new&#91;'slink_id'&#93; = "11736"; 
$all_service = $urfa->rpcf_get_iptraffic_service_link_ipv6&#40;$service_new&#41;;
$all_service&#91;"ip_groups_count"&#93;&#91;0&#93;&#91;"iptraffic_login"&#93;="172.30.49.40";
$all_service&#91;"ip_groups_count"&#93;&#91;0&#93;&#91;"iptraffic_password"&#93;="172.30.49.40";
$services_tariff = $urfa->rpcf_edit_iptraffic_service_link_ipv6&#40;$all_service&#41;;
print_r&#40;URFAClient&#58;&#58;trace_log&#40;&#41;&#41;;
в итоге получаю такую ошибку:
[1] => 2016.05.23 14:46:20 ERROR: rpcf_edit_iptraffic_service_link_ipv6( Array ( [tariff_link_id] => 1741 [is_blocked] => 0 [discount_period_id] => 2171 [start_date] => 1392148800 [expire_date] => 2130706431 [policy_id] => 1 [cost_coef] => 1 [unabon] => 0 [unprepay] => 0 [tariff_id] => 73 [parent_id] => 2 [bandwidth_in] => 0 [bandwidth_out] => 0 [ip_groups_count] => Array ( [0] => Array ( [ip_address] => 192.168.0.10 [mask] => 32 [mac] => [iptraffic_login] => 172.30.49.40 [iptraffic_password] => 172.30.49.40 [iptraffic_allowed_cid] => [pool_name] => [ip_not_vpn] => 0 [dont_use_fw] => 0 [is_dynamic] => 0 [router_id] => 0 [switch_id] => 0 [port_id] => 0 [vlan_id] => 0 [pool_id] => 0 ) ) [quotas_count] => Array ( [0] => Array ( [tclass_id] => 0 [tclass_name] => Unknown [quota] => 0.0000000 ) [1] => Array ( [tclass_id] => 10 [tclass_name] => Входящий [quota] => 0.0000000 ) [2] => Array ( [tclass_id] => 20 [tclass_name] => Исходящий [quota] => 0.0000000 ) [3] => Array ( [tclass_id] => 30 [tclass_name] => локальный [quota] => 0.0000000 ) ) ) ): Not implemented for PHP x32
UPD.
Отработала такая схема:
$service_new['slink_id'] = "11736";

$all_service = $urfa->rpcf_get_iptraffic_service_link_ipv6($service_new);
$all_service['slink_id'] = "11736";
$all_service["ip_groups_count"][0]["iptraffic_login"]="172.30.49.40";
$all_service["ip_groups_count"][0]["iptraffic_password"]="172.30.49.40";
unset($all_service["quotas_count"]);
$services_tariff = $urfa->rpcf_edit_iptraffic_service_link_ipv6($all_service);

print_r(URFAClient::trace_log());

tshadrin
Сообщения: 43
Зарегистрирован: Пт фев 25, 2011 17:10

Сообщение tshadrin »

Криво работает поиск юзеров, конкретно отображение информации во вложенных циклах. Матерится на строку 318.

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

Notice&#58; Undefined index&#58; j 

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


                        if &#40; ! isset&#40;$sibling&#91;0&#93;&#41;&#41; throw new Exception&#40;'Not provided an error, contact the developer &#40;' . __FUNCTION__ . '&#41;'&#41;;
                        $name = &#40;string&#41; $sibling&#91;0&#93;->attributes&#40;&#41;->&#123;'name'&#125;;
                        $count = &#40;int&#41; $result&#91;$name&#93;;
                        $array = array&#40;&#41;;
                        for &#40;$i=0; $i<$count; $i++&#41; $array&#91;&#93; = $this->_proccess_data_output&#40;$node, $packet&#41;;

[/code]

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

Сообщение Cramac »

Приветствую.
Не нашел в api вот такой функции 0x1200c для турбо режима. Не подскажите есть у кого?

Ответить