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 = {
networkConfig.Address = "10.0.0.2/24";
services.httpd = {
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;
role = "client";
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/")
'';
)