Биллинговая система Nodeny

Главная категория => Разработка => Тема начата: ser970 от 27 Сентября 2010, 19:34:48



Название: авторизированые (всегда онлайн)
Отправлено: ser970 от 27 Сентября 2010, 19:34:48
стоимость с установкой 100$ (жалко свое время  - а я свое ценю)

скрин прикладываю.

код по оплате.
 ;)
в даном случае у клиента стоит всегда онлайн и не используется авторизатор.


Название: Re: авторизированые (всегда онлайн)
Отправлено: Andrey Zentavr от 28 Сентября 2010, 11:02:29
А чем он кардинально отличается от этого?
http://forum.nodeny.com.ua/index.php?topic=292.0
Который тем более бесплатный?

P.S.: Время своё я тоже ценю :)


Название: Re: авторизированые (всегда онлайн)
Отправлено: ser970 от 28 Сентября 2010, 11:26:13
А чем он кардинально отличается от этого?
http://forum.nodeny.com.ua/index.php?topic=292.0
Который тем более бесплатный?

P.S.: Время своё я тоже ценю :)
не уловил связи походу єто разные вещи. там модуль управления через клиенскую статистику - тут мониторинг

у меня есть пару клиентов у которых вооще нет авторизатора - им включен всегда online.

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

выкладывал беcплатно - началось скинь  скрин патч  готовый файл  и прочее - типа трудно найти пару строк в коде и изменить? . по просил - удалил ту тему и создал здесь .
  

з.ы. могу и бесплатно скинуть - если не будет глупых вопросов. типа а $ что  єто и как его писать.


Название: Re: авторизированые (всегда онлайн)
Отправлено: Cell от 28 Сентября 2010, 11:51:06
Озвучь еще разок, если не трудно (без глупых вопросов) т.к. не успел себе переписать, или в личку.


Название: Re: авторизированые (всегда онлайн)
Отправлено: stix от 28 Сентября 2010, 11:54:30
Цитировать
з.ы. могу и бесплатно скинуть - если не будет глупых вопросов. типа а $ что  єто и как его писать.
большинство местных форумчан адекватные люди


Название: Re: авторизированые (всегда онлайн)
Отправлено: VitalVas от 28 Сентября 2010, 12:16:33
з.ы. могу и бесплатно скинуть - если не будет глупых вопросов. типа а $ что  єто и как его писать.
выложи, а кто будет очень "некрасиво вести" то сделай им за $$


Название: Re: авторизированые (всегда онлайн)
Отправлено: ser970 от 28 Сентября 2010, 12:28:46
Озвучь еще разок, если не трудно (без глупых вопросов) т.к. не успел себе переписать, или в личку.
из-за личного уважения к т.Cell

после строк
Код:
$eurl='';				# end url - строка, дописываемая к запросу в кнопках страниц
$Fw=int $F{w}; # кнопка `Вид` - какие столбцы выводить в списке
$eurl.="&w=$Fw" if $Fw;
$Fed=int $F{ed}; # единица измерения трафика (Мб/кб/байт)
$eurl.="&ed=$Fed" if $Fed;
$Fed||=2; # по умолчанию целые Мб
$Fed--;
добавляем  это определение текущей таблицы трафика в даном случае х таблица
Код:
$sdbtr=`date +x%Yx%-mx%-d`;
$au_t=time();
$au_t=$au_t-300;#период вермени за какой будем считать траф если упользователя стоит всегда онлине

после строк
Код:
# =======================
#         Поиск
# =======================

$sel_from_users="id FROM users WHERE $where_grp";
$sel_from_fullusers="id FROM fullusers WHERE $where_grp";
$sel_from_users=$sel_from_fullusers if abs($F{sort})>5;

втавляем строку

Код:
$sel_from_users_au="users.id as id,ip,`in`,`out` from users left join $sdbtr on users.id=$sdbtr.mid where (auth<>'no' and lstate=0) or (time>$au_t  and auth='no' and lstate>0) group by users.id";

собственно сам запрос

меняем строки на такую (она идеч чуть ниже )

Код:
 '2' => ["$sel_from_users_au",			'Авторизованные в данный момент'],


и и приводим кусок кода к виду

Код:
  while( %h=%{ $sql2->get_line } )
   {
      $at=$oln='';
      # показать метод авторизации
      if( $show_auth_m && nSql->new({
           dbh =>$dbh,
           sql =>"SELECT act,time FROM login WHERE act>0 AND mid=$h{id} ORDER BY time DESC LIMIT 1",
           show => 'line',
           comment => 'Последняя авторизация',
           hash =>\%hh }) )
{
   $auth_t=$hh{time}>0 && '('.&the_short_time($hh{time},$t).')';
   $auth_t=~s| |&nbsp;|g;
   $auth_t.='&nbsp;&nbsp;';
   $at=$h{auth};
}else{
   $auth_t='&nbsp;';
   $sthst=&sql($dbh," select sum(`in`) as `in`,sum(`out`) as `out` from $sdbtr where mid=$h{id} and time>$au_t limit 1");
   $pst=$sthst->fetchrow_hashref();
   $tin=$pst->{in};
   $tout=$pst->{out};
   if (($tin >0)&($tout>0))
{
   $at="on";
   $oln=1;
}
}
if ($oln == 1)
   {
$ips_tbl.=&tag('tr',
&tag('td',$auth_t,'width=50%').
&tag('td',&ShowModeAuth($at),'width=1%').
&tag('td',$h{ip}).
&tag('td',$h{lstate}? &tag('acronym','&hearts;',"title='всегда online активность входящий=".$tin." исходящий=".$tout."' class=error") : '&nbsp;&nbsp;','width=1%')
);
   }else{
$ips_tbl.=&tag('tr',
&tag('td',$auth_t,'width=50%').
&tag('td',&ShowModeAuth($h{auth}),'width=1%').
&tag('td',$h{ip}).
&tag('td',$h{lstate}? &tag('acronym','&hearts;',"title='всегда online активность входящий=".$tin." исходящий=".$tout."' class=error") : '&nbsp;&nbsp;','width=1%')
   );
   }
$ids.=&RRow('','c',$h{id});
   }

тоесть пользователей которые всегда онлайн мониторим по наличию входящего и исходященно (именно и а не или )
ну вот и все.


Название: Re: авторизированые (всегда онлайн)
Отправлено: blackjack от 28 Сентября 2010, 13:55:12
дякую, працює  :)


Название: Re: авторизированые (всегда онлайн)
Отправлено: ser970 от 28 Сентября 2010, 14:37:01
дякую, працює  :)
а че там не работать - я выкладываю только то что проверил


Название: Re: авторизированые (всегда онлайн)
Отправлено: Александр (AleksHr) от 28 Сентября 2010, 16:55:48
+1, все работает с пол пинка  :).

Может я нагляю, но было бы еще лутчше если бы в карте клиента еще отображался значок, но самое главное там колонка последняя активность, очень удобно было бы  ;).


Название: Re: авторизированые (всегда онлайн)
Отправлено: poxy. от 28 Сентября 2010, 17:15:33
+1 Спасибо!


