urfaclient на php

Вопросы по сопутствующим продуктам производства партнеров
Ответить
duzer
Сообщения: 82
Зарегистрирован: Сб ноя 04, 2006 12:50

Сообщение duzer »

С админскими функциями замечено не было. С пользовательскими - да, есть такое.

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

Сообщение ds »

solomon писал(а):ни кто не сталкивался с проблемой последовательных вызовов 2х функций урфы пхп?... не могу понять в чем я ошибаюсь... ПО последнее php 5.3 urfaphp - рабочая... переменные передаются из питона в пых скрипт... что ему нужно ума не приложу...
Некорректно написанные функции могут блокировать вызовы.
Обсуждалось на первых страницах - проблема скорее всего
1. в неверном кол-ве параметров
2. в функции urfa_get_data() - в первых версиях urfa_get_datа() нужно было вызывать несколько раз чтобы получить результат и корректно завершить работу функции. В исправленном варианте достаточно одного вызова, а второй вызов в этой же функции вешает скрипт.
создавайте каждый раз новый объект для urfa, а затем вызывайте функцию
Каждый раз создавать новый объект -> создается новое соединение к биллингу при незакрытом предыдущем. Не есть гуд.

Cramac
Сообщения: 454
Зарегистрирован: Сб июл 01, 2006 17:59

Сообщение Cramac »

А кто подскажет, как узнать свободный ИП из пула в биллинге, при привязке тарифа.

duzer
Сообщения: 82
Зарегистрирован: Сб ноя 04, 2006 12:50

Сообщение duzer »

rpcf_get_free_ips_for_house($idhouse);

solomon
Сообщения: 316
Зарегистрирован: Вт мар 16, 2010 08:39

Сообщение solomon »

Вызов происходит админских функций... Сначала получить данные поользователя, далее привязать IP. Питон параметры передает судя по логам, далее присваиваются в пыхе переменным, тоже логирруются... Значит проблема получается в урфе но ен пойму где именно .....

обратил внимание при дебаге pycheker test_ex.py пишет при выполнении 0*2700 функции пишет WARNING .... NONE и не записывает адрес в базу
при запуске тогоже скрипта но в режиме pycheker test_ex.py | more
тоже пишет ВАРНИНГ НОНЕ ... НО!!!! IP адрес присваивает... у меня уж мозги прям кипят в чем же там дело....

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

Сообщение ds »

solomon писал(а):Вызов происходит админских функций... Сначала получить данные поользователя, далее привязать IP. Питон параметры передает судя по логам, далее присваиваются в пыхе переменным, тоже логирруются... Значит проблема получается в урфе но ен пойму где именно .....

обратил внимание при дебаге pycheker test_ex.py пишет при выполнении 0*2700 функции пишет WARNING .... NONE и не записывает адрес в базу
при запуске тогоже скрипта но в режиме pycheker test_ex.py | more
тоже пишет ВАРНИНГ НОНЕ ... НО!!!! IP адрес присваивает... у меня уж мозги прям кипят в чем же там дело....
Убрать все echo и print_r из php скрипта?
Не силен в питоне, может связано со stdout или stderr и subprocess.popen валится с ошибкой?

solomon
Сообщения: 316
Зарегистрирован: Вт мар 16, 2010 08:39

Сообщение solomon »

Все нашел свою ошибку!!!!
Вот в чем проблема была

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

Функция subprocess.call() блокирует вbinолнение сценария до получения ответа, в то время как функция suьpro-cess.Popen() - нет.
как раз я использовал Попен по не заннию... на сэлле все прекрасно работает... Всем спасибо за помощь советы...

solomon
Сообщения: 316
Зарегистрирован: Вт мар 16, 2010 08:39

Сообщение solomon »

Скажите пожалуйста есть ли функция получения привязанного адреса пользователя?

Cramac
Сообщения: 454
Зарегистрирован: Сб июл 01, 2006 17:59

Сообщение Cramac »

Можно из базы взять или выше парами постами посмотрите в функции смены ип/мака

solomon
Сообщения: 316
Зарегистрирован: Вт мар 16, 2010 08:39

Сообщение solomon »

получил из базы(так удобней) скажите пожалуйста как его преобразовать в удобочитаемый вид?

