urfaclient на php

Вопросы по сопутствующим продуктам производства партнеров
Ответить
Аватара пользователя
gudik
Сообщения: 1
Зарегистрирован: Пн июл 30, 2012 20:51

URFAClient_PHP на x86_64

Сообщение gudik »

Имею 3 биллинга на x386. + Сайт компании на x86_64. Прикручиваю ЛК один на все три биллинга. ЛК сидит прямо в сайте на x86_64. Имел траблы с URFAClient_PHP на x86_64. В интернете решения вопроса не нашел, пока обхожусь следующим костылем:

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

/**
 * Собственный костыль для исправления работы ф-ции unpack в x64 системе
 */
function kl_unpack($format, $data)
{
    if( ($format == 'N') ){

        $tmp = unpack('N', $data);
        
        $tmp[1] = $tmp[1] - 4294967296;
        
        //_log('kl_upack format=' . $format . ' data=' . $tmp[1]);
        
        return $tmp;
    }
    
    //_log('kl_upack ничего не делаем');
    
    return unpack($format, $data);
}
URFAClient_Packet.php

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

     function AttrGetInt($code)
     {
 		if (isset($this->attr[$code]['data'])) {
-	    	    $x = unpack("N", $this->attr[$code]['data']);
+	    	    $x = kl_unpack("N", $this->attr[$code]['data']);
 		    return $x[1];
 		} else {
 			return FALSE;
Если данная проблема решена, дайте ссылку на решение =)

darang
Сообщения: 161
Зарегистрирован: Пт янв 15, 2010 15:39
Контактная информация:

Сообщение darang »

попробуйте так

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

    function AttrGetInt($code)
    {
        if (isset($this->attr[$code]['data'])) {
            $x = unpack("N", $this->attr[$code]['data']);
            if ($x[1] > 2147483647) $x[1] -= 4294967296;
            return $x[1];
        } else {
            return FALSE;
        }
    }

Minime
Сообщения: 17
Зарегистрирован: Чт ноя 26, 2009 08:47

Сообщение Minime »

Для тех у кого не решилась проблема с:
?Debug : Oct 08 00:47:35 b3dfeb90 RPCConn[SSL]<init@192.168.8.204>: SSL error lines: 3098:error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number:s3_pkt.c:295:

Сделал следующее: пересобрал php52-openssl отдельно из портов.
(/usr/ports/security/php52-openssl)

рестартанул апач,
убедился что openssl подгружен в php.ini. Все заработало.

d3vil
Сообщения: 1
Зарегистрирован: Ср июл 25, 2012 16:29

Сообщение d3vil »

Может кому будет полезно, перевёл часть данного проекта на python, для реализации демона. Код доступен здесь https://github.com/d3vil-st/pyurfa

adeep
Сообщения: 79
Зарегистрирован: Пт июн 24, 2005 18:59

Сообщение adeep »

Просто волшебник.

Аватара пользователя
Chrst
Сообщения: 370
Зарегистрирован: Пт май 11, 2007 09:28
Откуда: Медиахолдинг "ЛеККС"
Контактная информация:

Сообщение Chrst »

Версия биллинга 5.2.1-003 (довольно старая но вполне устраивающая в текущем применении).
Имеется ряд безлимитных ТП. В ТП входят две услуги - Передача трафика и периодическая АП. АП с фиксированной суммой, списание единовременно в начале РП. РП единый для всех с 1 по 1 число месяца.
Задача. При недостатке денежных средств на следующий РП, блокировать учетную запись, чтобы исключить накапливающийся долг. Соответственно, при оплате услуг, разблокировать учетную запись.

Если до наступления следующего РП выставить блокировку не списывать АП (тип блокировки 768), АП не списывается. Но в случае снятия блокировки при наступившем новом РП, происходит списание не полной суммы АП для тарифа, а пересчитанная сумма с момента снятия блокировки до окончания РП. Возможно вполне логично, но требуется логика - списание полной суммы не зависимо от дней пользования.
Решение 1. При блокировке учетной записи до наступления следующего РП удалить услугу АП. При возобновлении сначала снимается блокировка, а затем привязывается услуга АП. При этом происходит списание полной суммы не зависимо от даты подключения услуги. Недостаток: при массовой блокировке формируется большое количество расчетных периодов на удаленные услуги. Закрытие периодов занимает значительное время (до 6 часов), что сдвигает закрытие основного РП.
Решение 2. До наступления нового РП выставляется блокировка Да, не списывать АП (тип 768), услуга АП не удаляется. При возобновлении необходимо удалить имеющуюся услугу АП, снять блокировку и вновь привязать услугу АП. При этом присутствует проблема списания дробной АП при удалении даже в заблокированном состоянии при блокировке не списывать АП. Решается установкой опции "Безлимитный режим".
Через админку последовательность - установить "Безлимитный режим", удалить услугу АП, снять "Безлимитный режим", снять блокировку, добавить услугу АП работает так как требуется (списывается полная сумма АП за текущий период).
При реализации данного механизма для автоматизации процесса при проведении платежа через скрипт возникла проблема.
Для установки флага "Безлимитный режим" используется urfa функция rpcf_save_account из URFAClientPhp с установкой параметра unlimited=1. Флаг устанавливается, но, не зависимо от состояния блокировки, происходит списание не полной суммы АП именно при вызове этой функции. Собственно это и есть проблема.
Вопросы:
1. Проблема в биллинге? (Но через админку флаг устанавливается без списания АП).
2. Проблема в URFAClient ? (как решить ?)
3. Нужно использовать другой способ (порядок) установки флага (какой ?)

Подобные темы на форуме поднимались, но похожей проблемы с решением на нашел.

dk
Сообщения: 424
Зарегистрирован: Чт авг 10, 2006 08:52

Сообщение dk »

Chrst писал(а): Вопросы:
1. Проблема в биллинге? (Но через админку флаг устанавливается без списания АП).
2. Проблема в URFAClient ? (как решить ?)
3. Нужно использовать другой способ (порядок) установки флага (какой ?)

Подобные темы на форуме поднимались, но похожей проблемы с решением на нашел.
Вспомнилось, что в 002 некоторые функции отрабатывали и возвращали результат, но следующая за ними функция изменений не видела, если запустить её сразу же. Приходилось ждать изменений данных в БД и только потом продолжать.

Аватара пользователя
Chrst
Сообщения: 370
Зарегистрирован: Пт май 11, 2007 09:28
Откуда: Медиахолдинг "ЛеККС"
Контактная информация:

Сообщение Chrst »

dk писал(а):Вспомнилось, что в 002 некоторые функции отрабатывали и возвращали результат, но следующая за ними функция изменений не видела, если запустить её сразу же. Приходилось ждать изменений данных в БД и только потом продолжать.
Проблема в том, что перед вызовом функции rpcf_save_account функций выполняющих действия над объектами не вызываются, только rpcf_get_accountinfo.
При этом если не вызывать rpcf_save_account, списания не происходит. Списание АП происходит именно с вызовом этой функции.

drag0mir
Сообщения: 64
Зарегистрирован: Сб ноя 24, 2007 13:46
Откуда: Нижний Новгород

Сообщение drag0mir »

здравствуйте

имею 5.2.1-009
пропатчил urfaclient на php на php
при обращении к ядру сессия в апаче виснет на глухо, страница грузится бесконечно, помогает только рестарт апача.

/netup/utm5/log/debug.log

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

 Info  &#58; Sep 27 01&#58;24&#58;04 ef2feb70 RPCServer@0.0.0.0&#58; Client connecting&#58; 127.0.0.1&#58;41919
 Info  &#58; Sep 27 01&#58;24&#58;04 ef2feb70 RPCConn&#58; Connection from&#58; 127.0.0.1&#58;41919 new Session Key <74726350275874bc14173f87ba812b64>
 Info  &#58; Sep 27 01&#58;24&#58;04 ef2feb70 RPCConn&#58; Card user <abc@127.0.0.1> is connecting
?Debug &#58; Sep 27 01&#58;24&#58;04 ef2feb70 DBA&#58;Ctx&#58; Looking for urgent DB context
?Debug &#58; Sep 27 01&#58;24&#58;04 ef2feb70 DBA Groups&#58; Group&#58; -27 from 1
?Debug &#58; Sep 27 01&#58;24&#58;04 ef2feb70 DBA&#58;Ctx&#58; Pushing back urgent DB context
-Stats &#58; Sep 27 01&#58;24&#58;04 ef2feb70 DBA Groups&#58;   Stats&#58; Uptime&#58; 00&#58;00&#58;00. Events&#58; 0; Errors&#58; 0
?Debug &#58; Sep 27 01&#58;24&#58;04 ef2feb70 StreamManager&#58; connection <364> created
 Info  &#58; Sep 27 01&#58;24&#58;04 ef2feb70 RPCConn&#91;SSL&#93;<abc@127.0.0.1>&#58; Access granted to &#91;SSL&#93;<abc@127.0.0.1> &#40;UID&#58; -27&#41;
?Debug &#58; Sep 27 01&#58;24&#58;04 ef2feb70 RPCConn&#91;SSL&#93;<abc@127.0.0.1>&#58; SSL type requested&#58; SSLv3&#40;4&#41;
?Debug &#58; Sep 27 01&#58;24&#58;04 ef2feb70 RPCConn&#91;SSL&#93;<abc@127.0.0.1>&#58; Call&#58; 0x2600 &#40;rpcf_get_discount_periods&#41;
?Debug &#58; Sep 27 01&#58;24&#58;04 ef2feb70 RPCConn&#91;SSL&#93;<abc@127.0.0.1>&#58; Real Call&#58; 0x2600 &#40;rpcf_get_discount_periods&#41;
?Debug &#58; Sep 27 01&#58;24&#58;04 ef2feb70 RPCConn&#91;SSL&#93;<abc@127.0.0.1>&#58; Call 0x2600 &#40;rpcf_get_discount_periods&#41; finished...
?Debug &#58; Sep 27 01&#58;24&#58;04 ef2feb70 RPCConn&#91;SSL&#93;<abc@127.0.0.1>&#58; Stream cleared
чувствую что возможно причина где-то в коде URFAClient_Connection.php

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

function open&#40;$address, $port&#41;                                                                                                                                                                                          
&#123;

    if &#40;$this->admin&#41; &#123;                                                                                                                                                                                                
        $context = stream_context_create&#40;&#41;;                                                                                                                                                                              
                stream_context_set_option&#40;$context, 'ssl', 'capture_peer_cert', true&#41;;                                                                                                                                           
                stream_context_set_option&#40;$context, 'ssl', 'passphrase', 'netup'&#41;;                                                                                                                                               
                stream_context_set_option&#40;$context, 'ssl', 'local_cert', '/home/soft/u/utm5/urfa/urfaphp/admin.crt'&#41;;                                                                                                            
            &#125; else &#123;                                                                                                                                                                                                             
                $context = stream_context_create&#40;array&#40;'ssl' => array&#40;'ciphers'=> "ADH-RC4-MD5",&#41;&#41;&#41;;                                                                                                                             
            &#125;                                                                                                                                                                                                                    
    $address = gethostbyname&#40;$address&#41;;                                                                                                                                                                                  
    $this->socket = stream_socket_client&#40;"tcp&#58;//127.0.0.1&#58;11758", $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $context&#41;;                                                                                                 
    return !empty&#40;$this->socket&#41;; // Для возврата ошибки                                                                                                                                                                 
&#125; 

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

# php5 -v
PHP 5.3.3-7+squeeze14 with Suhosin-Patch &#40;cli&#41; &#40;built&#58; Aug  6 2012 14&#58;18&#58;06&#41; 
Copyright &#40;c&#41; 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright &#40;c&#41; 1998-2010 Zend Technologies
    with Suhosin v0.9.32.1, Copyright &#40;c&#41; 2007-2010, by SektionEins GmbH

# apache2 -v
Server version&#58; Apache/2.2.16 &#40;Debian&#41;
Server built&#58;   Apr  1 2012 07&#58;14&#58;38


drag0mir
Сообщения: 64
Зарегистрирован: Сб ноя 24, 2007 13:46
Откуда: Нижний Новгород

Сообщение drag0mir »

разобрался, причина была в старых функциях в файле URFAClient_Admin.php
скачал с вики новый, но там безбожно много ошибок в коде ))
может есть у кого рабочий хороший вариант URFAClient_Admin.php поделистесь плиз на litec собака маил.ру

