hersteller, $router_tmp[$x]['hersteller']) == 0) && (strcasecmp($router[$z]->modell, $router_tmp[$x]['modell']) == 0) && (strcasecmp($router[$z]->version, $router_tmp[$x]['version']) == 0)) { $entinst = $entwicklung[$i].$installation[$j]; $entinstlink = $entwicklung[$i].$installation[$j]."link"; $router[$z]->$entinst = 1; $router[$z]->$entinstlink = $firmware_download_path.$entwicklung[$i]."/".$installation[$j]."/".$files[$entwicklung[$i]][$installation[$j]][$x]; $router_neu = 0; break; } } } if($router_neu == 1) { $z = count($router); $router[$z] = new ffrouter(); $router[$z]->hersteller = $router_tmp[$x]['hersteller']; $router[$z]->version = $router_tmp[$x]['version']; $router[$z]->modell = $router_tmp[$x]['modell']; $entinst = $entwicklung[$i].$installation[$j]; $entinstlink = $entwicklung[$i].$installation[$j]."link"; $router[$z]->$entinst = 1; $router[$z]->$entinstlink = $firmware_download_path.$entwicklung[$i]."/".$installation[$j]."/".$files[$entwicklung[$i]][$installation[$j]][$x]; } } } } $router_tmp = array(); } } }else{ //Check if URL is reachable if (!remoteFileExists($firmware_download_path)) { throw new Exception("Firmwareverzeichnis offline oder nicht existent!"); } $err = 0; $entwicklung_count = count($entwicklung); $installation_count = count($installation); for( $i=0; $i<$entwicklung_count; $i++ ) { if (remoteFileExists($firmware_download_path.$entwicklung[$i]."/")) { for( $j=0; $j<$installation_count; $j++ ) { //Check if URL has index file (refer to https://forums.phpfreaks.com/topic/112764-using-scandir-on-other-websites/?p=579166 <- scandir has problem with index files) if ((@remoteFileExists($firmware_download_path.$entwicklung[$i]."/".$installation[$j]."/index.htm"))||(@remoteFileExists($firmware_download_path.$entwicklung[$i]."/".$installation[$j]."/index.html"))||(@remoteFileExists($firmware_download_path.$entwicklung[$i]."/".$installation[$j]."/index.php"))) { throw new Exception("Firmwareverzeichnis darf keine index files besitzen!"); } $variante[$entwicklung[$i]][$installation[$j]] = 1; preg_match_all('/href=[\'"]?([^\'" >]+)/', file_get_contents($firmware_download_path.$entwicklung[$i]."/".$installation[$j]."/"), $files_in_HTTP); foreach($files_in_HTTP["0"] as $key=>$value){ if ((strpos($value, 'manifest') !== false) || (strpos($value, '?C=M;O=A') !== false) || (strpos($value, '?C=S;O=A') !== false) || (strpos($value, '?C=S;O=A') !== false)) { unset($files_in_HTTP["0"][$key]); } } foreach($files_in_HTTP["0"] as $key=>$value){ $files_in_HTTP["0"][$key]=substr($value, 6); } $files[$entwicklung[$i]][$installation[$j]] = array_slice($files_in_HTTP["0"], 1); } } } for( $i=0; $i<$entwicklung_count; $i++ ) { for( $j=0; $j<$installation_count; $j++ ) { if($variante[$entwicklung[$i]][$installation[$j]] == 1) { $x = 0; while($files[$entwicklung[$i]][$installation[$j]][$x] !== false) { $pos_hersteller[$entwicklung[$i]][$installation[$j]] = stripos($files[$entwicklung[$i]][$installation[$j]][$x], "tp-link"); if ($pos_hersteller[$entwicklung[$i]][$installation[$j]] !== false) { break; } $x++; } } else { $pos_hersteller[$entwicklung[$i]][$installation[$j]] = 0; } } } $router = array(); for( $i=0; $i<$entwicklung_count; $i++ ) { for( $j=0; $j<$installation_count; $j++ ) { if($variante[$entwicklung[$i]][$installation[$j]] == 1) { $file_count = count($files[$entwicklung[$i]][$installation[$j]]); for( $x=0; $x<$file_count; $x++) { $anzahl_hersteller = count($hersteller); for( $y=0; $y<$anzahl_hersteller; $y++) { if($pos = stripos($files[$entwicklung[$i]][$installation[$j]][$x], $hersteller[$y]['filename'], $pos_hersteller[$entwicklung[$i]][$installation[$j]]-1) !== false) { $router_tmp[$x]['hersteller'] = $hersteller[$y]['name']; switch($router_tmp[$x]['hersteller']) { case "D-Link": $router_tmp[$x]['version'] = substr($files[$entwicklung[$i]][$installation[$j]][$x], strripos($files[$entwicklung[$i]][$installation[$j]][$x], "rev"), -4-$offset_sysupgrade[$j]); break; case "GL-Inet (alt)": $router_tmp[$x]['version'] = substr($files[$entwicklung[$i]][$installation[$j]][$x], strripos($files[$entwicklung[$i]][$installation[$j]][$x], "v"), -4-$offset_sysupgrade[$j]); break; case "TP-Link": $router_tmp[$x]['version'] = substr($files[$entwicklung[$i]][$installation[$j]][$x], strripos($files[$entwicklung[$i]][$installation[$j]][$x], "v"), -4-$offset_sysupgrade[$j]); break; default: $router_tmp[$x]['version'] = "Alle"; } $router_tmp[$x]['modell'] = strtoupper(substr($files[$entwicklung[$i]][$installation[$j]][$x], $pos_hersteller[$entwicklung[$i]][$installation[$j]]+$hersteller[$y]['offset_modell'], strripos($files[$entwicklung[$i]][$installation[$j]][$x], ".", -4)-strlen($files[$entwicklung[$i]][$installation[$j]][$x])-strlen($router_tmp[$x]['version'])+$hersteller[$y]['offset_version']-$offset_sysupgrade[$j])); } } if(isset($router_tmp[$x]['hersteller']) != true) { $error_text[$err]="Unbekannten Hersteller im Dateinamen gefunden, bitte Script updaten! (".$files[$entwicklung[$i]][$installation[$j]][$x].")"; $err++; } else { $router_neu = 1; $router_count = count($router); for( $z=0; $z<$router_count; $z++) { if(isset($router[$z])) { if((strcasecmp($router[$z]->hersteller, $router_tmp[$x]['hersteller']) == 0) && (strcasecmp($router[$z]->modell, $router_tmp[$x]['modell']) == 0) && (strcasecmp($router[$z]->version, $router_tmp[$x]['version']) == 0)) { $entinst = $entwicklung[$i].$installation[$j]; $entinstlink = $entwicklung[$i].$installation[$j]."link"; $router[$z]->$entinst = 1; $router[$z]->$entinstlink = $firmware_download_path.$entwicklung[$i]."/".$installation[$j]."/".$files[$entwicklung[$i]][$installation[$j]][$x]; $router_neu = 0; break; } } } if($router_neu == 1) { $z = count($router); $router[$z] = new ffrouter(); $router[$z]->hersteller = $router_tmp[$x]['hersteller']; $router[$z]->version = $router_tmp[$x]['version']; $router[$z]->modell = $router_tmp[$x]['modell']; $entinst = $entwicklung[$i].$installation[$j]; $entinstlink = $entwicklung[$i].$installation[$j]."link"; $router[$z]->$entinst = 1; $router[$z]->$entinstlink = $firmware_download_path.$entwicklung[$i]."/".$installation[$j]."/".$files[$entwicklung[$i]][$installation[$j]][$x]; } } } } $router_tmp = array(); } } } $router_count = count($router); for( $i=0; $i<$router_count; $i++ ) { // Routerbilder einbauen if(is_dir(strtolower("router_images/".$router[$i]->hersteller))) { if(is_file(strtolower("router_images/".$router[$i]->hersteller."/".$router[$i]->modell."-".$router[$i]->version.".jpg"))) { $router[$i]->imagefront = strtolower("router_images/".$router[$i]->hersteller."/".$router[$i]->modell."-".$router[$i]->version.".jpg"); } else { $router[$i]->imagefront = "router_images/keinbild.jpg"; } if(is_file(strtolower("router_images/".$router[$i]->hersteller."/".$router[$i]->modell."-".$router[$i]->version."_back.jpg"))) { $router[$i]->imageback = strtolower("router_images/".$router[$i]->hersteller."/".$router[$i]->modell."-".$router[$i]->version."_back.jpg"); } else { $router[$i]->imageback = "router_images/keinbild.jpg"; } } else { $router[$i]->imagefront = "router_images/keinbild.jpg"; $router[$i]->imageback = "router_images/keinbild.jpg"; } }