Название: Re: авторизированые (всегда онлайн)
Отправлено: Maks от 28 Сентября 2010, 18:41:51
Довольно все понятно расписано. Спасибо.
Сделай стоимость около 100грн. Чтоб не дорого. А то за жлобятся, захотят сами и начнут тут постить. что и как.
ТО и тут будет меньше тупых вопросов которые никогда работали в консоли, а всегда качали по кнопочкам.


Название: Re: авторизированые (всегда онлайн)
Отправлено: ser970 от 28 Сентября 2010, 20:11:55
Довольно все понятно расписано. Спасибо.
Сделай стоимость около 100грн. Чтоб не дорого. А то за жлобятся, захотят сами и начнут тут постить. что и как.
ТО и тут будет меньше тупых вопросов которые никогда работали в консоли, а всегда качали по кнопочкам.
если есть желание можете перечислять на расчетній счет стаса - (я только чуть именил )

есть еще пару доработок
 зы по поводу колонок не совсем понял - подробмее плис


Название: Re: авторизированые (всегда онлайн)
Отправлено: Александр (AleksHr) от 28 Сентября 2010, 21:11:13
зы по поводу колонок не совсем понял - подробмее плис

Вкладка клиенты - дальше кнопочка info около клиента (тоесть открываем информацию о клиенте). Теперь тут вверху есть тбаличка что на рисунке.
1 - значок авторизатора как в списке неплохо было бы.
2 - последняя активность, тоесть видно сразу когда клиент последний раз был в сети.


Название: Re: авторизированые (всегда онлайн)
Отправлено: ser970 от 29 Сентября 2010, 08:46:36
Вкладка клиенты - дальше кнопочка info около клиента (тоесть открываем информацию о клиенте). Теперь тут вверху есть тбаличка что на рисунке.
1 - значок авторизатора как в списке неплохо было бы.
2 - последняя активность, тоесть видно сразу когда клиент последний раз был в сети.

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


Название: Re: авторизированые (всегда онлайн)
Отправлено: ser970 от 29 Сентября 2010, 09:45:17
счас тестируется фишка
она будет работать и без переделки listusers.pl


Название: Re: авторизированые (всегда онлайн)
Отправлено: ser970 от 29 Сентября 2010, 11:41:07
touch autv.pl

Код:
#!/usr/bin/perl

use DBI;
use Time::localtime;
use Time::HiRes qw (gettimeofday tv_interval);
#28 сентябрь 2010
$tme=time();
$capl='/usr/local/nodeny/web/calls.pl';
$main_config='/usr/local/nodeny/nodeny.cfg.pl';
print ("error: not file /usr/local/nodeny/conf.cfg.pl") unless -e $main_config;
eval{require $main_config};
eval{require $capl};

$DSN="DBI:mysql:database=$db_name;host=$db_server;mysql_connect_timeout=$mysql_connect_timeout";
$dbh=DBI->connect($DSN,$user,$pw,{PrintError=>1});

$sdbtr=`date +x%Yx%-mx%-d`;
$au_t=time();
$au_t=$au_t-300;
$sth=$dbh->prepare(" select users.id as id,ip,`in`,`out` from users left join $sdbtr on users.id=$sdbtr.mid where lstate>0 and time>$au_t group by users.id; ");
$sth->execute;
while ($p=$sth->fetchrow_hashref)
    {
$use_id=$p->{id};
$tin=$p->{in};
$tout=$p->{out};
if (($tin > 0)&($tout > 0))
   {
$rsh = $dbh->prepare("INSERT INTO dblogin set mid=$use_id,act=17,time=unix_timestamp()");
$rsh->execute();
}
    }
1;


ну в вертушка

Код:
#!/bin/sh

while true
do
 nice -n -15 perl /usr/local/nodeny/autv.pl
 sleep 120
done



запуск  вертушки в фоне

работает как с правленім listusers  так и нет

конечно кошернее добавить в тело nol2auth.pl
но мне и так сойдет.


Название: Re: авторизированые (всегда онлайн)
Отправлено: poxy. от 30 Сентября 2010, 00:54:31
Спасибо! :)


Название: Re: авторизированые (всегда онлайн)
Отправлено: Андрій от 30 Сентября 2010, 21:39:54
потрібна функція, дякую.


Название: Re: авторизированые (всегда онлайн)
Отправлено: Александр (AleksHr) от 06 Октября 2010, 14:21:01
При использовании вишестоящей фичи что показывает последнюю активность абонента, перестает работать - Операции > Авторизированные сейчас.
Тоесть иногда кого то показывает, но далеко не как раньше, ясное дело listuset.pl модифицырован...

Может возможно как нить исправить?)


Название: Re: авторизированые (всегда онлайн)
Отправлено: Андрій от 06 Октября 2010, 14:37:57
в мене все працює нормально, listuset.pl я не змінював


Название: Re: авторизированые (всегда онлайн)
Отправлено: ser970 от 06 Октября 2010, 18:10:51
При использовании вишестоящей фичи что показывает последнюю активность абонента, перестает работать - Операции > Авторизированные сейчас.
Тоесть иногда кого то показывает, но далеко не как раньше, ясное дело listuset.pl модифицырован...

Может возможно как нить исправить?)
ничего там не перестает. и рабоате что так что єтак - проверяно и первій вариант и второй.


Название: Re: авторизированые (всегда онлайн)
Отправлено: Александр (AleksHr) от 07 Октября 2010, 07:58:19
Якщо не змінювати listusers.pl - все працює, якщо змінити то ні. Але я не бачу змісту тепер його змінювати, все рівно ключики є :), думав просто якщо початкова версія буде - то не буде видно авторизованих в списку абонентів, але все видно успішно ;).


Название: Re: авторизированые (всегда онлайн)
Отправлено: Александр (AleksHr) от 09 Октября 2010, 00:02:11
Код:
#!/bin/sh

while true
do
 nice -n -15 perl /usr/local/nodeny/autv.pl
 sleep 120
done

Внимание! Не забудьте назвать файл например с буквы z, чтобы он запускался в последнюю очередь. Так как ниодин скрипт после него стартовать уже не будет! Сегодня час потратил чтобы понять почему скрипты автоматически перестали запускатся (назвал был autv.sh).


Название: Re: авторизированые (всегда онлайн)
Отправлено: keeper1978 от 09 Октября 2010, 07:23:51
Озвучь еще разок, если не трудно (без глупых вопросов) т.к. не успел себе переписать, или в личку.
из-за личного уважения к т.Cell

после строк
Код:
$eurl='';				# end url - строка, дописываемая к запросу в кнопках страниц
$Fw=int $F{w}; # кнопка `Вид` - какие столбцы выводить в списке
$eurl.="&w=$Fw" if $Fw;
$Fed=int $F{ed}; # единица измерения трафика (Мб/кб/байт)
$eurl.="&ed=$Fed" if $Fed;
$Fed||=2; # по умолчанию целые Мб
$Fed--;
добавляем  это определение текущей таблицы трафика в даном случае х таблица
Код:
$sdbtr=`date +x%Yx%-mx%-d`;
$au_t=time();
$au_t=$au_t-300;#период вермени за какой будем считать траф если упользователя стоит всегда онлине

после строк
Код:
# =======================
#         Поиск
# =======================

$sel_from_users="id FROM users WHERE $where_grp";
$sel_from_fullusers="id FROM fullusers WHERE $where_grp";
$sel_from_users=$sel_from_fullusers if abs($F{sort})>5;