inet_ntoa(ip) as ip - возвращает NULL

Cramac
Сообщения: 454
Зарегистрирован: Сб июл 01, 2006 17:59

Сообщение Cramac »

"SELECT inet_ntoa (ip & 0xFFFFFFFF) as ip,id,uname FROM `ip_groups` WHERE `is_deleted`<1 and `uname`='$login' "
возвращает нужное

solomon
Сообщения: 316
Зарегистрирован: Вт мар 16, 2010 08:39

Сообщение solomon »

огромное человеческое спасибо!! у меня запрос был посложнее ...

solomon
Сообщения: 316
Зарегистрирован: Вт мар 16, 2010 08:39

Сообщение solomon »

Cramac писал(а):"SELECT inet_ntoa (ip & 0xFFFFFFFF) as ip,id,uname FROM `ip_groups` WHERE `is_deleted`<1 and `uname`='$login' "
возвращает нужное
Скажите пожалуйста я присваиваю адрес 172.18.6.3 пользователю, в базе он отображается как -1408104957
При inet_ntoa (ip & 0xFFFFFFFF) возвращает мне 11.11.11.1... почему так ?
и должен ли в базе IP быть с минусом?

оч странно... в клиенте мускуля отрабатывает, а в в скрипте пхп нет...

И еще столкунулся с проблемой... создаю пользователя Дабавляю Тариф (Период.услуга и Передача трафика) в передаче трафика добавляю IP группу с фейковым IP и пральными логином и паролем... у меня по этим логину и паролю идет аутентификация и авторизация, но при добавлении IP и затем удалении его же у пользователя нет ни одной IP группы, т.е. пропадает возможность авторизации.
Подскажите плиз как мне сделать лучше?
Запрос на вторизацию

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

authorize_check_query = "SELECT ig.ip_group_id, ig.uname, 'Cleartext-Password', ig.upass, '&#58;=' \
            FROM iptraffic_service_links il, ip_groups ig, service_links sl, accounts a \
            WHERE ig.uname='%&#123;SQL-User-Name&#125;' AND ig.ip_group_id=il.ip_group_id AND sl.account_id=a.id \
            AND a.is_deleted=0 AND a.balance>0 and a.int_status=1 and sl.id=il.id and ig.is_deleted=0 and il.is_deleted=0 and sl.is_deleted
=0"

Аватара пользователя
MegaDEN
Сообщения: 12
Зарегистрирован: Чт июл 09, 2009 17:53

Сообщение MegaDEN »

MegaDEN писал(а):Помогите с проблемой, плз. Добавляю разовую услугу через функцию
0&#215;2551 rpcf_add_service_to_user

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


           if &#40;$balance > 300&#41; &#123;
		$service&#91;'user_id'&#93; = $user_id;
		$service&#91;'account_id'&#93; = $account_id;
		$service&#91;'service_id'&#93; = $service_id_normal;
		$service&#91;'service_id'&#93; = 17;
		$service&#91;'service_type'&#93; = 1;
		$service&#91;'return_type'&#93; = '';
		$service&#91;'tariff_link_id'&#93; = 0;
		$urfa_admin->rpcf_add_service_to_user&#40;$service&#41;; //0x2551
&#125;
В результате страница зависает. В логах виден старт функции, но финиша нет.

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



