Биллинговая система Nodeny
22 Ноября 2024, 22:53:53 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Прекращена поддержка версии Nodeny 49
 
  Начало Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: [1]
1  Главная категория / Общий раздел / Re: ip+mac+авторизатор : 16 Февраля 2010, 13:59:57
В дополнительных полях клиента заводим текстовое _AUTHmacs, куда будем записывать разрешенные маки.

файл nol2auth.pl
1. после
Код:
 $U{$ip}{last_got_info}=$t; # запомним когда получили инфо о клиенте
вставляем
Код:
 $sth=$dbh->prepare("SELECT field_alias, field_value FROM dopfields INNER JOIN dopvalues ON (dopfields.id = dopvalues.dopfield_id)".
" WHERE dopfields.field_alias='_AUTHmacs' AND  dopvalues.parent_id = $id".
" ORDER BY revision DESC LIMIT 1");
 if( $sth->execute ) {
    while ($addp = $sth->fetchrow_hashref ())    {
$U{$ip}{$addp->{field_alias}}=$addp->{field_value};
    }
 }

2. Перед
Код:
   # --- авторизация прошла успешно ---
вставляем
Код:
        if($U{$ip}{'_AUTHmacs'} ne '') {
$mac=`arp -n $ip`;
         &Debug(" get MACinfo (\n$mac\n) from ip ($ip)\n");
# тут - получение МАСа в дебиан, для фри индекс в квадратных скобках другой (см. вывод "arp -n 127.0.0.1")
my $tmpMAC=uc((stat(split(/\s+/,$mac)))[8]);

if (index(uc($U{$ip}{'_AUTHmacs'}),$tmpMAC)<0)
{ # неудачная авторизация
         send(SOCKET,"no$U{$ip}{'id_query'}",0,$hispaddr); # т.к. длина 'no'+$zapros2 <>16, то старые клиенты не будут воспринимать это как строку для шифрования
         &Debug("2й шаг авторизации. Неудачная авторизация по MAC ($U{$ip}{'_AUTHmacs'} ne $tmpMAC)");
         &Slap_Ip($ip,2); # накажем на 5 пунктов
         next;
}}

upd: это все - для nol2auth.pl 49.32
2  Главная категория / Разработка / Re: Протокол авторизации : 24 Января 2010, 23:23:40
в nol2auth.pl (49.32) такого нету, решение из nodeny.pl:
Код:
UPDATE users_trf SET now_on=0 WHERE uid=$U{$ip}{id};
UPDATE $c{Db_usr_table} SET auth = 'no'  WHERE id = $U{$ip}{id};
3  Главная категория / Разработка / Re: Протокол авторизации : 24 Января 2010, 02:52:21
Я сильно извиняюсь, не слепой - а тупой.
Весь день сношался не с тем...
Неудивительно что авторизацию в noserver.pl не нашел, ядро у нас nodeny.pl

Почистите, пожалуйста, если нагадил в теме.
4  Главная категория / Разработка / Re: Протокол авторизации : 24 Января 2010, 02:09:05
Не сочтите за некропост.
Изучая nol2auth.pl пробую написать свой агент и свой авторизатор.
Осталась одна проблема - в оригинальном агенте нет процедуры отключения авторизации. Или я слепой.
А мне важно отключить клиента при нажатии кнопки, а не через две минуты.
Что пробовал (бестолку):
Код:
"UPDATE $c{Db_usr_table} SET auth = 'no' WHERE id = $U{$ip}{id}";
через несколько секунд опять "on"

Код:
INSERT INTO dblogin set mid=$U{$ip}{id},act=0,time=unix_timestamp()
ставил наугад разные значения act, не помогло

здесь $com = q - состояние авторизации (то, которое "a - запрос на включение полного доступа")
у меня используется q в качестве запроса на отключение.
Код:
    my $rows;
    if ($com eq 'q') {
# my $sql="DELETE FROM dblogin WHERE mid=$U{$ip}{id}";
# my $sql="UPDATE $c{Db_usr_table} SET auth = 'no' WHERE id = $U{$ip}{id}";
my $sql="INSERT INTO dblogin set mid=$U{$ip}{id},act=47,time=unix_timestamp()";

    if( $dbha )
    {  # есть соединение с базой авторизации
       $rows=$dbha->do($sql);
       &Debug("dblogin [$rows]");
    }
next;
    }
подключение по оригинальным запросам "a,b..." идет в дальше в скрипте, т.е. переавторизации не происходит

лог авторизации 'a':
Цитировать
noBauth:                # === Пакет от 10.10.10.5
noBauth:                # Разрешена авторизация [1]
noBauth:                # Запрос на авторизацию. ID запроса=254414181515. Зашифрованный ключ послан в ответ
noBauth:                # === Пакет от 10.10.10.5
noBauth:                # 2й шаг авторизации. Авторизация успешна. Режим авторизации: a
noBauth:                # Авторизация записана в базу авторизаций
лог авторизации 'q':
Цитировать
noBauth:                # === Пакет от 10.10.10.5
noBauth:                # Разрешена авторизация [1]
noBauth:                # Запрос на авторизацию. ID запроса=255404080505. Зашифрованный ключ послан в ответ
noBauth:                # === Пакет от 10.10.10.5
noBauth:                # 2й шаг авторизации. Авторизация успешна. Режим авторизации: q
noBauth:                # dblogin [1]
Подскажите метод немедленного сброса авторизации, а не по таймауту в две минуты.
Желательно такой, для какого нет необходимости ковырять noserver.pl
Страниц: [1]
Powered by MySQL Powered by PHP Powered by SMF 1.1.20 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!