втавляем строку

Код:
$sel_from_users_au="users.id as id,ip,`in`,`out` from users left join $sdbtr on users.id=$sdbtr.mid where (auth<>'no' and lstate=0) or (time>$au_t  and auth='no' and lstate>0) group by users.id";

собственно сам запрос

меняем строки на такую (она идеч чуть ниже )

Код:
 '2' => ["$sel_from_users_au",			'Авторизованные в данный момент'],


и и приводим кусок кода к виду

Код:
  while( %h=%{ $sql2->get_line } )
   {
      $at=$oln='';
      # показать метод авторизации
      if( $show_auth_m && nSql->new({
           dbh =>$dbh,
           sql =>"SELECT act,time FROM login WHERE act>0 AND mid=$h{id} ORDER BY time DESC LIMIT 1",
           show => 'line',
           comment => 'Последняя авторизация',
           hash =>\%hh }) )
{
   $auth_t=$hh{time}>0 && '('.&the_short_time($hh{time},$t).')';
   $auth_t=~s| |&nbsp;|g;
   $auth_t.='&nbsp;&nbsp;';
   $at=$h{auth};
}else{
   $auth_t='&nbsp;';
   $sthst=&sql($dbh," select sum(`in`) as `in`,sum(`out`) as `out` from $sdbtr where mid=$h{id} and time>$au_t limit 1");
   $pst=$sthst->fetchrow_hashref();
   $tin=$pst->{in};
   $tout=$pst->{out};
   if (($tin >0)&($tout>0))
{
   $at="on";
   $oln=1;
}
}
if ($oln == 1)
   {
$ips_tbl.=&tag('tr',
&tag('td',$auth_t,'width=50%').
&tag('td',&ShowModeAuth($at),'width=1%').
&tag('td',$h{ip}).
&tag('td',$h{lstate}? &tag('acronym','&hearts;',"title='всегда online активность входящий=".$tin." исходящий=".$tout."' class=error") : '&nbsp;&nbsp;','width=1%')
);
   }else{
$ips_tbl.=&tag('tr',
&tag('td',$auth_t,'width=50%').
&tag('td',&ShowModeAuth($h{auth}),'width=1%').
&tag('td',$h{ip}).
&tag('td',$h{lstate}? &tag('acronym','&hearts;',"title='всегда online активность входящий=".$tin." исходящий=".$tout."' class=error") : '&nbsp;&nbsp;','width=1%')
   );
   }
$ids.=&RRow('','c',$h{id});
   }

тоесть пользователей которые всегда онлайн мониторим по наличию входящего и исходященно (именно и а не или )
ну вот и все.


люди подскажите хоть какие файлы ковырять


Название: Re: авторизированые (всегда онлайн)
Отправлено: Александр (AleksHr) от 09 Октября 2010, 08:32:23
keeper1978, ничего не меняй! Доавб только последний скрипт в верштушку (/usr/local/etc/rc.d/).


Название: Re: авторизированые (всегда онлайн)
Отправлено: ser970 от 09 Октября 2010, 09:15:52
Код:
#!/bin/sh

while true
do
 nice -n -15 perl /usr/local/nodeny/autv.pl
 sleep 120
done

Внимание! Не забудьте назвать файл например с буквы z, чтобы он запускался в последнюю очередь. Так как ниодин скрипт после него стартовать уже не будет! Сегодня час потратил чтобы понять почему скрипты автоматически перестали запускатся (назвал был autv.sh).
точно все скрипты должны запускатся после мусклуа

тоеcть w_autv.pl


Название: Re: авторизированые (всегда онлайн)
Отправлено: keeper1978 от 09 Октября 2010, 20:27:49
не понятная ситуфция  всё переименовал файл autv.pl в w_autv.pl  скрипт запуска в z_start_autv.sh   но при заррузке после загрузки cron вылазит в локальной консоли Local package initialization  доступ можно получить только через ssh при удалении w_autv.pl из local/etc/rc.d/   вся загрузка происходит нормально всём может быть дело проверил в скриптах моих касяков нет (при копировании) хотя скрипты работают  пользователей онлайн показывает


Название: Re: авторизированые (всегда онлайн)
Отправлено: 0xbad0c0d3 от 14 Октября 2010, 19:02:46
Предлагаю такой вариант:
Код:
#!/usr/bin/perl -w

use strict;
use DBI;

my $config = "/usr/local/nodeny/nodeny.cfg.pl";
print "error: $!\n" if ! -e $config;
eval{require $config};
our($query,$traf_tbl,$dbh,$db_name,$db_server,$user,$pw);

my($sec,$min,$hour,$mday,$mon,$year) = localtime;
$traf_tbl=sprintf("x%dx%dx%d",$year+1900,$mon+1,$mday);
$query = "INSERT INTO dblogin (mid,act,time) SELECT `users`.`id`,'17',UNIX_TIMESTAMP() FROM `users` LEFT JOIN `$traf_tbl` ON `users`.`id`=`$traf_tbl`.`mid` WHERE `in` > 0 AND `out` > 0 AND `$traf_tbl`.`time`>=(SELECT time FROM traf_info ORDER BY time DESC LIMIT 1) AND `users`.`lstate`>0";
$dbh = DBI->connect("DBI:mysql:$db_name:$db_server",$user,$pw,{ PrintError => 1}) or die;
print "error: $!\n" if $dbh->do($query) lt 0;
$dbh->disconnect;
Вертушку можно такую же, как предложил ser970


Название: Re: авторизированые (всегда онлайн)
Отправлено: Александр (AleksHr) от 14 Октября 2010, 23:10:03
0xbad0c0d3, мож сказать какие изменения?  :)


Название: Re: авторизированые (всегда онлайн)
Отправлено: 0xbad0c0d3 от 14 Октября 2010, 23:14:34
Эмм... Все делается одним запросом (если не учитывать вложенные запросы). Инфа о траффе берется самая "свежая". А так результат тот же.


Название: Re: авторизированые (всегда онлайн)
Отправлено: Cell от 15 Октября 2010, 12:02:20
Недостаток способа с вертушкой вижу в бессмысленных запросах к базе данных каждые 2 минуты и наличии лишнего демона. Гораздо интересней вариант с правкой скрипта, т.к. запрос будет всего один И ТОЛЬКО ТОГДА!!! когда это действительно нужно.


Название: Re: авторизированые (всегда онлайн)
Отправлено: Elisium от 15 Октября 2010, 12:44:45
Предлагаю такой вариант:

хм .. красиво сделано ...

п.с. +1 и спасибо )


Название: Re: авторизированые (всегда онлайн)
Отправлено: 0xbad0c0d3 от 15 Октября 2010, 21:23:24
Код:
#!/usr/bin/perl -w

use strict;
use DBI;

my $config = "/usr/local/nodeny/nodeny.cfg";
print "error: $!\n" if ! -e $config;
eval{require $config};
our($query,$traf_tbl,$dbh,$Db_name,$Db_server,$Db_user,$Db_pw);

