Merge pull request #160750 from Izorkin/update-prosody
This commit is contained in:
commit
018a959be7
|
@ -433,6 +433,7 @@ in
|
||||||
prometheus = handleTest ./prometheus.nix {};
|
prometheus = handleTest ./prometheus.nix {};
|
||||||
prometheus-exporters = handleTest ./prometheus-exporters.nix {};
|
prometheus-exporters = handleTest ./prometheus-exporters.nix {};
|
||||||
prosody = handleTest ./xmpp/prosody.nix {};
|
prosody = handleTest ./xmpp/prosody.nix {};
|
||||||
|
prosody-mysql = handleTest ./xmpp/prosody-mysql.nix {};
|
||||||
proxy = handleTest ./proxy.nix {};
|
proxy = handleTest ./proxy.nix {};
|
||||||
prowlarr = handleTest ./prowlarr.nix {};
|
prowlarr = handleTest ./prowlarr.nix {};
|
||||||
pt2-clone = handleTest ./pt2-clone.nix {};
|
pt2-clone = handleTest ./pt2-clone.nix {};
|
||||||
|
|
124
nixos/tests/xmpp/prosody-mysql.nix
Normal file
124
nixos/tests/xmpp/prosody-mysql.nix
Normal file
|
@ -0,0 +1,124 @@
|
||||||
|
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=uploads.example.com/CN=conference.example.com' -days 36500
|
||||||
|
mkdir -p $out
|
||||||
|
cp key.pem cert.pem $out
|
||||||
|
'';
|
||||||
|
createUsers = pkgs: pkgs.writeScriptBin "create-prosody-users" ''
|
||||||
|
#!${pkgs.bash}/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Creates and set password for the 2 xmpp test users.
|
||||||
|
#
|
||||||
|
# Doing that in a bash script instead of doing that in the test
|
||||||
|
# script allow us to easily provision the users when running that
|
||||||
|
# test interactively.
|
||||||
|
|
||||||
|
prosodyctl register cthon98 example.com nothunter2
|
||||||
|
prosodyctl register azurediamond example.com hunter2
|
||||||
|
'';
|
||||||
|
delUsers = pkgs: pkgs.writeScriptBin "delete-prosody-users" ''
|
||||||
|
#!${pkgs.bash}/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Deletes the test users.
|
||||||
|
#
|
||||||
|
# Doing that in a bash script instead of doing that in the test
|
||||||
|
# script allow us to easily provision the users when running that
|
||||||
|
# test interactively.
|
||||||
|
|
||||||
|
prosodyctl deluser cthon98@example.com
|
||||||
|
prosodyctl deluser azurediamond@example.com
|
||||||
|
'';
|
||||||
|
in import ../make-test-python.nix {
|
||||||
|
name = "prosody-mysql";
|
||||||
|
nodes = {
|
||||||
|
client = { nodes, pkgs, config, ... }: {
|
||||||
|
security.pki.certificateFiles = [ "${cert pkgs}/cert.pem" ];
|
||||||
|
console.keyMap = "fr-bepo";
|
||||||
|
networking.extraHosts = ''
|
||||||
|
${nodes.server.config.networking.primaryIPAddress} example.com
|
||||||
|
${nodes.server.config.networking.primaryIPAddress} conference.example.com
|
||||||
|
${nodes.server.config.networking.primaryIPAddress} uploads.example.com
|
||||||
|
'';
|
||||||
|
environment.systemPackages = [
|
||||||
|
(pkgs.callPackage ./xmpp-sendmessage.nix { connectTo = nodes.server.config.networking.primaryIPAddress; })
|
||||||
|
];
|
||||||
|
};
|
||||||
|
server = { config, pkgs, ... }: {
|
||||||
|
nixpkgs.overlays = [
|
||||||
|
(self: super: {
|
||||||
|
prosody = super.prosody.override {
|
||||||
|
withExtraLuaPackages = p: [ p.luadbi-mysql ];
|
||||||
|
};
|
||||||
|
})
|
||||||
|
];
|
||||||
|
security.pki.certificateFiles = [ "${cert pkgs}/cert.pem" ];
|
||||||
|
console.keyMap = "fr-bepo";
|
||||||
|
networking.extraHosts = ''
|
||||||
|
${config.networking.primaryIPAddress} example.com
|
||||||
|
${config.networking.primaryIPAddress} conference.example.com
|
||||||
|
${config.networking.primaryIPAddress} uploads.example.com
|
||||||
|
'';
|
||||||
|
networking.firewall.enable = false;
|
||||||
|
environment.systemPackages = [
|
||||||
|
(createUsers pkgs)
|
||||||
|
(delUsers pkgs)
|
||||||
|
];
|
||||||
|
services.prosody = {
|
||||||
|
enable = true;
|
||||||
|
ssl.cert = "${cert pkgs}/cert.pem";
|
||||||
|
ssl.key = "${cert pkgs}/key.pem";
|
||||||
|
virtualHosts.example = {
|
||||||
|
domain = "example.com";
|
||||||
|
enabled = true;
|
||||||
|
ssl.cert = "${cert pkgs}/cert.pem";
|
||||||
|
ssl.key = "${cert pkgs}/key.pem";
|
||||||
|
};
|
||||||
|
muc = [
|
||||||
|
{
|
||||||
|
domain = "conference.example.com";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
uploadHttp = {
|
||||||
|
domain = "uploads.example.com";
|
||||||
|
};
|
||||||
|
extraConfig = ''
|
||||||
|
storage = "sql"
|
||||||
|
sql = {
|
||||||
|
driver = "MySQL";
|
||||||
|
database = "prosody";
|
||||||
|
host = "mysql";
|
||||||
|
port = 3306;
|
||||||
|
username = "prosody";
|
||||||
|
password = "password123";
|
||||||
|
};
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
mysql = { config, pkgs, ... }: {
|
||||||
|
networking.firewall.enable = false;
|
||||||
|
services.mysql = {
|
||||||
|
enable = true;
|
||||||
|
initialScript = pkgs.writeText "mysql_init.sql" ''
|
||||||
|
CREATE DATABASE prosody;
|
||||||
|
CREATE USER 'prosody'@'server' IDENTIFIED BY 'password123';
|
||||||
|
GRANT ALL PRIVILEGES ON prosody.* TO 'prosody'@'server';
|
||||||
|
FLUSH PRIVILEGES;
|
||||||
|
'';
|
||||||
|
package = pkgs.mariadb;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
testScript = { nodes, ... }: ''
|
||||||
|
# Check with mysql storage
|
||||||
|
mysql.wait_for_unit("mysql.service")
|
||||||
|
server.wait_for_unit("prosody.service")
|
||||||
|
server.succeed('prosodyctl status | grep "Prosody is running"')
|
||||||
|
|
||||||
|
server.succeed("create-prosody-users")
|
||||||
|
client.succeed("send-message")
|
||||||
|
server.succeed("delete-prosody-users")
|
||||||
|
'';
|
||||||
|
}
|
|
@ -81,6 +81,7 @@ in import ../make-test-python.nix {
|
||||||
};
|
};
|
||||||
|
|
||||||
testScript = { nodes, ... }: ''
|
testScript = { nodes, ... }: ''
|
||||||
|
# Check with sqlite storage
|
||||||
server.wait_for_unit("prosody.service")
|
server.wait_for_unit("prosody.service")
|
||||||
server.succeed('prosodyctl status | grep "Prosody is running"')
|
server.succeed('prosodyctl status | grep "Prosody is running"')
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,6 @@
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
|
|
||||||
|
|
||||||
let
|
let
|
||||||
luaEnv = lua.withPackages(p: with p; [
|
luaEnv = lua.withPackages(p: with p; [
|
||||||
luasocket luasec luaexpat luafilesystem luabitop luadbi-sqlite3
|
luasocket luasec luaexpat luafilesystem luabitop luadbi-sqlite3
|
||||||
|
@ -22,7 +21,7 @@ let
|
||||||
);
|
);
|
||||||
in
|
in
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
version = "0.11.12"; # also update communityModules
|
version = "0.11.13"; # also update communityModules
|
||||||
pname = "prosody";
|
pname = "prosody";
|
||||||
# The following community modules are necessary for the nixos module
|
# The following community modules are necessary for the nixos module
|
||||||
# prosody module to comply with XEP-0423 and provide a working
|
# prosody module to comply with XEP-0423 and provide a working
|
||||||
|
@ -36,7 +35,7 @@ stdenv.mkDerivation rec {
|
||||||
];
|
];
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://prosody.im/downloads/source/${pname}-${version}.tar.gz";
|
url = "https://prosody.im/downloads/source/${pname}-${version}.tar.gz";
|
||||||
sha256 = "03an206bl3h2lqcgv1wfvc2bqjq6m9vjb2idw0vyvczm43c55kan";
|
sha256 = "sha256-OcYbNGoJtRJbYEy5aeFCBsu8uGyBFW/8a6LWJSfPBDI=";
|
||||||
};
|
};
|
||||||
|
|
||||||
# A note to all those merging automated updates: Please also update this
|
# A note to all those merging automated updates: Please also update this
|
||||||
|
@ -44,8 +43,8 @@ stdenv.mkDerivation rec {
|
||||||
# version.
|
# version.
|
||||||
communityModules = fetchhg {
|
communityModules = fetchhg {
|
||||||
url = "https://hg.prosody.im/prosody-modules";
|
url = "https://hg.prosody.im/prosody-modules";
|
||||||
rev = "bd0a1f917d98";
|
rev = "54fa2116bbf3";
|
||||||
sha256 = "0figx0b0y5zfk5anf16h20y4crjmpb6bkg30vl7p0m594qnyqjcx";
|
sha256 = "sha256-OKZ7tD75q8/GMXruUQ+r9l0BxzdbPHNf41fZ3fHVQVw=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ makeWrapper ];
|
nativeBuildInputs = [ makeWrapper ];
|
||||||
|
@ -54,7 +53,6 @@ stdenv.mkDerivation rec {
|
||||||
]
|
]
|
||||||
++ withExtraLibs;
|
++ withExtraLibs;
|
||||||
|
|
||||||
|
|
||||||
configureFlags = [
|
configureFlags = [
|
||||||
"--ostype=linux"
|
"--ostype=linux"
|
||||||
"--with-lua-include=${luaEnv}/include"
|
"--with-lua-include=${luaEnv}/include"
|
||||||
|
@ -89,9 +87,7 @@ stdenv.mkDerivation rec {
|
||||||
|
|
||||||
passthru = {
|
passthru = {
|
||||||
communityModules = withCommunityModules;
|
communityModules = withCommunityModules;
|
||||||
tests = {
|
tests = { inherit (nixosTests) prosody prosody-mysql; };
|
||||||
main = nixosTests.prosody;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
|
|
Loading…
Reference in a new issue