Unverified Commit 84ad8e2e authored by misuzu's avatar misuzu Committed by GitHub
Browse files

go-sendxmpp: init at 0.14.1 (#420727)

parents 62ef08e9 857573a2
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1250,7 +1250,7 @@ in
  privoxy = runTest ./privoxy.nix;
  prometheus = import ./prometheus { inherit runTest; };
  prometheus-exporters = handleTest ./prometheus-exporters.nix { };
  prosody = handleTest ./xmpp/prosody.nix { };
  prosody = runTest ./xmpp/prosody.nix;
  prosody-mysql = handleTest ./xmpp/prosody-mysql.nix { };
  proxy = runTest ./proxy.nix;
  prowlarr = runTest ./prowlarr.nix;
+26 −3
Original line number Diff line number Diff line
@@ -2,7 +2,7 @@ let
  cert =
    pkgs:
    pkgs.runCommand "selfSignedCerts" { buildInputs = [ pkgs.openssl ]; } ''
      openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -nodes -subj '/CN=example.com/CN=muc.example.com/CN=matrix.example.com' -days 36500
      openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -nodes -subj '/CN=example.com/CN=muc.example.com/CN=matrix.example.com' -addext "subjectAltName = DNS:example.com,DNS:muc.example.com,DNS:matrix.example.com" -days 36500
      mkdir -p $out
      cp key.pem cert.pem $out
    '';
@@ -14,7 +14,18 @@ in
    maintainers = [ ];
  };
  nodes = {
    client =
    client-a =
      { nodes, pkgs, ... }:
      {
        security.pki.certificateFiles = [ "${cert pkgs}/cert.pem" ];
        networking.extraHosts = ''
          ${nodes.server.networking.primaryIPAddress} example.com
        '';

        imports = [ ./go-sendxmpp-listen.nix ];
      };

    client-b =
      { nodes, pkgs, ... }:
      {
        security.pki.certificateFiles = [ "${cert pkgs}/cert.pem" ];
@@ -28,6 +39,7 @@ in
          })
        ];
      };

    server =
      { config, pkgs, ... }:
      {
@@ -310,7 +322,18 @@ in
          ejabberd_prefix + "register cthon98 example.com nothunter2",
      )
      server.fail(ejabberd_prefix + "register asdf wrong.domain")
      client.succeed("send-message")

      for machine in client_a, client_b:
        machine.systemctl("start network-online.target")
        machine.wait_for_unit("network-online.target")

      client_a.wait_for_unit("go-sendxmpp-listen")
      client_b.succeed("send-message")

      client_a.wait_until_succeeds(
        "journalctl -o cat -u go-sendxmpp-listen.service | grep 'cthon98@example.com: Hello, this is dog.'"
      )

      server.succeed(
          ejabberd_prefix + "unregister cthon98 example.com",
          ejabberd_prefix + "unregister azurediamond example.com",
+22 −0
Original line number Diff line number Diff line
{ lib, pkgs, ... }:

{
  systemd.services.go-sendxmpp-listen = {
    after = [ "network-online.target" ];
    requires = [ "network-online.target" ];
    wantedBy = [ "multi-user.target" ];

    serviceConfig = {
      ExecStart = ''
        ${lib.getExe pkgs.go-sendxmpp} --username azurediamond@example.com --password hunter2 --listen
      '';
      Environment = [
        "HOME=/var/lib/go-sendxmpp/"
      ];
      DynamicUser = true;
      Restart = "on-failure";
      RestartSec = "5s";
      StateDirectory = "go-sendxmpp";
    };
  };
}
+28 −4
Original line number Diff line number Diff line
{ ... }:

let
  cert =
    pkgs:
    pkgs.runCommand "selfSignedCerts" { buildInputs = [ pkgs.openssl ]; } ''
      openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -nodes -days 365 \
        -subj '/C=GB/CN=example.com' -addext "subjectAltName = DNS:example.com,DNS:uploads.example.com,DNS:conference.example.com"
        -subj '/C=GB/CN=example.com/CN=uploads.example.com/CN=conference.example.com' -addext "subjectAltName = DNS:example.com,DNS:uploads.example.com,DNS:conference.example.com"
      mkdir -p $out
      cp key.pem cert.pem $out
    '';
@@ -29,10 +31,21 @@ let
      prosodyctl deluser azurediamond@example.com
    '';
in
import ../make-test-python.nix {
{
  name = "prosody";
  nodes = {
    client =
    client-a =
      { nodes, pkgs, ... }:
      {
        security.pki.certificateFiles = [ "${cert pkgs}/cert.pem" ];
        networking.extraHosts = ''
          ${nodes.server.networking.primaryIPAddress} example.com
        '';

        imports = [ ./go-sendxmpp-listen.nix ];
      };

    client-b =
      {
        nodes,
        pkgs,
@@ -93,7 +106,18 @@ import ../make-test-python.nix {
    server.succeed('prosodyctl status | grep "Prosody is running"')

    server.succeed("create-prosody-users")
    client.succeed("send-message")

    for machine in client_a, client_b:
      machine.systemctl("start network-online.target")
      machine.wait_for_unit("network-online.target")

    client_a.wait_for_unit("go-sendxmpp-listen")
    client_b.succeed("send-message")

    client_a.wait_until_succeeds(
      "journalctl -o cat -u go-sendxmpp-listen.service | grep 'cthon98@example.com: Hello, this is dog.'"
    )

    server.succeed("delete-prosody-users")
  '';
}
+39 −0
Original line number Diff line number Diff line
{
  buildGoModule,
  fetchFromGitLab,
  lib,
  nix-update-script,
  testers,
}:

buildGoModule (finalAttrs: {
  pname = "go-sendxmpp";
  version = "0.14.1";

  src = fetchFromGitLab {
    domain = "salsa.debian.org";
    owner = "mdosch";
    repo = "go-sendxmpp";
    tag = "v${finalAttrs.version}";
    hash = "sha256-nQ2URhkOp0mb4u4IG3wzGIdhP6svDVMctbu2CHQXj2Y=";
  };

  vendorHash = "sha256-aMhUsYsQvnhEVkWbjbh84bbStQ4b/0ZHEvzEhXSlFyw=";

  passthru = {
    tests.version = testers.testVersion {
      package = finalAttrs.finalPackage;
    };
    updateScript = nix-update-script { };
  };

  meta = {
    description = "Tool to send messages or files to an XMPP contact or MUC";
    homepage = "https://salsa.debian.org/mdosch/go-sendxmpp";
    license = lib.licenses.bsd2;
    maintainers = with lib.maintainers; [
      jpds
    ];
    mainProgram = "go-sendxmpp";
  };
})