my($sec,$min,$hour,$mday,$mon,$year) = localtime;
$traf_tbl=sprintf("x%dx%dx%d",$year+1900,$mon+1,$mday);
$query = <<QUERY;
INSERT INTO dblogin (mid,act,time)
        SELECT `users`.`id`,'17',UNIX_TIMESTAMP()
        FROM `users`
        LEFT JOIN `$traf_tbl` ON `users`.`id`=`$traf_tbl`.`mid`
        WHERE `in` > 0 AND `out` > 0 AND `$traf_tbl`.`time`>=%s AND `users`.`lstate`>0
QUERY
$dbh = DBI->connect("DBI:mysql:$Db_name:$Db_server",$Db_user,$Db_pw,{ PrintError => 1}) or die;
if ($ARGV[0] && $ARGV[0] eq "trigger"){
        print "Trigger\n";
        $query = sprintf($query,"NEW.time");
        $dbh->do("DROP TRIGGER IF EXISTS `tr_aoauth`");
        $dbh->do("CREATE TRIGGER `tr_aoauth` AFTER INSERT ON `traf_info` FOR EACH ROW BEGIN $query; END");
        exit;
}
$query = sprintf($query,"(SELECT time FROM traf_info ORDER BY time DESC LIMIT 1)");
print "error: $!\n" if $dbh->do($query) lt 0;
$dbh->disconnect;
Чутка приукрасил :)
Кому хочется отказаться от вертушки делать следующее:
Добавить запуск скрипта ежедневно по крону с параметром trigger
1 0 * * * /usr/bin/perl /path/to/script.pl trigger
!!!У пользователя, что гаходится в файле nodeny.cfg должна быть привилегия TRIGGER!!!


Название: Re: авторизированые (всегда онлайн)
Отправлено: 0xbad0c0d3 от 15 Октября 2010, 22:18:11
Тупанул. кто будет юзать замените:
Код:
$dbh->do("CREATE TRIGGER `tr_aoauth` AFTER INSERT ON `traf_info` FOR EACH ROW BEGIN $query; END");
на
Код:
$dbh->do("CREATE TRIGGER `tr_aoauth` AFTER INSERT ON `traf_info` FOR EACH ROW BEGIN IF NEW.cod=1 THEN $query; END IF; END");


Название: Re: авторизированые (всегда онлайн)
Отправлено: ser970 от 16 Октября 2010, 08:52:43
Кому хочется отказаться от вертушки делать следующее:
Добавить запуск скрипта ежедневно по крону с параметром trigger
1 0 * * * /usr/bin/perl /path/to/script.pl trigger
!!!У пользователя, что гаходится в файле nodeny.cfg должна быть привилегия TRIGGER!!!

а не проще ли добавить в ядро?


Название: Re: авторизированые (всегда онлайн)
Отправлено: 0xbad0c0d3 от 16 Октября 2010, 12:40:54
Да можно конечо, но смотри обновляется у тебя биллинг и что? Заново добавлять? Пускай каждый себе выбирает способ.


Название: Re: авторизированые (всегда онлайн)
Отправлено: elite от 16 Октября 2010, 12:46:45
Да можно конечо, но смотри обновляется у тебя биллинг и что? Заново добавлять? Пускай каждый себе выбирает способ.
а он часто обновляется? ;)


Название: Re: авторизированые (всегда онлайн)
Отправлено: 0xbad0c0d3 от 16 Октября 2010, 12:53:29
Ну я хз, а вдруг? :)


Название: Re: авторизированые (всегда онлайн)
Отправлено: stix от 16 Октября 2010, 13:06:08
не дождетесь  :D


