snark писал(а):
а если сделать вариант что-то в духе такого: юзер идет на страницу bill.provider.ru, на которой висит скрипт, например на похапе, который "смотрит" адрес клиента, берет из базы его логин и пасс и POST-ит их на страницу статистики stat.provider.ru после чего делает туда редирект ... ну или скрипт вообще висит на stat.provider.ru и отрабатвает только при запросе stat.provider.ru/ после чего опять же берет логин/пасс юзера, постит их в форму на stat.provider.ru/bgbillng/webexecuter ... как именно оно будет работать и будет ли работать вообще - я ХЗ, но для юзера все будет полностью прозрачно, что и требовалось ...
Сделал... у меня авторизация в домашний кабинет идет по логину dialup модуля, но авторизация по паролю статистики не отключена (хотя и не предлагается), поэтому я сделал так:
клиент будучи в онлайне заходит на страничку: cabinet.provider.net там его встречает скрипт, который ищет его IP среди сессий, для которых исправно идут accounting update пакеты (так исключаем зависшие сессии):
select `lid` from `log_session_1_200911` where `ipaddr`=".$ip_addr_d." and `session_stop`>=now() - interval 5 minute and `session_stop` = (select max(`session_stop`) from `log_session_1_200911` where `ipaddr`=".$ip_addr_d." and `session_stop`>=now() - interval 5 minute)
если таковые имеются, то используя полученный login_id получаю номер договора и пароль статистики:
select `title`, `pswd` from `contract` where `id` = (select `cid` from `user_login_1` where `id`=".$login_id.")
потом выдаю пользователю редирект:
print "<meta http-equiv=\"refresh\" content=\"0;url=http://billing.provider.net/bgbilling/webexecuter?midAuth=0&pswd=".$web_pass."&user=".$contract_name."\"/>";
В результате пользователь попадает авторизованным в домашний кабинет, а если произойдет какая-то ошибка или подобрав IP, доступ к чужому кабинету получит кто-то чужой, то в URL он увидит только пароль статистики, а чтобы сменить пароль на интернет нужно знать именно пароль dialup модуля, так что аккаунт не будет украдет

Все отлично работает, только вот все это... бессмысленно ! Так как домашний кабинет больше всего нужен, когда кончились деньги и отключился интернет. А в этом случае если биллинг и выдаст accept вместо reject, то все равно не создаст сессию, и самое главное -не будет принимать update пакеты для этой сессии и ее обновлять. Так что таблица dialup_reject_to_accept_<mid> тут не выход - она не обновляется. Ну и что ж, что кто-то зашел с IP адреса, которому биллинг полчаса назад выдал accept вместо reject'а - не факт, что тот, кому адрес был выдан до сих пор в онлайне, а это - не злоумышленник...
Вопрос опять открыт.