86 lines
2 KiB
Nix
86 lines
2 KiB
Nix
|
import ./make-test-python.nix ({ pkgs, lib, ... }: {
|
||
|
name = "frp";
|
||
|
meta.maintainers = with lib.maintainers; [ zaldnoay ];
|
||
|
nodes = {
|
||
|
frps = {
|
||
|
networking = {
|
||
|
useNetworkd = true;
|
||
|
useDHCP = false;
|
||
|
firewall.enable = false;
|
||
|
};
|
||
|
|
||
|
systemd.network.networks."01-eth1" = {
|
||
|
name = "eth1";
|
||
|
networkConfig.Address = "10.0.0.1/24";
|
||
|
};
|
||
|
|
||
|
services.frp = {
|
||
|
enable = true;
|
||
|
role = "server";
|
||
|
settings = {
|
||
|
bindPort = 7000;
|
||
|
vhostHTTPPort = 80;
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
|
||
|
|
||
|
frpc = {
|
||
|
networking = {
|
||
|
useNetworkd = true;
|
||
|
useDHCP = false;
|
||
|
};
|
||
|
|
||
|
systemd.network.networks."01-eth1" = {
|
||
|
name = "eth1";
|
||
|
networkConfig.Address = "10.0.0.2/24";
|
||
|
};
|
||
|
|
||
|
services.httpd = {
|
||
|
enable = true;
|
||
|
adminAddr = "admin@example.com";
|
||
|
virtualHosts."test-appication" =
|
||
|
let
|
||
|
testdir = pkgs.writeTextDir "web/index.php" "<?php phpinfo();";
|
||
|
in
|
||
|
{
|
||
|
documentRoot = "${testdir}/web";
|
||
|
locations."/" = {
|
||
|
index = "index.php index.html";
|
||
|
};
|
||
|
};
|
||
|
phpPackage = pkgs.php81;
|
||
|
enablePHP = true;
|
||
|
};
|
||
|
|
||
|
services.frp = {
|
||
|
enable = true;
|
||
|
role = "client";
|
||
|
settings = {
|
||
|
serverAddr = "10.0.0.1";
|
||
|
serverPort = 7000;
|
||
|
proxies = [
|
||
|
{
|
||
|
name = "web";
|
||
|
type = "http";
|
||
|
localPort = 80;
|
||
|
customDomains = [ "10.0.0.1" ];
|
||
|
}
|
||
|
];
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
|
||
|
testScript = ''
|
||
|
start_all()
|
||
|
frps.wait_for_unit("frp.service")
|
||
|
frps.wait_for_open_port(80)
|
||
|
frpc.wait_for_unit("frp.service")
|
||
|
response = frpc.succeed("curl -fvvv -s http://127.0.0.1/")
|
||
|
assert "PHP Version ${pkgs.php81.version}" in response, "PHP version not detected"
|
||
|
response = frpc.succeed("curl -fvvv -s http://10.0.0.1/")
|
||
|
assert "PHP Version ${pkgs.php81.version}" in response, "PHP version not detected"
|
||
|
'';
|
||
|
})
|