Название: Re: авторизированые (всегда онлайн)
Отправлено: 0xbad0c0d3 от 16 Октября 2010, 13:47:29
Ну все! Тут не подкопаешся! :))
Красивее не сделаешь!
nodeny.pl (50.32)
Код:
1953   $rows=0;
1954    foreach $i (1..8)
1955   {
1956       $rows=$dbh->do("INSERT INTO dblogin (mid,time,act) VALUES($id,UNIX_TIMESTAMP(),'17')") if (!$rows && $IN[$i] gt 0 && $OUT[$i] gt 0);
Можно сократить до одной строки, еси контролировать по одному направлению
Код:
1953 $dbh->do("INSERT INTO dblogin (mid,time,act) VALUES($id,UNIX_TIMESTAMP(),'17')") if ($IN[1] gt 0 && $OUT[1] gt 0);


Название: Re: авторизированые (всегда онлайн)
Отправлено: Александр (AleksHr) от 16 Октября 2010, 14:19:20
0xbad0c0d3,


Код:
  foreach $i (1..7)
   {
      next unless $IN[$i]+$OUT[$i];
      if( $ModTraf{$mId}{$i} )
      {  # платеж-опция указывает трафик направления $i перераспределить на направление 8
         $IN[8]+=$IN[$i];
$rows=0;
foreach $i (1..8)
{
$rows=$dbh->do("INSERT INTO dblogin (mid,time,act) VALUES($id,UNIX_TIMESTAMP(),'17')") if (!$rows && $IN[$i] gt 0 && $OUT $i] gt 0);
         $IN[$i]=0;
         $OUT[8]+=$OUT[$i];
         $OUT[$i]=0;
      }
   }

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


Название: Re: авторизированые (всегда онлайн)
Отправлено: 0xbad0c0d3 от 16 Октября 2010, 15:42:19
Ну там кагбе видно. Ну ладно
перед строками:
Код:
foreach $i (1..8)
{
   next unless $IN[$i]+$OUT[$i];
Вставляешь:
Код:
$dbh->do("INSERT INTO dblogin (mid,time,act) VALUES($id,UNIX_TIMESTAMP(),'17')") if ($IN[1] gt 0 && $OUT[1] gt 0);
получается:
Код:
$dbh->do("INSERT INTO dblogin (mid,time,act) VALUES($id,UNIX_TIMESTAMP(),'17')") if ($IN[1] gt 0 && $OUT[1] gt 0);
foreach $i (1..8)
{
   next unless $IN[$i]+$OUT[$i];
Это если по одному направлению (в данном случае по 1-у)
А если по всем, то те же строки приведи к виду:
Код:
$rows=0;
foreach $i (1..8)
{
$rows=$dbh->do("INSERT INTO dblogin (mid,time,act) VALUES($id,UNIX_TIMESTAMP(),'17')") if (!$rows && $IN[$i] gt 0 && $OUT[$i] gt 0);
next unless $IN[$i]+$OUT[$i];


Название: Re: авторизированые (всегда онлайн)
Отправлено: Андрій от 17 Октября 2010, 10:48:32
в 49.32 не працює.


Название: Re: авторизированые (всегда онлайн)
Отправлено: Александр (AleksHr) от 17 Октября 2010, 10:59:00
в 49.32 не працює.

В мене працює все класно, те що на пост вище.


Название: Re: авторизированые (всегда онлайн)
Отправлено: Андрій от 17 Октября 2010, 11:19:38
я вручну перезапустив ядро і в мене також все запрацювало  :)


Название: Re: авторизированые (всегда онлайн)
Отправлено: 0xbad0c0d3 от 17 Октября 2010, 15:36:10
FIX
В зависимсти от варианта приводите строки к виду:
Код:
 $rows=0;
 $ao=$dbh->do("SELECT count(id) FROM users WHERE lstate=1 AND id=$id LIMIT 1") if !$rows;
 foreach $i (1..8)
 {
    $rows=$dbh->do("INSERT INTO dblogin (mid,time,act) VALUES($id,UNIX_TIMESTAMP(),'17')") if ($ao && !$rows && $IN[$i] gt 0 && $OUT[$i] gt 0);
Код:
$ao=$dbh->do("SELECT count(id) FROM users WHERE lstate=1 AND id=$id LIMIT 1");
$dbh->do("INSERT INTO dblogin (mid,time,act) VALUES($id,UNIX_TIMESTAMP(),'17')") if ($ao && $IN[1] gt 0 && $OUT[1] gt 0);


Название: Re: авторизированые (всегда онлайн)
Отправлено: Александр (AleksHr) от 17 Октября 2010, 16:48:47
0xbad0c0d3, а можна узнать что делает фикс?)


Название: Re: авторизированые (всегда онлайн)
Отправлено: 0xbad0c0d3 от 17 Октября 2010, 17:27:20
Практика показала, что лучще вертушка! Вот что делает фикс :)
Ну или править код, но не в том месте где было предложено.


Название: Re: авторизированые (всегда онлайн)
Отправлено: ser970 от 17 Октября 2010, 17:31:57
Практика показала, что лучще вертушка! Вот что делает фикс :)
нет в ядро но.. чуть не так.
тогда более точно и не нужно лишних демонов и нагрузка снижается.
но ... . пока готового нет - бует покажу.
смысл в том что клинт как бы активный но трафика нет . надо брать не текущее значение а за период. иначе будет вкл/выкл.


Название: Re: авторизированые (всегда онлайн)
Отправлено: 0xbad0c0d3 от 17 Октября 2010, 17:38:20
Да, да именно об этом я и говорю.
Вот что называется: спешить -- людей смешить.
-1 мне


Название: Re: авторизированые (всегда онлайн)
Отправлено: stix от 17 Октября 2010, 17:43:25
да ладно, я вот пока просто наблюдаю и не пойму, зачем это нужно


Название: Re: авторизированые (всегда онлайн)
Отправлено: 0xbad0c0d3 от 17 Октября 2010, 18:44:14
Для того, что бы свистело.


Название: Re: авторизированые (всегда онлайн)
Отправлено: Elisium от 18 Октября 2010, 01:29:33
FIX
В зависимсти от варианта приводите строки к виду:
Это уже РАБОЧИЕ варианты ?

Ничего типа
Ну или править код, но не в том месте где было предложено.
делать не нужно уже ?


Название: Re: авторизированые (всегда онлайн)
Отправлено: 0xbad0c0d3 от 18 Октября 2010, 01:33:30
Пока ничего не нужно делать. Сегодня-завтра. дам 100% рабочий вариант.


Название: Re: авторизированые (всегда онлайн)
Отправлено: ser970 от 18 Октября 2010, 08:12:18
Пока ничего не нужно делать. Сегодня-завтра. дам 100% рабочий вариант.

по пробуй вот это

INSERT INTO dblogin (mid,act,time) SELECT `users`.`id`,'17',UNIX_TIMESTAMP() FROM `users` LEFT JOIN `$x_traf_tbl` ON `users`.`id`=`$x_traf_tbl`.`mid` WHERE `in` > 0 AND `out` > 0 AND `$x_traf_tbl`.`time`>$tmr and `users`.`lstate`>0 group by users.id;

$tmr текущее время - 360(ну или кому что нарвится ) чем меньше тем точнее но тогда возможны ложные срабатывания.


Название: Re: авторизированые (всегда онлайн)
Отправлено: 0xbad0c0d3 от 18 Октября 2010, 08:45:10
Не, я думаю  360 -- излишество
Код:
$Kern_t_traf*2
вполне -- 2-3 среза.


Название: Re: авторизированые (всегда онлайн)
Отправлено: ser970 от 18 Октября 2010, 08:50:40
Не, я думаю  360 -- излишество
Код:
$Kern_t_traf*2
вполне -- 2-3 среза.


а не мало будет?
хотя 3 єто уже думаю норма


Название: Re: авторизированые (всегда онлайн)
Отправлено: 0xbad0c0d3 от 18 Октября 2010, 08:53:23
Поставил 2 -- не жалею:)


Название: Re: авторизированые (всегда онлайн)
Отправлено: ser970 от 18 Октября 2010, 08:56:31
Поставил 2 -- не жалею:)
у меня 360 тоже не плачу - меня устраивает. можно поле в конфиге добавить и тогда всем подойдет - хотя мало кто конфиг до конца настраивал.

зі надо бы почистить тему и сдалать нормальный патч - но мне в лень.


Название: Re: авторизированые (всегда онлайн)
Отправлено: 0xbad0c0d3 от 18 Октября 2010, 09:40:43
Кста, ты в каком месте nodeny.pl вставлял запрос!?


Название: Re: авторизированые (всегда онлайн)
Отправлено: 0xbad0c0d3 от 18 Октября 2010, 10:30:26
У себя сделал так:
Код:
1974    &CountMoney($id);
1975  }
1976
1977  $dbh->do("INSERT INTO dblogin (mid,act,time) SELECT `users`.`id`,'17',UNIX_TIMESTAMP() FROM `users` LEFT JOIN `$x_traf_tbl` ON `users`.`id`=`$x_traf_tbl`.`mid` WHERE `in` > 0 AND `out` > 0 AND `$x_traf_tbl`.`time`>$t-$Kern_t_traf*2 and `users`.`lstate`>0 group by users.id");
1978
1979  &SaveTrafTime(3,tv_interval($t0));


Название: Re: авторизированые (всегда онлайн)
Отправлено: Elisium от 20 Октября 2010, 21:07:47
У себя сделал так:

Апну актуальную тему.
Ну как ? Так работает без косяков ?
Можно уже начинать закидывать спасибами ? ))


Название: Re: авторизированые (всегда онлайн)
Отправлено: ser970 от 20 Октября 2010, 21:11:06
У себя сделал так:

Апну актуальную тему.
Ну как ? Так работает без косяков ?
Можно уже начинать закидывать спасибами ? ))
да работает все - чему там не работать .уже только я поставил чел 10 если не больше
а вооще колективня работа єто класс.


Название: Re: авторизированые (всегда онлайн)
Отправлено: Elisium от 20 Октября 2010, 21:42:06
Я только вышел из отпуска, который не хотел себе портить еще и возможными проблемами ))


Название: Re: авторизированые (всегда онлайн)
Отправлено: Elisium от 20 Октября 2010, 22:33:27
У себя сделал так:
Код:
1974    &CountMoney($id);
1975  }
1976
1977  $dbh->do("INSERT INTO dblogin (mid,act,time) SELECT `users`.`id`,'17',UNIX_TIMESTAMP() FROM `users` LEFT JOIN `$x_traf_tbl` ON `users`.`id`=`$x_traf_tbl`.`mid` WHERE `in` > 0 AND `out` > 0 AND `$x_traf_tbl`.`time`>$t-$Kern_t_traf*2 and `users`.`lstate`>0 group by users.id");
1978
1979  &SaveTrafTime(3,tv_interval($t0));


Маленькая поправка:
Так как у народа, наверное, в большинстве стоит $Kern_t_traf=0, то в вышенаписаном примере активные "всегда онлайн" юзеры отображаться не будут.
В своем случае пришлось поправить на  ... `time`>$t-30 and ...


