urfaclient на php
Если кто может - поделитесь рабочей версией для 009 на daverk [at] gmail [dot] com.
Собрал из вики + дифф руками + патч для пакета на x86_64, соединяется, но повисает на команде намертво
Собрал из вики + дифф руками + патч для пакета на x86_64, соединяется, но повисает на команде намертво
Код: Выделить всё
Info : Aug 02 13:15:48 f1cfab70 RPCServer@0.0.0.0: Client connecting: 127.0.0.1:46629
Info : Aug 02 13:15:48 f1cfab70 RPCConn: Connection from: 127.0.0.1:46629 new Session Key <44acdc53980202329c21c16de0afb5cb>
Info : Aug 02 13:15:48 f1cfab70 RPCConn: Card user <init@127.0.0.1> is connecting
Info : Aug 02 13:15:48 f1cfab70 RPCConn[SSL]<init@127.0.0.1>: Access granted to [SSL]<init@127.0.0.1> (UID: -1)
?Debug : Aug 02 13:15:48 f1cfab70 RPCConn[SSL]<init@127.0.0.1>: SSL type requested: SSLv3(4)
?Debug : Aug 02 13:15:48 f1af8b70 RPCConn[SSL]<test@127.0.0.1>: Call: 0xffffbffa (__rpcs_get_user_info)
?Debug : Aug 02 13:15:48 f1af8b70 RPCConn[SSL]<test@127.0.0.1>: Real Call: 0xffffbffa (__rpcs_get_user_info)
?Debug : Aug 02 13:15:48 f1af8b70 RPCConn[SSL]<test@127.0.0.1>: Call 0xffffbffa (__rpcs_get_user_info) finished...
?Debug : Aug 02 13:15:48 f1af8b70 RPCConn[SSL]<test@127.0.0.1>: Stream cleared
Версия которую сейчас тестирую на 5.3_002_update8, админские функции вроде работают, юзерские не все.
https://bitbucket.org/altlc/urfa-php/
https://bitbucket.org/altlc/urfa-php/
нашел при тестировании в URFAClient_Admin.php[-Alt-] писал(а):Версия которую сейчас тестирую на 5.3_002_update8, админские функции вроде работают, юзерские не все.
https://bitbucket.org/altlc/urfa-php/
function rpcf_add_periodic_service_link_ex($service) { //0x2930 - устарела ее заменили на
function rpcf_add_periodic_slink_ex($service) { //0x2936
код
Код: Выделить всё
function rpcf_add_periodic_slink_ex($service) { //0x2936
$ret = array();
if (!$this->connection->urfa_call(0x2936)) {
print "Error calling function ". __FUNCTION__ ."\n";
return FALSE;
}
if(!isset($service['tariff_link_id'])) $service['tariff_link_id'] = 0;
if($service['start_date'] == 0) $service['start_date'] = now();
if($service['expire_date'] == 0) $service['expire_date'] = max_time();
if(!isset($service['cost_coef'])) $service['cost_coef'] = 1;
if(!isset($service['unabon'])) $service['unabon'] = 0;
$packet = $this->connection->getPacket();
$packet->DataSetInt($service['user_id']);
$packet->DataSetInt($service['account_id']);
$packet->DataSetInt($service['service_id']);
$packet->DataSetInt($service['tariff_link_id']);
$packet->DataSetInt($service['discount_period_id']);
$packet->DataSetInt($service['start_date']);
$packet->DataSetInt($service['expire_date']);
$packet->DataSetInt($service['policy_id']);
$packet->DataSetInt($service['unabon']);
$packet->DataSetDouble($service['cost_coef']);
$this->connection->urfa_send_param($packet);
if ($x = $this->connection->urfa_get_data()){
$ret['slink_id'] = $x->DataGetInt();
}else{
$ret['slink_id'] = -1;
}
return $ret;
}
не было function rpcf_get_ippools_list
может кому пригодится
код
может кому пригодится
код
Код: Выделить всё
function rpcf_get_ippools_list() { //0x1067
$ret=array();
if (!$this->connection->urfa_call(0x1067)) {
print "Error calling function ". __FUNCTION__ ."\n";
return FALSE;
}
$x = $this->connection->urfa_get_data();
$count = $x->DataGetInt();
$ret['ippools_count'] = $count;
for ($i=0;$i<$count;$i++) {
$pool['id']=$x->DataGetInt();
$pool['name']=$x->DataGetString();
$pool['address']=$x->DataGetIP46Address();
$pool['mask']=$x->DataGetInt();
$ret['ippools'][]=$pool;
}
return $ret;
}
ещё немного функций
Код: Выделить всё
function rpcf_get_tariff_new($tariff_id) { //0x3040
$ret=array();
if (!$this->connection->urfa_call(0x3040)) {
print "Error calling function ". __FUNCTION__ ."\n";
return FALSE;
}
$packet = $this->connection->getPacket();
$packet->DataSetInt($tariff_id);
$this->connection->urfa_send_param($packet);
if ($x = $this->connection->urfa_get_data()) {
$ret['tariff_name'] = $x->DataGetString();
$ret['tariff_create_date'] = $x->DataGetInt();
$ret['who_create'] = $x->DataGetInt();
$ret['who_create_login'] = $x->DataGetString();
$ret['tariff_change_date'] = $x->DataGetInt();
$ret['who_change'] = $x->DataGetInt();
$ret['who_change_login'] = $x->DataGetString();
$ret['tariff_balance_rollover'] = $x->DataGetInt();
$ret['comments'] = $x->DataGetString();
$ret['services_count'] = $x->DataGetInt();
for ($i=0;$i<$ret['services_count'];$i++) {
$service['service_id'] = $x->DataGetInt();
$service['service_type'] = $x->DataGetInt();
$service['service_name'] = $x->DataGetString();
$service['comment'] = $x->DataGetString();
$service['link_by_default'] = $x->DataGetInt();
$service['is_dynamic'] = $x->DataGetInt();
$ret['services'][]=$service;
}
}
return $ret;
}
Код: Выделить всё
function rpcf_get_periodic_service_ex($sid) { //0x2130
$ret=array();
if (!$this->connection->urfa_call(0x2130)) {
print "Error calling function ". __FUNCTION__ ."\n";
return FALSE;
}
$packet = $this->connection->getPacket();
$packet->DataSetInt($sid);
$this->connection->urfa_send_param($packet);
if ($x = $this->connection->urfa_get_data()) {
$ret['service_name']=$x->DataGetString();
$ret['comment']=$x->DataGetString();
$ret['link_by_default']=$x->DataGetInt();
$ret['cost']=$x->DataGetDouble();
$ret['deprecated']=$x->DataGetInt();
$ret['discount_method']=$x->DataGetInt();
$ret['param']=$x->DataGetInt();
$ret['tariff_id']=$x->DataGetInt();
$ret['parent_id']=$x->DataGetInt();
}
return $ret;
}
Код: Выделить всё
function rpcf_get_iptraffic_service_ex($sid) { //0x2134
$service = array();
if (!$this->connection->urfa_call(0x2134)) {
print "Error calling function ". __FUNCTION__ ."\n";
return FALSE;
}
$packet = $this->connection->getPacket();
$packet->DataSetInt($sid);
$this->connection->urfa_send_param($packet);
if ($x = $this->connection->urfa_get_data()) {
$ret['service_name']=$x->DataGetString();
$ret['comment']=$x->DataGetString();
$ret['link_by_default']=$x->DataGetInt();
$ret['is_dynamic']=$x->DataGetInt();
$ret['cost']=$x->DataGetDouble();
$ret['deprecated']=$x->DataGetInt();
$ret['discount_method']=$x->DataGetInt();
$ret['sessions_limit']=$x->DataGetInt();
$ret['null_service_prepaid']=$x->DataGetInt();
$ret['borders_count']=$x->DataGetInt();
for($i=0; $i<$ret['borders_count']; $i++) {
$ret['borders'][$i]['tclass']=$x->DataGetInt();
if($ret['borders'][$i]['tclass'] != -1) {
$ret['borders'][$i]['borders_size'] = $x->DataGetLong();
for($j=0; $j<$ret['borders'][$i]['borders_size']; $j++) {
$ret['borders'][$i]['border'][$j]['border_id'] = $x->DataGetLong();
$ret['borders'][$i]['border'][$j]['border_cost'] = $x->DataGetDouble();
}
}
}
$ret['prepaid_count']=$x->DataGetInt();
for($i=0;$i<$ret['prepaid_count'];$i++) {
$ret['prepaid'][$i]['tclass'] = $x->DataGetInt();
if($ret['prepaid'][$i]['tclass'] != -1) {
$ret['prepaid'][$i]['prepaid_amount'] = $x->DataGetLong();
$ret['prepaid'][$i]['prepaid_max'] = $x->DataGetLong();
}
}
$ret['tclass_id2group_size'] = $x->DataGetInt();
for($i=0;$i<$ret['tclass_id2group_size'];$i++) {
$ret['tclass_id2group'][$i]['tclass_id'] = $x->DataGetInt();
$ret['tclass_id2group'][$i]['tclass_group_id'] = $x->DataGetInt();
}
$ret['service_data_parent_id'] = $x->DataGetInt();
$ret['tariff_id'] = $x->DataGetInt();
$ret['parent_id'] = $x->DataGetInt();
}
return $ret;
}
при подключении .php[-Alt-] писал(а):Версия которую сейчас тестирую на 5.3_002_update8, админские функции вроде работают, юзерские не все.
https://bitbucket.org/altlc/urfa-php/
PHP Parse error: syntax error, unexpected '[' in /netup/php/URFAClient_Admin.php on line 847
function rpcf_edit_periodic_slink_ex($service) { //0x2923 устарела
заменили на
function rpcf_edit_periodic_slink_ex($service) { //0x2937
заменили на
function rpcf_edit_periodic_slink_ex($service) { //0x2937
Код: Выделить всё
function rpcf_edit_periodic_slink_ex($service) { //0x2937
$ret = array();
if (!$this->connection->urfa_call(0x2937)) {
print "Error calling function ". __FUNCTION__ ."\n";
return FALSE;
}
$packet = $this->connection->getPacket();
$packet->DataSetInt($service['slink_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['policy_id']);
$packet->DataSetDouble($service['cost_coef']);
$this->connection->urfa_send_param($packet);
if($x = $this->connection->urfa_get_data()) {
$ret['slink_id']=$x->DataGetInt();
} else {
return -1;
}
return $ret;
}
$service['cost_coef'] = 1; // 100%banec писал(а):Подскажите как в сервисных связках урфой скорректировать стоимость в процентах? установить вместо 100% - 90%
$service['cost_coef'] = 0.9; //90%
пример:
Код: Выделить всё
$service = $urfa_admin->rpcf_get_periodic_service_link(9031); // получаем инфу о периодической услуге необходимо знать id связки
//редактируем нужное и добавляем обязательный slink_id
$service['slink_id'] = 9031; // id связки
$service['policy_id'] = 1; // id политики списания
$service['cost_coef'] = 0.9; // стоимость в %
$urfa_admin->rpcf_edit_periodic_slink_ex($service); // применяем
файл URFAClient_User5.php
function rpcf_user5_dhs_report - не работала.
немного подправил и все ок
function rpcf_user5_dhs_report - не работала.
немного подправил и все ок
Код: Выделить всё
function rpcf_user5_dhs_report($start_date,$end_date) { //-0x4017
$ret=array();
if (!$this->connection->urfa_call(-0x4017)) {
print "Error calling function ". __FUNCTION__ ."\n";
return FALSE;
}
$packet = $this->connection->getPacket();
if($start_date == 0) $start_date = now() -1*30*24*60*60;
if($end_date == 0) $end_date = max_time();
$packet->DataSetInt($start_date);
$packet->DataSetInt($end_date);
$this->connection->urfa_send_param($packet);
if ($x = $this->connection->urfa_get_data()) {
$ret['dhs_log_size'] = $x->DataGetInt();
for ($i=0;$i<$ret['dhs_log_size'];$i++) {
$session['id'] = $x->DataGetInt();
$session['account_id'] = $x->DataGetInt();
$session['slink_id'] = $x->DataGetInt();
$session['recv_date'] = $x->DataGetInt();
$session['last_update_date'] = $x->DataGetInt();
$session['framed_ip'] = $x->DataGetIP46Address();
$session['framed_ip6'] = $x->DataGetIP46Address();
$session['nas_port'] = $x->DataGetInt();
$session['acct_session_id'] = $x->DataGetString();
$session['nas_port_type'] = $x->DataGetInt();
$session['uname'] = $x->DataGetString();
$session['service_type'] = $x->DataGetInt();
$session['framed_protocol'] = $x->DataGetInt();
$session['nas_id'] = $x->DataGetInt();
$session['nas_ip'] = $x->DataGetString();
$session['acct_status_type'] = $x->DataGetInt();
$session['acct_inp_pack'] = $x->DataGetLong();
$session['acct_inp_oct'] = $x->DataGetLong();
$session['acct_out_pack'] = $x->DataGetLong();
$session['acct_out_oct'] = $x->DataGetLong();
$session['acct_sess_time'] = $x->DataGetLong();
$session['dhs_sessions_detail_size'] = $x->DataGetInt();
for($j=0;$j<$session['dhs_sessions_detail_size'];$j++) {
$session['dhs_sessions_detail_list'][$j]['trange_id'] = $x->DataGetInt();
$session['dhs_sessions_detail_list'][$j]['account_id'] = $x->DataGetInt();
$session['dhs_sessions_detail_list'][$j]['duration'] = $x->DataGetLong();
$session['dhs_sessions_detail_list'][$j]['base_cost'] = $x->DataGetDouble();
$session['dhs_sessions_detail_list'][$j]['sum_cost'] = $x->DataGetDouble();
}
$ret['sessions'][]=$session;
}
}
return $ret;
}
Последний раз редактировалось mrmix25 Вт сен 30, 2014 19:06, всего редактировалось 1 раз.
mrmix25 спасибо
Но ещё прикол на php5.3 работает но на 5.4 и выше вообще глухо - даже ошибок не выдаёт
кто запускал на >php5.4 ?
PS там на серваке зенду нужна 5.4 и выше
соответственно что не проходит
PHP 5.5.17 (cli) (built: Sep 18 2014 21:19:14)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
ЗЫ
попробовал на дебиане
прокатило - чего ему на центе не хватает хз
Но ещё прикол на php5.3 работает но на 5.4 и выше вообще глухо - даже ошибок не выдаёт
кто запускал на >php5.4 ?
PS там на серваке зенду нужна 5.4 и выше
Код: Выделить всё
PHP Warning: fread(): SSL read operation timed out in /disk2/1/netup/php/URFAClient_Packet.php on line 31
Warning: fread(): SSL read operation timed out in /disk2/1/netup/php/URFAClient_Packet.php on line 31
PHP Warning: fread(): SSL read operation timed out in /disk2/1/netup/php/URFAClient_Packet.php on line 32
Warning: fread(): SSL read operation timed out in /disk2/1/netup/php/URFAClient_Packet.php on line 32
PHP Warning: fread(): SSL read operation timed out in /disk2/1/netup/php/URFAClient_Packet.php on line 33
Warning: fread(): SSL read operation timed out in /disk2/1/netup/php/URFAClient_Packet.php on line 33
PHP Fatal error: Uncaught exception 'Exception' with message 'Error code 0' in /disk2/1/netup/php/URFAClient_Packet.php:33
Stack trace:
#0 /disk2/1/netup/php/URFAClient_Connection.php(145): URFAClient_Packet->read()
#1 /disk2/1/netup/php/URFAClient_Admin.php(1716): URFAClient_Connection->urfa_get_data()
#2 /disk2/1/netup/php/examle.php(28): URFAClient_Admin->rpcf_get_accountinfo(901065)
#3 {main}
thrown in /disk2/1/netup/php/URFAClient_Packet.php on line 33
Fatal error: Uncaught exception 'Exception' with message 'Error code 0' in /disk2/1/netup/php/URFAClient_Packet.php:33
Stack trace:
#0 /disk2/1/netup/php/URFAClient_Connection.php(145): URFAClient_Packet->read()
#1 /disk2/1/netup/php/URFAClient_Admin.php(1716): URFAClient_Connection->urfa_get_data()
#2 /disk2/1/netup/php/examle.php(28): URFAClient_Admin->rpcf_get_accountinfo(901065)
#3 {main}
thrown in /disk2/1/netup/php/URFAClient_Packet.php on line 33
CentOS6.5function read()
{
$this->code = ord(fread($this->sock, 1));
if ($this->version != ord(fread($this->sock, 1))) {
throw new Exception("Error code " . ord(fread($this->sock, 1)));
} else {
list(, $this->len) = unpack("n", fread($this->sock, 2));
$this->parse_packet_data();
}
}
PHP 5.5.17 (cli) (built: Sep 18 2014 21:19:14)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
ЗЫ
попробовал на дебиане
Код: Выделить всё
PHP 5.4.4-14+deb7u14 (cli) (built: Aug 21 2014 08:36:44)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies
root@cabinet5:~/php# php examle.php
/n<BR>****************************************<BR>Array
(
[is_blocked] => 0
[vat_rate] => 0
[sale_tax_rate] => 0
[credit] => 0
[balance] => 13667.210850395
[int_status] => 1
[unlimited] => 0
[auto_enable_inet] => 0
[external_id] =>
)