5
Mein Skript öffnet zwei Dateien: whitelist.txt und blacklist.txt mit IP-Adressen gefüllt.Effizienz hinzufügen mein IP-Blacklist-Whitelist-Skript
Ich möchte alle Instanzen von ip in blacklist.txt hinzufügen, die nicht in whitelist.txt zu einer Variablen existieren.
Dieses Skript berücksichtigt bis zu 2 Platzhalter.
Es läuft im Moment 37 Minuten, und ich würde gerne dafür schneller sein.
$blacklist = file_get_contents("blacklist.txt");
$whitelist = file_get_contents("whitelist.txt");
$black_ips = explode("\n", $blacklist);
$white_ips = explode("\n", $whitelist);
$wildcard = array();
for($i = 0; $i < 256; $i++) {
$wildcard[] = $i;
}
foreach($black_ips as $bkey => $black) {
if(stristr($black, ".")) {
foreach ($white_ips as $wkey => $white) {
$count = substr_count($white, '*');
if($count) {
switch($count){
case 1:
foreach ($wildcard as $i) {
if(substr($white, 0, strlen($white) - 1) . $i == $black){
continue 4;
}
}
break;
case 2:
foreach ($wildcard as $i) {
foreach ($wildcard as $k) {
if(substr($white, 0, strlen($white) - 3) . $i . '.' . $k == $black){
continue 5;
}
}
}
break;
}
}
else if($black == $white) {
continue 2;
}
}
$nginxdeny .= "deny " . $black . ";\n";
}
}
Dies funktioniert nur für eine Wildcard für mich. Schwarz: 1.0.214.36 Weiß: 1.0. *. * Das war sehr schnell, obwohl – Brandacus
Scratch, dass es für mich jetzt funktioniert. Ich dachte es getan:/Arrays mit Werten extrahiert aus einer Datei arbeiten nicht mit zwei Platzhalter, sondern Arrays mit Werten hardcoded funktionieren. Ich habe das Array aus der Datei gelesen und es liest das gleiche wie ein Array würde hartcodierte aussehen. Das ist komisch. Was sind deine Gedanken? – Brandacus
Nur ein Tippfehler im Code, sorry :) Es jetzt behoben. Muster für * war '\ d {1,2}' und jetzt ist es '\ d {1,3}'. –