bgpwtf/machines: init edge01.waw
This configures our WAW edge router using NixOS. This replaces our
previous Ubuntu installation.
Change-Id: Ibd72bde66ec413164401da407c5b268ad83fd3af
diff --git a/bgpwtf/machines/modules/rsh-unbound.nix b/bgpwtf/machines/modules/rsh-unbound.nix
new file mode 100644
index 0000000..20442fc
--- /dev/null
+++ b/bgpwtf/machines/modules/rsh-unbound.nix
@@ -0,0 +1,70 @@
+# Run service that spits out an unbound-compatible blocklist of websites,
+# as mandated by polish telecommunications law.
+#
+# https://sip.lex.pl/akty-prawne/dzu-dziennik-ustaw/gry-hazardowe-17581037/art-15-f
+# Dz.U.2019.847 t.j.
+# Art. 15f. [Rejestr domen służących do oferowania gier hazardowych niezgodnie z ustawą]
+# 5. Przedsiębiorca telekomunikacyjny świadczący usługi dostępu do sieci
+# Internet jest obowiązany do:
+# 1) nieodpłatnego uniemożliwienia dostępu do stron internetowych
+# wykorzystujących nazwy domen internetowych wpisanych do Rejestru
+# poprzez ich usunięcie z systemów teleinformatycznych przedsiębiorców
+# telekomunikacyjnych, służących do zamiany nazw domen internetowych na
+# adresy IP, nie później niż w ciągu 48 godzin od dokonania wpisu do
+# Rejestru;
+# 2) nieodpłatnego przekierowania połączeń odwołujących się do nazw domen
+# internetowych wpisanych do Rejestru do strony internetowej prowadzonej
+# przez ministra właściwego do spraw finansów publicznych, zawierającej
+# komunikat, skierowany do odbiorców usługi dostępu do Internetu
+# obejmujący w szczególności informacje o lokalizacji Rejestru, wpisaniu
+# szukanej nazwy domeny internetowej do tego Rejestru, listę podmiotów
+# legalnie oferujących gry hazardowe na terytorium Rzeczypospolitej
+# Polskiej, a także powiadomienie o grożącej odpowiedzialności
+# karno-skarbowej uczestnika gier urządzanych wbrew przepisom ustawy;
+# 3) nieodpłatnego umożliwienia dostępu do stron internetowych
+# wykorzystujących nazwy domen wykreślonych z Rejestru, nie później niż w
+# ciągu 48 godzin od wykreślenia nazwy domeny internetowej z Rejestru.
+
+{ config, pkgs, lib, ... }:
+
+with lib;
+
+let
+ rshUnbound = pkgs.buildGoModule {
+ pname = "rsh-unbound";
+ version = "20200926";
+ src = pkgs.fetchFromGitHub {
+ owner = "q3k";
+ repo = "rsh-unbound";
+ rev = "3d98c754adadddfae59387d033aef531f47dee5d";
+ sha256 = "1ia33893m1dknw36vss97limlb1d28z5nkrkw6b4mp1igdgqsfcz";
+ };
+
+ vendorSha256 = "1w94g2dwhf47jmds95frb26ypjmis5zhyy85rmd124v0nz3axzhf";
+ };
+
+ cfg = config.hscloud.rsh;
+
+in {
+ options.hscloud.rsh = with types; {
+ enable = mkOption {
+ type = bool;
+ default = false;
+ description = "Enable the RSH-Unboudn service.";
+ };
+ out = mkOption {
+ type = str;
+ description = "Output file for generated unbound config.";
+ };
+ };
+
+ config.systemd.services.rsh = mkIf cfg.enable {
+ wantedBy = [ "multi-user.target" ];
+ serviceConfig = {
+ Type = "simple";
+ ExecStart = "${rshUnbound}/bin/rsh-unbound -output ${cfg.out} -register_endpoint https://hazard.mf.gov.pl/api/Register";
+ Restart = "always";
+ RestartSec = "60";
+ };
+ };
+}