?Debug &#58; Nov 25 13&#58;23&#58;19 b04d6b70 RPCConn&#91;SSL&#93;<megaden@10.1.1.10>&#58; Call&#58; 0xffffbffa &#40;__rpcs_get_user_info&#41;
?Debug &#58; Nov 25 13&#58;23&#58;19 b04d6b70 RPCConn&#91;SSL&#93;<megaden@10.1.1.10>&#58; Real Call&#58; 0xffffbffa &#40;__rpcs_get_user_info&#41;
?Debug &#58; Nov 25 13&#58;23&#58;19 b04d6b70 DBCtx&#58; <167142232> SQL SELECT query&#58; SELECT login, password, basic_account, create_date, last_change_date,who_create, who_change, is_juridical, full_name, juridical_address, actual_address,work_telephone, home_telephone, mobile_telephone, web_page, icq_number, tax_number,kpp_number, bank_id, bank_account, comments, email, house_id, flat_number, entrance,floor, district, building, passport, personal_manager, connect_date, is_send_invoice,advance_payment FROM users WHERE id='10' AND is_deleted=0
?Debug &#58; Nov 25 13&#58;23&#58;19 b04d6b70 DBCtx&#58; <167142232> SQL SELECT query&#58; SELECT group_id FROM users_groups_link WHERE user_id='10'
?Debug &#58; Nov 25 13&#58;23&#58;19 b04d6b70 DBCtx&#58; <167142232> SQL SELECT query&#58; SELECT paramid, value FROM user_additional_params WHERE userid='10'
?Debug &#58; Nov 25 13&#58;23&#58;19 b04d6b70 RPCConn&#91;SSL&#93;<megaden@10.1.1.10>&#58; Call 0xffffbffa &#40;__rpcs_get_user_info&#41; finished...
?Debug &#58; Nov 25 13&#58;23&#58;19 b04d6b70 RPCConn&#91;SSL&#93;<megaden@10.1.1.10>&#58; Stream cleared
?Debug &#58; Nov 25 13&#58;23&#58;19 b0adcb70 RPCConn&#91;SSL&#93;<phpurfa@10.1.1.10>&#58; Call&#58; 0x3011 &#40;rpcf_get_tariff&#41;
?Debug &#58; Nov 25 13&#58;23&#58;19 b0adcb70 RPCConn&#91;SSL&#93;<phpurfa@10.1.1.10>&#58; Real Call&#58; 0x3011 &#40;rpcf_get_tariff&#41;
?Debug &#58; Nov 25 13&#58;23&#58;19 b0adcb70 RPCConn&#91;SSL&#93;<phpurfa@10.1.1.10>&#58; Call 0x3011 &#40;rpcf_get_tariff&#41; finished...
?Debug &#58; Nov 25 13&#58;23&#58;19 b0adcb70 RPCConn&#91;SSL&#93;<phpurfa@10.1.1.10>&#58; Stream cleared
?Debug &#58; Nov 25 13&#58;23&#58;19 b0adcb70 RPCConn&#91;SSL&#93;<phpurfa@10.1.1.10>&#58; Call&#58; 0x2551 &#40;rpcf_add_service_to_user&#41;
?Debug &#58; Nov 25 13&#58;23&#58;19 b0adcb70 RPCConn&#91;SSL&#93;<phpurfa@10.1.1.10>&#58; Real Call&#58; 0x2551 &#40;rpcf_add_service_to_user&#41;
?Debug &#58; Nov 25 13&#58;23&#58;19 b0adcb70 UTM5 DBA&#58; DBAccess instance created
?Debug &#58; Nov 25 13&#58;23&#58;19 b0adcb70 DBA&#58;Ctx&#58; Looking for free context &#40;system=0&#41;

Переменные вроде проверял. Подставлял явно значения. Результат тот-же. Выносил функцию в отдельный файл - тоже виснит. Ставил тип сервиса 0, скрипт не виснет.

Версия билинга 5.2.1-008. С урфой все ок, по крайне мере все остальное работает, как по части юзерских функций, так и по части админских (добавление платежеи и т.п.)
Решено. В функции rpcf_add_service_to_user на http://wiki.flintnet.ru не хватало передачи 2х параметров ядру.

Было:

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

         case 1&#58; //once service
             break;
         case 2&#58; //periodic service
Должно быть:

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

         case 1&#58; //once service
             $packet->DataSetInt&#40;$service&#91;'slink_id'&#93;&#41;;
             $packet->DataSetInt&#40;$service&#91;'discount_date'&#93;&#41;;
             break;
         case 2&#58; //periodic service

apex595
Сообщения: 26
Зарегистрирован: Пт ноя 09, 2007 12:09

Сообщение apex595 »

Насчет DataSetLong
у меня работает так: (008u6)

function DataSetLong($param)
{
$hi = bcdiv($param,4294967296);
$lo = bcmod($param,4294967296);
$this->data[] = pack("N2", $hi, $lo);
$this->len += 12;
}

а так виснет

function DataSetLong($param)
{
$hi = base_convert(bcdiv($param,4294967296),10,16);
$lo = base_convert(bcmod($param,4294967296),10,16);
$this->data[] = pack('H*',$hi.$lo);
$this->len += 12;
}

Ответить