From a1de03c4c40eb38cfa1f01fcdf88b3048ff23105 Mon Sep 17 00:00:00 2001 From: Marcel Date: Sun, 23 Oct 2016 12:16:47 +0200 Subject: [PATCH] Add experimentelle Funktion zum Firmware download auf remote servern --- ffrouter_parsen.function.php | 293 ++++++++++++++++++++++++----------- 1 file changed, 204 insertions(+), 89 deletions(-) diff --git a/ffrouter_parsen.function.php b/ffrouter_parsen.function.php index 22ab452..e1e57cf 100644 --- a/ffrouter_parsen.function.php +++ b/ffrouter_parsen.function.php @@ -4,106 +4,221 @@ * @copyright 2016 Caspar Armster, Freifunk Hennef/Freie Netzwerker e.V. (www.freifunk-hennef.de / www.freie-netzwerker.de) * @license Licensed under GPLv3 */ -if(!is_dir($firmware_download_path)) { - throw new Exception("Firmwareverzeichnis existiert nicht!"); -} -$err = 0; -for( $i=0; $ihersteller, $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; + } else { + $pos = stripos($files[$entwicklung[$i]][$installation[$j]][$x], 'manifest'); + if($pos !== false) { + array_splice($files[$entwicklung[$i]][$installation[$j]], $x, 1); + $x--; } } } - 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]; + } + } + } + } + for( $i=0; $ihersteller, $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 (!@fopen($firmware_download_path,"r")) { + throw new Exception("Firmwareverzeichnis offline oder nicht existent!"); + } + + //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 ((@fopen($firmware_download_path."/index.htm","r"))||(@fopen($firmware_download_path."/index.html","r"))||(@fopen($firmware_download_path."/index.php","r"))) { + throw new Exception("Firmwareverzeichnis darf keine index files besitzen!"); + } + + $err = 0; + for( $i=0; $ihersteller, $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(); + } } } + for( $i=0; $ihersteller))) { if(is_file(strtolower("router_images/".$router[$i]->hersteller."/".$router[$i]->modell."-".$router[$i]->version.".jpg"))) {