| 1 |
<?php |
| 2 |
############################################### |
| 3 |
# htaccess |
| 4 |
# |
| 5 |
# Codes d'erreurs 7XX |
| 6 |
// Liste des options |
| 7 |
$opts = [ |
| 8 |
'autoindex' => false, |
| 9 |
'authorid' => false, |
| 10 |
'comments' => false, |
| 11 |
'sqlfiles' => false, |
| 12 |
'readmelicense' => false, |
| 13 |
'xmlrpc' => false, |
| 14 |
'phpuploads' => false, |
| 15 |
'sslredirect' => false, |
| 16 |
]; |
| 17 |
|
| 18 |
if (is_file(ABSPATH . '.htaccess')) { |
| 19 |
// Options hors balise |
| 20 |
$f = file(ABSPATH . '.htaccess'); |
| 21 |
$file = file_get_contents(ABSPATH . '.htaccess'); |
| 22 |
$read = false; |
| 23 |
$balise = false; |
| 24 |
$rCond = false; |
| 25 |
$datas = []; |
| 26 |
|
| 27 |
foreach ($f as $line) { |
| 28 |
if ($read && preg_match("#^<(.[^>]+)>$#", trim($line), $a)) { |
| 29 |
$balise = $a[1]; |
| 30 |
} |
| 31 |
|
| 32 |
if ($read && preg_match("#^</.[^>]+>$#", trim($line))) { |
| 33 |
$balise = false; |
| 34 |
} |
| 35 |
|
| 36 |
if ($read && preg_match("#^(RewriteCond .+)#", trim($line), $a)) { |
| 37 |
$rCond = $a[1]; |
| 38 |
} |
| 39 |
|
| 40 |
if (trim($line) == '# BEGIN WP MANAGER') { |
| 41 |
$read = true; |
| 42 |
} |
| 43 |
|
| 44 |
if ($read && trim($line) != '' && trim($line)[0] != '#') { |
| 45 |
if (! $balise && ! $rCond) { |
| 46 |
// Auto index |
| 47 |
if (trim(mb_strtolower($line)) == 'options +indexes') { |
| 48 |
$opts['autoindex'] = true; |
| 49 |
} |
| 50 |
|
| 51 |
// Blocage de la page permettant de recuperer les infos sur l'auteur |
| 52 |
if (trim(mb_strtolower($line)) == 'rewriterule ^author/(.+) "-" [f]') { |
| 53 |
$opts['authorid'] = true; |
| 54 |
} |
| 55 |
|
| 56 |
// Blocage fichiers .sql |
| 57 |
if (trim(mb_strtolower($line)) == 'rewriterule (.+)\.sql$ "-" [f]') { |
| 58 |
$opts['sqlfiles'] = true; |
| 59 |
} |
| 60 |
|
| 61 |
// Blocage fichiers readme et licence |
| 62 |
if (trim(mb_strtolower($line)) == 'rewriterule (license\.txt|readme\.html)$ "-" [f]') { |
| 63 |
$opts['readmelicense'] = true; |
| 64 |
} |
| 65 |
|
| 66 |
// Blocage fichier xmlrpc |
| 67 |
if (trim(mb_strtolower($line)) == 'rewriterule xmlrpc\.php$ "-" [f]') { |
| 68 |
$opts['xmlrpc'] = true; |
| 69 |
} |
| 70 |
} elseif (trim(mb_strtolower($balise)) == 'if "%{request_uri} =~ m#wp-content/uploads/.+\.php#"') { |
| 71 |
if (trim(mb_strtolower($line)) == 'sethandler !') { |
| 72 |
$opts['phpuploads'] = true; |
| 73 |
} |
| 74 |
} elseif (trim(mb_strtolower($balise)) == 'if "%{request_filename} =~ /wp-comments-post.php/ && ( %{http_user_agent} == \'\' || %{http_referer} == \'\' )"') { |
| 75 |
if (trim(mb_strtolower($line)) == 'rewriterule wp-comments-post\.php$ "-" [f]') { |
| 76 |
$opts['comments'] = true; |
| 77 |
} |
| 78 |
} elseif (trim(mb_strtolower($rCond)) == 'rewritecond %{https} !on') { |
| 79 |
if (trim(mb_strtolower($line)) == 'rewriterule ^(.*)$ https://%{http_host}%{request_uri} [redirect=301,l]') { |
| 80 |
$rCond = false; |
| 81 |
$opts['sslredirect'] = true; |
| 82 |
} |
| 83 |
} |
| 84 |
} |
| 85 |
|
| 86 |
if (trim($line) == '# END WP MANAGER') { |
| 87 |
$read = false; |
| 88 |
} |
| 89 |
} |
| 90 |
|
| 91 |
// $hta = ''; |
| 92 |
// foreach ($opts as $opt => $value) { |
| 93 |
// if ($value) { |
| 94 |
// switch ($opt) { |
| 95 |
// case 'autoindex': |
| 96 |
// $hta .= "Options +Indexes\n"; |
| 97 |
// break; |
| 98 |
|
| 99 |
// case 'authorid': |
| 100 |
// $hta .= "RewriteRule ^author/(.+) \"-\" [F]\n"; |
| 101 |
// break; |
| 102 |
|
| 103 |
// case 'comments': |
| 104 |
// $hta .= "<If \"%{REQUEST_FILENAME} =~ /wp-comments-post.php/ && ( %{HTTP_USER_AGENT} == '' || %{HTTP_REFERER} == '' )\">\n RewriteRule wp-comments-post\\.php$ \"-\" [F]\n</If>\n"; |
| 105 |
// break; |
| 106 |
|
| 107 |
// case 'sqlfiles': |
| 108 |
// $hta .= "RewriteRule (.+)\\.sql$ \"-\" [F]\n"; |
| 109 |
// break; |
| 110 |
|
| 111 |
// case 'readmelicense': |
| 112 |
// $hta .= "RewriteRule (license\\.txt|readme\\.html)$ \"-\" [F]\n"; |
| 113 |
// break; |
| 114 |
|
| 115 |
// case 'xmlrpc': |
| 116 |
// $hta .= "RewriteRule xmlrpc\\.php$ \"-\" [F]\n"; |
| 117 |
// break; |
| 118 |
|
| 119 |
// case 'phpuploads': |
| 120 |
// $hta .= "<If \"%{REQUEST_URI} =~ m#wp-content/uploads/.+\\.php#\">\n SetHandler !\n</If>\n"; |
| 121 |
// break; |
| 122 |
|
| 123 |
// case 'sslredirect': |
| 124 |
// $hta .= "RewriteCond %{HTTP:X-Forwarded-Proto} !https\nRewriteCond %{HTTPS} !on\nRewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [redirect=301,L]\n"; |
| 125 |
// break; |
| 126 |
// } |
| 127 |
// } |
| 128 |
// } |
| 129 |
// preg_replace("/# BEGIN WP MANAGER([\S\s]*?)# END WP MANAGER/", $hta, $file); |
| 130 |
// file_put_contents(ABSPATH . '.htaccess', $file); |
| 131 |
} |
| 132 |
|