From a59ca4ac80248585facd8cc43d0a8b8d43e3735d Mon Sep 17 00:00:00 2001 From: lassulus Date: Thu, 29 Jul 2021 15:37:06 +0200 Subject: reaktor2: add agenda.r webinterface --- krebs/2configs/reaktor2.nix | 141 +++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 132 insertions(+), 9 deletions(-) (limited to 'krebs/2configs') diff --git a/krebs/2configs/reaktor2.nix b/krebs/2configs/reaktor2.nix index 14e0a3d7..2fb7a54e 100644 --- a/krebs/2configs/reaktor2.nix +++ b/krebs/2configs/reaktor2.nix @@ -9,11 +9,11 @@ let hooks = pkgs.reaktor2-plugins.hooks; commands = pkgs.reaktor2-plugins.commands; - task = name: let - rcFile = builtins.toFile "taskrc" '' - confirmation=no - ''; - in { + taskRcFile = builtins.toFile "taskrc" '' + confirmation=no + ''; + + task = name: { pattern = "^${name}-([a-z]+)(?::?\\s*(.*))?"; activate = "match"; command = 1; @@ -21,19 +21,19 @@ let env.TASKDATA = "${stateDir}/${name}"; commands = { add.filename = pkgs.writeDash "${name}-task-add" '' - ${pkgs.taskwarrior}/bin/task rc:${rcFile} add "$1" + ${pkgs.taskwarrior}/bin/task rc:${taskRcFile} add "$1" ''; list.filename = pkgs.writeDash "${name}-task-list" '' - ${pkgs.taskwarrior}/bin/task rc:${rcFile} export \ + ${pkgs.taskwarrior}/bin/task rc:${taskRcFile} export \ | ${pkgs.jq}/bin/jq -r ' .[] | select(.id != 0) | "\(.id) \(.description)" ' ''; delete.filename = pkgs.writeDash "${name}-task-delete" '' - ${pkgs.taskwarrior}/bin/task rc:${rcFile} delete "$1" + ${pkgs.taskwarrior}/bin/task rc:${taskRcFile} delete "$1" ''; done.filename = pkgs.writeDash "${name}-task-done" '' - ${pkgs.taskwarrior}/bin/task rc:${rcFile} done "$1" + ${pkgs.taskwarrior}/bin/task rc:${taskRcFile} done "$1" ''; }; }; @@ -122,6 +122,129 @@ in { isSystemUser = true; }; + systemd.services.htgen-agenda.serviceConfig.StateDirectory = "reaktor2"; + krebs.htgen.agenda = { + port = 8009; + user = { + name = "reaktor2"; + home = stateDir; + }; + script = ''. ${pkgs.writeDash "agenda" '' + echo "$Method $Request_URI" >&2 + case "$Method" in + "GET") + printf 'HTTP/1.1 200 OK\r\n' + printf 'Connection: close\r\n' + printf '\r\n' + TASKDATA=/var/lib/reaktor2/agenda ${pkgs.taskwarrior}/bin/task rc:${taskRcFile} export + exit + ;; + esac + ''}''; + }; + + services.nginx = { + virtualHosts."agenda.r" = { + locations."= /index.html".extraConfig = '' + alias ${pkgs.writeText "agenda.html" '' + + + + Agenda + + + + + +
+ + + + ''}; + ''; + locations."/agenda.json".extraConfig = '' + proxy_set_header Host $host; + proxy_pass http://localhost:8009; + ''; + extraConfig = '' + add_header 'Access-Control-Allow-Origin' '*'; + add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; + ''; + }; + }; + krebs.reaktor2 = { hackint = { hostname = "irc.hackint.org"; -- cgit v1.2.3 From d6febec1442b48d75771cba09bc54a96b5d8cd5f Mon Sep 17 00:00:00 2001 From: lassulus Date: Thu, 29 Jul 2021 15:37:39 +0200 Subject: reaktor2: disable freenode reaktor --- krebs/2configs/reaktor2.nix | 17 ----------------- 1 file changed, 17 deletions(-) (limited to 'krebs/2configs') diff --git a/krebs/2configs/reaktor2.nix b/krebs/2configs/reaktor2.nix index 2fb7a54e..15be3eec 100644 --- a/krebs/2configs/reaktor2.nix +++ b/krebs/2configs/reaktor2.nix @@ -263,23 +263,6 @@ in { username = "reaktor2"; port = "6697"; }; - freenode = { - hostname = "irc.freenode.org"; - nick = "reaktor2|krebs"; - plugins = [ - { - plugin = "register"; - config = { - channels = [ - "#krebs" - ]; - }; - } - systemPlugin - ]; - username = "reaktor2"; - port = "6697"; - }; r = { nick = "reaktor2|krebs"; sendDelaySec = null; -- cgit v1.2.3 From 36db8bee2faae73baf60dc229894e259edbaa639 Mon Sep 17 00:00:00 2001 From: lassulus Date: Thu, 29 Jul 2021 15:46:34 +0200 Subject: reaktor2: fix dynamicUser not being able to write agenda --- krebs/2configs/reaktor2.nix | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'krebs/2configs') diff --git a/krebs/2configs/reaktor2.nix b/krebs/2configs/reaktor2.nix index 15be3eec..e9837ff7 100644 --- a/krebs/2configs/reaktor2.nix +++ b/krebs/2configs/reaktor2.nix @@ -120,8 +120,11 @@ in { uid = genid_uint31 "reaktor2"; home = stateDir; isSystemUser = true; + extraGroups = [ "reaktor2" ]; }; + users.groups.reaktor2 = {}; + systemd.services.htgen-agenda.serviceConfig.StateDirectory = "reaktor2"; krebs.htgen.agenda = { port = 8009; @@ -245,6 +248,8 @@ in { }; }; + systemd.services.reaktor2-r.serviceConfig.DynamicUser = mkForce false; + systemd.services.reaktor2-hackint.serviceConfig.DynamicUser = mkForce false; krebs.reaktor2 = { hackint = { hostname = "irc.hackint.org"; -- cgit v1.2.3 From ba6a5456e8d76b9c1eae7cd81dca3f2b16359ba2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kier=C3=A1n=20Meinhardt?= Date: Thu, 29 Jul 2021 17:05:39 +0200 Subject: reaktor2: fix agenda.r webinterface custom styling --- krebs/2configs/reaktor2.nix | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) (limited to 'krebs/2configs') diff --git a/krebs/2configs/reaktor2.nix b/krebs/2configs/reaktor2.nix index e9837ff7..4a33c33e 100644 --- a/krebs/2configs/reaktor2.nix +++ b/krebs/2configs/reaktor2.nix @@ -187,16 +187,18 @@ in { const params = Object.fromEntries(urlSearchParams.entries()); if (params.hasOwnProperty("style")) { - fetch(params["style"]) - .then((response) => - response.text().then((css) => { - const title = document.getElementsByTagName("title")[0]; - const style = document.createElement("style"); - style.appendChild(document.createTextNode(css)); - title.appendChild(style); - }) - ) - .catch(console.log); + const cssUrls = params["style"].split(" ").filter((x) => x.length > 0); + for (const cssUrl of cssUrls) + fetch(cssUrl) + .then((response) => + response.text().then((css) => { + const title = document.getElementsByTagName("head")[0]; + const style = document.createElement("style"); + style.appendChild(document.createTextNode(css)); + title.appendChild(style); + }) + ) + .catch(console.log); } fetch("/agenda.json") -- cgit v1.2.3