urfa client. Добавление тарифов

Технические вопросы по UTM 5.0
Ответить
andrew.rbe
Сообщения: 36
Зарегистрирован: Ср фев 10, 2010 14:05

urfa client. Добавление тарифов

Сообщение andrew.rbe »

Делаю добавление тарифа в самописной админке. Все тарифы у нас включают 2 услуги - ip трафик и периодическую. Осталось доделать привязку ip трафика на тариф.
Есть такой xml файл:

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

<?xml version="1.0"?>
<urfa>
    <call function="rpcf_add_service_to_tariff" >
    <parameter name="tariff_id" value="400"/>
    <parameter name="parent_id" value="137"/>
    <parameter name="service_name" value="test"/>
    <parameter name="service_type" value="3"/>
    <parameter name="comment" value="test"/>
    <parameter name="link_by_default" value="1" />
    <parameter name="is_dynamic" value="0"/>
    <parameter name="cost" value="0"/>
    <parameter name="periodic_type" value="1"/>
    <parameter name="discount_method" value="1"/>
    <parameter name="start_date" value="now&#40;&#41;"/>
    <parameter name="expire_date" value="max_time&#40;&#41;"/>
    <parameter name="null_service_prepaid" value="0"/>
    <!-- array of borders -->
    <parameter name="tclass_b" />
    <parameter name="size_b" />
    <parameter name="cost_b" />
    </call>
</urfa>
Вызывается так:

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

/netup/utm5/bin/utm5_urfaclient -h "" -p 11758  -l "" -P "" -x /netup/utm5/xml/ -a add_tariff1  -tclass_b 104 -size_b 400 -cost_b 0 -tclass_b 104 -size_b 0 -cost_b 1  -debug
Получаем:

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

 Notice&#58; Oct 29 14&#58;45&#58;51 UTM5 Config&#58; Processing config file&#58; /netup/utm5/utm5_urfaclient.cfg
Processing action&#58; add_tariff1
<call> tag&#58; rpcf_add_service_to_tariff
Processing call rpcf_add_service_to_tariff
URFA Call&#58; 0x3014
  comment=>'test'; 
  cost=>'0'; 
  cost_b=>'0'; '1'; 
  discount_method=>'1'; 
  expire_date=>'max_time&#40;&#41;'; 
  is_dynamic=>'0'; 
  link_by_default=>'1'; 
  null_service_prepaid=>'0'; 
  parent_id=>'137'; 
  periodic_type=>'1'; 
  service_name=>'test'; 
  service_type=>'3'; 
  size_b=>'400'; '0'; 
  start_date=>'now&#40;&#41;'; 
  tariff_id=>'400'; 
  tclass_b=>'104'; '104'; 
process_input start
INDEXES &#40;0&#41; &#58; 0 

get_var_value&#58; curr index 0 var.list.size 0 var.size 1
Passing int <tariff_id> value <400>
INDEXES &#40;0&#41; &#58; 0 

get_var_value&#58; curr index 0 var.list.size 0 var.size 1
Passing int <parent_id> value <137>
INDEXES &#40;0&#41; &#58; 0 

get_var_value&#58; curr index 0 var.list.size 0 var.size 1
Passing string <service_name> value <test>
INDEXES &#40;0&#41; &#58; 0 

get_var_value&#58; curr index 0 var.list.size 0 var.size 1
Passing int <service_type> value <3>
INDEXES &#40;0&#41; &#58; 0 

get_var_value&#58; curr index 0 var.list.size 0 var.size 1
Passing string <comment> value <test>
INDEXES &#40;0&#41; &#58; 0 

get_var_value&#58; curr index 0 var.list.size 0 var.size 1
Passing int <link_by_default> value <1>
INDEXES &#40;0&#41; &#58; 0 

get_var_value&#58; curr index 0 var.list.size 0 var.size 1
Passing int <is_dynamic> value <0>
process_input start
INDEXES &#40;0&#41; &#58; 0 

get_var_value&#58; curr index 0 var.list.size 0 var.size 1
Passing double <cost> value <0>
INDEXES &#40;0&#41; &#58; 0 

get_var_value&#58; curr index 0 var.list.size 0 var.size 1
Passing int <periodic_type> value <1>
INDEXES &#40;0&#41; &#58; 0 

get_var_value&#58; curr index 0 var.list.size 0 var.size 1
Passing int <discount_method> value <1>
INDEXES &#40;0&#41; &#58; 0 

