lib/openwrt-models: add code to get port definitions

This commit is contained in:
Astro 2021-11-03 23:21:43 +01:00
parent 3072e1e78c
commit 8acc37b5d5
7 changed files with 216 additions and 62 deletions

View File

@ -31,10 +31,28 @@
"type": "github" "type": "github"
} }
}, },
"openwrt": {
"flake": false,
"locked": {
"lastModified": 1635777325,
"narHash": "sha256-NigEYi+patV+QHfC/KKvgyKypfzw51RsC2MaPmbJXtc=",
"ref": "openwrt-21.02",
"rev": "b4c40a7efc59caada8190d545d077521c747b7cc",
"revCount": 50790,
"type": "git",
"url": "https://git.openwrt.org/openwrt/openwrt.git"
},
"original": {
"ref": "openwrt-21.02",
"type": "git",
"url": "https://git.openwrt.org/openwrt/openwrt.git"
}
},
"root": { "root": {
"inputs": { "inputs": {
"nixpkgs": "nixpkgs", "nixpkgs": "nixpkgs",
"nixpkgs-master": "nixpkgs-master", "nixpkgs-master": "nixpkgs-master",
"openwrt": "openwrt",
"zentralwerk-network-key": "zentralwerk-network-key" "zentralwerk-network-key": "zentralwerk-network-key"
} }
}, },

View File

@ -4,12 +4,15 @@
inputs = { inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/release-21.05"; nixpkgs.url = "github:NixOS/nixpkgs/release-21.05";
nixpkgs-master.url = "github:NixOS/nixpkgs"; nixpkgs-master.url = "github:NixOS/nixpkgs";
openwrt.url = "git+https://git.openwrt.org/openwrt/openwrt.git?ref=openwrt-21.02";
openwrt.flake = false;
# `nix flake update --override-flake zentralwerk-network-key git+file:///...` # `nix flake update --override-flake zentralwerk-network-key git+file:///...`
# to provide the GPG secret key # to provide the GPG secret key
zentralwerk-network-key.url = "git+https://gitea.c3d2.de/zentralwerk/network.git?dir=nix/key"; zentralwerk-network-key.url = "git+https://gitea.c3d2.de/zentralwerk/network.git?dir=nix/key";
}; };
outputs = inputs@{ self, nixpkgs, nixpkgs-master, zentralwerk-network-key }: outputs = inputs@{ self, nixpkgs, nixpkgs-master, openwrt, zentralwerk-network-key }:
let let
system = "x86_64-linux"; system = "x86_64-linux";
systems = [ system ]; systems = [ system ];
@ -31,6 +34,7 @@
import ./nix/lib { import ./nix/lib {
inherit self; inherit self;
inherit (zentralwerk-network-key.lib) gpgKey; inherit (zentralwerk-network-key.lib) gpgKey;
inherit openwrt;
pkgs = nixpkgs.legacyPackages.x86_64-linux; pkgs = nixpkgs.legacyPackages.x86_64-linux;
}); });

View File

