Название: Nodeny не проверяет уникальность ip-адресов! Отправлено: elite от 21 Ноября 2011, 12:51:53 Попробуйте создать клиента с ип 10.10.10.5, а потом с ип 10.10.10.005
:) Название: Re: Nodeny не проверяет уникальность ip-адресов! Отправлено: Efendy от 21 Ноября 2011, 13:14:31 Попробуйте создать клиента с ип 10.10.10.5, а потом с ип 10.10.10.005 в данном случае баг не с тем, что это одинаковые ip, а с тем, что 2й ip по сути некорректен (не вообще, а в пределах NoDeny ибо ip воспринимаются/сравниваются как строки). Щас посмотрю что нужно подправить:) Название: Re: Nodeny не проверяет уникальность ip-адресов! Отправлено: Efendy от 21 Ноября 2011, 13:23:21 быстрее всего в голову пришло такое:
в user.pl в Код: sub check_ip щас тока протещу, а то до этого ахинею написал) Название: Re: Nodeny не проверяет уникальность ip-адресов! Отправлено: elite от 21 Ноября 2011, 13:25:09 так, а при создании нового пользователя, проверка будет работать или надо еще где-то ее вставить?
Название: Re: Nodeny не проверяет уникальность ip-адресов! Отправлено: Efendy от 21 Ноября 2011, 13:33:26 Придумал аццкий регексп:
Код: s/(^|\.)0+([^0\.]+|\d$)/$1$2/g; Проверка: Код: foreach my $ip qw( выдает: Цитировать 0.0.0.0 -> 0.0.0.0 10.0.0.1 -> 10.0.0.1 0010.1.2.30 -> 10.1.2.30 020.000030.04.05 -> 20.30.4.5 1.2.3.4 -> 1.2.3.4 123.0.234.000 -> 123.0.234.0 Насчет создания клиента - сейчас гляну Название: Re: Nodeny не проверяет уникальность ip-адресов! Отправлено: Efendy от 21 Ноября 2011, 13:40:09 Итого в user.pl после
Код: sub check_ip ставим: Код: $F{ip} =~ s/(^|\.)0+([^0\.]+|\d$)/$1$2/g; В adduser.pl после Код: $Fip=&trim($F{ip}); ставим: Код: $Fip =~ s/(^|\.)0+([^0\.]+|\d$)/$1$2/g; Название: Re: Nodeny не проверяет уникальность ip-адресов! Отправлено: Efendy от 21 Ноября 2011, 14:19:36 На самом деле покрываются не все возможные варианты извращений. Более правильный вариант:
Код: $F{ip} = join '.', map{ s/^0+(\d+)$/$1/; $_ } split /\./,$F{ip}; и Код: $Fip = join '.', map{ s/^0+(\d+)$/$1/; $_ } split /\./,$Fip; Название: Re: Nodeny не проверяет уникальность ip-адресов! Отправлено: 0xbad0c0d3 от 21 Ноября 2011, 14:59:13 А найух регексп!?
Код: $F{ip} = join '.', map{ int } split /\./,$F{ip}; Название: Re: Nodeny не проверяет уникальность ip-адресов! Отправлено: Efendy от 21 Ноября 2011, 15:39:43 А найух регексп!? предполагал, что число с лидирующим нулем будет воспринято как восьмеричное:Код: $F{ip} = join '.', map{ int } split /\./,$F{ip}; Код: print int(010); Но оказывается, что в случае со строками, perl поступает иначе. Так что твой вариант лучше Тогда проще так: Код: s/(\d+)/int $1/ge; |