Название: Re: авторизированые (всегда онлайн)
Отправлено: 0xbad0c0d3 от 23 Октября 2010, 18:49:04
А к чему такой экстрим? с $Kern_t_traf?
Зачем давать серваку лишний повод на трату ресурсов?


Название: Re: авторизированые (всегда онлайн)
Отправлено: Elisium от 23 Октября 2010, 20:45:43
На нынешних скоростях юзеры с ЛИМИТОМ трафика успевают накачать немало мегабайт, прежде чем их билинг отключит.
Сервер успевает отработать примерно 4-6 срезов трафика за минуту.
Нетфлов сливается с 20тисекундным интервалом.
А за каждый мегабайт сверх лимита юзеры платют денюшку, за переизбыток которой потом очень любят поездить по мозгам.
Поэтому в данном случае можно было бы ограничить в 15 секунд, но сервак и при керн_траф=0 примерно и так показывает нужный интервал, а за 15-20 секунд можно успеть нажевать на рупь-полтора )))

п.с. поправка была, вообщето, технического плана, а не наезд ))


Название: Re: авторизированые (всегда онлайн)
Отправлено: stix от 29 Октября 2010, 13:38:11
У себя сделал так:
Код:
1974    &CountMoney($id);
1975  }
1976
1977  $dbh->do("INSERT INTO dblogin (mid,act,time) SELECT `users`.`id`,'17',UNIX_TIMESTAMP() FROM `users` LEFT JOIN `$x_traf_tbl` ON `users`.`id`=`$x_traf_tbl`.`mid` WHERE `in` > 0 AND `out` > 0 AND `$x_traf_tbl`.`time`>$t-$Kern_t_traf*2 and `users`.`lstate`>0 group by users.id");
1978
1979  &SaveTrafTime(3,tv_interval($t0));

на 50.32 проверил - че-то как-то не арбайтен


Название: Re: авторизированые (всегда онлайн)
Отправлено: stix от 29 Октября 2010, 14:10:14
уже арбайтен.
трафик не агрегировался биллингом, хотя ipcad экспортировал трафик от сателита


Название: Re: авторизированые (всегда онлайн)
Отправлено: VitalVas от 30 Октября 2010, 01:24:43
Efendy, включи в следующие выпуски биллинга
классная вещь, уже внедрил в 4 сети.....


Название: Re: авторизированые (всегда онлайн)
Отправлено: Fredik от 15 Февраля 2011, 09:18:36
пробовал, чет не выходит, не мог бы кто-нибудь выложить окончательный результат и куда его писать?


Название: Re: авторизированые (всегда онлайн)
Отправлено: VitalVas от 15 Февраля 2011, 10:02:31
пробовал, чет не выходит, не мог бы кто-нибудь выложить окончательный результат и куда его писать?
ну блин, все ответы на одной страницы
в nodeny.pl
Код:
1974    &CountMoney($id);
1975  }
1976
1977  $dbh->do("INSERT INTO dblogin (mid,act,time) SELECT `users`.`id`,'17',UNIX_TIMESTAMP() FROM `users` LEFT JOIN `$x_traf_tbl` ON `users`.`id`=`$x_traf_tbl`.`mid` WHERE `in` > 0 AND `out` > 0 AND `$x_traf_tbl`.`time`>$t-$Kern_t_traf*2 and `users`.`lstate`>0 group by users.id");
1978
1979  &SaveTrafTime(3,tv_interval($t0));
смотри какие строки, и вставляй туда что не хватает.


Название: Re: авторизированые (всегда онлайн)
Отправлено: Fredik от 15 Февраля 2011, 11:14:43
спс - работает


Название: Re: авторизированые (всегда онлайн)
Отправлено: Fredik от 20 Февраля 2011, 19:51:43
а теоретически возможно ли ставить другой значек ключика? для тех у кого всегда онлайн стоит.


Название: Re: авторизированые (всегда онлайн)
Отправлено: ser970 от 20 Февраля 2011, 20:29:05
а теоретически возможно ли ставить другой значек ключика? для тех у кого всегда онлайн стоит.
можно .
но обьясни на кой?


Название: Re: авторизированые (всегда онлайн)
Отправлено: VitalVas от 20 Февраля 2011, 21:18:37
можно .
но обьясни на кой?
+1


Название: Re: авторизированые (всегда онлайн)
Отправлено: Fredik от 20 Февраля 2011, 21:36:20
ну чтобы видеть - видит свой баланс юзер или нет, дать задание настроить авторизатор или нет, может можна выключить всегда онлайн так как юзер пользуется авторизатором.

где-то так вот


Название: Re: авторизированые (всегда онлайн)
Отправлено: VitalVas от 20 Февраля 2011, 21:53:02
ну чтобы видеть - видит свой баланс юзер или нет, дать задание настроить авторизатор или нет, может можна выключить всегда онлайн так как юзер пользуется авторизатором.

где-то так вот
при режиме "всегда онлайн" авторизатор не работает


Название: Re: авторизированые (всегда онлайн)
Отправлено: Fredik от 20 Февраля 2011, 22:10:37
ну чтобы видеть - видит свой баланс юзер или нет, дать задание настроить авторизатор или нет, может можна выключить всегда онлайн так как юзер пользуется авторизатором.

где-то так вот
при режиме "всегда онлайн" авторизатор не работает

я бы так однозначен не был )

Цитировать
199 строка nol2auth.pl, заменить

Код:
if ($p->{lstate})

на

Цитировать
if (0)


http://forum.nodeny.com.ua/index.php?topic=112.0 (http://forum.nodeny.com.ua/index.php?topic=112.0)
ответ 3


Название: Re: авторизированые (всегда онлайн)
Отправлено: 0xbad0c0d3 от 20 Февраля 2011, 23:43:51
а теоретически возможно ли ставить другой значек ключика? для тех у кого всегда онлайн стоит.
ОМГ. Ну ипстессно!


Название: Re: авторизированые (всегда онлайн)
Отправлено: Fredik от 21 Февраля 2011, 09:13:49
а теоретически возможно ли ставить другой значек ключика? для тех у кого всегда онлайн стоит.
ОМГ. Ну ипстессно!
а теперь главный вопрос, КАК?


Название: Re: авторизированые (всегда онлайн)
Отправлено: 0xbad0c0d3 от 21 Февраля 2011, 10:02:25
Каком к верху. :)

Код:
 892 # Показывает режим авторизации в виде ключика определенного цвета
 893 sub ShowModeAuth
 894 {
 895  my ($mod)=@_;
 896  local $_="<img src='$img_dir";
 897  return ("$_/spacer.gif' width=16>") if $mod eq 'no';
 898  return ("$_/on.gif' title='Авторизован. Доступ разрешен'>") if $mod eq 'on';
 899  return ("$_/off.gif' title='Авторизован в режиме \"сеть\"'>") if $mod eq 'off';
 900  return ("$_/on2.gif' title='Авторизован. Разрешен только $c2 трафик'>") if $mod eq 'ong';
 901  return ("$_/block.gif' title='Авторизован. Доступ заблокирован: превышен лимит трафика''>") if $mod eq '1';
 902  return ("$_/block.gif' title='Авторизован. Доступ заблокирован: превышен лимит денежной задолженности'>") if $mod eq '2';
 903  return ("$_/block.gif' title='Авторизован. Доступ заблокирован: в данное время суток по условию пакета'>") if $mod eq '4';
 904  return ("$_/block.gif' title='Авторизован. Доступ заблокирован.'>") if $mod eq '5';
 905  return ("$_/spacer.gif'>");
 906 }


