Skip to content
Snippets Groups Projects
Commit 3260f16f authored by codedust's avatar codedust
Browse files

Require regular expressions for firmware images to be exhaustive

parent 972d0527
Branches
Tags
No related merge requests found
...@@ -248,26 +248,51 @@ var firmwarewizard = function() { ...@@ -248,26 +248,51 @@ var firmwarewizard = function() {
} }
} }
function parseFilePath(device, match, path, href, branch) { function parseFilePath(match, basePath, filename, branch) {
var location = basePath + filename;
var devices = vendormodels_reverse[match];
if (!(devices instanceof Array) || devices.length != 1) {
console.log("Error: vendormodels_reverse did not contain", match);
return;
}
var device = devices[0];
if (device.model == '--ignore--' || device.revision == '--ignore--') { if (device.model == '--ignore--' || device.revision == '--ignore--') {
return; return;
} }
var location = path + href; var strippedFilename = filename;
var type = findType(href); strippedFilename = strippedFilename.replace(config.community_prefix, '-');
var version = findVersion(href);
var region = findRegion(href);
var revision = device.revision;
var size = findSize(href);
if (revision.length === 0) { var version = findVersion(strippedFilename);
revision = findRevision(href.replace(match, '')); strippedFilename = strippedFilename.replace(version, '');
}
strippedFilename = strippedFilename.replace(match, '');
var revision = device.revision || findRevision(strippedFilename);
strippedFilename = strippedFilename.replace(revision, '');
var region = findRegion(strippedFilename);
strippedFilename = strippedFilename.replace(region, '');
if (region.length) { if (region.length) {
revision += '-' + region; revision += '-' + region;
} }
var size = findSize(strippedFilename);
strippedFilename = strippedFilename.replace(size, '');
var type = findType(strippedFilename);
strippedFilename = strippedFilename.replace(type, '');
strippedFilename = strippedFilename.replace(/.(bin|img.gz|img|tar|vdi|vmdk)/, '');
strippedFilename = strippedFilename.replace(/-/g, '');
if (strippedFilename !== '') {
console.log("Match for file", filename, "was not exhaustive.");
}
// collect branch versions // collect branch versions
app.currentVersions[branch] = version; app.currentVersions[branch] = version;
...@@ -701,8 +726,6 @@ var firmwarewizard = function() { ...@@ -701,8 +726,6 @@ var firmwarewizard = function() {
// parse the contents of the given directories // parse the contents of the given directories
function loadDirectories() { function loadDirectories() {
var vendormodels_reverse = buildVendorModelsReverse();
// sort by length to get the longest match // sort by length to get the longest match
var matches = Object.keys(vendormodels_reverse).sort(function(a, b) { var matches = Object.keys(vendormodels_reverse).sort(function(a, b) {
if (a.length < b.length) return 1; if (a.length < b.length) return 1;
...@@ -725,10 +748,7 @@ var firmwarewizard = function() { ...@@ -725,10 +748,7 @@ var firmwarewizard = function() {
} }
var match = reMatch.exec(href); var match = reMatch.exec(href);
if (match) { if (match) {
var devices = vendormodels_reverse[match[1]]; parseFilePath(match[1], basePath, href, branch);
for (var i in devices) {
parseFilePath(devices[i], match[1], basePath, href, branch);
}
} else if (config.listMissingImages) { } else if (config.listMissingImages) {
console.log("No rule for firmware image:", href); console.log("No rule for firmware image:", href);
} }
...@@ -761,6 +781,7 @@ var firmwarewizard = function() { ...@@ -761,6 +781,7 @@ var firmwarewizard = function() {
} }
} }
var vendormodels_reverse = buildVendorModelsReverse();
loadDirectories(); loadDirectories();
// set link to firmware source directory // set link to firmware source directory
......
...@@ -18,6 +18,8 @@ var config = { ...@@ -18,6 +18,8 @@ var config = {
listMissingImages: false, listMissingImages: false,
// see devices.js for different vendor model maps // see devices.js for different vendor model maps
vendormodels: vendormodels, vendormodels: vendormodels,
// community prefix of the firmware images
community_prefix: 'gluon-ffda-',
// relative image paths and branch // relative image paths and branch
directories: { directories: {
// some demo sources // some demo sources
......
var vendormodels = { var vendormodels = {
"8devices": { "8devices": {
"Carambola Board 2": "carambola2" "Carambola Board 2": "8devices-carambola2-board"
}, },
"Alfa": { "Alfa": {
"AP121": "ap121", "AP121": {"alfa-ap121": "", "alfa-network-ap121": ""},
"AP121U": "ap121u", "AP121U": {"alfa-ap121u": "", "alfa-network-ap121u": ""},
"Hornet-UB": "hornet-ub", "Hornet-UB": {"alfa-hornet-ub": "", "alfa-network-hornet-ub": ""},
"Tube2H": "tube2h", "Tube2H": {"alfa-tube2h": "", "alfa-network-tube2h": ""},
"N2 / N5": "n2-n5" "N2 / N5": {"alfa-n2-n5": "", "alfa-network-n2-n5": ""},
}, },
"Allnet": { "Allnet": {
"ALL0315N": "all0315n" "ALL0315N": "allnet-all0315n"
}, },
"Buffalo": { "Buffalo": {
"WZR-600DHP": {"wzr-600dhp": "v2"}, "WZR-600DHP": {"buffalo-wzr-600dhp": "v2"},
"WZR-HP-AG300H": "wzr-hp-ag300h", "WZR-HP-AG300H": {"buffalo-wzr-hp-ag300h": "", "buffalo-wzr-hp-ag300h-wzr-600dhp": ""},
"WZR-HP-G300H": "wzr-hp-g300h", "WZR-HP-G300H": {"buffalo-wzr-hp-g300h": ""},
"WZR-HP-G300NH": {"wzr-hp-g300nh": "v1", "wzr-hp-g300nh2": "v2"}, "WZR-HP-G300NH": {"buffalo-wzr-hp-g300nh": "v1", "buffalo-wzr-hp-g300nh2": "v2"},
"WZR-HP-G450H": "wzr-hp-g450h", "WZR-HP-G450H": {"buffalo-wzr-hp-g450h": ""},
}, },
"D-Link": { "D-Link": {
"DIR-505": "dir-505", "DIR-505": "d-link-dir-505-rev",
"DIR-615": {"dir-615-c1": "c1/c2", "dir-615-rev-c1": "c1/c2", "dir-615-d": "d1-d4", "dir-615-e1": "e1/e2", "dir-615-e4": "e3-e5", "dir-615-h1": "h1/h2"}, "DIR-615": {"d-link-dir-615-c1": "c1/c2", "d-link-dir-615-rev-c1": "c1/c2",
"DIR-825": "dir-825", "d-link-dir-615-d": "d1-d4", "d-link-dir-615-e1": "e1/e2",
"DIR-860L": "dir-860l" "d-link-dir-615-e4": "e3-e5", "d-link-dir-615-h1": "h1/h2"},
"DIR-825": "d-link-dir-825-rev",
"DIR-860L": "d-link-dir-860l"
}, },
"GL Innovations": { "GL Innovations": {
"AR150": "ar150", "AR150": "gl-ar150",
"iNet 6408a": "inet-6408a", "iNet 6408a": "gl-inet-6408a",
"iNet 6416a": "inet-6416a" "iNet 6416a": "gl-inet-6416a"
}, },
"LeMaker": { "LeMaker": {
"Banana Pi": "banana-pi", "Banana Pi": "lemaker-banana-pi",
"Banana Pro": "banana-pro", "Banana Pro": "lemaker-banana-pro",
"Lamobo": "lamobo" "Lamobo": "lamobo"
}, },
"Linksys": { "Linksys": {
"WRT160NL": "wrt160nl" "WRT160NL": "linksys-wrt160nl"
}, },
"Meraki": { "Meraki": {
"MR12": "mr12", "MR12": "meraki-mr12",
"MR16": "mr16", "MR16": "meraki-mr16",
"MR62": "mr62", "MR62": "meraki-mr62",
"MR66": "mr66" "MR66": "meraki-mr66"
}, },
"Mikrotik": { "Mikrotik": {
...@@ -59,27 +61,27 @@ var vendormodels = { ...@@ -59,27 +61,27 @@ var vendormodels = {
}, },
"Netgear": { "Netgear": {
"WNR2200": "wnr2200", "WNR2200": "netgear-wnr2200",
"WNDR3700": {"wndr3700": "v1", "wndr3700v2": "v2", "wndr3700v3": "v3", "wndr3700v4": "v4"}, "WNDR3700": {"netgear-wndr3700": "v1", "netgear-wndr3700v2": "v2", "netgear-wndr3700v3": "v3", "netgear-wndr3700v4": "v4"},
"WNDR3800": "wndr3800", "WNDR3800": "netgear-wndr3800",
"WNDR4300": "wndr4300", "WNDR4300": "netgear-wndr4300",
"WNDRMAC": {"wndrmac": "v1", "wndrmacv2": "v2"}, "WNDRMAC": {"netgear-wndrmac": "v1", "netgear-wndrmacv2": "v2"},
}, },
"Onion": { "Onion": {
"Omega": "omega" "Omega": "onion-omega"
}, },
"Open-Mesh": { "Open-Mesh": {
"MR1750": {"mr1750": "v1", "mr1750v2": "v2"}, "MR1750": {"openmesh-mr1750": "v1", "openmesh-mr1750v2": "v2"},
"MR600": {"mr600": "v1", "mr600v2": "v2"}, "MR600": {"openmesh-mr600": "v1", "openmesh-mr600v2": "v2"},
"MR900": {"mr900": "v1", "mr900v2": "v2"}, "MR900": {"openmesh-mr900": "v1", "openmesh-mr900v2": "v2"},
"OM2P HS": {"om2p-hs": "v1", "om2p-hsv3": "v3"}, "OM2P HS": {"openmesh-om2p-hs": "v1", "openmesh-om2p-hsv3": "v3"},
"OM2P LC": "om2p-lc", "OM2P LC": "openmesh-om2p-lc",
"OM2P": {"openmesh-om2p": "v1", "om2pv2": "v2"}, "OM2P": {"openmesh-om2p": "v1", "openmesh-om2pv2": "v2"},
"OM5P-AC": {"openmesh-om5p-ac": "v1", "openmesh-om5p-acv2": "v2"}, "OM5P-AC": {"openmesh-om5p-ac": "v1", "openmesh-om5p-acv2": "v2"},
"OM5P-AN": "om5p-an", "OM5P-AN": "openmesh-om5p-an",
"OM5P": "om5p" "OM5P": "openmesh-om5p"
}, },
"PC Engines": { "PC Engines": {
...@@ -92,63 +94,68 @@ var vendormodels = { ...@@ -92,63 +94,68 @@ var vendormodels = {
}, },
"TP-Link": { "TP-Link": {
"Archer C5": {"archer-c5": "v1"}, "Archer C5": {"tp-link-archer-c5": "v1"},
"Archer C7": "archer-c7", "Archer C7": "tp-link-archer-c7",
"CPE 210": {"cpe210": "", "cpe210-220": ""}, "CPE 210": {"tp-link-cpe210": "", "tp-link-cpe210-220": ""},
"CPE 220": {"cpe220": "", "cpe210-220": ""}, "CPE 220": {"tp-link-cpe220": "", "tp-link-cpe210-220": ""},
"CPE 510": {"cpe510": "", "cpe510-520": ""}, "CPE 510": {"tp-link-cpe510": "", "tp-link-cpe510-520": ""},
"CPE 520": {"cpe520": "", "cpe510-520": ""}, "CPE 520": {"tp-link-cpe520": "", "tp-link-cpe510-520": ""},
"WBS 210": "wbs210", "WBS 210": "tp-link-wbs210",
"WBS 510": "wbs510", "WBS 510": "tp-link-wbs510",
"TL-MR13U": "tl-mr13u", "TL-MR13U": "tp-link-tl-mr13u",
"TL-MR3020": "tl-mr3020", "TL-MR3020": "tp-link-tl-mr3020",
"TL-MR3040": "tl-mr3040", "TL-MR3040": "tp-link-tl-mr3040",
"TL-MR3220": "tl-mr3220", "TL-MR3220": "tp-link-tl-mr3220",
"TL-MR3420": "tl-mr3420", "TL-MR3420": "tp-link-tl-mr3420",
"TL-WA701N-ND": {"tl-wa701n": "", "tl-wa701nd": ""}, "TL-WA701N-ND": {"tp-link-tl-wa701nd": "", "tp-link-tl-wa701n-nd": ""},
"TL-WA750RE": "tl-wa750re", "TL-WA750RE": "tp-link-tl-wa750re",
"TL-WA7510N": "tl-wa7510n", "TL-WA7510N": "tp-link-tl-wa7510n",
"TL-WA801N-ND": {"tl-wa801n": "", "wa801nd": ""}, "TL-WA801N-ND": {"tp-link-tl-wa801n": "", "tp-link-tl-wa801n-nd": ""},
"TL-WA830RE": "tl-wa830re", "TL-WA830RE": "tp-link-tl-wa830re",
"TL-WA850RE": "tl-wa850re", "TL-WA850RE": "tp-link-tl-wa850re",
"TL-WA860RE": "tl-wa860re", "TL-WA860RE": "tp-link-tl-wa860re",
"TL-WA901N-ND": {"tl-wa901n": "", "tl-wa901nd": ""}, "TL-WA901N-ND": {"tp-link-tl-wa901nd": "", "tp-link-tl-wa901n-nd": ""},
"TL-WDR3500": "tl-wdr3500", "TL-WDR3500": "tp-link-tl-wdr3500",
"TL-WDR3600": "tl-wdr3600", "TL-WDR3600": "tp-link-tl-wdr3600",
"TL-WDR4300": "tl-wdr4300", "TL-WDR4300": "tp-link-tl-wdr4300",
"TL-WDR4900": "tl-wdr4900", "TL-WDR4900": "tp-link-tl-wdr4900",
"TL-WR1043N-ND": {"tl-wr1043n": "", "tl-wr1043nd": ""}, "TL-WR1043N-ND": {"tp-link-tl-wr1043n-nd": ""},
"TL-WR2543N-ND": {"tl-wr2543": "", "tl-wr2543n": ""}, "TL-WR2543N-ND": {"tp-link-tl-wr2543n-nd": ""},
"TL-WR703N": "tl-wr703n", "TL-WR703N": "tp-link-tl-wr703n",
"TL-WR710N": "tl-wr710n", "TL-WR710N": "tp-link-tl-wr710n",
"TL-WR740N-ND": "tl-wr740n", "TL-WR740N-ND": "tp-link-tl-wr740n-nd",
"TL-WR741N-ND": "tl-wr741n", "TL-WR741N-ND": "tp-link-tl-wr741n-nd",
"TL-WR743N-ND": "tl-wr743n", "TL-WR743N-ND": "tp-link-tl-wr743n-nd",
"TL-WR841N-ND": {"tl-wr841n": "", "tl-wr841nd": ""}, "TL-WR841N-ND": {"tp-link-tl-wr841n-nd": "", "tp-link-tl-wr841nd": ""},
"TL-WR842N-ND": "tl-wr842n", "TL-WR842N-ND": {"tp-link-tl-wr842n-nd": ""},
"TL-WR843N-ND": "tl-wr843n", "TL-WR843N-ND": {"tp-link-tl-wr843n-nd": ""},
"TL-WR940N-ND": {"tl-wr940n": "", "tl-wr941nd-v4": "v1", "tl-wr941nd-v5": "v2", "tl-wr941nd-v6": "v3"}, "TL-WR940N-ND": {"tp-link-tl-wr940n": "", "tp-link-tl-wr940n-nd": "", "tp-link-tl-wr941nd-v4": "v1", "tp-link-tl-wr941nd-v5": "v2", "tp-link-tl-wr941nd-v6": "v3"},
"TL-WR941N-ND": {"wr941n-nd": "", "tl-wr941nd": "", "tl-wr941nd-v4": "v4", "tl-wr941nd-v5": "v5", "tl-wr941nd-v6": "v6"} "TL-WR941N-ND": {"tp-link-tl-wr941nd": "", "tp-link-tl-wr941n-nd": "", "tp-link-tl-wr941nd-v4": "v4", "tp-link-tl-wr941nd-v5": "v5", "tp-link-tl-wr941nd-v6": "v6"}
}, },
"Ubiquiti": { "Ubiquiti": {
"AirGateway": {"ubnt-air-gateway": "", "ubiquiti-airgateway": ""}, "AirGateway": {"ubnt-air-gateway": "", "ubiquiti-airgateway": ""},
"AirRouter": {"ubnt-air-router": "", "ubiquiti-airrouter": ""}, "AirRouter": {"ubnt-air-router": "", "ubiquiti-airrouter": ""},
"Bullet": {"bullet-m2": "M2", "bullet-m5": "M5", "bullet-m": "--ignore--"}, "Bullet": {"ubiquiti-bullet-m2": "M2", "ubiquiti-bullet-m5": "M5", "bullet-m": "--ignore--"},
"Litestation SR71": "ls-sr71", "Litestation SR71": "ubiquiti-ls-sr71",
"NanoStation Loco": {"loco-m-xw": "--ignore--", "loco-m2": "M2 XM", "loco-m5": "M5 XM", "loco-m2-xw": "M2 XW", "loco-m5-xw": "M5 XW"}, "NanoStation Loco": {"ubiquiti-loco-m-xw": "--ignore--",
"NanoStation": {"nanostation-m": "--ignore--", "nano-m": "--ignore--", "nanostation-m-xw": "--ignore--", "nano-m-xw": "--ignore--", "ubiquiti-nanostation-loco-m2": "M2 XM", "ubiquiti-nanostation-loco-m2-xw": "M2 XW",
"nanostation-m2": "M2 XM", "nano-m2": "M2 XM", "nanostation-m2-xw": "M2 XW", "nano-m2-xw": "M2 XW", "ubiquiti-nanostation-loco-m5": "M5 XM", "ubiquiti-nanostation-loco-m5-xw": "M5 XW"},
"nanostation-m5": "M5 XM", "nano-m5": "M5 XM", "nanostation-m5-xw": "M5 XW", "nano-m5-xw": "M5 XW"}, "NanoStation": {"ubiquiti-nanostation-m": "--ignore--", "ubiquiti-nano-m": "--ignore--", "ubiquiti-nanostation-m-xw": "--ignore--", "ubiquiti-nano-m-xw": "--ignore--",
"PicoStation": "picostation", "ubiquiti-nanostation-m2": "M2 XM", "ubiquiti-nano-m2": "M2 XM", "ubiquiti-nanostation-m2-xw": "M2 XW", "ubiquiti-nano-m2-xw": "M2 XW",
"Rocket": {"rocket-m-xw": "M XW", "rocket": ""}, "ubiquiti-nanostation-m5": "M5 XM", "ubiquiti-nano-m5": "M5 XM", "ubiquiti-nanostation-m5-xw": "M5 XW", "ubiquiti-nano-m5-xw": "M5 XW"},
"UniFi AP": "unifi", "PicoStation": {"ubiquiti-picostation-m": "M",
"UniFi AP LR": "unifi-ap-lr", "ubiquiti-picostation-m2": "M2"},
"UniFi AP Pro": "unifi-ap-pro", "Rocket": {"ubiquiti-rocket-m": "M", "ubiquiti-rocket-m-xw": "M XW",
"UniFi AP AC Pro": "unifi-ac-pro", "ubiquiti-rocket-m2": "M2", "ubiquiti-rocket-m2-xw": "M2 XW",
"UniFi AP AC Lite": "unifi-ac-lite", "ubiquiti-rocket-m5": "M5", "ubiquiti-rocket-m5-xw": "M5 XW"},
"UniFi AP Outdoor": {"unifi-outdoor": "", "unifiap-outdoor": ""}, "UniFi AP": {"ubiquiti-unifi": "--ignore--", "ubiquiti-unifi-ap": ""},
"UniFi AP Outdoor+": {"unifi-outdoor-plus": "", "ubiquiti-unifiap-outdoor\\\+": "", "ubiquiti-unifiap-outdoor%2B": ""} "UniFi AP LR": "ubiquiti-unifi-ap-lr",
"UniFi AP Pro": "ubiquiti-unifi-ap-pro",
"UniFi AP AC Pro": "ubiquiti-unifi-ac-pro",
"UniFi AP AC Lite": "ubiquiti-unifi-ac-lite",
"UniFi AP Outdoor": {"ubiquiti-unifi-outdoor": "", "ubiquiti-unifiap-outdoor": ""},
"UniFi AP Outdoor+": {"ubiquiti-unifi-outdoor-plus": "", "ubiquiti-unifiap-outdoor\\\+": "", "ubiquiti-unifiap-outdoor%2B": ""}
}, },
"VoCore": { "VoCore": {
...@@ -156,8 +163,8 @@ var vendormodels = { ...@@ -156,8 +163,8 @@ var vendormodels = {
}, },
"Western Digital": { "Western Digital": {
"My Net N600": "my-net-n600", "My Net N600": {"wd-my-net-n600": ""},
"My Net N750": "my-net-n750" "My Net N750": {"wd-my-net-n750": ""}
}, },
"x86": { "x86": {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment