go-sendxmpp: init at 0.14.1 (#420727)

Changed files
+116 -8
nixos
pkgs
by-name
go
go-sendxmpp
+1 -1
nixos/tests/all-tests.nix
···
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
nixos/tests/xmpp/ejabberd.nix
···
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
'';
···
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" ];
···
})
];
};
+
server =
{ config, pkgs, ... }:
{
···
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
nixos/tests/xmpp/go-sendxmpp-listen.nix
···
+
{ 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
nixos/tests/xmpp/prosody.nix
···
+
{ ... }:
+
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
'';
···
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,
···
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
pkgs/by-name/go/go-sendxmpp/package.nix
···
+
{
+
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";
+
};
+
})