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" ''; })