Название: Re: авторизированые (всегда онлайн)
Отправлено: Fredik от 21 Февраля 2011, 13:27:37
спс


Название: Re: авторизированые (всегда онлайн)
Отправлено: Fredik от 21 Февраля 2011, 21:22:28
в mysql далекий, разобраться не удалось прошу вашей помощи
необходимо сделать так чтобы статус в поле auth ставило ong а не on ::)


Название: Re: авторизированые (всегда онлайн)
Отправлено: ser970 от 22 Февраля 2011, 10:04:51
в mysql далекий, разобраться не удалось прошу вашей помощи
необходимо сделать так чтобы статус в поле auth ставило ong а не on ::)
причем к доработке мотод авторизации?
смотри
dblogin (mid,act,time)  тоетсь при наличии трафика у клиента заносится в дблогин  ид клиента - тип авторизации (в даном случае 17 - имитация авторизатора) - время.

обьясни по человечески что хочешь сделать.

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


Название: Re: авторизированые (всегда онлайн)
Отправлено: Fredik от 22 Февраля 2011, 10:13:36
что бы вместо ключика у активных клиентов (у токоррых стоит всегда онлайн ) была бругая картинка?)



да


Название: Re: авторизированые (всегда онлайн)
Отправлено: ser970 от 22 Февраля 2011, 10:43:50
что бы вместо ключика у активных клиентов (у токоррых стоит всегда онлайн ) была бругая картинка?)



да
могу сделать - но так как єто больше никому не нужно = 50$ (было бы что-то реально нужное то могло быть и на шару).


Название: Re: авторизированые (всегда онлайн)
Отправлено: Александр (AleksHr) от 23 Февраля 2011, 00:46:20
Я б тоже не отказался )


Название: Re: авторизированые (всегда онлайн)
Отправлено: Fredik от 23 Февраля 2011, 07:57:02
я ж говорю - фича нужная


Название: Re: авторизированые (всегда онлайн)
Отправлено: ser970 от 23 Февраля 2011, 09:17:39
я ж говорю - фича нужная
готовы по 50$ скинутся + тех задачи подробнее по пунктам


Название: Re: авторизированые (всегда онлайн)
Отправлено: 0xbad0c0d3 от 23 Февраля 2011, 09:23:08
:)


Название: Re: авторизированые (всегда онлайн)
Отправлено: Александр (AleksHr) от 24 Февраля 2011, 09:28:57
готовы по 50$ скинутся + тех задачи подробнее по пунктам

 ::)


Название: Re: авторизированые (всегда онлайн)
Отправлено: ser970 от 24 Февраля 2011, 12:19:31
готовы по 50$ скинутся + тех задачи подробнее по пунктам

 ::)
ну мне єта функция не нужна-
а свое время вы цените
а я свое не должен?
отмазка я не знаю что то не проходит - манов валом. 


Название: Re: авторизированые (всегда онлайн)
Отправлено: 0xbad0c0d3 от 24 Февраля 2011, 13:17:40
Правильно говоришь ser970!


Название: Re: авторизированые (всегда онлайн)
Отправлено: evp от 18 Марта 2011, 08:30:08
Это есть:
Код:
209 if (!$AUTH && $p->{auth} eq 'no') {&Login(); &Exit}
?
Должно быть. Делай так:
Код:
if (!$AUTH && ($p->{auth} eq 'no' || $p->{lstate})) {&Login(); &Exit}
Между прочим, по теме: БЕЗ этого исправления использование вышеописаной "фишки" (показ иконки-ключика возле клиента если у него "всегда онлайн" и есть трафик) чревато СЕРЬЁЗНЫМИ проблемами в плане безопасности пользовательских данных (первый пост темы).
Поэтому всем исправить в срочном порядке )
Хочу добавить, что это исправление нужно внести не только в /usr/local/www/apache22/cgi-bin/stat.pl, но и в /usr/local/www/apache22/cgi-bin/adm/stat.pl.
Иначе, при наборе адреса вида https://your.billing.tld/cgi-bin/adm/stat.pl?a=99&a=99, неавторизованному клиенту покажет страничку статистики предназначенную для администратора.


Название: Re: авторизированые (всегда онлайн)
Отправлено: Андрій от 10 Мая 2011, 12:51:03
в мене чомусь після того як я підключаю ще один колектор трафіку, всі ключики пропадають, хоча все коректно рахується і працює, як тільки я залишаю один колектор 127.0.0.1 то ключики знову зявляються, в чому може бути проблема ??
В ядрі я поміняв так -

Код:
1974    &CountMoney($id);
1975  }
1976
1977  $dbh->do("INSERT INTO dblogin (mid,act,time) SELECT `users`.`id`,'17',UNIX_TIMESTAMP() FROM `users` LEFT JOIN `$x_traf_tbl` ON `users`.`id`=`$x_traf_tbl`.`mid` WHERE `in` > 0 AND `out` > 0 AND `$x_traf_tbl`.`time`>$t-$Kern_t_traf*2 and `users`.`lstate`>0 group by users.id");
1978
1979  &SaveTrafTime(3,tv_interval($t0));


Название: Re: авторизированые (всегда онлайн)
Отправлено: Андрій от 10 Мая 2011, 12:57:58
в мене чомусь після того як я підключаю ще один колектор трафіку, всі ключики пропадають, хоча все коректно рахується і працює, як тільки я залишаю один колектор 127.0.0.1 то ключики знову зявляються, в чому може бути проблема ??
В ядрі я поміняв так -

Код:
1974    &CountMoney($id);
1975  }
1976
1977  $dbh->do("INSERT INTO dblogin (mid,act,time) SELECT `users`.`id`,'17',UNIX_TIMESTAMP() FROM `users` LEFT JOIN `$x_traf_tbl` ON `users`.`id`=`$x_traf_tbl`.`mid` WHERE `in` > 0 AND `out` > 0 AND `$x_traf_tbl`.`time`>$t-$Kern_t_traf*2 and `users`.`lstate`>0 group by users.id");
1978
1979  &SaveTrafTime(3,tv_interval($t0));

вже  розібрався, все таки коли я дивився на ключики то з другого колектора трафіка на було.


Название: Re: авторизированые (всегда онлайн)
Отправлено: martech от 19 Ноября 2011, 21:22:34
СпасибО! все завелось с первого пинка!!!! :)


Название: Re: авторизированые (всегда онлайн)
Отправлено: 0xbad0c0d3 от 19 Ноября 2011, 23:01:36
А чему ж там не завестись? ))) Такой мозговой штурм был )))


Название: Re: авторизированые (всегда онлайн)
Отправлено: martech от 23 Ноября 2011, 08:23:15
Вопрос, если у пользователя деньги закончились, его заблокировал биллинг, то получается трафик в инет не пойдет и авторизация не появится  и получается тогда что он может зайти в статистику без логина пароля( понимаю что можно ввести логин и пароль и будет счастье), но все же как эту проблему решить?!


