From e01f9ce5bf5a40f283b903e06c85bf72798d3d5a Mon Sep 17 00:00:00 2001 From: Astro Date: Sat, 17 Jul 2021 23:17:05 +0200 Subject: [PATCH] scrape: add and serve riesa-efau-kalender --- flake.lock | 8 ++--- hosts/containers/scrape/default.nix | 48 +++++++++++++++++++++++++++-- 2 files changed, 49 insertions(+), 7 deletions(-) diff --git a/flake.lock b/flake.lock index c973e7cb..31304716 100644 --- a/flake.lock +++ b/flake.lock @@ -43,11 +43,11 @@ "scrapers": { "flake": false, "locked": { - "lastModified": 1616689077, - "narHash": "sha256-eTj9yoOzBj7JUCMjxKr9XibQ0ZpoS6Ac0VP/CfaIwi8=", + "lastModified": 1626554135, + "narHash": "sha256-MaR2QU/lvdPgFPipTvKk4htQ1JyCJVNRiwnaubABCOw=", "ref": "master", - "rev": "f6c9b1c1f25a0d03a4c28710a866759107162adc", - "revCount": 27, + "rev": "150f62c377252e26aa9cb9c76b2aa0e5585648e6", + "revCount": 28, "type": "git", "url": "https://gitea.c3d2.de/astro/scrapers.git" }, diff --git a/hosts/containers/scrape/default.nix b/hosts/containers/scrape/default.nix index ca9cf298..45bfc04f 100644 --- a/hosts/containers/scrape/default.nix +++ b/hosts/containers/scrape/default.nix @@ -1,4 +1,4 @@ -{ pkgs, scrapers, ... }: +{ pkgs, config, scrapers, ... }: let freifunkNodes = { @@ -18,16 +18,41 @@ in { prefixLength = 26; }]; networking.defaultGateway = "172.20.73.1"; - - # Required for krops + # Required for deployment services.openssh.enable = true; environment.systemPackages = [ pkgs.git ]; + users.groups.scrape = {}; + users.users.scrape = { + isNormalUser = true; + group = "scrape"; + }; + + services.nginx = { + enable = true; + recommendedProxySettings = true; + virtualHosts."scrape.hq.c3d2.de" = { + default = true; + forceSSL = true; + enableACME = true; + root = config.users.users.scrape.home; + }; + }; + security.acme = { + acceptTerms = true; + email = "mail@c3d2.de"; + }; + networking.firewall.allowedTCPPorts = [ 80 443 ]; + systemd.services = let scraperPkgs = import scrapers { inherit pkgs; }; makeService = { script, host ? "", user ? "", password ? "" }: { script = "${scraperPkgs.${script}}/bin/${script} ${host} ${user} ${password}"; + serviceConfig = { + User = config.users.users.scrape.name; + Group = config.users.users.scrape.group; + }; }; makeNodeScraper = nodeId: { name = "scrape-node${nodeId}"; @@ -44,6 +69,8 @@ in { }; }; in { + nginx.serviceConfig.ProtectHome = "read-only"; + scrape-xeri = makeService { script = "xerox"; host = "xeri.hq.c3d2.de"; @@ -66,6 +93,16 @@ in { scrape-impfee = makeService { script = "impfee"; }; + scrape-riesa-efau-kalender = { + script = '' + ${scraperPkgs.riesa-efau-kalender}/bin/riesa-efau-kalender > /tmp/riesa-efau-kalender.ics + mv /tmp/riesa-efau-kalender.ics ${config.users.users.scrape.home}/ + ''; + serviceConfig = { + User = config.users.users.scrape.name; + Group = config.users.users.scrape.group; + }; + }; } // builtins.listToAttrs (map makeNodeScraper (builtins.attrNames freifunkNodes) ++ map makeLuftScraper luftqualitaetStations @@ -95,6 +132,11 @@ in { scrape-fhem = makeTimer "scrape-fhem.service" "minutely"; scrape-matemat = makeTimer "scrape-matemat.service" "minutely"; scrape-impfee = makeTimer "scrape-impfee.service" "minutely"; + scrape-riesa-efau-kalender = { + partOf = [ "scrape-riesa-efau-kalender.service" ]; + wantedBy = [ "timers.target" ]; + timerConfig.OnCalendar = "hourly"; + }; } // builtins.listToAttrs (map makeNodeScraperTimer (builtins.attrNames freifunkNodes) ++ (map makeLuftScraperTimer luftqualitaetStations)