mirror of
https://github.com/oddlama/nix-config.git
synced 2025-10-11 07:10:39 +02:00
feat: begin zackbiene rework
This commit is contained in:
parent
6ca8df1c30
commit
4e46105e5e
24 changed files with 100 additions and 95 deletions
|
@ -33,7 +33,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
# Connect safely via wireguard to skip authentication
|
# Connect safely via wireguard to skip authentication
|
||||||
networking.hosts.${nodes.sentinel.config.wireguard.proxy-sentinel.ipv4} = [nodes.sentinel.config.networking.providedDomains.influxdb];
|
networking.hosts.${config.wireguard.proxy-home.ipv4} = [nodes.sentinel.config.networking.providedDomains.influxdb];
|
||||||
meta.telegraf = {
|
meta.telegraf = {
|
||||||
enable = true;
|
enable = true;
|
||||||
influxdb2 = {
|
influxdb2 = {
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
in {
|
in {
|
||||||
wireguard.proxy-sentinel = {
|
wireguard.proxy-sentinel = {
|
||||||
client.via = "sentinel";
|
client.via = "sentinel";
|
||||||
firewallRuleForNode.sentinel.allowedTCPPorts = [config.services.adguardhome.settings.port];
|
firewallRuleForNode.sentinel.allowedTCPPorts = [config.services.adguardhome.port];
|
||||||
};
|
};
|
||||||
|
|
||||||
nodes.sentinel = {
|
nodes.sentinel = {
|
||||||
|
@ -17,7 +17,7 @@ in {
|
||||||
|
|
||||||
services.nginx = {
|
services.nginx = {
|
||||||
upstreams.adguardhome = {
|
upstreams.adguardhome = {
|
||||||
servers."${config.wireguard.proxy-sentinel.ipv4}:${toString config.services.adguardhome.settings.port}" = {};
|
servers."${config.wireguard.proxy-sentinel.ipv4}:${toString config.services.adguardhome.port}" = {};
|
||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
zone adguardhome 64k;
|
zone adguardhome 64k;
|
||||||
keepalive 2;
|
keepalive 2;
|
||||||
|
@ -52,9 +52,9 @@ in {
|
||||||
services.adguardhome = {
|
services.adguardhome = {
|
||||||
enable = true;
|
enable = true;
|
||||||
mutableSettings = false;
|
mutableSettings = false;
|
||||||
|
host = "0.0.0.0";
|
||||||
|
port = 3000;
|
||||||
settings = {
|
settings = {
|
||||||
host = "0.0.0.0";
|
|
||||||
port = 3000;
|
|
||||||
dns = {
|
dns = {
|
||||||
# allowed_clients = [
|
# allowed_clients = [
|
||||||
# ];
|
# ];
|
||||||
|
|
|
@ -9,6 +9,13 @@
|
||||||
dnsIp = net.cidr.host 3 lanCidrv4;
|
dnsIp = net.cidr.host 3 lanCidrv4;
|
||||||
webProxyIp = net.cidr.host 4 lanCidrv4;
|
webProxyIp = net.cidr.host 4 lanCidrv4;
|
||||||
in {
|
in {
|
||||||
|
environment.persistence."/persist".directories = [
|
||||||
|
{
|
||||||
|
directory = "/var/lib/private/kea";
|
||||||
|
mode = "0700";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
# TODO make meta.kea module?
|
# TODO make meta.kea module?
|
||||||
# TODO reserve by default using assignIps algo?
|
# TODO reserve by default using assignIps algo?
|
||||||
services.kea.dhcp4 = {
|
services.kea.dhcp4 = {
|
||||||
|
|
|
@ -156,9 +156,6 @@ in {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# Allow accessing influx
|
|
||||||
wireguard.proxy-sentinel.client.via = "sentinel";
|
|
||||||
|
|
||||||
#wireguard.home.server = {
|
#wireguard.home.server = {
|
||||||
# host = todo # config.networking.fqdn;
|
# host = todo # config.networking.fqdn;
|
||||||
# port = 51192;
|
# port = 51192;
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
}: let
|
}: let
|
||||||
inherit (config.repo.secrets.local) acme;
|
inherit (config.repo.secrets.local) acme;
|
||||||
sentinelCfg = nodes.sentinel.config;
|
sentinelCfg = nodes.sentinel.config;
|
||||||
|
wardWebProxyCfg = nodes.ward-web-proxy.config;
|
||||||
in {
|
in {
|
||||||
imports = [
|
imports = [
|
||||||
../../modules/optional/hardware/odroid-n2plus.nix
|
../../modules/optional/hardware/odroid-n2plus.nix
|
||||||
|
@ -14,14 +15,14 @@ in {
|
||||||
../../modules/optional/initrd-ssh.nix
|
../../modules/optional/initrd-ssh.nix
|
||||||
../../modules/optional/zfs.nix
|
../../modules/optional/zfs.nix
|
||||||
|
|
||||||
./esphome.nix
|
#./esphome.nix
|
||||||
./fs.nix
|
./fs.nix
|
||||||
./home-assistant.nix
|
#./home-assistant.nix
|
||||||
./hostapd.nix
|
#./hostapd.nix
|
||||||
./mosquitto.nix
|
#./mosquitto.nix
|
||||||
./kea.nix
|
./kea.nix
|
||||||
./net.nix
|
./net.nix
|
||||||
./zigbee2mqtt.nix
|
#./zigbee2mqtt.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
topology.self.name = "🥔 zackbiene"; # yes this is 2x U+2009, don't ask (satori 🤬).
|
topology.self.name = "🥔 zackbiene"; # yes this is 2x U+2009, don't ask (satori 🤬).
|
||||||
|
@ -47,7 +48,12 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
# Connect safely via wireguard to skip http authentication
|
# Connect safely via wireguard to skip http authentication
|
||||||
networking.hosts.${sentinelCfg.wireguard.proxy-sentinel.ipv4} = [sentinelCfg.networking.providedDomains.influxdb];
|
networking.hosts.${
|
||||||
|
if config.wireguard ? proxy-home
|
||||||
|
then wardWebProxyCfg.wireguard.proxy-home.ipv4
|
||||||
|
else sentinelCfg.wireguard.proxy-sentinel.ipv4
|
||||||
|
} = [sentinelCfg.networking.providedDomains.influxdb];
|
||||||
|
|
||||||
meta.telegraf = {
|
meta.telegraf = {
|
||||||
enable = true;
|
enable = true;
|
||||||
influxdb2 = {
|
influxdb2 = {
|
||||||
|
|
|
@ -4,8 +4,15 @@
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
inherit (lib) net;
|
inherit (lib) net;
|
||||||
iotCidrv4 = "10.0.90.0/24";
|
iotCidrv4 = "10.0.90.0/24"; # FIXME: make all subnet allocations accessible via global.net or smth
|
||||||
in {
|
in {
|
||||||
|
environment.persistence."/persist".directories = [
|
||||||
|
{
|
||||||
|
directory = "/var/lib/private/kea";
|
||||||
|
mode = "0700";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
services.kea.dhcp4 = {
|
services.kea.dhcp4 = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
|
@ -14,13 +21,18 @@ in {
|
||||||
persist = true;
|
persist = true;
|
||||||
type = "memfile";
|
type = "memfile";
|
||||||
};
|
};
|
||||||
valid-lifetime = 4000;
|
valid-lifetime = 86400;
|
||||||
renew-timer = 1000;
|
renew-timer = 3600;
|
||||||
rebind-timer = 2000;
|
|
||||||
interfaces-config = {
|
interfaces-config = {
|
||||||
interfaces = ["wlan1"];
|
interfaces = ["wlan1"];
|
||||||
service-sockets-max-retries = -1;
|
service-sockets-max-retries = -1;
|
||||||
};
|
};
|
||||||
|
option-data = [
|
||||||
|
{
|
||||||
|
name = "domain-name-servers";
|
||||||
|
data = "192.168.1.3"; # FIXME: global (also search for 192.168 and "*Ip =")
|
||||||
|
}
|
||||||
|
];
|
||||||
subnet4 = [
|
subnet4 = [
|
||||||
{
|
{
|
||||||
interface = "wlan1";
|
interface = "wlan1";
|
||||||
|
|
|
@ -8,8 +8,8 @@
|
||||||
in {
|
in {
|
||||||
networking.hostId = config.repo.secrets.local.networking.hostId;
|
networking.hostId = config.repo.secrets.local.networking.hostId;
|
||||||
|
|
||||||
wireguard.proxy-sentinel = {
|
wireguard.proxy-home = {
|
||||||
client.via = "sentinel";
|
client.via = "ward";
|
||||||
};
|
};
|
||||||
|
|
||||||
boot.initrd.systemd.network = {
|
boot.initrd.systemd.network = {
|
||||||
|
@ -51,6 +51,27 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
networking.nftables.firewall = {
|
networking.nftables.firewall = {
|
||||||
zones.untrusted.interfaces = ["lan1"];
|
snippets.nnf-icmp.ipv6Types = ["mld-listener-query" "nd-router-solicit"];
|
||||||
|
|
||||||
|
zones = {
|
||||||
|
untrusted.interfaces = ["lan1"];
|
||||||
|
lan.interfaces = ["lan1"];
|
||||||
|
iot.interfaces = ["wlan1"];
|
||||||
|
};
|
||||||
|
|
||||||
|
rules = {
|
||||||
|
masquerade-iot = {
|
||||||
|
from = ["lan"];
|
||||||
|
to = ["iot"];
|
||||||
|
masquerade = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
outbound = {
|
||||||
|
from = ["lan"];
|
||||||
|
to = ["iot"];
|
||||||
|
late = true; # Only accept after any rejects have been processed
|
||||||
|
verdict = "accept";
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +0,0 @@
|
||||||
age-encryption.org/v1
|
|
||||||
-> ssh-ed25519 yV7lcA vQsqojxPobKC/GApVahRbbyNBINS8wIuu8duOrLCmQE
|
|
||||||
Jugt2kwD/csBYt+zv1K8G4ZTby3/3FomloJTzYLPTAY
|
|
||||||
-> '+q#4U3t-grease
|
|
||||||
QGHRmCylzgRVGaKpEWSFt9e5Wm6Bm5ctgHEPWNKvrAlsJN12vUkt3uCtZmy500S8
|
|
||||||
gKw/rNxTU2sUhL+qEJQuzbvpjBvepGBm6QOvh4n9vG93Yfq0+nFzS1A
|
|
||||||
--- 1VVeULtF716DG+ZFn0YFiDx2bfvAG5fA+3V3uuIZan4
|
|
||||||
õ[5|RÕœœ_ ˜#A–Kr�ƒhJ®Û:šµV¶› ÞjI]m~_Nå½?„”9ÐM´6Ûâ€é�š�Ó8aD5ïé"|E
|
|
|
@ -1,10 +0,0 @@
|
||||||
age-encryption.org/v1
|
|
||||||
-> ssh-ed25519 yV7lcA 6ACSnnVp2xhzQ/QVuf/HepfEYoSpjk30q825mzwRilc
|
|
||||||
gzAkr/xnFODD2dnn0l7vzS4w7pmZwAO23J6r0Yx9H14
|
|
||||||
-> U-grease j _i*1$@SM jfz6.
|
|
||||||
FqCMO4ohslThLGpAowt0DBM+UTvbn7wIgPsvrpNdrB4nY7fQHHAI417uI8K8YvQY
|
|
||||||
/IBfSiuPiFF1TDUaV2UvHL+P2lGCMIrWvHg1wiZHPpuS1yarDdj6THomPWYkbdAb
|
|
||||||
7qeg
|
|
||||||
--- 1SON/pfv2UQly8bx4JlVTdj1QPLZih53h7yxAgyoddk
|
|
||||||
¤žpß]b1rŒ=4Á?=ai�oFL¦ÕÅO
|
|
||||||
ܽ€b›ñ¬÷bûoN5’Ëùü„gNUX¹Ý{þ2`?Ž%°|œ¤Çò»:LÂ
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
age-encryption.org/v1
|
||||||
|
-> ssh-ed25519 iNceIg iTd9PnSEFe5Zzwld5E/onR2xtvNRF1vs8uNAuiU21FE
|
||||||
|
8id5IERQSvIiVjEIuZ6uFrO2aLGtLD3TiGUqZJIZ4UA
|
||||||
|
-> ZLaW2-grease
|
||||||
|
OGBoLHKqHfuUnly0OEo+sSj20yKrrQ5U+xH5gBZ9ZA
|
||||||
|
--- 71by0nesi0wWF0q1HgwTlvnZL6+rC24oxGZ1ogmer9E
|
||||||
|
ºï3T—Á™ÈõD #§§‰m—«-áë³”Àí´7²U:öÂl ±Y›ÌÄúuÄÆÈ`ÌØ¸Ž•«Ðr_KK+€é$xP¾&ƒ”[/‰h)
|
|
@ -1,9 +0,0 @@
|
||||||
age-encryption.org/v1
|
|
||||||
-> ssh-ed25519 iNceIg LhLSnqwCOA5S50b1zYiPlOeXGw2uPjJDiwv5w9XGrTM
|
|
||||||
4Hz5PCLxetDHcf6N6Tp2fuDLreqHhIavM4NjdnTA6uQ
|
|
||||||
-> c&1hmDw-grease [VS*Zev: %;MC=6 @p5nwT61
|
|
||||||
vP5f5VHYMYMFaDhzXHyA38rvb4e1KNfPG5Jj7jM2yiVKfk/kPc6jTqnzDlEuD7h4
|
|
||||||
uusvcw
|
|
||||||
--- Btcjc8qBkfxLQ1LFUeEy8kBFho+NKwbHzSMht2jUIeg
|
|
||||||
íƒmo§¹G±–M
|
|
||||||
¦‘€ÂM�|%ý‹Q�ÇZ¨§ù¦-fþÕ›Ñ4—.Y“`÷ãiK…¤s§Ù^ƒ¢Ù DŠ>9ûŸ3ÿÅÝ*Á
|
|
|
@ -1,9 +0,0 @@
|
||||||
age-encryption.org/v1
|
|
||||||
-> ssh-ed25519 iNceIg 2fpmUUMrDliZx8uVqkl/gAXFDLY+orMQgqKzM8AfkQ8
|
|
||||||
qL4p4rRzgUEk0WfN+eXBVssJurtFJh2SpfzErkKpRWM
|
|
||||||
-> *Xm?<Z-grease fv[eyBgk
|
|
||||||
4PLchn2s+mMnqx8MMNfWZxvdbkH6tiAJ8vBSKxdbSrJ8pGCuy88d8I8Delp9Lekx
|
|
||||||
l39QFkaBLDx4unj5qgueqWqV+owahjN8dgu72rVY0z1bQoEvcWQYYB4
|
|
||||||
--- 4YxKhEk9XGuE2617op8Ki00DuiWvZ/ntuxckViMq7/g
|
|
||||||
][§4^wï¾ífü&ç»j
|
|
||||||
JVäΑË.2}®:ÉsaƒNÙ?%ìÇ�†xdò/®Aþ+�|Ä9!ð]ÿóF'Kç1qãûûŸÖS-+÷À�
|
|
|
@ -1,7 +0,0 @@
|
||||||
age-encryption.org/v1
|
|
||||||
-> ssh-ed25519 DynNMA 0jbyffbAwO0+WtJmLPgBdQ6o4BQfhtyoR3eC/CisgyY
|
|
||||||
nx2vpN/ZWdoG6z0GVA5a4563wiySTlr+BUggqeAxfVU
|
|
||||||
-> fHq^-grease $1R? 4g mF
|
|
||||||
6Y3otzVbFmwsR3Jqy6G82g9wnKz5JB5tSblkn6O9UoO5
|
|
||||||
--- wiu0ndqSrU3ofFPn8WlpLJz3JaMRSGDYcxR8A+QHSbI
|
|
||||||
g[û^0ÄJìI‘¢¸—ÿ«3}§ß½c·m`íç-“x�‡tS'Éö˜¢»9¨$ˆ²Qb�ÝÛΆ
|
|
|
@ -1,8 +0,0 @@
|
||||||
age-encryption.org/v1
|
|
||||||
-> ssh-ed25519 DynNMA IKMt3H+qN5Tp+klLYaeKCa0b5brlB8//VAjpAl68GCI
|
|
||||||
MTV8wXhkCYulvS6o7Wnq/rMHeYqPxDdSMggMT6+FLyo
|
|
||||||
-> |-:8x-grease s O3ZB {Q"
|
|
||||||
GscWlHRccebYhiGFelYXa+GLLzprQc+k9iS//LY
|
|
||||||
--- FgB9+ChfVo/svSZ9pgcCv+ZG/edwwIs11tNjCpkHLjg
|
|
||||||
��
|
|
||||||
Ô»W€%˜D´Ñ¯¯“`›¦{E[&rÕ-îÿ‘×–bMM�€õ[Óˆ=t�.&š„„›_À�Ú
|
|
Binary file not shown.
|
@ -1,8 +0,0 @@
|
||||||
age-encryption.org/v1
|
|
||||||
-> ssh-ed25519 DynNMA XFqNwvTo+KpkJoPd9jYFN2XfCEb/kLGQfeubvcCFSQs
|
|
||||||
Zixgkd3zxoyHFqszXWMEoouNIDI3o/RMbkGsTqAZzXg
|
|
||||||
-> :/[1R6-grease e'6D_ e>ngz4
|
|
||||||
8KsUxS4HykfNC6D2O/CVFf6XhRh6OPtjDuuyYyypgGWRAg8Cx3Zzpd5Vjxp8bQHh
|
|
||||||
T5Ih+xXlZa6ilkbd3A9Wm2adrdHBdbMFFmWgAKYjQQ
|
|
||||||
--- XDQWFwbDpKtM5swe0W42WNd0IGRIEolRdXJ0OL1SpFk
|
|
||||||
ˆîŠÿÞ•¾>ц�ú�©Õ°bÐSÃâͫĊ…ž ܶÁZÔb·¡\v<‚ÙÇõ^‰™‰·R æH”„ ÀŠ€�ö-³jšÜ«ïPø'$ãjƈWÌè*—-S«+QÜåš%Àˆq‘?ALRŽU!Uo¦2õQXê£Ð¼±½×ùjË Ö”wî)½þ/Ì4ò꓎º€MÂÅ“g`«:»˜nl£Ú!Ӌ˲÷[Až�‹*.„d+À
|
|
|
@ -1,8 +0,0 @@
|
||||||
age-encryption.org/v1
|
|
||||||
-> ssh-ed25519 DynNMA u4AEzCigYB0NoNbhsNP4tICYl/P7UMB7t7Ck+tt8kTs
|
|
||||||
EG7+IzCrSjfJx9m1YXX57knrSw5hpox6xtxbNZ2Xbpw
|
|
||||||
-> `>-grease A!nt\3HR ',ty Q q
|
|
||||||
vj9LYGl5kOAPQGE+Cg3HIHzWxqMfRSQVDOJIm89vRmaWd0DnFnLa8zTlzCtM/ktJ
|
|
||||||
88mUSEN+d9KdfH1Auq8mj1d3LRCHF1HHCFbnrytlwg/gQGUx
|
|
||||||
--- X+PWRfD/ySSoblWKP2Fi/OJnksyB1th9bBHzGMlAWSU
|
|
||||||
~?ÄþCØ:Â5Øø¼=uo©ØFÝÉrô‚=ìôÀ+ ê‘§·¢žÂåàýÙ1éRŠu5L•4¶¬W„Ê VÎ/‘aQ¶{xÏÁcÄŽ
|
|
Binary file not shown.
|
@ -1,7 +0,0 @@
|
||||||
age-encryption.org/v1
|
|
||||||
-> ssh-ed25519 DynNMA Sv9A3D5SrVkISNOrSOyZLnBsCVI8S/6A9BRQekWmG0c
|
|
||||||
p6TfLZFJK66oATpVtzZ+eU2nvPGgR8Je35Gp5EestGQ
|
|
||||||
-> S&-grease Gjr ~x6E
|
|
||||||
UUg82dyOhlec/nd33A
|
|
||||||
--- WeMa6zNNsTCtgAvfS08Tarzjt1XKWK3Dj5v/Uc/abuI
|
|
||||||
ÎLtˆ/ïXÕv?3°ò§ÒdŠeé²&Z»Ô=ª%?ÀI/w¢ûÐqÂz8rŠž³‡Û~e„nË;‹FÞÛæ&ütW¹x;ó¼šD
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
age-encryption.org/v1
|
||||||
|
-> ssh-ed25519 DynNMA OszBoMLZTrzxXJ8dO8oCJGw9F2U6HRQKrkI6U2OWY00
|
||||||
|
HyuLC64mc40QciTIAh9Wj5YeLkxk3XGTyq9eZ7BDHrY
|
||||||
|
-> @2Y^^-grease ~1 SdR3 e%0g.;jM
|
||||||
|
yMAB/c4lVnD+c/PKEgHi+sKtwzC/WoRGEseyoRT7e0+dfuExNg
|
||||||
|
--- JHzw1xmBmoi4qtwlazCJ23s9W2UBYbCRswB/a2XpCe4
|
||||||
|
È2ý\o©¨ôÑ¥56Y¬u¾ü¾�'zŽ@¦ñ÷A8ƒÿv
|
||||||
|
»±Š!Ó9ýaéœc¿ø¦ç ‰€³|ÜÿG“tt¡Yq;•«h9
|
Binary file not shown.
10
secrets/wireguard/proxy-home/keys/zackbiene.age
Normal file
10
secrets/wireguard/proxy-home/keys/zackbiene.age
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
age-encryption.org/v1
|
||||||
|
-> X25519 31hLfNremLhkbDFT6Z8SvMcgN0J6UHHfnV4kvadAuzo
|
||||||
|
bYnLUZpztxdkA0JeRd+A6aqhUZ8Blw8EeDgAFijsGU8
|
||||||
|
-> piv-p256 xqSe8Q AqxEjTAlthttVUtPusarKoKcQQsjpW075NUAgHhFxwNM
|
||||||
|
ITiV6VF7tRNnEO6KCy35pK9KmSVrLEvPTKOlZXj+KhI
|
||||||
|
-> Y_,\|kE-grease K=r$dP
|
||||||
|
MNA2sN3rcItZ8j+sBCoxSu5Tdl0EURNxQyP2pLWzHp4Co1zbnzxsPnbbiBY3pvLd
|
||||||
|
VnaytjVcoX8NuxlQQeJmK/3xuzOBgfU
|
||||||
|
--- 6hp4Z5hE7P0H7/sN51gfH15Jfv9WBBlybObNGWZT76A
|
||||||
|
#a¼MiQN{:Öeý�,í”’Ë”h˜äÜBHÖv9Z3JCÍ•Œ˜ oÏ9ùô×L2+zM¢HÕåÛ«M\ÛØCîZÒà|û,ž
|
1
secrets/wireguard/proxy-home/keys/zackbiene.pub
Normal file
1
secrets/wireguard/proxy-home/keys/zackbiene.pub
Normal file
|
@ -0,0 +1 @@
|
||||||
|
vhOgoCnM3IQctN7rQLbBzZBfBYTIZrdFKDsJzissxWY=
|
10
secrets/wireguard/proxy-home/psks/ward+zackbiene.age
Normal file
10
secrets/wireguard/proxy-home/psks/ward+zackbiene.age
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
age-encryption.org/v1
|
||||||
|
-> X25519 nIy3GDknvICdU2E9snZDJtZqHxA12c4Aa6/XzzeBDzY
|
||||||
|
hEvsVMkP1h/grI/jAViIwtCGTT8fDLp//zPuHawY6XE
|
||||||
|
-> piv-p256 xqSe8Q Aryo90NAlU3hI+GRpBnXkTTaskoCaGoMQyptKucQDKHf
|
||||||
|
qXtpL/Se74WlOO0hVc59JEeqnM6Aq0m7Iv6u9CA5GJY
|
||||||
|
-> 'XN-grease 0%qI5bYt %IlJ{ $
|
||||||
|
AxNrd8cVoKomOI38tWGQf2gHE4PSe7k+GwjCPPahkrZybMQUYGWLF5//jdRoECjC
|
||||||
|
SIhvUvTPUOnZp+/bYVDTXvrrKdSjmv3QiHZ5c96Uk2Qv6sbMI0s1EG8zeWc
|
||||||
|
--- MDRkb3z+qB1Lh27aneTscpE+9xNx7n3CTIIvaZNf+hE
|
||||||
|
Aó”A^Ç8XEď¤@|bFjőÁ\gÉ둜¬L·MÇŰ-ÔýTwŇEŐ9®rGFńkMM^o�űÍW‘7ÉĘ`H<
2ÚŰ&�×ŮŠ•űčŇ
|
Loading…
Add table
Add a link
Reference in a new issue