madf Posted September 21, 2011 Author Posted September 21, 2011 Не пойму, где происходит ошибка? На стороне клиента, на стороне сервера, на стороне Stargazer'а? Как это выглядит?
Roman Pogosyan Posted September 21, 2011 Posted September 21, 2011 na storone freeradius v rezhime debug sejchas raskodayu stg v rezhime debug .. dlyanu chto i gde
Roman Pogosyan Posted September 21, 2011 Posted September 21, 2011 vo vremya debug-a s neizmenennym kodom proizoshlo sleduyushee radius.cpp > 20:37:41 > 0040de0f535563af - ('roman', 'Framed-User') traffcounter_impl.cpp > 20:37:41 > FlushAndRemove() packets: 0(rem 0) ip2packets: 0(rem 0) traffcounter_impl.cpp > 20:37:46 > FlushAndRemove() packets: 0(rem 0) ip2packets: 0(rem 0) traffcounter_impl.cpp > 20:37:51 > FlushAndRemove() packets: 0(rem 0) ip2packets: 0(rem 0) traffcounter_impl.cpp > 20:37:56 > FlushAndRemove() packets: 0(rem 0) ip2packets: 0(rem 0) users_impl.cpp > 20:38:00 > Sec = 1316619480 users_impl.cpp > 20:38:00 > New Minute. old = 37 current = 38 users_impl.cpp > 20:38:00 > RealDelUser() users to del: 0 traffcounter_impl.cpp > 20:38:01 > Monitor=1 file TRAFFCOUNTER /var/stargazer/monitoring/traffcounter_r traffcounter_impl.cpp > 20:38:01 > FlushAndRemove() packets: 0(rem 0) ip2packets: 0(rem 0) traffcounter_impl.cpp > 20:38:01 > Monitor=1 file TRAFFCOUNTER /var/stargazer/monitoring/traffcounter_p traffcounter_impl.cpp > 20:38:06 > FlushAndRemove() packets: 0(rem 0) ip2packets: 0(rem 0) traffcounter_impl.cpp > 20:38:11 > FlushAndRemove() packets: 0(rem 0) ip2packets: 0(rem 0) users_impl.cpp > 20:38:14 > USERS: Del IP Idx stargazer: users_impl.cpp:640: void USERS_IMPL::DelFromIPIdx(uint32_t): Assertion `ip && "User has non-null ip"' failed. Aborted
Roman Pogosyan Posted September 21, 2011 Posted September 21, 2011 s packet->ip Wed Sep 21 20:41:59 2011 : Info: # Executing section accounting from file /etc/freeradius/sites-enabled/default Wed Sep 21 20:41:59 2011 : Info: +- entering group accounting {...} Wed Sep 21 20:41:59 2011 : Debug: rlm_stg: stg_accounting() Wed Sep 21 20:41:59 2011 : Debug: Acct-Status-Type := Start Wed Sep 21 20:41:59 2011 : Debug: rlm_stg: stg_accounting() Service-Type defined as 'Framed-User' Wed Sep 21 20:41:59 2011 : Debug: rlm_stg: stg_accounting error: '' Wed Sep 21 20:41:59 2011 : Info: ++[stg] returns fail Wed Sep 21 20:41:59 2011 : Info: Finished request 3.
Roman Pogosyan Posted September 21, 2011 Posted September 21, 2011 u stargazera traffcounter_impl.cpp > 20:41:57 > FlushAndRemove() packets: 0(rem 0) ip2packets: 0(rem 0) radius.cpp > 20:41:59 > RADIUS::ProcessAcctStartPacket cannot authorize user 'roman' users_impl.cpp > 20:42:00 > Sec = 1316619720 users_impl.cpp > 20:42:00 > New Minute. old = 41 current = 42 users_impl.cpp > 20:42:00 > RealDelUser() users to del: 0 traffcounter_impl.cpp > 20:42:02 > FlushAndRemove() packets: 0(rem 0) ip2packets: 0(rem 0) traffcounter_impl.cpp > 20:42:07 > FlushAndRemove() packets: 1(rem 0) ip2packets: 2(rem 0) no perevodit usera v online i vpisyvaet emu IP
Roman Pogosyan Posted September 21, 2011 Posted September 21, 2011 ip beretsya u menya is VALUE_PAIR PW_FRAMED_IP_ADDRESS
Roman Pogosyan Posted September 21, 2011 Posted September 21, 2011 kstete i vse eto vrode dzhe ne sletaet po tajmautu
Roman Pogosyan Posted September 21, 2011 Posted September 21, 2011 nashel ... naputal ty s vozvratom true i false
Roman Pogosyan Posted September 21, 2011 Posted September 21, 2011 v obshem dolzhno byt' if (!users->Authorize(ui->GetLogin(), packet->ip, 0xffFFffFF, this)) tak kak if dolzhen srabaryvat' kogda oshibka avtorizacii a ne kogda ona proshla udachno
madf Posted September 21, 2011 Author Posted September 21, 2011 vo vremya debug-a s neizmenennym kodom proizoshlo sleduyushee radius.cpp > 20:37:41 > 0040de0f535563af - ('roman', 'Framed-User') traffcounter_impl.cpp > 20:37:41 > FlushAndRemove() packets: 0(rem 0) ip2packets: 0(rem 0) traffcounter_impl.cpp > 20:37:46 > FlushAndRemove() packets: 0(rem 0) ip2packets: 0(rem 0) traffcounter_impl.cpp > 20:37:51 > FlushAndRemove() packets: 0(rem 0) ip2packets: 0(rem 0) traffcounter_impl.cpp > 20:37:56 > FlushAndRemove() packets: 0(rem 0) ip2packets: 0(rem 0) users_impl.cpp > 20:38:00 > Sec = 1316619480 users_impl.cpp > 20:38:00 > New Minute. old = 37 current = 38 users_impl.cpp > 20:38:00 > RealDelUser() users to del: 0 traffcounter_impl.cpp > 20:38:01 > Monitor=1 file TRAFFCOUNTER /var/stargazer/monitoring/traffcounter_r traffcounter_impl.cpp > 20:38:01 > FlushAndRemove() packets: 0(rem 0) ip2packets: 0(rem 0) traffcounter_impl.cpp > 20:38:01 > Monitor=1 file TRAFFCOUNTER /var/stargazer/monitoring/traffcounter_p traffcounter_impl.cpp > 20:38:06 > FlushAndRemove() packets: 0(rem 0) ip2packets: 0(rem 0) traffcounter_impl.cpp > 20:38:11 > FlushAndRemove() packets: 0(rem 0) ip2packets: 0(rem 0) users_impl.cpp > 20:38:14 > USERS: Del IP Idx stargazer: users_impl.cpp:640: void USERS_IMPL::DelFromIPIdx(uint32_t): Assertion `ip && "User has non-null ip"' failed. Aborted Ну да, при * там IP нету, вполне и 0 может быть.
madf Posted September 21, 2011 Author Posted September 21, 2011 v obshem dolzhno byt' if (!users->Authorize(ui->GetLogin(), packet->ip, 0xffFFffFF, this)) tak kak if dolzhen srabaryvat' kogda oshibka avtorizacii a ne kogda ona proshla udachno Да, верно. Это когда схему авторизации менял - недоглядел. Патч: fix-radius-authorization-patch.diff
Roman Pogosyan Posted September 22, 2011 Posted September 22, 2011 Я бы ещё добавил поле в бд , которое помнило последние списание денег у абонента, и при снятии абонентки проверялось бы его значение. Это нашло на меня во время тестирования. Пример: снятие абонентки по дням (не знаю как поведёт себя абонентка по месяцам) если на момент срабатывания действия по снятию ядро биллинга ляжет и абонентка не спишется, то после старта системы было бы правильно это проверить , и списать не списанное
madf Posted September 22, 2011 Author Posted September 22, 2011 Я бы ещё добавил поле в бд , которое помнило последние списание денег у абонента, и при снятии абонентки проверялось бы его значение. Это нашло на меня во время тестирования. Пример: снятие абонентки по дням (не знаю как поведёт себя абонентка по месяцам) если на момент срабатывания действия по снятию ядро биллинга ляжет и абонентка не спишется, то после старта системы было бы правильно это проверить , и списать не списанное Это будет списание по интерфалу. Слишком много изменений.
Roman Pogosyan Posted September 23, 2011 Posted September 23, 2011 soglasen no dlya billing eto vazhno
madf Posted September 23, 2011 Author Posted September 23, 2011 Изначальная архитектура на это не рассчитана. По этому менять что либо достаточно сложно и чревато подводными граблями.
Maxaon Posted October 7, 2011 Posted October 7, 2011 А можно добавить создание симлинков в принудительном порядке в projects/stargazer/Makefile? diff 92,95c92,95 < ln -s ../conf-available.d/mod_ao.conf $(PREFIX)/etc/stargazer/conf-enabled.d/mod_ao.conf < ln -s ../conf-available.d/mod_ia.conf $(PREFIX)/etc/stargazer/conf-enabled.d/mod_ia.conf < ln -s ../conf-available.d/mod_ping.conf $(PREFIX)/etc/stargazer/conf-enabled.d/mod_ping.conf < ln -s ../conf-available.d/mod_sg.conf $(PREFIX)/etc/stargazer/conf-enabled.d/mod_sg.conf --- > ln -sf ../conf-available.d/mod_ao.conf $(PREFIX)/etc/stargazer/conf-enabled.d/mod_ao.conf > ln -sf ../conf-available.d/mod_ia.conf $(PREFIX)/etc/stargazer/conf-enabled.d/mod_ia.conf > ln -sf ../conf-available.d/mod_ping.conf $(PREFIX)/etc/stargazer/conf-enabled.d/mod_ping.conf > ln -sf ../conf-available.d/mod_sg.conf $(PREFIX)/etc/stargazer/conf-enabled.d/mod_sg.conf
madf Posted October 7, 2011 Author Posted October 7, 2011 Без проблем. Сделал. Хотя патч оформлен неправильно.
yKpon Posted October 8, 2011 Posted October 8, 2011 у одного из провайдеров (это Домолинк) не происходит начисление абонплаты если выхода в интернет не было и траффик равен 0 даже если баланс положителен, хотелось бы тоже иметь такую опцию, своим тоже возвращаю, но ручным скриптом хотя скрипт уже упрощён, т.к. не приходится возвращать тем кто в минусе
madf Posted October 8, 2011 Author Posted October 8, 2011 у одного из провайдеров (это Домолинк) не происходит начисление абонплаты если выхода в интернет не было и траффик равен 0 даже если баланс положителен, хотелось бы тоже иметь такую опцию, своим тоже возвращаю, но ручным скриптом хотя скрипт уже упрощён, т.к. не приходится возвращать тем кто в минусе Для этого есть "заморозка".
SpiderX Posted October 8, 2011 Posted October 8, 2011 Для этого есть "заморозка". Заморозили (абонент четко сказал, сколько не будет пользоваться услугами) — не сняли денег. Не заморозили (не знает абонент на сколько он уедет, когда приедет, сколько будет отсутствовать) — не сняли денег, т.к. последняя дата подключения больше 28/29/30/31 дня. # Charge a fee only if user was active 'today' in case of SpreadFee = yes # or charge a fee only if user was active this month in case of SpreadFee = no # Parameter: optional # Values: yes, no # Default: no TrueFee = yes На трафик лучше не завязывать, не все используют. А вообще фича интересная.
madf Posted October 8, 2011 Author Posted October 8, 2011 Реализовать можно, но в 2.408 этого не будет. Раньше думать надо было, до rc1 Сейчас только багофиксы.
yKpon Posted October 8, 2011 Posted October 8, 2011 ведь в последней версии получается если абонент в минусе, то доступа нет и абонплата не снимается, это логично и при положительном балансе, ну не пользовался человек совсем, было бы замечательно если в следующих версиях будет эта фича
dummy Posted October 8, 2011 Posted October 8, 2011 да, совсем неплохо было-бы. а то у меня снятие абонплаты (посуточной, если клиент пользовался) реализовано скриптами. и предложение уважаемому madf: сделать в настройках: 1. снятие абонплаты по периодам (час, день, месяц ....) 2. снятие или обязательное или только в те периоды, в которые клиент пользовался инетом.
Recommended Posts