@ -400,6 +400,7 @@ in
(builtins.mapAttrs (_: ap: { (builtins.mapAttrs (_: ap: {
inherit (ap) model location password; inherit (ap) model location password;
role = "ap"; role = "ap";
interfaces = builtins.foldl' (interfaces: net: interfaces // { interfaces = builtins.foldl' (interfaces: net: interfaces // {
"${net}" = { "${net}" = {
type = "bridge"; type = "bridge";

View File

@ -1,4 +1,4 @@
{ self, gpgKey, pkgs }: { self, gpgKey, pkgs, openwrt }:
rec { rec {
config = import ./config { inherit self pkgs gpgKey; }; config = import ./config { inherit self pkgs gpgKey; };
@ -14,4 +14,6 @@ rec {
subnet = import ./subnet { inherit pkgs; }; subnet = import ./subnet { inherit pkgs; };
dns = import ./dns.nix { inherit pkgs config; }; dns = import ./dns.nix { inherit pkgs config; };
openwrtModels = import ./openwrt-models.nix { inherit self openwrt; };
} }

130
nix/lib/openwrt-models.nix Normal file
View File

@ -0,0 +1,130 @@
{ self, openwrt }:
let
# the files that contain port definitions
defFiles = builtins.filter
(self.lib.hasSuffix "/etc/board.d/02_network")
(self.lib.filesystem.listFilesRecursive "${openwrt}/target/linux");
# files contents as one string
defSource = builtins.concatStringsSep "\n" (
map builtins.readFile defFiles
);
defSourceLines = builtins.filter (s: s != []) (
builtins.split "\n" (
builtins.replaceStrings
[ "\\\n" ] [ "" ] defSource
));
parseCommand = line:
let
tokens = builtins.split "[[:space:]]+" line;
words =
builtins.map (word:
let m = builtins.match "\"(.+)\"" word;
in if m != null
then builtins.head m
else word
) (
builtins.filter (word:
word != [] && word != ""
) tokens
);
command = builtins.head words;
args = builtins.tail words;
commands = {
ucidef_add_switch.ports = builtins.foldl' (ports: arg:
let
switch = builtins.head args;
m1 = builtins.match "([[:digit:]]+):(.+)" arg;
m2 = builtins.match "([[:digit:]]+)([ut]?)@(.+)" arg;
m2flag = builtins.elemAt m2 1;
port = if m1 != null
then {
inherit switch;
type = "port";
index = builtins.elemAt m1 0;
port = builtins.elemAt m1 1;
}
else if m2 != null
then {
inherit switch;
type = "host";
index = builtins.elemAt m2 0;
interface = builtins.elemAt m2 2;
} // self.lib.optionalAttrs (m2flag == "u") {
only = "untagged";
} // self.lib.optionalAttrs (m2flag == "t") {
only = "tagged";
}
else throw "Unimplemented port scheme: ${arg}";
in if m1 != null || m2 != null
then ports // {
"${port.index}" = port;
}
else builtins.trace "Unimplemented port scheme: ${arg}" ports
) {} (builtins.tail args);
};
in
if commands ? ${command}
then commands.${command}
else {
unknown."${command}" = args;
};
in (
builtins.foldl' ({ state, result, models ? null, data ? {} }: line:
if state == "start"
then
if builtins.match "[[:space:]]*case \"\\$board\" in" line != null
then { state = "case"; inherit result; }
else { inherit state result; }
else if state == "case"
then
if builtins.match "[[:space:]]*esac" line != null
then { state = "start"; inherit result; }
else
let
m = builtins.match "[[:space:]]*(.+)\\)" line;
in
if m == null
then { inherit state result; }
else {
inherit result;
state = "model";
models =
builtins.filter (m: m != null) (
map (s:
let
m = builtins.split "," s;
in
if s != [] &&
m != null &&
builtins.length m == 3
then {
vendor = builtins.elemAt m 0;
model = builtins.elemAt m 2;
}
else null
) (
builtins.split "[[:space:]]*\\|[[:space:]]*" (
builtins.head m
)));
}
else if state == "model"
then
if builtins.match "[[:space:]]*;;" line != null
then {
state = "case";
result = result ++ [ {
inherit models data;
} ];
}
else {
inherit result state models;
data = self.lib.recursiveUpdate data (parseCommand line);
}
else throw "Invalid state ${state}"
) { state = "start"; result = []; } defSourceLines
).result

View File

@ -5,12 +5,12 @@ let
pkgs = nixpkgs.legacyPackages.${system}; pkgs = nixpkgs.legacyPackages.${system};
export-config-file = builtins.toFile "config.nix" ( export-openwrt-models = pkgs.writeText "openwrt-models.nix" (
nixpkgs.lib.generators.toPretty {} self.lib.openwrtModels
);
export-config = pkgs.writeText "config.nix" (
nixpkgs.lib.generators.toPretty {} config nixpkgs.lib.generators.toPretty {} config
); );
export-config = pkgs.runCommandLocal "config.nix" {} ''
cp ${export-config-file} $out
'';
salt-pillar-file = hostName: builtins.toFile "${hostName}.yaml" ( salt-pillar-file = hostName: builtins.toFile "${hostName}.yaml" (
nixpkgs.lib.generators.toPretty {} (self.lib.saltPillarFor hostName) nixpkgs.lib.generators.toPretty {} (self.lib.saltPillarFor hostName)
@ -64,5 +64,5 @@ let
}; };
in in
salt-pillars // rootfs-packages // vm-packages // device-templates // starlink // { salt-pillars // rootfs-packages // vm-packages // device-templates // starlink // {
inherit export-config dns-slaves; inherit export-openwrt-models export-config dns-slaves;
} }

View File

@ -14,7 +14,7 @@ cpe:
4p+9mAt3NWq5 4p+9mAt3NWq5
=QPF0 =QPF0
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
model: TL-WR841N model: tl-wr841n-v10
version: release version: release
location: weg location: weg
lan-access: priv6 lan-access: priv6
@ -56,7 +56,7 @@ cpe:
=Tlu+ =Tlu+
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
model: TL-Archer-C7v2 model: tl-archer-c7-v2
version: release version: release
location: C3D2 Backstage location: C3D2 Backstage
lan-access: c3d2 lan-access: c3d2
@ -119,7 +119,7 @@ cpe:
=kpf2 =kpf2
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
model: TL-WDR4300 model: tl-wdr4300-v1
version: release version: release
location: C3D2 Keller location: C3D2 Keller
# Manually: VLAN 1+4 on port 1, VLAN 4 on port 5 # Manually: VLAN 1+4 on port 1, VLAN 4 on port 5
@ -182,7 +182,7 @@ cpe:
kpwuSSzZvXNK kpwuSSzZvXNK
=JLKE =JLKE
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
model: TL-WR1043ND model: tl-wr1043nd-v1
version: release version: release
location: Returned location: Returned
lan-access: priv4 lan-access: priv4
@ -223,7 +223,7 @@ cpe:
kpwuSSzZvXNK kpwuSSzZvXNK
=JLKE =JLKE
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
model: TL-WR1043ND model: tl-wr1043nd-v1
version: release version: release
location: a location: a
lan-access: priv5 lan-access: priv5
@ -263,7 +263,7 @@ cpe:
rxgsW3bwIysHRYkg90GDmW505fNiC96aEA== rxgsW3bwIysHRYkg90GDmW505fNiC96aEA==
=Noqk =Noqk
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
model: TL-WR841N model: tl-wr841n-v10
version: release version: release
location: Broken flash location: Broken flash
lan-access: pub lan-access: pub
@ -289,7 +289,7 @@ cpe:
rxgsW3bwIysHRYkg90GDmW505fNiC96aEA== rxgsW3bwIysHRYkg90GDmW505fNiC96aEA==
=Noqk =Noqk
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
model: TL-WR841N model: tl-wr841n-v10
version: release version: release
location: Turm D, 5. Etage location: Turm D, 5. Etage
lan-access: pub lan-access: pub
@ -330,7 +330,7 @@ cpe:
rxgsW3bwIysHRYkg90GDmW505fNiC96aEA== rxgsW3bwIysHRYkg90GDmW505fNiC96aEA==
=Noqk =Noqk
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
model: TL-WDR4300 model: tl-wdr4300-v1
version: release version: release
location: Poelzi location: Poelzi
lan-access: c3d2 lan-access: c3d2
@ -406,7 +406,7 @@ cpe:
4p+9mAt3NWq5 4p+9mAt3NWq5
=QPF0 =QPF0
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
model: TL-WR841N model: tl-wr841n-v10
version: release version: release
location: Turm D, 2. Etage location: Turm D, 2. Etage
lan-access: pub lan-access: pub
@ -447,7 +447,7 @@ cpe:
4p+9mAt3NWq5 4p+9mAt3NWq5
=QPF0 =QPF0
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
model: TL-WR841N model: tl-wr841n-v10
version: release version: release
location: Turm D, 1. Etage location: Turm D, 1. Etage
lan-access: pub lan-access: pub
@ -503,7 +503,7 @@ cpe:
o5l9+IGeKMU= o5l9+IGeKMU=
=8sEk =8sEk
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
model: TL-WR1043ND model: tl-wr1043nd-v1
version: release version: release
location: B 2.03.04 location: B 2.03.04
lan-access: priv8 lan-access: priv8
@ -544,7 +544,7 @@ cpe:
BEELWgTZJzE= BEELWgTZJzE=
=ECvx =ECvx
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
model: TL-WR841Nv8 model: tl-wr841n-v8
version: release version: release
location: Turm D, 4. Etage location: Turm D, 4. Etage
lan-access: pub lan-access: pub
@ -600,7 +600,7 @@ cpe:
BEELWgTZJzE= BEELWgTZJzE=
=ECvx =ECvx
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
model: DIR-615H1 model: dir-615-h1
version: release version: release
location: 'Stolen? (was: Turm C 1. Etage)' location: 'Stolen? (was: Turm C 1. Etage)'
lan-access: pub lan-access: pub
@ -626,7 +626,7 @@ cpe:
ZLBzZVhVZJoO9Q== ZLBzZVhVZJoO9Q==
=bGE5 =bGE5
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
model: TL-WR1043ND model: tl-wr1043nd-v1
version: release version: release
location: Auf Halde location: Auf Halde
lan-access: pub lan-access: pub
@ -652,7 +652,7 @@ cpe:
ZLBzZVhVZJoO9Q== ZLBzZVhVZJoO9Q==
=bGE5 =bGE5
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
model: TL-WR1043ND model: tl-wr1043nd-v1
version: release version: release
location: B4.09.01 location: B4.09.01
lan-access: priv10 lan-access: priv10
@ -693,7 +693,7 @@ cpe:
ZLBzZVhVZJoO9Q== ZLBzZVhVZJoO9Q==
=bGE5 =bGE5
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
model: TL-WR1043ND model: tl-wr1043nd-v1
version: release version: release
location: Turm C, 2. Etage location: Turm C, 2. Etage
lan-access: priv33 lan-access: priv33
@ -764,7 +764,7 @@ cpe:
ZLBzZVhVZJoO9Q== ZLBzZVhVZJoO9Q==
=bGE5 =bGE5
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
model: TL-WR841N model: tl-wr841n-v10
version: release version: release
location: Haus B, 2. Etage, zum Innenhof location: Haus B, 2. Etage, zum Innenhof
lan-access: priv9 lan-access: priv9
@ -805,7 +805,7 @@ cpe:
ZLBzZVhVZJoO9Q== ZLBzZVhVZJoO9Q==
=bGE5 =bGE5
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
model: TL-WR841N model: tl-wr841n-v10
version: release version: release
location: Turm C oberste Etage location: Turm C oberste Etage
lan-access: pub lan-access: pub
@ -861,7 +861,7 @@ cpe:
nfZjlJbn nfZjlJbn
=MC+3 =MC+3
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
model: Ubnt-UniFi-AP-AC-LR model: unifiac-lite
version: release version: release
location: "Foyer (DS20)" location: "Foyer (DS20)"
radios: radios:
@ -922,7 +922,7 @@ cpe:
0wbkaiNHsshKWw== 0wbkaiNHsshKWw==
=MXwF =MXwF
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
model: TL-WR740N model: tl-wr740n-v1
version: release version: release
location: Haus B Souterrain unter der Treppe an Turm D location: Haus B Souterrain unter der Treppe an Turm D
lan-access: pub lan-access: pub
@ -948,7 +948,7 @@ cpe:
0wbkaiNHsshKWw== 0wbkaiNHsshKWw==
=MXwF =MXwF
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
model: Ubnt-UniFi-AP-AC-LR model: unifiac-lite
version: release version: release
location: Seminarraum, Haus B location: Seminarraum, Haus B
radios: radios:
@ -1009,7 +1009,7 @@ cpe:
FvUs2Ms= FvUs2Ms=
=nKEk =nKEk
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
model: TL-WR740N model: tl-wr740n-v1
version: release version: release
location: Farbwerk location: Farbwerk
lan-access: priv12 lan-access: priv12
@ -1050,7 +1050,7 @@ cpe:
rmWoaCk= rmWoaCk=
=Lj6m =Lj6m
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
model: TL-WR740N model: tl-wr740n-v1
version: release version: release
location: Farbwerk location: Farbwerk
lan-access: priv12 lan-access: priv12
@ -1091,7 +1091,7 @@ cpe:
lorv3GDp lorv3GDp
=C8xr =C8xr
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
model: TL-WR740N model: tl-wr740n-v1
version: release version: release
location: Turm C, 1. Etage location: Turm C, 1. Etage
lan-access: pub lan-access: pub
@ -1132,7 +1132,7 @@ cpe:
8jprrw== 8jprrw==
=dnNO =dnNO
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
model: TL-WR841N model: tl-wr841n-v10
version: release version: release
location: "Weg?" location: "Weg?"
lan-access: pub lan-access: pub
@ -1159,7 +1159,7 @@ cpe:
BEELWgTZJzE= BEELWgTZJzE=
=ECvx =ECvx
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
model: TL-WR841Nv8 model: tl-wr841n-v8
version: release version: release
location: Tunnel location: Tunnel
lan-access: pub lan-access: pub
@ -1185,7 +1185,7 @@ cpe:
WQ7tY7Ma5Jry WQ7tY7Ma5Jry
=Yjyd =Yjyd
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
model: TL-Archer-C7v4 model: tl-archer-c7-v4
version: nightly version: nightly
location: B1.05.07 location: B1.05.07
lan-access: priv13 lan-access: priv13
@ -1247,7 +1247,7 @@ cpe:
ZBOMWyH63lKB+g== ZBOMWyH63lKB+g==
=ugCM =ugCM
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
model: TL-WR1043NDv4 model: tl-wr1043nd-v4
version: release version: release
location: B 4.02 location: B 4.02
lan-access: priv14 lan-access: priv14
@ -1288,7 +1288,7 @@ cpe:
0wbkaiNHsshKWw== 0wbkaiNHsshKWw==
=MXwF =MXwF
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
model: Ubnt-UniFi-AP-AC-LR model: unifiac-lite
version: release version: release
location: C3D2 Assembly location: C3D2 Assembly
radios: radios:
@ -1331,7 +1331,6 @@ cpe:
'pci0000:00/0000:00:00.0': 'pci0000:00/0000:00:00.0':
channel: 149 channel: 149
htmode: VHT80 htmode: VHT80
hwmode: "11a"
ssids: ssids:
'ZW public': 'ZW public':
net: pub net: pub
@ -1365,7 +1364,7 @@ cpe:
0wbkaiNHsshKWw== 0wbkaiNHsshKWw==
=MXwF =MXwF
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
model: Ubnt-UniFi-AP-AC-LR model: unifiac-lite
version: release version: release
location: "Auf Lager" location: "Auf Lager"
radios: radios:
@ -1426,7 +1425,7 @@ cpe:
0wbkaiNHsshKWw== 0wbkaiNHsshKWw==
=MXwF =MXwF
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
model: Ubnt-UniFi-AP-AC-LR model: unifiac-lite
version: release version: release
location: "C3D2 Podest/Hinterhof" location: "C3D2 Podest/Hinterhof"
radios: radios:
@ -1487,7 +1486,7 @@ cpe:
0wbkaiNHsshKWw== 0wbkaiNHsshKWw==
=MXwF =MXwF
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
model: Ubnt-UniFi-AP-AC-LR model: unifiac-lite
version: release version: release
location: "Hof (temporary)" location: "Hof (temporary)"
radios: radios:
@ -1520,7 +1519,7 @@ cpe:
ZBOMWyH63lKB+g== ZBOMWyH63lKB+g==
=ugCM =ugCM
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
model: TL-WR1043NDv5 model: tl-wr1043nd-v5
version: release version: release
location: B 4.08 location: B 4.08
lan-access: priv18 lan-access: priv18
@ -1564,7 +1563,7 @@ cpe:
lorv3GDp lorv3GDp
=C8xr =C8xr
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
model: TL-WR740N model: tl-wr740n-v1
version: release version: release
location: Reserve location: Reserve
lan-access: pub lan-access: pub
@ -1605,7 +1604,7 @@ cpe:
wtRDs5gZULQ= wtRDs5gZULQ=
=eFFg =eFFg
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
model: TL-Archer-C7v5 model: tl-archer-c7-v5
version: 18.06.1 version: 18.06.1
location: B3.11.01 location: B3.11.01
lan-access: priv19 lan-access: priv19
@ -1666,7 +1665,7 @@ cpe:
GYuZOJTS2vY= GYuZOJTS2vY=
=Uy9e =Uy9e
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
model: TL-Archer-C7v4 model: tl-archer-c7-v4
version: 18.06.1 version: 18.06.1
location: ECCE-Raum location: ECCE-Raum
lan-access: pub lan-access: pub
@ -1758,7 +1757,7 @@ cpe:
dq+HHA== dq+HHA==
=Sc0n =Sc0n
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
model: DIR-615D4 model: dir-615-d
version: nightly version: nightly
location: 'private' location: 'private'
lan-access: pub lan-access: pub
@ -1799,7 +1798,7 @@ cpe:
wtRDs5gZULQ= wtRDs5gZULQ=
=eFFg =eFFg
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
model: TL-Archer-C7v5 model: tl-archer-c7-v5
version: 18.06.4 version: 18.06.4
location: B4.01 location: B4.01
lan-access: priv22 lan-access: priv22
@ -1861,7 +1860,7 @@ cpe:
S25QWs7T S25QWs7T
=3ci0 =3ci0
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
model: TL-Archer-C7v5 model: tl-archer-c7-v5
version: 18.06.4 version: 18.06.4
location: B3.01 location: B3.01
lan-access: priv26 lan-access: priv26
@ -1923,7 +1922,7 @@ cpe:
kpwuSSzZvXNK kpwuSSzZvXNK
=JLKE =JLKE
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
model: TL-Archer-C7v5 model: tl-archer-c7-v5
version: release version: release
location: Dresden School of Lindy Hop location: Dresden School of Lindy Hop
lan-access: priv4 lan-access: priv4
@ -1985,7 +1984,7 @@ cpe:
sLzZnEo= sLzZnEo=
=DoHm =DoHm
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
model: TL-WR1043ND model: tl-wr1043nd-v1
version: release version: release
location: "B 2.05.03" location: "B 2.05.03"
lan-access: priv27 lan-access: priv27
@ -2025,7 +2024,7 @@ cpe:
SRWSVEnm SRWSVEnm
=PSjs =PSjs
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
model: Ubnt-UAP-nanoHD model: unifi-nanohd
error-led: "blue:dome" error-led: "blue:dome"
version: release version: release
location: "Saal A vorn" location: "Saal A vorn"
@ -2086,7 +2085,7 @@ cpe:
SRWSVEnm SRWSVEnm
=PSjs =PSjs
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
model: Ubnt-UAP-nanoHD model: unifi-nanohd
error-led: "blue:dome" error-led: "blue:dome"
version: release version: release
location: "Saal A mitte" location: "Saal A mitte"
@ -2147,7 +2146,7 @@ cpe:
SRWSVEnm SRWSVEnm
=PSjs =PSjs
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
model: Ubnt-UAP-nanoHD model: unifi-nanohd
error-led: "blue:dome" error-led: "blue:dome"
version: release version: release
location: "Saal A hinten" location: "Saal A hinten"
@ -2238,7 +2237,7 @@ cpe:
SRWSVEnm SRWSVEnm
=PSjs =PSjs
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
model: Ubnt-UAP-nanoHD model: unifi-nanohd
error-led: "blue:dome" error-led: "blue:dome"
version: release version: release
location: "Saal Foyer" location: "Saal Foyer"
@ -2299,7 +2298,7 @@ cpe:
SRWSVEnm SRWSVEnm
=PSjs =PSjs
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
model: Ubnt-UAP-nanoHD model: unifi-nanohd
error-led: "blue:dome" error-led: "blue:dome"
version: release version: release
location: "Saal A Kleiner Saal Tuer" location: "Saal A Kleiner Saal Tuer"
@ -2360,7 +2359,7 @@ cpe:
SRWSVEnm SRWSVEnm
=PSjs =PSjs
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
model: Ubnt-UAP-nanoHD model: unifi-nanohd
error-led: "blue:dome" error-led: "blue:dome"
version: release version: release
location: "Saal A Kabinett" location: "Saal A Kabinett"
@ -2421,7 +2420,7 @@ cpe:
SRWSVEnm SRWSVEnm
=PSjs =PSjs
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
model: Ubnt-UAP-nanoHD model: unifi-nanohd
error-led: "blue:dome" error-led: "blue:dome"
version: release version: release
location: "Saal A Kleiner Saal Buehne" location: "Saal A Kleiner Saal Buehne"
@ -2498,7 +2497,7 @@ cpe:
=Tlu+ =Tlu+
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
model: TL-Archer-C7v2 model: tl-archer-c7-v2
version: release version: release
location: antrares location: antrares
lan-access: priv17 lan-access: priv17
@ -2562,7 +2561,7 @@ cpe:
SRWSVEnm SRWSVEnm
=PSjs =PSjs
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
model: Ubnt-UAP-nanoHD model: unifi-nanohd
version: release version: release
location: "Saal (TODO)" location: "Saal (TODO)"
radios: radios:
@ -2623,7 +2622,7 @@ cpe:
4vqWxQ== 4vqWxQ==
=XDXZ =XDXZ
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
model: TL-WR841N model: tl-wr841n-v10
version: release version: release
location: "B2.05.01" location: "B2.05.01"
lan-access: priv11 lan-access: priv11
@ -2664,7 +2663,7 @@ cpe:
uU8h2Z0= uU8h2Z0=
=pYTp =pYTp
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
model: TL-Archer-C7v5 model: tl-archer-c7-v5
version: release version: release
location: "B1.05.02" location: "B1.05.02"
lan-access: priv35 lan-access: priv35
@ -2726,7 +2725,7 @@ cpe:
s+n2PQ== s+n2PQ==
=Hv9n =Hv9n
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
model: TL-Archer-C7v5 model: tl-archer-c7-v5
version: 19.07.7 version: 19.07.7
location: B3.05.03 location: B3.05.03
lan-access: priv6 lan-access: priv6
@ -2788,7 +2787,7 @@ cpe:
s+n2PQ== s+n2PQ==
=Hv9n =Hv9n
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
model: TL-Archer-C7v5 model: tl-archer-c7-v5
version: 19.07.7 version: 19.07.7
location: B4.04.01 location: B4.04.01
lan-access: priv6 lan-access: priv6