IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Веб-программирование (https://www.imho.ws/forumdisplay.php?f=29)
-   -   Скрипт ограничение доступа по IP (https://www.imho.ws/showthread.php?t=101517)

Kapa6ac 29.03.2006 18:13

Скрипт ограничение доступа по IP
 
Привет.
Такой вопрос:
есть список IP-адрессов, нужно сделать доступ к папке только для них.
список адрессов больше 3000 , поэтому вручную каждый IPишник в .htaccess я вижу глупым добовлять..

-------
список IP _http://majordomo.ru/rus_networks_secret_file.txt

Kvarx 29.03.2006 18:31

А может эти IP читать из базы скриптом и тем самым генерить .htaccess?
Как так идея?

Merlin Cori 29.03.2006 19:28

Зачем же ручками..... Вот тебе перловый скрипт и и создавай .htaccess

Цитата:


#!/usr/bin/perl -w
$input_file="rus_networks_secret_file.txt";
$out_file=".htaccess";
$text="Allow from ";
open(HANDLE_IN, $input_file) or die ("Error open file", $input_file);
open(HANDLE_OUT, "> $out_file") or die ("Error open file");

print HANDLE_OUT "Options -Indexes\nOrder Deny, Allow\nDeny from all\n";

while(!eof(HANDLE_IN) )
{
$input=readline(HANDLE_IN);
($input, $dummy) = split /\//, $input;
$output= $text.$input;
print HANDLE_OUT $output,"\n";
}


Naked 30.03.2006 09:30

А если список IP динамически изменяется, то можно без htaccess делать - в пхп(или перл) скрипте проверяем перемнную $ip = getenv("REMOTE_ADDR") (это для пхп), и смотрим подходит ли она под нужный диапазон или нет... Но это удобнее (возможно) только когда адреса изменяеются без твоего участия, иначе, конечно легче в htaccess загонять, как Merlin Cori написал..

Kvarx 02.04.2006 00:58

Merlin Cori

Цитата:

Сообщение от Merlin Cori
Order Deny Allow

А тута точно между Deny и Allow не нужна запятая?

Пусть еще будет версия на ПХП
PHP код:

<?
$input="rus_networks_secret_file.txt";
$output=".htaccess";

$fh_input=fopen($input,"rt") or die("Error, while opening file $fh_input");
$fh_output=fopen($output,"wt") or die("Error, while opening file $fh_output");

fputs($fh_output,"Order Deny, Allow\n");
fputs($fh_output,"Deny from all\n");

while(!feof($fh_input)){
   $str=fgets($fh_input);
   $str="Allow from ".$str."\n";
   fputs($fh_output,$str);
}

fclose($fh_input);
fclose($fh_output);
?>

The_naked
Этот файл наверняка общий ресурс и большой посещаемостью сайта(ов) сделанных так, возможны траблы с перегрузкой.

ftpd 02.04.2006 05:03

перед тем как загонять в .htaccess - сети можно(я бы сказал нужно)
сгруппировать
ftp://ftp.isc.org/isc/aggregate

Saruman 02.04.2006 13:10

Цитата:

Kvarx:
А тута точно между Deny и Allow не нужна запятая?
нужна

Merlin Cori 02.04.2006 13:54

да, да, да,...... каюсь..... пропустил.......
нужна запятая

Kapa6ac 04.04.2006 16:23

а будут ли скрипты понимать IP написанный таким образом: 195.161.0.0/16.
тоесть расшифруется ли он как 195.161.0.0, 195.161.0.1, 195.161.0.2 ... 195.161.0.16 ?

Kvarx 04.04.2006 16:58

IP будет читаться из файла целой строкой и просто переписываться в .htaccess, зависит от поддерживает ли это Apache, cудя по _http://httpd.apache.org/docs/1.3/mod/mod_access.html.en#allow так можно делать.

Merlin Cori 04.04.2006 17:03

тогда так....
убираем строку со split
Цитата:

#!/usr/bin/perl -w
$input_file="rus_networks_secret_file.txt";
$out_file=".htaccess";
$text="Allow from ";
open(HANDLE_IN, $input_file) or die ("Error open file", $input_file);
open(HANDLE_OUT, "> $out_file") or die ("Error open file");

print HANDLE_OUT "Options -Indexes\nOrder Deny, Allow\nDeny from all\n";

while(!eof(HANDLE_IN) )
{
$input=readline(HANDLE_IN);
$output= $text.$input;
print HANDLE_OUT $output,"\n";
}

Kapa6ac 06.04.2006 16:26

Merlin Cori
скрипт работает.. ток он распределяеться на весь сервер.. а мне нужно на определенную папку, чтоб он работал..
типо www.mypage/blablabla/ftp

Merlin Cori 06.04.2006 16:30

Kapa6ac
так ты .htaccess в эту папку и положи :)
и будет распостранятся только на нее

Kapa6ac 07.04.2006 12:03

апшыпся немнога :)
скрипт непашет :( пишет ошибка сервера

Merlin Cori 07.04.2006 14:05

Kapa6ac
пробел лишний затесался между Deny и Allow

Цитата:

#!/usr/bin/perl -w
$input_file="rus_networks_secret_file.txt";
$out_file=".htaccess";
$text="Allow from ";
open(HANDLE_IN, $input_file) or die ("Error open file", $input_file);
open(HANDLE_OUT, "> $out_file") or die ("Error open file");

print HANDLE_OUT "Options -Indexes\nOrder Deny,Allow\nDeny from all\n";

while(!eof(HANDLE_IN) )
{
$input=readline(HANDLE_IN);
$output= $text.$input;
print HANDLE_OUT $output,"\n";
}

Kapa6ac 08.04.2006 02:58

тоже самое .. ошибка сервера..

Merlin Cori 08.04.2006 09:45

какя ошибка? 500

Kapa6ac 08.04.2006 14:56

Merlin Cori
она самая

Merlin Cori 08.04.2006 15:00

Kapa6ac
ну-ка давай свой сгенерированный .htaccess...
посмотрю

Kapa6ac 08.04.2006 16:18

Merlin Cori
даже сгенерировать его немогу :(((
пишет ошибку..
failed with return code 126

Merlin Cori 08.04.2006 16:22

кто пишет? перл? :confused: :confused: :confused:

Kapa6ac 08.04.2006 16:33

блин ) чвото путти тормозил.. щас сделал. .скину!

проверяй пм

непонял, как понимать подобные IP..
80.67.210.144/29
может наоборот надо 29/144 ?

Merlin Cori 08.04.2006 20:18

это он на пустые строки ругался...
а зачем ты оттуда Deny from all убрал?

Цитата:

#!/usr/bin/perl -w
$input_file="rus_networks_secret_file.txt";
$out_file=".htaccess";
$text="Allow from ";
open(HANDLE_IN, $input_file) or die ("Error open file", $input_file);
open(HANDLE_OUT, "> $out_file") or die ("Error open file");

print HANDLE_OUT "Options -Indexes\nOrder Deny,Allow\nDeny from all\n";

while(!eof(HANDLE_IN) )
{
$input=readline(HANDLE_IN);
$output= $text.$input;
print HANDLE_OUT $output;
}

Kapa6ac 08.04.2006 23:24

Merlin Cori
пасиб. скомпилил. пробелы убрались.
добавил свой IP . доступ есть..
остаеться думать если доступ с других iP.
и как всеже понимать ипишку записанную в виде 80.67.210.144/29

Merlin Cori 08.04.2006 23:36

Address: 80.67.210.144 01010000.01000011.11010010.10010 000
Netmask: 255.255.255.248 = 29 11111111.11111111.11111111.11111 000
Wildcard: 0.0.0.7 00000000.00000000.00000000.00000 111
=>
Network: 80.67.210.144/29 01010000.01000011.11010010.10010 000 (Class A)
Broadcast: 80.67.210.151 01010000.01000011.11010010.10010 111
HostMin: 80.67.210.145 01010000.01000011.11010010.10010 001
HostMax: 80.67.210.150 01010000.01000011.11010010.10010 110
Hosts/Net: 6


Часовой пояс GMT +4, время: 09:46.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.