get_var_value&#58; curr index 0 var.list.size 0 var.size 1
Passing int <start_date> value <0>
INDEXES &#40;0&#41; &#58; 0 

get_var_value&#58; curr index 0 var.list.size 0 var.size 1
Passing int <expire_date> value <0>
INDEXES &#40;0&#41; &#58; 0 

get_var_value&#58; curr index 0 var.list.size 0 var.size 1
Passing int <null_service_prepaid> value <0>
expression&#58; size&#40;tlass_b&#41; var&#58; tlass_b indexes&#58; 
FAILED TO PARSE INDEXES&#58; 
get_expression_value&#58; size&#58; variable not foubnd&#58; tlass_b
Passing int <number_of_borders> value <0>
input loop begin
expression&#58; size&#40;tlass_b&#41; var&#58; tlass_b indexes&#58; 
FAILED TO PARSE INDEXES&#58; 
get_expression_value&#58; size&#58; variable not foubnd&#58; tlass_b
from <0> count <0> counter <i>
input loop end
expression&#58; size&#40;tclass_p&#41; var&#58; tclass_p indexes&#58; 
FAILED TO PARSE INDEXES&#58; 
get_expression_value&#58; size&#58; variable not foubnd&#58; tclass_p
Passing int <number_of_prepaid> value <0>
input loop begin
expression&#58; size&#40;tclass_p&#41; var&#58; tclass_p indexes&#58; 
FAILED TO PARSE INDEXES&#58; 
get_expression_value&#58; size&#58; variable not foubnd&#58; tclass_p
from <0> count <0> counter <i>
input loop end
expression&#58; size&#40;tcid&#41; var&#58; tcid indexes&#58; 
FAILED TO PARSE INDEXES&#58; 
get_expression_value&#58; size&#58; variable not foubnd&#58; tcid
Passing int <number_of_groups> value <0>
input loop begin
expression&#58; size&#40;tcid&#41; var&#58; tcid indexes&#58; 
FAILED TO PARSE INDEXES&#58; 
get_expression_value&#58; size&#58; variable not foubnd&#58; tcid
from <0> count <0> counter <i>
input loop end
process_input end
process_input end
<?xml version="1.0"?>
<urfa>
  <session key="efb3ca4cc4b9d269317d1c1b1d94c891"/>
  <call function="rpcf_add_service_to_tariff">
    <output/>
  </call>
