ttyd: add test & use systemd LoadCredential

This commit is contained in:
Felix Buehler 2024-01-20 17:33:00 +01:00
parent 221d90520a
commit c34493d7c0
4 changed files with 26 additions and 1 deletions

View File

@ -180,10 +180,11 @@ in
# Runs login which needs to be run as root
# login: Cannot possibly work without effective root
User = "root";
LoadCredential = lib.optionalString (cfg.passwordFile != null) "TTYD_PASSWORD_FILE:${cfg.passwordFile}";
};
script = if cfg.passwordFile != null then ''
PASSWORD=$(cat ${escapeShellArg cfg.passwordFile})
PASSWORD=$(cat "$CREDENTIALS_DIRECTORY/TTYD_PASSWORD_FILE")
${pkgs.ttyd}/bin/ttyd ${lib.escapeShellArgs args} \
--credential ${escapeShellArg cfg.username}:"$PASSWORD" \
${pkgs.shadow}/bin/login

View File

@ -902,6 +902,7 @@ in {
trilium-server = handleTestOn ["x86_64-linux"] ./trilium-server.nix {};
tsja = handleTest ./tsja.nix {};
tsm-client-gui = handleTest ./tsm-client-gui.nix {};
ttyd = handleTest ./web-servers/ttyd.nix {};
txredisapi = handleTest ./txredisapi.nix {};
tuptime = handleTest ./tuptime.nix {};
turbovnc-headless-server = handleTest ./turbovnc-headless-server.nix {};

View File

@ -0,0 +1,19 @@
import ../make-test-python.nix ({ lib, pkgs, ... }: {
name = "ttyd";
meta.maintainers = with lib.maintainers; [ stunkymonkey ];
nodes.machine = { pkgs, ... }: {
services.ttyd = {
enable = true;
username = "foo";
passwordFile = pkgs.writeText "password" "bar";
};
};
testScript = ''
machine.wait_for_unit("ttyd.service")
machine.wait_for_open_port(7681)
response = machine.succeed("curl -vvv -u foo:bar -s -H 'Host: ttyd' http://127.0.0.1:7681/")
assert '<title>ttyd - Terminal</title>' in response, "Page didn't load successfully"
'';
})

View File

@ -20,6 +20,10 @@ stdenv.mkDerivation rec {
outputs = [ "out" "man" ];
passthru.tests = {
inherit (nixosTests) ttyd;
};
meta = {
description = "Share your terminal over the web";
homepage = "https://github.com/tsl0922/ttyd";