at 25.11-pre 2.2 kB view raw
1import ./make-test-python.nix ( 2 { pkgs, lib, ... }: 3 { 4 name = "frp"; 5 meta.maintainers = with lib.maintainers; [ zaldnoay ]; 6 nodes = { 7 frps = { 8 networking = { 9 useNetworkd = true; 10 useDHCP = false; 11 firewall.enable = false; 12 }; 13 14 systemd.network.networks."01-eth1" = { 15 name = "eth1"; 16 networkConfig.Address = "10.0.0.1/24"; 17 }; 18 19 services.frp = { 20 enable = true; 21 role = "server"; 22 settings = { 23 bindPort = 7000; 24 vhostHTTPPort = 80; 25 }; 26 }; 27 }; 28 29 frpc = { 30 networking = { 31 useNetworkd = true; 32 useDHCP = false; 33 }; 34 35 systemd.network.networks."01-eth1" = { 36 name = "eth1"; 37 networkConfig.Address = "10.0.0.2/24"; 38 }; 39 40 services.httpd = { 41 enable = true; 42 adminAddr = "admin@example.com"; 43 virtualHosts."test-appication" = 44 let 45 testdir = pkgs.writeTextDir "web/index.php" "<?php phpinfo();"; 46 in 47 { 48 documentRoot = "${testdir}/web"; 49 locations."/" = { 50 index = "index.php index.html"; 51 }; 52 }; 53 phpPackage = pkgs.php81; 54 enablePHP = true; 55 }; 56 57 services.frp = { 58 enable = true; 59 role = "client"; 60 settings = { 61 serverAddr = "10.0.0.1"; 62 serverPort = 7000; 63 proxies = [ 64 { 65 name = "web"; 66 type = "http"; 67 localPort = 80; 68 customDomains = [ "10.0.0.1" ]; 69 } 70 ]; 71 }; 72 }; 73 }; 74 }; 75 76 testScript = '' 77 start_all() 78 frps.wait_for_unit("frp.service") 79 frps.wait_for_open_port(80) 80 frpc.wait_for_unit("frp.service") 81 response = frpc.succeed("curl -fvvv -s http://127.0.0.1/") 82 assert "PHP Version ${pkgs.php81.version}" in response, "PHP version not detected" 83 response = frpc.succeed("curl -fvvv -s http://10.0.0.1/") 84 assert "PHP Version ${pkgs.php81.version}" in response, "PHP version not detected" 85 ''; 86 } 87)