Название: MAC в списке авторизаций Отправлено: Demeo от 02 Июня 2016, 18:23:44 Доброго времени суток.
Чешется добавить в лог авторизаций в клиентской статистике МАС, с которого собственно авторизация пришла. Сейчас МАС-и пишутся в таблицу dblogin процедурой radreply из запросов радиуса. Как заставить их переноситься в таблицу login и высветить в админке? Название: Re: MAC в списке авторизаций Отправлено: ser970 от 02 Июня 2016, 21:03:50 а зачем что то куда то переносить .
select и вставть куда нужно в админку. Название: Re: MAC в списке авторизаций Отправлено: Demeo от 02 Июня 2016, 21:09:57 Я так понял, что данные авторизации периодически из таблицы dblogin обрабатываются и переносятся в таблицу login, а с нее уже выводится информация в список авторизаций
Название: Re: MAC в списке авторизаций Отправлено: ser970 от 02 Июня 2016, 21:48:49 Я так понял, что данные авторизации периодически из таблицы dblogin обрабатываются и переносятся в таблицу login, а с нее уже выводится информация в список авторизаций ну зачем что то кудато переносить?вам надо отобразить в веб морде - то не все равно с какой таблицы брать данные ? или если уж хочтся то измените процедуру радиуса стоп Название: Re: MAC в списке авторизаций Отправлено: Demeo от 03 Июня 2016, 10:45:47 Так все процедуры пишут в dblogin.
Мне переносить не надо - ядро все само переносит. Пусть будет stop - но как мне сказать ядру записать мас в таблицу? Я так понял, что этот кусок Код: # ========================================================== Название: Re: MAC в списке авторизаций Отправлено: Demeo от 03 Июня 2016, 11:26:56 Так уже делал - выдает ошибку
sub SetAuthInDB { my ($cod,$err,$i,$id,$insert,$now_on,$rows,$st,$sql,$sql0,$sql1,$time,$mac); my %f; $i=0; $sql=$sql0=$sql1=''; $insert="INSERT INTO login (mid,act,time,mac) VALUES"; foreach $id (keys %AuthQueue) { ($st,$cod,$now_on,$time,$mac,$err)=@{$AuthQueue{$id}}; next if ($Uauth{$id} eq $st) && !$err; # Текущее состояние авторизации такое же как и заказанное и не было ошибок записи текущего состояния $Uauth{$id}=$st; unless( $err ) { # если была ошибка - в логи не пишем - использовались групповые запросы $sql.="($id,$cod,$time,$mac),"; if ($i++>50) { # формируем групповые insert $i=0; chop $sql; &sqldo("$insert $sql"); $sql=''; } } $now_on? ($sql1.="$id,") : ($sql0.="$id,"); # скобки не убирать. $err не имеет значение - групповой запрос не insert, а update next if &sqldo("UPDATE users SET auth='$st' WHERE id=$id LIMIT 1"); @{$f{$id}}=($st,$cod,$now_on,$time,$mac,1); } if ($sql) { chop $sql; &sqldo("$insert $sql",'Записи о текущих авторизациях'); } chop $sql0; chop $sql1; $sql0 && &sqldo("UPDATE users_trf SET now_on=0 WHERE uid IN ($sql0)"); $sql1 && &sqldo("UPDATE users_trf SET now_on=1 WHERE uid IN ($sql1)"); %AuthQueue=%f; } Мож я чего упустил? Название: Re: MAC в списке авторизаций Отправлено: ser970 от 03 Июня 2016, 11:38:11 $insert="INSERT INTO login (mid,act,time,mac) VALUES";
а show create table login; + после foreach $id (keys %AuthQueue) { ($st,$cod,$now_on,$time,$mac,$err)=@{$AuthQueue{$id}}; сделайте вывод на екран переменых $st,$cod,$now_on,$time,$mac,$err Название: Re: MAC в списке авторизаций Отправлено: Demeo от 03 Июня 2016, 13:23:05 Код: | login | CREATE TABLE `login` ( Цитировать после foreach $id (keys %AuthQueue) { ($st,$cod,$now_on,$time,$mac,$err)=@{$AuthQueue{$id}}; сделайте вывод на екран переменых $st,$cod,$now_on,$time,$mac,$err В этом я не силен Название: Re: MAC в списке авторизаций Отправлено: ser970 от 03 Июня 2016, 16:12:19 на глаз тут
$sql.="($id,$cod,$time,$mac),"; на $sql.="($id,$cod,$time,'$mac'),"; и какую ошибку выдает ? Название: Re: MAC в списке авторизаций Отправлено: Demeo от 04 Июня 2016, 09:51:01 В случае с $sql.="($id,$cod,$time,$mac),"; выдает ошибки:
Код: DBD::mysql::db do failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1 at /usr/local/nodeny/nodeny.pl line 517. Иногда такое... Код: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '),(43,47,1465026380,)' at line 1 at /usr/local/nodeny/nodeny.pl line 517. С кавычками ошибок не выдает, но в таблицу нифига не пишет Название: Re: MAC в списке авторизаций Отправлено: ser970 от 04 Июня 2016, 09:57:31 ну значит $mac пустое
надо смотреть выще где формируется @{$AuthQueue{$id}}; поэтому и говорил сделать вывод на екран . посмотрите как оформленно дебаг Название: Re: MAC в списке авторизаций Отправлено: Demeo от 04 Июня 2016, 11:20:58 Код: $V && $V<$debug && &debug(sprintf("*>*>*>*",$st,$cod,$now_on,$time,$mac,$err)); Так пишет только *>*>*>* Название: Re: MAC в списке авторизаций Отправлено: ser970 от 04 Июня 2016, 11:34:38 Код: $V && $V<$debug && &debug(sprintf("*>*>*>*",$st,$cod,$now_on,$time,$mac,$err)); Так пишет только *>*>*>* @{$AuthQueue{$id}}; ну не тут тут мака . ищите выше где формируется... Название: Re: MAC в списке авторизаций Отправлено: Demeo от 04 Июня 2016, 14:04:13 По ходу пишет только числовые значения...
$AuthQueue{$id}[4]='0'; - работает $AuthQueue{$id}[4]='noop'; - не работает Название: Re: MAC в списке авторизаций Отправлено: ser970 от 04 Июня 2016, 18:41:16 По ходу пишет только числовые значения... $AuthQueue{$id}[4]='0'; - работает $AuthQueue{$id}[4]='noop'; - не работает почему так решили ? это же просто массив #!/usr/local/bin/perl $id=123; $AuthQueue{$id}[4]='noop'; print $AuthQueue{$id}[4]."\n"; 1; ./t.pl noop вот запись в мускул тут есть разница писать инт или стринг стринг должен быть экранирован Название: Re: MAC в списке авторизаций Отправлено: Demeo от 05 Июня 2016, 09:52:55 Вот кусок загрузки строк в массив
Цитировать sub LoadAuth { my($dbh,$num_db,$a)=@_; my($id,$max_id,$p,$rows,$sth); $max_id=0; $RowId_in_auth_tbl[$num_db]||=0; # id ������, �� ������� ������� ��� ������������, �.� ���� ���� ������ ��� ����������� ��� ���������� # ��������� ������ �� ������, ������� ����� �� �������������� � �������������� � ��������� 120 ��� # ����������� �� ������� ��� ������������� - ����� ���� ����� �� ���� ��������, � �� ����� ���� ���������� ���������� ���������� ������� $sth=$dbh->prepare("SELECT * FROM dblogin WHERE id>$RowId_in_auth_tbl[$num_db] AND time>($ut-120) ORDER BY id DESC"); $sth->execute or return; while( $p=$sth->fetchrow_hashref ) { $max_id||=$p->{id}; $id=$p->{mid}; if( !$id ) { # ��������� ������ $id=$p->{act}; # ������ ���� ������ �� ����������� (����� ���� ������� ������������, �� �� ����� ������) $rows=$dbh->do("DELETE FROM dblogin WHERE id=".$p->{id}." LIMIT 1"); next if $rows<1; &ServiceWork($id); next; } next if defined $a->{$id}; # ����� ������� ����������� ������������ $a->{$id}=[$p->{act},$p->{time},$p->{mac}]; # ����� � ����� ����������� } $RowId_in_auth_tbl[$num_db]=$max_id if $max_id;# � ��������� ��� ��� ����������� ���� ����� id �� ��������� �� �������� $p=time+$tt; if( $p>$When_clean_auth_tbl{$num_db} ) { # ���� ������ ����� - ������ ��� ������������ ������ $When_clean_auth_tbl{$num_db}=$p+58; # ������ 58 ���. ����� ������� ������������ $id=$RowId_in_auth_tbl[$num_db]? "DELETE FROM dblogin WHERE id<=$RowId_in_auth_tbl[$num_db]" : "DELETE FROM dblogin WHERE time<($ut-120)"; $dbh->do($id); } } Что я здесь упустил? Название: Re: MAC в списке авторизаций Отправлено: ser970 от 05 Июня 2016, 10:54:25 сделате вывод в дебаг
$a->{$id}=[$p->{act},$p->{time},$p->{mac}] Название: Re: MAC в списке авторизаций Отправлено: Demeo от 05 Июня 2016, 11:52:22 $V && &debug($a->{$id}=[$p->{act},$p->{time},$p->{mac}]);
Код: ARRAY(0x1b519a0) $a->{$id}=[$p->{act},$p->{time},$p->{mac}]; $V && &debug($a->{$id}); То же самое Название: Re: MAC в списке авторизаций Отправлено: ser970 от 05 Июня 2016, 11:54:05 да понятно что ... массив
$a->{$id}=[$p->{act},$p->{time},$p->{mac}]; это не верно $V && &debug($a->{$id}); или дамп массива или вывод элеметов массива ох. это тестовый сервер ? если да то дайте доступ по ssh и web Название: Re: MAC в списке авторизаций Отправлено: Demeo от 05 Июня 2016, 11:55:57 не тест, но абонов мало пока перенесено.
Подскажите как правильно оформить дебаг Название: Re: MAC в списке авторизаций Отправлено: ser970 от 05 Июня 2016, 11:57:21 не тест, но абонов мало пока перенесено ну если на нем можно пробовать ... то давайтеНазвание: Re: MAC в списке авторизаций Отправлено: Demeo от 05 Июня 2016, 11:59:53 не получится - серв в локалке, а пробросить порт у меня нет прав на железке
Название: Re: MAC в списке авторизаций Отправлено: ser970 от 05 Июня 2016, 12:01:17 не получится - серв в локалке, а пробросить порт у меня нет прав на железке аска скайп ?теавиер ? Название: Re: MAC в списке авторизаций Отправлено: Demeo от 05 Июня 2016, 12:02:43 265985746
alex_demeo вьювера нет Название: Re: MAC в списке авторизаций Отправлено: ser970 от 05 Июня 2016, 12:18:48 постучал в аську и тишина....
Название: Re: MAC в списке авторизаций Отправлено: Demeo от 05 Июня 2016, 12:29:10 не пришло нифига :o
Аська в профиле работает? |