Название: Re: авторизированые (всегда онлайн)
Отправлено: 0xbad0c0d3 от 23 Ноября 2011, 10:30:52
Эту проблему решить поиском по форуму! Уже где-то есть ответ. Точно помню.


Название: Re: авторизированые (всегда онлайн)
Отправлено: stix от 23 Ноября 2011, 13:31:23
открыть файрволом доступ к биллингу всегда.
делов то


Название: Re: авторизированые (всегда онлайн)
Отправлено: bnet от 30 Ноября 2011, 11:41:51
..по поводу разноцветных ключиков
таблица login
Цитировать
Структура:
mid   - id клиента
act   - состояние авторизации
time   - время события в виде timestamp
Состояние авторизации - число, которое состоит из двух частей: первая цифра - код, указывающий каким методом авторизовался клиент, вторая - непосредственно режим авторизации.
(http://clip2net.com/clip/m23857/thumb640/1322646984-clip-6kb.png) (http://clip2net.com/s/1mo9T)

попытался просто добавить строку,
Код:
return ("$_/on2.gif' title='Авторизован. Всегда онлайн.'>") if $mod eq '17';

в подпрограмме ShowModeAuth, но так не катит.

Код:
# Показывает режим авторизации в виде ключика определенного цвета
sub ShowModeAuth
{
 my ($mod)=@_;
 local $_="<img src='$img_dir";
 return ("$_/spacer.gif' width=16>") if $mod eq 'no';
 return ("$_/on.gif' title='Авторизован. Доступ разрешен'>") if $mod eq 'on';
 return ("$_/off.gif' title='Авторизован в режиме \"сеть\"'>") if $mod eq 'off';
 return ("$_/on2.gif' title='Авторизован. Разрешен только $c2 трафик'>") if $mod eq 'ong';
 return ("$_/block.gif' title='Авторизован. Доступ заблокирован: превышен лимит трафика''>") if $mod eq '1';
 return ("$_/block.gif' title='Авторизован. Доступ заблокирован: превышен лимит денежной задолженности'>") if $mod eq '2';
 return ("$_/block.gif' title='Авторизован. Доступ заблокирован: в данное время суток по условию пакета'>") if $mod eq '4';
 return ("$_/block.gif' title='Авторизован. Доступ заблокирован.'>") if $mod eq '5';
 return ("$_/spacer.gif'>");
}


Какие значения может иметь $mod, при вызове ShowModeAuth? Я так понимаю $mod это режим авторизации, а как узнать еще и метод авторизации?


Название: Re: авторизированые (всегда онлайн)
Отправлено: Efendy от 30 Ноября 2011, 22:26:23
Какие значения может иметь $mod, при вызове ShowModeAuth? Я так понимаю $mod это режим авторизации, а как узнать еще и метод авторизации?
это можно вычислить только по таблице авторизаций - смотри SSeance.pl:

Код:
$auth_src=('&nbsp;','Авторизатор','На порту','Web-авторизация','PPPoE','','','','')[int($act/10)];


Название: Re: авторизированые (всегда онлайн)
Отправлено: terrible от 14 Декабря 2011, 01:16:18
вставил код. 50.32 Работает. Только время авторизации шалит у всех "всегда онлайн". Учетка по статистике логинится каждую минуту.


Название: Re: авторизированые (всегда онлайн)
Отправлено: evp от 14 Декабря 2011, 02:13:14
Заметил еще одну проблему. Недавно отвалился один из сателлитов. Так исчезли все зеленые ключики. Не только у клиентов этого сателлита, а вообще у всех. И появились только тогда, когда восстановили связь с упавшим сателлитом.

Не понятно почему это так. Трафик всем считался, сессии в статистике показывались. По идее и ключик должен был рисоваться, ан нет.


Название: Re: авторизированые (всегда онлайн)
Отправлено: ser970 от 14 Декабря 2011, 09:35:54
вставил код. 50.32 Работает. Только время авторизации шалит у всех "всегда онлайн". Учетка по статистике логинится каждую минуту.
лечится пеериодом в строке ( больше период меньше хлопков)


Название: Re: авторизированые (всегда онлайн)
Отправлено: terrible от 15 Декабря 2011, 23:30:28
вставил код. 50.32 Работает. Только время авторизации шалит у всех "всегда онлайн". Учетка по статистике логинится каждую минуту.
лечится пеериодом в строке ( больше период меньше хлопков)
Не разбираюсь в коде вообще. Выложите, кто-нибудь, код с поправкой на период, пожалуйста.
Проблема скорей всего заключается в том, что до сателлита >100 мс пинга. т.к. если меньше, то нормально всё.


Название: Re: авторизированые (всегда онлайн)
Отправлено: ser970 от 16 Декабря 2011, 11:13:09
Не разбираюсь в коде вообще. Выложите, кто-нибудь, код с поправкой на период, пожалуйста.
Проблема скорей всего заключается в том, что до сателлита >100 мс пинга. т.к. если меньше, то нормально всё.

$tmr=360;
INSERT INTO dblogin (mid,act,time) SELECT `users`.`id`,'17',UNIX_TIMESTAMP() FROM `users` LEFT JOIN `$x_traf_tbl` ON `users`.`id`=`$x_traf_tbl`.`mid` WHERE `in` > 0 AND `out` > 0 AND `$x_traf_tbl`.`time`>$tmr and `users`.`lstate`>0 group by users.id;

$tmr = текущее время минус 360;# (ну или кому что нарвится ) чем меньше тем точнее но тогда возможны ложные срабатывания.

з.ы. это написал в этом топике ( просто надо было внимательно перечитать)


Название: Re: авторизированые (всегда онлайн)
Отправлено: terrible от 26 Декабря 2011, 15:28:57
Попробовал разные варианты переменной tmr от 30 до 480. Картинка не меняется. Трафик идёт себе, авторизацию всегда онлайн показывает, потом авторизация пропадает, и туда сюда раз в две, три минуты. Есть идеи какие-нибудь


Название: Re: авторизированые (всегда онлайн)
Отправлено: ser970 от 26 Декабря 2011, 15:37:28
Попробовал разные варианты переменной tmr от 30 до 480. Картинка не меняется. Трафик идёт себе, авторизацию всегда онлайн показывает, потом авторизация пропадает, и туда сюда раз в две, три минуты. Есть идеи какие-нибудь

ядро нодени перезапускал? после измения


Название: Re: авторизированые (всегда онлайн)
Отправлено: terrible от 27 Декабря 2011, 02:14:03
Да. Изменял tmr и перезапускал ядро. Изменял tmr на 30, 60, 100, 360, 480, если память не изменяет


Название: Re: авторизированые (всегда онлайн)
Отправлено: 0xbad0c0d3 от 27 Декабря 2011, 11:40:25
Дайте угадаю - Вы делали так:
Код:
$tmr=30;
а не
Код:
$tmr=time-30;


Название: Re: авторизированые (всегда онлайн)
Отправлено: ser970 от 27 Декабря 2011, 12:21:55
Дайте угадаю - Вы делали так:
Код:
$tmr=30;
а не
Код:
$tmr=time-30;
не похоже
если бы так то
time`>$tmr  там вообще будут всегда все авторизированы так как время среза  всегда больше даже 480 .
и тут в чмто другом фишка.