8b5644684e
According to upstream, the INI configuration file is deprecated and TOML/YAML/JSON is recommended. Link: https://github.com/fatedier/frp/tree/dev#configuration-files
85 lines
2 KiB
Nix
85 lines
2 KiB
Nix
import ./make-test-python.nix ({ pkgs, lib, ... }: {
|
|
name = "frp";
|
|
meta.maintainers = with lib.maintainers; [ zaldnoay janik ];
|
|
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"
|
|
'';
|
|
})
|