Serge Bazanski | 6abe4fa | 2020-10-03 00:18:34 +0200 | [diff] [blame] | 1 | # Run service that spits out an unbound-compatible blocklist of websites, |
| 2 | # as mandated by polish telecommunications law. |
| 3 | # |
| 4 | # https://sip.lex.pl/akty-prawne/dzu-dziennik-ustaw/gry-hazardowe-17581037/art-15-f |
| 5 | # Dz.U.2019.847 t.j. |
| 6 | # Art. 15f. [Rejestr domen służących do oferowania gier hazardowych niezgodnie z ustawą] |
| 7 | # 5. Przedsiębiorca telekomunikacyjny świadczący usługi dostępu do sieci |
| 8 | # Internet jest obowiązany do: |
| 9 | # 1) nieodpłatnego uniemożliwienia dostępu do stron internetowych |
| 10 | # wykorzystujących nazwy domen internetowych wpisanych do Rejestru |
| 11 | # poprzez ich usunięcie z systemów teleinformatycznych przedsiębiorców |
| 12 | # telekomunikacyjnych, służących do zamiany nazw domen internetowych na |
| 13 | # adresy IP, nie później niż w ciągu 48 godzin od dokonania wpisu do |
| 14 | # Rejestru; |
| 15 | # 2) nieodpłatnego przekierowania połączeń odwołujących się do nazw domen |
| 16 | # internetowych wpisanych do Rejestru do strony internetowej prowadzonej |
| 17 | # przez ministra właściwego do spraw finansów publicznych, zawierającej |
| 18 | # komunikat, skierowany do odbiorców usługi dostępu do Internetu |
| 19 | # obejmujący w szczególności informacje o lokalizacji Rejestru, wpisaniu |
| 20 | # szukanej nazwy domeny internetowej do tego Rejestru, listę podmiotów |
| 21 | # legalnie oferujących gry hazardowe na terytorium Rzeczypospolitej |
| 22 | # Polskiej, a także powiadomienie o grożącej odpowiedzialności |
| 23 | # karno-skarbowej uczestnika gier urządzanych wbrew przepisom ustawy; |
| 24 | # 3) nieodpłatnego umożliwienia dostępu do stron internetowych |
| 25 | # wykorzystujących nazwy domen wykreślonych z Rejestru, nie później niż w |
| 26 | # ciągu 48 godzin od wykreślenia nazwy domeny internetowej z Rejestru. |
| 27 | |
| 28 | { config, pkgs, lib, ... }: |
| 29 | |
| 30 | with lib; |
| 31 | |
| 32 | let |
| 33 | rshUnbound = pkgs.buildGoModule { |
| 34 | pname = "rsh-unbound"; |
| 35 | version = "20200926"; |
| 36 | src = pkgs.fetchFromGitHub { |
| 37 | owner = "q3k"; |
| 38 | repo = "rsh-unbound"; |
Serge Bazanski | 767f031 | 2021-12-08 14:07:39 +0000 | [diff] [blame] | 39 | rev = "31f8975d30a301fdf6f1d445826ebcd671ae07a3"; |
| 40 | sha256 = "sha256-twI9VzPLBgztdccDgB29lJG7ekwpjr1eh27nR5F/TMA="; |
Serge Bazanski | 6abe4fa | 2020-10-03 00:18:34 +0200 | [diff] [blame] | 41 | }; |
| 42 | |
Serge Bazanski | 767f031 | 2021-12-08 14:07:39 +0000 | [diff] [blame] | 43 | vendorSha256 = "sha256-A8yHaqSWHhvNmGrk6C6XOVYfVaFbiPmKqglg6gImwWM="; |
Serge Bazanski | 6abe4fa | 2020-10-03 00:18:34 +0200 | [diff] [blame] | 44 | }; |
| 45 | |
| 46 | cfg = config.hscloud.rsh; |
| 47 | |
| 48 | in { |
| 49 | options.hscloud.rsh = with types; { |
| 50 | enable = mkOption { |
| 51 | type = bool; |
| 52 | default = false; |
| 53 | description = "Enable the RSH-Unboudn service."; |
| 54 | }; |
| 55 | out = mkOption { |
| 56 | type = str; |
Serge Bazanski | e1aa63c | 2022-06-12 12:27:56 +0200 | [diff] [blame] | 57 | default = "/var/lib/rsh.conf"; |
Serge Bazanski | 6abe4fa | 2020-10-03 00:18:34 +0200 | [diff] [blame] | 58 | description = "Output file for generated unbound config."; |
| 59 | }; |
Serge Bazanski | e1aa63c | 2022-06-12 12:27:56 +0200 | [diff] [blame] | 60 | register = mkOption { |
| 61 | type = str; |
| 62 | description = "URL of blocklist register."; |
| 63 | default = "https://hazard.mf.gov.pl/api/Register"; |
| 64 | }; |
Serge Bazanski | 6abe4fa | 2020-10-03 00:18:34 +0200 | [diff] [blame] | 65 | }; |
| 66 | |
Serge Bazanski | e1aa63c | 2022-06-12 12:27:56 +0200 | [diff] [blame] | 67 | config = mkIf cfg.enable { |
| 68 | services.unbound.settings.server.include = [ cfg.out ]; |
| 69 | systemd.services.rsh = { |
| 70 | wantedBy = [ "multi-user.target" "unbound.service" ]; |
| 71 | serviceConfig = { |
| 72 | Type = "simple"; |
| 73 | ExecStartPre = "${pkgs.coreutils}/bin/touch ${cfg.out}"; |
| 74 | ExecStart = "${rshUnbound}/bin/rsh-unbound -output ${cfg.out} -register_endpoint ${cfg.register}"; |
| 75 | Restart = "always"; |
| 76 | RestartSec = "10"; |
| 77 | }; |
Serge Bazanski | 6abe4fa | 2020-10-03 00:18:34 +0200 | [diff] [blame] | 78 | }; |
| 79 | }; |
| 80 | } |