urfaclient на php

Вопросы по сопутствующим продуктам производства партнеров
Ответить
Аватара пользователя
ds
Сообщения: 380
Зарегистрирован: Пн сен 18, 2006 14:06

Сообщение ds »

Выше написано

http://wiki.flintnet.ru/doku.php

Kayfolom
Сообщения: 746
Зарегистрирован: Вс фев 12, 2006 17:15

Сообщение Kayfolom »


ctyz
Сообщения: 30
Зарегистрирован: Пн фев 09, 2009 11:24

Сообщение ctyz »

просто использую часть с wiki некоторые функции с форума, при использовании той же функции rpcf_add_service_to_user

periodic service - работает

а вот iptraffic service нехочет - php подвисает и всё

код функции

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

function rpcf_add_service_to_user($service) { //0x2551 
      $ret = array(); 
      if (!$this->connection->urfa_call(0x2551)) { 
         print "Error calling function ". __FUNCTION__ ."\n"; 
         return FALSE; 
      } 
      $packet = $this->connection->getPacket(); 
      $packet->DataSetInt($service['user_id']); 
      $packet->DataSetInt($service['account_id']); 
      $packet->DataSetInt($service['service_id']); 
      $packet->DataSetInt($service['service_type']); 
      $packet->DataSetString($service['return_type']); 
      $packet->DataSetInt($service['tariff_link_id']); 
         
      switch($service['service_type']) 
      { 
         case 1: //once service 
          	break;   
         case 2: //periodic service 
            $packet->DataSetInt($service['slink_id']); 
            $packet->DataSetInt($service['is_blocked']); 
            $packet->DataSetInt($service['discount_period_id']); 
            if($service['start_date'] == 0) $service['start_date'] = now(); 
            $packet->DataSetInt($service['start_date']); 
            if($service['expire_date'] == 0) $service['expire_date'] = max_time(); 
            $packet->DataSetInt($service['expire_date']); 
            $packet->DataSetInt($service['unabon']); 
            $packet->DataSetInt($service['unprepay']); 
            break;
         case 3: //iptraffic service 
            $packet->DataSetInt($service['slink_id']); 
            $packet->DataSetInt($service['is_blocked']); 
            $packet->DataSetInt($service['discount_period_id']); 
            if($service['start_date'] == 0) $service['start_date'] = now(); 
            $packet->DataSetInt($service['start_date']); 
            if($service['expire_date'] == 0) $service['expire_date'] = max_time(); 
            $packet->DataSetInt($service['expire_date']); 
            $packet->DataSetInt($service['unabon']); 
            $packet->DataSetInt($service['unprepay']); 
            $ip_groups_count = count($service['ip_groups']); 
            $packet->DataSetInt($ip_groups_count); 
            for&#40;$i=0;$i<$ip_groups_count;$i++&#41; &#123; 
               $packet->DataSetIPAddress&#40;$service&#91;'ip_groups'&#93;&#91;$i&#93;&#91;'ip_address'&#93;&#41;; 
               $packet->DataSetIPAddress&#40;$service&#91;'ip_groups'&#93;&#91;$i&#93;&#91;'mask'&#93;&#41;; 
               $packet->DataSetString&#40;$service&#91;'ip_groups'&#93;&#91;$i&#93;&#91;'mac'&#93;&#41;; 
               $packet->DataSetString&#40;$service&#91;'ip_groups'&#93;&#91;$i&#93;&#91;'iptraffic_login'&#93;&#41;; 
               $packet->DataSetString&#40;$service&#91;'ip_groups'&#93;&#91;$i&#93;&#91;'iptraffic_allowed_cid'&#93;&#41;; 
               $packet->DataSetString&#40;$service&#91;'ip_groups'&#93;&#91;$i&#93;&#91;'iptraffic_password'&#93;&#41;; 
               $packet->DataSetInt&#40;$service&#91;'ip_groups'&#93;&#91;$i&#93;&#91;'ip_not_vpn'&#93;&#41;; 
               $packet->DataSetInt&#40;$service&#91;'ip_groups'&#93;&#91;$i&#93;&#91;'dont_use_fw'&#93;&#41;; 
               $packet->DataSetInt&#40;$service&#91;'ip_groups'&#93;&#91;$i&#93;&#91;'router_id'&#93;&#41;; 
            &#125; 
            $quotas_count = count&#40;$service&#91;'quotas'&#93;&#41;; 
            $packet->DataSetInt&#40;$quotas_count&#41;; 
            for&#40;$i=0;$i<$quotas_count;$i++&#41; &#123; 
               $packet->DataSetInt&#40;$service&#91;'quotas'&#93;&#91;$i&#93;&#91;'tclass_id'&#93;&#41;; 
               $packet->DataSetLong&#40;$service&#91;'quotas'&#93;&#91;$i&#93;&#91;'quota'&#93;&#41;; 
            &#125;
            break;
         case 4&#58; //hotspot service 
             break;
         case 5&#58; //dialup service 
            $packet->DataSetInt&#40;$service&#91;'slink_id'&#93;&#41;; 
            $packet->DataSetInt&#40;$service&#91;'is_blocked'&#93;&#41;; 
            $packet->DataSetInt&#40;$service&#91;'discount_period_id'&#93;&#41;; 
            if&#40;$service&#91;'start_date'&#93; == 0&#41; $service&#91;'start_date'&#93; = now&#40;&#41;; 
            $packet->DataSetInt&#40;$service&#91;'start_date'&#93;&#41;; 
            if&#40;$service&#91;'expire_date'&#93; == 0&#41; $service&#91;'expire_date'&#93; = max_time&#40;&#41;; 
            $packet->DataSetInt&#40;$service&#91;'expire_date'&#93;&#41;; 
            $packet->DataSetString&#40;$service&#91;'dialup_login'&#93;&#41;; 
            $packet->DataSetString&#40;$service&#91;'dialup_password'&#93;&#41;; 
            $packet->DataSetString&#40;$service&#91;'dialup_allowed_cid'&#93;&#41;; 
            $packet->DataSetString&#40;$service&#91;'dialup_allowed_csid'&#93;&#41;; 
            $packet->DataSetInt&#40;$service&#91;'callback_enabled'&#93;&#41;; 
            $packet->DataSetInt&#40;$service&#91;'unabon'&#93;&#41;; 
            $packet->DataSetInt&#40;$service&#91;'unprepay'&#93;&#41;; 
            break;
         case 6&#58; //telephony service 
         break;
           
      &#125;
      $this->connection->urfa_send_param&#40;$packet&#41;;
      if&#40;$x = $this->connection->urfa_get_data&#40;&#41;&#41; &#123; 
         $this->connection->urfa_get_data&#40;&#41;; 
         if&#40;$service&#91;'return_type'&#93; == "integer_return"&#41; &#123; 
            $ret&#91;'slink_id'&#93;=$x->DataGetInt&#40;&#41;; 
            if&#40;$ret&#91;'slink_id'&#93; == -1&#41; return -1; 
         &#125; else &#123; 
            $error_msg=$x->DataGetString&#40;&#41;; 
            if&#40;$error_msg != ""&#41; &#123; 
               $ret&#91;'error_msg'&#93;=$error_msg; 
               return -1; 
            &#125; 
         &#125; 
      &#125; else &#123; 
         return -1; 
      &#125; 
      return $ret;
  
   &#125;
передаю параметры
$service =array('user_id'=>'4326',
'account_id'=>'4354',
'service_id'=>'338',
'service_type'=>'3',
'return_type'=>'',
'tariff_link_id'=>'',
'slink_id'=>'',
'is_blocked'=>'0',
'discount_period_id'=>$discount['discount_period_id'],
'start_date'=>$now,
'expire_date'=>$max_time,
'unabon'=>'0',
'unprepay'=>'0',
'ip_groups'=>array(array('ip_address'=>'192.168.100.100',
'mask'=>'255.255.255.255',
'mac'=>'00:10:00:10:00:10',
'iptraffic_login'=>'ice_luga',
'iptraffic_allowed_cid'=>'0',
'iptraffic_password'=>'ice_luga',
'ip_not_vpn'=>'1',
'dont_use_fw'=>'0',
'router_id'=>'0')),
'quotas'=>array(array('tclass_id'=>'10',
'quota'=>'1000')));

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

Сообщение ds »

По моему

if($x = $this->connection->urfa_get_data()) {
// $this->connection->urfa_get_data(); - лишнее
.....
}

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

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

разобрался по своей проблеме - по таймауту скрипт прибивало.

ctyz
Сообщения: 30
Зарегистрирован: Пн фев 09, 2009 11:24

Сообщение ctyz »

ds писал(а):По моему

if($x = $this->connection->urfa_get_data()) {
// $this->connection->urfa_get_data(); - лишнее
.....
}
но не решаюшее проблему ,
можно мне последнее рабочае ядро urfa php на games [at] luga.net.ua

masis
Сообщения: 39
Зарегистрирован: Ср фев 18, 2009 13:30
Откуда: Н.Новгород

Сообщение masis »

В вики какие-то функции под новую urfa_get_data, какие-то под старую. Планируется все привести к единому стандарту?

kamo
Сообщения: 2
Зарегистрирован: Ср апр 15, 2009 13:54

Сообщение kamo »

Здравствуйте, буду признателен, если скините последнюю версию на kamo.dev@gmail.com

спасибо

Плахотин Сергей
Сообщения: 57
Зарегистрирован: Чт авг 03, 2006 09:36

Сообщение Плахотин Сергей »

ds постучись в аську пожалуста 126683232
и буду благодарен, если скините последнюю версию на ps@lan.lg.ua

Dimon
Сообщения: 35
Зарегистрирован: Чт фев 03, 2005 15:50

Сообщение Dimon »

А я месяц писал web морду
и ни читал форум (

ctyz
Сообщения: 30
Зарегистрирован: Пн фев 09, 2009 11:24

Сообщение ctyz »

Проблему решил при использовании функции DataSetLong() php подвисал и отваливалься по таймауту,

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

$packet->DataSetLong&#40;$service&#91;'quotas'&#93;&#91;$i&#93;&#91;'quota'&#93;&#41;;
так как квоты не используются изменил DataSetLong() на DataSetInt()
и всё заработало

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

Сообщение Systemnick »

Раз квоты не используются, лучше передавать пустой массив $service['quotas'] и тогда программа вообще не будет входить в цикл. :wink:

lmrvsk
Сообщения: 5
Зарегистрирован: Чт дек 25, 2008 10:51
Откуда: Сибирь

Сообщение lmrvsk »

mikkey finn писал(а):разобрался по своей проблеме - по таймауту скрипт прибивало.
по какому таймауту, где? Подробнее, пожалуйста.

Идентичная проблема, при отключенном SSL работает, ставишь ssl = true и все, ни одна функция не работает.

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

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

у меня работает и с ssl и без. Таймауты были на выполнение скрипта в php.ini 60с. Докрутил до 5 минут - стало все отдавать. Просто тестировал на компе с кактусом, там изначально таймаут закручен был.
Так что ssl тут не при чем. По крайней мере у меня

Cmak
Сообщения: 34
Зарегистрирован: Чт мар 26, 2009 07:43

Сообщение Cmak »

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

Спасибо !

Ответить