| # 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 = "31f8975d30a301fdf6f1d445826ebcd671ae07a3"; |
| sha256 = "sha256-twI9VzPLBgztdccDgB29lJG7ekwpjr1eh27nR5F/TMA="; |
| }; |
| |
| vendorSha256 = "sha256-A8yHaqSWHhvNmGrk6C6XOVYfVaFbiPmKqglg6gImwWM="; |
| }; |
| |
| 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; |
| default = "/var/lib/rsh.conf"; |
| description = "Output file for generated unbound config."; |
| }; |
| register = mkOption { |
| type = str; |
| description = "URL of blocklist register."; |
| default = "https://hazard.mf.gov.pl/api/Register"; |
| }; |
| }; |
| |
| config = mkIf cfg.enable { |
| services.unbound.settings.server.include = [ cfg.out ]; |
| systemd.services.rsh = { |
| wantedBy = [ "multi-user.target" "unbound.service" ]; |
| serviceConfig = { |
| Type = "simple"; |
| ExecStartPre = "${pkgs.coreutils}/bin/touch ${cfg.out}"; |
| ExecStart = "${rshUnbound}/bin/rsh-unbound -output ${cfg.out} -register_endpoint ${cfg.register}"; |
| Restart = "always"; |
| RestartSec = "10"; |
| }; |
| }; |
| }; |
| } |