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