at 23.11-beta 2.1 kB view raw
1import ./make-test-python.nix ({ pkgs, lib, ... }: { 2 name = "frp"; 3 meta.maintainers = with lib.maintainers; [ zaldnoay janik ]; 4 nodes = { 5 frps = { 6 networking = { 7 useNetworkd = true; 8 useDHCP = false; 9 firewall.enable = false; 10 }; 11 12 systemd.network.networks."01-eth1" = { 13 name = "eth1"; 14 networkConfig.Address = "10.0.0.1/24"; 15 }; 16 17 services.frp = { 18 enable = true; 19 role = "server"; 20 settings = { 21 common = { 22 bind_port = 7000; 23 vhost_http_port = 80; 24 }; 25 }; 26 }; 27 }; 28 29 30 frpc = { 31 networking = { 32 useNetworkd = true; 33 useDHCP = false; 34 }; 35 36 systemd.network.networks."01-eth1" = { 37 name = "eth1"; 38 networkConfig.Address = "10.0.0.2/24"; 39 }; 40 41 services.httpd = { 42 enable = true; 43 adminAddr = "admin@example.com"; 44 virtualHosts."test-appication" = 45 let 46 testdir = pkgs.writeTextDir "web/index.php" "<?php phpinfo();"; 47 in 48 { 49 documentRoot = "${testdir}/web"; 50 locations."/" = { 51 index = "index.php index.html"; 52 }; 53 }; 54 phpPackage = pkgs.php81; 55 enablePHP = true; 56 }; 57 58 services.frp = { 59 enable = true; 60 role = "client"; 61 settings = { 62 common = { 63 server_addr = "10.0.0.1"; 64 server_port = 7000; 65 }; 66 web = { 67 type = "http"; 68 local_port = 80; 69 custom_domains = "10.0.0.1"; 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})