urfaclient на php
2 zorg3 http://wiki.flintnet.ru
просто использую часть с wiki некоторые функции с форума, при использовании той же функции rpcf_add_service_to_user
periodic service - работает
а вот iptraffic service нехочет - php подвисает и всё
код функции
передаю параметры
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($i=0;$i<$ip_groups_count;$i++) {
$packet->DataSetIPAddress($service['ip_groups'][$i]['ip_address']);
$packet->DataSetIPAddress($service['ip_groups'][$i]['mask']);
$packet->DataSetString($service['ip_groups'][$i]['mac']);
$packet->DataSetString($service['ip_groups'][$i]['iptraffic_login']);
$packet->DataSetString($service['ip_groups'][$i]['iptraffic_allowed_cid']);
$packet->DataSetString($service['ip_groups'][$i]['iptraffic_password']);
$packet->DataSetInt($service['ip_groups'][$i]['ip_not_vpn']);
$packet->DataSetInt($service['ip_groups'][$i]['dont_use_fw']);
$packet->DataSetInt($service['ip_groups'][$i]['router_id']);
}
$quotas_count = count($service['quotas']);
$packet->DataSetInt($quotas_count);
for($i=0;$i<$quotas_count;$i++) {
$packet->DataSetInt($service['quotas'][$i]['tclass_id']);
$packet->DataSetLong($service['quotas'][$i]['quota']);
}
break;
case 4: //hotspot service
break;
case 5: //dialup 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->DataSetString($service['dialup_login']);
$packet->DataSetString($service['dialup_password']);
$packet->DataSetString($service['dialup_allowed_cid']);
$packet->DataSetString($service['dialup_allowed_csid']);
$packet->DataSetInt($service['callback_enabled']);
$packet->DataSetInt($service['unabon']);
$packet->DataSetInt($service['unprepay']);
break;
case 6: //telephony service
break;
}
$this->connection->urfa_send_param($packet);
if($x = $this->connection->urfa_get_data()) {
$this->connection->urfa_get_data();
if($service['return_type'] == "integer_return") {
$ret['slink_id']=$x->DataGetInt();
if($ret['slink_id'] == -1) return -1;
} else {
$error_msg=$x->DataGetString();
if($error_msg != "") {
$ret['error_msg']=$error_msg;
return -1;
}
}
} else {
return -1;
}
return $ret;
}
$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')));
-
- Сообщения: 1612
- Зарегистрирован: Пт ноя 10, 2006 15:23
-
- Сообщения: 57
- Зарегистрирован: Чт авг 03, 2006 09:36
ds постучись в аську пожалуста 126683232
и буду благодарен, если скините последнюю версию на ps@lan.lg.ua
и буду благодарен, если скините последнюю версию на ps@lan.lg.ua
Проблему решил при использовании функции DataSetLong() php подвисал и отваливалься по таймауту,
так как квоты не используются изменил DataSetLong() на DataSetInt()
и всё заработало
Код: Выделить всё
$packet->DataSetLong($service['quotas'][$i]['quota']);
и всё заработало
-
- Сообщения: 14
- Зарегистрирован: Пт янв 30, 2009 16:10
- Откуда: Россия
-
- Сообщения: 1612
- Зарегистрирован: Пт ноя 10, 2006 15:23