Закрываем доступ к папке с помощью .htaccess и .htpasswd

Если необходимо закрыть доступ к файлам, в опредиленной папке, данный скрипт создаст все необходимые файлы для конфигурации вебсервера Apache

<?php
error_reporting (E_ALL ^ E_WARNING ^ E_NOTICE);         // не показывать ошибки
$login=$_REQUEST['login'];
$pass=$_REQUEST['pass'];
$puth=$_REQUEST['puth'];
$acc=$_REQUEST['acc'];

if ($_SERVER['REMOTE_USER'] != "uiso") {exit;} // Не обязательно, это проверка пользователя можно закоментить

if ($puth == '') {$puth="C:/Apache2/Apache2/htdocs/site/new/www/databases/test";} // какую папку закрыть

if ($acc == 'on') {
$access_cod = <<<HTML
AuthType Basic
AuthName "Some Name"
AuthUserFile $puth/.htpasswd
require valid-user
HTML;
$file = fopen($puth."/.htaccess", "a+");
fputs($file, $access_cod."");
fclose($file);
}

if ($pass == '') {
$chars="qazxswedcvfrtgbnhyujmkiolp1234567890QAZXSWEDCVFRTGBNHYUJMKIOLP"; 
$max=10; 
$size=StrLen($chars)-1; 
$password=null; 
while($max--) 
$password.=$chars[rand(0,$size)]; 
$pass=$password;
}

//////////////////////////////////////////////////////////////////////////////
print <<<HTML
<form action="" method="post">
Полный путь к папке например (C:/Apache2/Apache2/htdocs/site/new/www/databases/db_rdoc/admin):<br>
<input type="text" name="puth" size="80" value="$puth"><br>
login:<br>
<input type="text" name="login"><br>
Pass:<br>
<input type="text" name="pass"><br>
Создать предварительно (.htaccess):<br>
<input type="checkbox" name="acc"><br>
<input type="submit" value="Создать">
</form>
HTML;
//////////////////////////////////////////////////////////////////////////////


if (($login != '') &amp;&amp; ($pass != '')) {

print "Вы ввели следующие данные:<br>Login: $login Pass: $pass<br>";

$file2 = fopen($puth."/user_login", "a+");
fputs($file2, $login.":".$pass."");
fclose($file2);

$new_pass = crypt_apr1_md5($pass);
//print $login.":".$new_pass;

$file3 = fopen($puth."/.htpasswd", "a+");
fputs($file3, $login.":".$new_pass."");
fclose($file3);
}


function crypt_apr1_md5($plainpasswd) {
$salt = substr(str_shuffle("abcdefghijklmnopqrstuvwxyz0123456789"), 0, 8);
$len = strlen($plainpasswd);
$text = $plainpasswd.'$apr1$'.$salt;
$bin = pack("H32", md5($plainpasswd.$salt.$plainpasswd));

for($i = $len; $i > 0; $i -= 16) {
$text .= substr($bin, 0, min(16, $i));
}

for($i = $len; $i > 0; $i >>= 1) {
$text .= ($i &amp; 1) ? chr(0) : $plainpasswd{0};
}

$bin = pack("H32", md5($text));

for($i = 0; $i < 1000; $i++) {
$new = ($i &amp; 1) ? $plainpasswd : $bin;
if ($i % 3) $new .= $salt;
if ($i % 7) $new .= $plainpasswd;
$new .= ($i &amp; 1) ? $bin : $plainpasswd;
$bin = pack("H32", md5($new));
}
$tmp = '';

for ($i = 0; $i < 5; $i++) {
$k = $i + 6;
$j = $i + 12;
if ($j == 16) $j = 5;
$tmp = $bin[$i].$bin[$k].$bin[$j].$tmp;
}

$tmp = chr(0).chr(0).$bin[11].$tmp;
$tmp = strtr(strrev(substr(base64_encode($tmp), 2)), "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz");

return "$"."apr1"."$".$salt."$".$tmp;
}
?>
Micro
Author: Micro

///

Поделиться в социальных сетях
0 0 голоса
Рейтинг статьи
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии