3248506a00
This changes the default behavior which opened by default the firewall rules. The users now need to declare explicitely they want to open the firewall.
82 lines
2.8 KiB
Nix
82 lines
2.8 KiB
Nix
import ./make-test-python.nix ({ pkgs, ... }:
|
|
|
|
{
|
|
name = "mediatomb";
|
|
|
|
nodes = {
|
|
serverGerbera =
|
|
{ ... }:
|
|
let port = 49152;
|
|
in {
|
|
imports = [ ../modules/profiles/minimal.nix ];
|
|
services.mediatomb = {
|
|
enable = true;
|
|
serverName = "Gerbera";
|
|
package = pkgs.gerbera;
|
|
interface = "eth1"; # accessible from test
|
|
openFirewall = true;
|
|
mediaDirectories = [
|
|
{ path = "/var/lib/gerbera/pictures"; recursive = false; hidden-files = false; }
|
|
{ path = "/var/lib/gerbera/audio"; recursive = true; hidden-files = false; }
|
|
];
|
|
};
|
|
};
|
|
|
|
serverMediatomb =
|
|
{ ... }:
|
|
let port = 49151;
|
|
in {
|
|
imports = [ ../modules/profiles/minimal.nix ];
|
|
services.mediatomb = {
|
|
enable = true;
|
|
serverName = "Mediatomb";
|
|
package = pkgs.mediatomb;
|
|
interface = "eth1";
|
|
inherit port;
|
|
mediaDirectories = [
|
|
{ path = "/var/lib/mediatomb/pictures"; recursive = false; hidden-files = false; }
|
|
{ path = "/var/lib/mediatomb/audio"; recursive = true; hidden-files = false; }
|
|
];
|
|
};
|
|
networking.firewall.interfaces.eth1 = {
|
|
allowedUDPPorts = [ 1900 port ];
|
|
allowedTCPPorts = [ port ];
|
|
};
|
|
};
|
|
|
|
client = { ... }: { };
|
|
};
|
|
|
|
testScript =
|
|
''
|
|
start_all()
|
|
|
|
port = 49151
|
|
serverMediatomb.succeed("mkdir -p /var/lib/mediatomb/{pictures,audio}")
|
|
serverMediatomb.succeed("chown -R mediatomb:mediatomb /var/lib/mediatomb")
|
|
serverMediatomb.wait_for_unit("mediatomb")
|
|
serverMediatomb.wait_for_open_port(port)
|
|
serverMediatomb.succeed(f"curl --fail http://serverMediatomb:{port}/")
|
|
page = client.succeed(f"curl --fail http://serverMediatomb:{port}/")
|
|
assert "MediaTomb" in page and "Gerbera" not in page
|
|
serverMediatomb.shutdown()
|
|
|
|
port = 49152
|
|
serverGerbera.succeed("mkdir -p /var/lib/mediatomb/{pictures,audio}")
|
|
serverGerbera.succeed("chown -R mediatomb:mediatomb /var/lib/mediatomb")
|
|
# service running gerbera fails the first time claiming something is already bound
|
|
# gerbera[715]: 2020-07-18 23:52:14 info: Please check if another instance of Gerbera or
|
|
# gerbera[715]: 2020-07-18 23:52:14 info: another application is running on port TCP 49152 or UDP 1900.
|
|
# I did not find anything so here I work around this
|
|
serverGerbera.succeed("sleep 2")
|
|
serverGerbera.wait_until_succeeds("systemctl restart mediatomb")
|
|
serverGerbera.wait_for_unit("mediatomb")
|
|
serverGerbera.succeed(f"curl --fail http://serverGerbera:{port}/")
|
|
page = client.succeed(f"curl --fail http://serverGerbera:{port}/")
|
|
assert "Gerbera" in page and "MediaTomb" not in page
|
|
|
|
serverGerbera.shutdown()
|
|
client.shutdown()
|
|
'';
|
|
})
|