parent
9a5a8949aa
commit
4ac99e76bc
@ -0,0 +1,83 @@ |
||||
import ./make-test-python.nix ({ lib, pkgs, ... }: let |
||||
|
||||
v2rayUser = { |
||||
# A random UUID. |
||||
id = "a6a46834-2150-45f8-8364-0f6f6ab32384"; |
||||
alterId = 4; |
||||
}; |
||||
|
||||
# 1080 [http proxy] -> 1081 [vmess] -> direct |
||||
v2rayConfig = { |
||||
inbounds = [ |
||||
{ |
||||
tag = "http_in"; |
||||
port = 1080; |
||||
listen = "127.0.0.1"; |
||||
protocol = "http"; |
||||
} |
||||
{ |
||||
tag = "vmess_in"; |
||||
port = 1081; |
||||
listen = "127.0.0.1"; |
||||
protocol = "vmess"; |
||||
settings.clients = [v2rayUser]; |
||||
} |
||||
]; |
||||
outbounds = [ |
||||
{ |
||||
tag = "vmess_out"; |
||||
protocol = "vmess"; |
||||
settings.vnext = [{ |
||||
address = "127.0.0.1"; |
||||
port = 1081; |
||||
users = [v2rayUser]; |
||||
}]; |
||||
} |
||||
{ |
||||
tag = "direct"; |
||||
protocol = "freedom"; |
||||
} |
||||
]; |
||||
routing.rules = [ |
||||
{ |
||||
type = "field"; |
||||
inboundTag = "http_in"; |
||||
outboundTag = "vmess_out"; |
||||
} |
||||
{ |
||||
type = "field"; |
||||
inboundTag = "vmess_in"; |
||||
outboundTag = "direct"; |
||||
} |
||||
]; |
||||
}; |
||||
|
||||
in { |
||||
name = "v2ray"; |
||||
meta = with lib.maintainers; { |
||||
maintainers = [ servalcatty ]; |
||||
}; |
||||
machine = { pkgs, ... }: { |
||||
environment.systemPackages = [ pkgs.curl ]; |
||||
services.v2ray = { |
||||
enable = true; |
||||
config = v2rayConfig; |
||||
}; |
||||
services.httpd = { |
||||
enable = true; |
||||
adminAddr = "foo@example.org"; |
||||
}; |
||||
}; |
||||
|
||||
testScript = '' |
||||
start_all() |
||||
|
||||
machine.wait_for_unit("httpd.service") |
||||
machine.wait_for_unit("v2ray.service") |
||||
machine.wait_for_open_port(80) |
||||
machine.wait_for_open_port(1080) |
||||
machine.succeed( |
||||
"curl --fail --max-time 10 --proxy http://localhost:1080 http://localhost" |
||||
) |
||||
''; |
||||
}) |
Loading…
Reference in new issue