urfaclient на php
-
- Сообщения: 11
- Зарегистрирован: Чт фев 19, 2009 09:48
- Откуда: Абакан, Россия
-
- Сообщения: 14
- Зарегистрирован: Пт янв 30, 2009 16:10
- Откуда: Россия
Чё-то не совсем понял, то есть как утвердить?hcube писал(а):Чтобы прилинковать, надо использовать функцию 3019 - link_user_tariff.
Причем последняя не _линкует_ тариф. Она только ставит его в очередь на подлинковку. Потом из админки можно оную линковку утвердить - но это уже другая команда.
У меня всё сразу линкуется. Делаю так:
rpcf_link_user_tariff, затем для каждой необходимой услуги rpcf_add_service_to_user. Разве ещё что-то нужно утверждать?
Ну, у нас просто выбранный тариф утверждается вручную, поэтому вторая функция не используется.
Вот еще функция в копилку...
Вот еще функция в копилку...
Код: Выделить всё
function rpcf_get_all_services_for_user($account_id)
{
$ret=array();
if (!urfa_call(0x2700)) {
// print "Error calling function ". __FUNCTION__ ."\n";
return FALSE;
}
$packet = new Packet();
$packet->DataSetInt($account_id); // account_id
urfa_send_param($packet);
$x = urfa_get_data();
$slink_id_cnt = $x->DataGetInt();
for($i = 0; $i < $slink_id_cnt; $i++)
{
$x = urfa_get_data();
$temp['service_id'] = $x->DataGetInt();
if($temp['service_id'] != -1)
{
$temp['service_type_array'] = $x->DataGetInt();
$temp['service_name_array'] = $x->DataGetString();
$temp['tariff_name_array'] = $x->DataGetString();
$temp['service_cost_array'] = $x->DataGetDouble();
$temp['slink_id_array'] = $x->DataGetInt();
$temp['discount_period_id_array'] = $x->DataGetInt();
}
else
{
$temp['service_id_array'] = $x->DataGetInt();
$temp['service_type_array'] = $x->DataGetInt();
$temp['service_name_array'] = $x->DataGetString();
$temp['tariff_name_array'] = $x->DataGetString();
$temp['service_cost_array'] = $x->DataGetDouble();
$temp['slink_id_array'] = $x->DataGetInt();
$temp['discount_period_id_array'] = $x->DataGetInt();
}
$ret[$i] = $temp;
}
return $ret;
}
hcube, эта функция уже есть - http://wiki.flintnet.ru/doku.php?id=fun ... _id_0x2700
Наверное, правильно было бы привести семпл работы с URFAClient библиотекой, ну хотя бы на проверку логина юзера, с использованием одной функции.
Код: Выделить всё
function rpcf_user5_change_password_service($slink_id, $item_id, $old_password, $new_password, $new_password_ret) { //-0x4025
$ret=array();
if (!$this->connection->urfa_call(-0x4025)) {
print "Error calling function ". __FUNCTION__ ."\n";
return FALSE;
}
$packet = $this->connection->getPacket();
$packet->DataSetInt($slink_id);
$packet->DataSetInt($item_id);
$packet->DataSetString($old_password);
$packet->DataSetString($new_password);
$packet->DataSetString($new_password_ret);
$this->connection->urfa_send_param($packet);
if ($x = $this->connection->urfa_get_data()) {
$ret['status'] = $x->DataGetInt();
}
return $ret;
}
Последний раз редактировалось hcube Вт мар 03, 2009 12:10, всего редактировалось 1 раз.
можно мне последнюю сборку Urfa на РНР плиззз??? a.kislov@ncv.ru
-
- Сообщения: 1612
- Зарегистрирован: Пт ноя 10, 2006 15:23
http://wiki.flintnet.ru/doku.php и есть такой проект
-
- Сообщения: 1612
- Зарегистрирован: Пт ноя 10, 2006 15:23
-
- Сообщения: 1612
- Зарегистрирован: Пт ноя 10, 2006 15:23
кстати о птичках. Каковы условия повторного вызова?
А то делаю:
$i=1;
while ($i<3) {
$new_ip=$urfa_admin->rpcf_get_free_ips_for_house($house);
print $new_ip['free_ips'][0]['ips_ip']."\n";
$i++;
}
стабильно получаю только один(первый) адрес. Повторно - Error calling function BLABLABLA.
В логах ведра примерно такое:
ERROR : Mar 12 14:27:44 RPCServer@0.0.0.0: Exception in rpcf_get_free_ips_for_house: #22
Причем без разницы, какая функция идет второй. Можно получить сначала свободный адрес, потому пытаться получить инфо о существующей IP-группе(добавить новую, удалить старую) - будет ошибка.
Полный лог ядра в этот момент(дебаг-лог)
А если вставить в цикл создание нового объекта URFAClientAdmin - то все пройдет нормально...
Есть шансы на избавление от геморроя, при которых достаточно один раз в начале скрипта подключиться, потом просто дергать функции не озадачиваясь пересозданием объекта?
А то делаю:
$i=1;
while ($i<3) {
$new_ip=$urfa_admin->rpcf_get_free_ips_for_house($house);
print $new_ip['free_ips'][0]['ips_ip']."\n";
$i++;
}
стабильно получаю только один(первый) адрес. Повторно - Error calling function BLABLABLA.
В логах ведра примерно такое:
ERROR : Mar 12 14:27:44 RPCServer@0.0.0.0: Exception in rpcf_get_free_ips_for_house: #22
Причем без разницы, какая функция идет второй. Можно получить сначала свободный адрес, потому пытаться получить инфо о существующей IP-группе(добавить новую, удалить старую) - будет ошибка.
Полный лог ядра в этот момент(дебаг-лог)
Код: Выделить всё
Info : Mar 12 14:27:44 RPCConn<init@10.10.0.9>: Access granted to <init@10.10.0.9> (UID: -1)
?Debug : Mar 12 14:27:44 RPCConn<init@10.10.0.9>: Call: 0x2813 (rpcf_get_free_ips_for_house)
?Debug : Mar 12 14:27:44 RPCConn<init@10.10.0.9>: Real Call: 0x2813 (rpcf_get_free_ips_for_house)
?Debug : Mar 12 14:27:44 DBCtx: <138657792> SQL SELECT query: SELECT id, ip_zone_id, connect_date, post_code, country, region, city, street, number, building, additional_ip_zones_key FROM houses WHERE id='30'
?Debug : Mar 12 14:27:44 DBCtx: <138657792> SQL SELECT query: SELECT net, mask, gateway FROM ip_zones_detail WHERE ip_zone_id='19'
?Debug : Mar 12 14:27:44 DBCtx: <138657792> SQL SELECT query: SELECT id, ip_group_id, ip FROM ip_groups WHERE (168457994&mask)=(ip&(-1)&mask) AND is_deleted=0
?Debug : Mar 12 14:27:44 DBCtx: <138657792> SQL SELECT query: SELECT name FROM ip_zones WHERE id='19'
?Debug : Mar 12 14:27:44 RPCConn<init@10.10.0.9>: Call 0x2813 (rpcf_get_free_ips_for_house) finished...
?Debug : Mar 12 14:27:44 RPCConn<init@10.10.0.9>: Stream cleared
?Debug : Mar 12 14:27:44 RPCConn<init@10.10.0.9>: Call: 0x2813 (rpcf_get_free_ips_for_house)
?Debug : Mar 12 14:27:44 RPCConn<init@10.10.0.9>: Real Call: 0x2813 (rpcf_get_free_ips_for_house)
ERROR : Mar 12 14:27:44 RPCServer@0.0.0.0: Exception in rpcf_get_free_ips_for_house: #22
?Debug : Mar 12 14:27:44 RPCConn<init@10.10.0.9>: Call 0x2813 (rpcf_get_free_ips_for_house) finished...
?Debug : Mar 12 14:27:44 RPCConn<init@10.10.0.9>: Stream cleared
Warn : Mar 12 14:27:44 RPCConn<init@10.10.0.9>: Session closed
?Debug : Mar 12 14:27:44 RPCConn<init@10.10.0.9>: Session stored for UID -1 from <10.10.0.9>
?Debug : Mar 12 14:27:44 RPCConn<init@10.10.0.9>: Session closed...
Есть шансы на избавление от геморроя, при которых достаточно один раз в начале скрипта подключиться, потом просто дергать функции не озадачиваясь пересозданием объекта?
Можешь выложить код всех этих функций? + rpcf_get_free_ips_for_house, я посмотрю что не так. и еще urfa_get_datamikkey 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