drag0mir
Сообщения: 64
Зарегистрирован: Сб ноя 24, 2007 13:46
Откуда: Нижний Новгород

Сообщение drag0mir »

большое спасибо MegaDENу )) файлик получил

i_destr
Сообщения: 12
Зарегистрирован: Ср сен 26, 2007 13:16

Сообщение i_destr »

Приветствую всех! Буду бесконечно признателен за свежую рабочую версию urfaphp для 009 биллинга на i_destr (ухо) ukr (точка) net

Моя текущая версия для 007 биллинга была пропатчена, однако так и не завелась по-человечески... Мне так кажется, что я накосячил в параметрах передачи админских полномочий, так как при обращении к биллингу имею такую картину:

RPCConn[SSL]<admin@127.0.0.1>: Access granted to [SSL]<admin@127.0.0.1> (UID: -4)
RPCConn[SSL]<admin@127.0.0.1>: SSL type requested: SSLv3(2)
RPCConn[SSL]<admin@127.0.0.1>: Request for function <0x2005> not permitted
RPCConn[SSL]<admin@127.0.0.1>: Session closed
RPCConn[SSL]<admin@127.0.0.1>: Session Key <a8dd6850f627fdd5a025e70b40a3222e> stored for UID -4 from <127.0.0.1>
RPCConn[SSL]<admin@127.0.0.1>: SSL cleared
StreamManager: connection <10> closed
RPCConn[SSL]<admin@127.0.0.1>: Session closed...

i_destr
Сообщения: 12
Зарегистрирован: Ср сен 26, 2007 13:16

Сообщение i_destr »

Уже разобрался - указал абсолютный путь к файлу admin.crt

Возник вопрос:

При добавлении тарифа, точнее при добавлении связки передачи ip-трафика и периодической услуги из тарифа хочу установить значение перерасчета Пересчитывать и возвращать полностью. Подскажите, пожалуйста, как это сделать?

eLLIk1n
Сообщения: 4
Зарегистрирован: Ср июл 04, 2012 08:16
Контактная информация:

Сообщение eLLIk1n »

drag0mir писал(а):большое спасибо MegaDENу )) файлик получил
перешлите и мне пожалуйста на eLLIk1n собака мэйл ру

Miker13
Сообщения: 3
Зарегистрирован: Ср окт 24, 2012 14:28

Сообщение Miker13 »

Ребята всем привет, пытался запустить urfaphp скаченный с wiki но увы ... Патч не патчит правильно, в ручную пропачить тоже не удалось. Ушла вторая неделя.
Просьба если можно кто нить кинте пропатченную урфу на мыло korolev.mike@gmail.com

Ответить