</urfa>
Услуга добавляется, но границ тарификации нет :(.
Добавляем еще одну переменную в xml файл:

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

........................................
<!-- array of borders -->
    <parameter name="number_of_borders" />
    <parameter name="tclass_b" />
    <parameter name="size_b" />
    <parameter name="cost_b" />
...................
и получаем зависание урфа клиента, услуга не привязываеться:

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

?Debug &#58; Oct 29 14&#58;49&#58;34 RPCConn<@>&#58; Call&#58; 0x00a2 &#40;urfaclient-call&#41;
?Debug &#58; Oct 29 14&#58;49&#58;34 RPCConn<@>&#58; Real Call&#58; 0x00a2 &#40;urfaclient-call&#41;
?Debug &#58; Oct 29 14&#58;49&#58;34 RPCConn<@>&#58; Call 0x00a2 &#40;urfaclient-call&#41; finished...
?Debug &#58; Oct 29 14&#58;49&#58;34 RPCConn<@>&#58; Stream cleared
?Debug &#58; Oct 29 14&#58;49&#58;34 RPCConn<@>&#58; Call&#58; 0x3014 &#40;rpcf_add_service_to_tariff&#41;
?Debug &#58; Oct 29 14&#58;49&#58;34 RPCConn<@>&#58; Real Call&#58; 0x3014 &#40;rpcf_add_service_to_tariff&#41;
---------------тут мы нажали ctrl+c----------------------------------------

?Debug &#58; Oct 29 14&#58;50&#58;34 RPCConn<@>&#58; Call 0x3014 &#40;rpcf_add_service_to_tariff&#41; finished...
?Debug &#58; Oct 29 14&#58;50&#58;34 RPCConn<@>&#58; Stream cleared
 Warn  &#58; Oct 29 14&#58;50&#58;34 RPCConn<@>&#58; Session closed
?Debug &#58; Oct 29 14&#58;50&#58;34 RPCConn<@>&#58; Session stored for UID -30 from <192.168.119.1>
?Debug &#58; Oct 29 14&#58;50&#58;34 RPCConn<@>&#58; Session closed...
В маин лог:

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

ERROR &#58; Oct 29 14&#58;54&#58;51 RPCServer@0.0.0.0&#58; Exception in rpcf_add_service_to_tariff&#58; #22
Кто знает из-за чего такое может происходить ? Причем это не относиться к предоплаченному трафику, с ним все нормально, он добавляется в тариф как надо.

littlesavage
Сообщения: 120
Зарегистрирован: Вс ноя 22, 2009 02:41
Откуда: Чебоксары

Сообщение littlesavage »

Исправь в api.xml оперделение функции rpcf_add_service_to_tariff: там параметр tclass_b назван tlass_b, имеются незакрытые скобки в вызовах функций.

Вот примерный дифф:

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

--- api.xml.orig        2010-08-29 16&#58;22&#58;27.000000000 +0400
+++ api.xml     2010-08-29 16&#58;42&#58;51.000000000 +0400
@@ -2464,29 +2464,29 @@
         <double name="cost" />
         <integer name="periodic_type" />
         <integer name="discount_method" />
-        <integer name="start_date" />
-        <integer name="expire_date" />
+        <integer name="start_date" default="now&#40;&#41;" />
+        <integer name="expire_date" default="max_time&#40;&#41;" />
       </if>
       <if variable="service_type" value="3" condition="eq" comment="iptraffic">
         <double name="cost" />
         <integer name="periodic_type" />
         <integer name="discount_method" />
-        <integer name="start_date" />
-        <integer name="expire_date" />
+        <integer name="start_date" default="now&#40;&#41;" />
+        <integer name="expire_date" default="max_time&#40;&#41;" />
         <integer name="null_service_prepaid" />
-        <integer name="number_of_borders" default="size&#40;tlass_b&#41;"/>
-        <for name="i" from="0" count="size&#40;tlass_b">
+        <integer name="number_of_borders" default="size&#40;tclass_b&#41;"/>
+        <for name="i" from="0" count="size&#40;tclass_b&#41;">
           <integer name="tclass_b" array_index="i"/>
           <long name="size_b" array_index="i"/>
           <double name="cost_b" array_index="i"/>
         </for>
         <integer name="number_of_prepaid" default="size&#40;tclass_p&#41;"/>
-        <for name="i" from="0" count="size&#40;tclass_p">
+        <for name="i" from="0" count="size&#40;tclass_p&#41;">
           <integer name="tclass_p" array_index="i"/>
           <long name="size_p" array_index="i"/>
         </for>
         <integer name="number_of_groups" default="size&#40;tcid&#41;"/>
-        <for name="i" from="0" count="size&#40;tcid">
+        <for name="i" from="0" count="size&#40;tcid&#41;">
           <integer name="tcid" array_index="i"/>
           <integer name="gid" array_index="i"/>
         </for>
@@ -2495,11 +2495,11 @@
         <double name="cost" />
         <integer name="periodic_type" />
         <integer name="discount_method" />
-        <integer name="start_date" />
-        <integer name="expire_date" />
+        <integer name="start_date" default="now&#40;&#41;" />
+        <integer name="expire_date" default="max_time&#40;&#41;" />
         <integer name="null_service_prepaid" />
         <integer name="count1" default="size&#40;cost&#41;"/>
-        <for name="i" from="0" count="size&#40;cost">
+        <for name="i" from="0" count="size&#40;cost&#41;">
           <double name="cost" array_index="i"/>
           <integer name="id" array_index="i"/>
         </for>
@@ -2513,8 +2513,8 @@
         <double name="cost" />
         <integer name="periodic_type" />
         <integer name="discount_method" />
-        <integer name="start_date" />
-        <integer name="expire_date" />
+        <integer name="start_date" default="now&#40;&#41;" />
+        <integer name="expire_date" default="max_time&#40;&#41;" />
         <integer name="radius_sessions_limit" />
         <integer name="count" default="size&#40;directions&#41;"/>
           <for name="i" from="0" count="size&#40;directions&#41;">
Отправлял им багрепорт (mantis id: 1760)/ Не знаю, исправили ли в 5.2.008

andrew.rbe
Сообщения: 36
Зарегистрирован: Ср фев 10, 2010 14:05

Сообщение andrew.rbe »

да, точно. Ща попробую. Скобки то я заметил а опечатку нет :)

andrew.rbe
Сообщения: 36
Зарегистрирован: Ср фев 10, 2010 14:05

Сообщение andrew.rbe »

Да, точно, в этом и было причина, теперь все ок.
Еще бы кто подсказал, как указывать значение "накапливать не более" в предоплаченном трафике. В апи почему то такой переменной нет :(

Ответить