mirror of
https://github.com/bolucat/Archive.git
synced 2025-10-07 09:01:51 +08:00
72 lines
2.0 KiB
Ruby
72 lines
2.0 KiB
Ruby
class ShadowsocksRust < Formula
|
|
desc "Rust port of Shadowsocks"
|
|
homepage "https://github.com/shadowsocks/shadowsocks-rust"
|
|
url "https://github.com/shadowsocks/shadowsocks-rust/archive/v1.17.2.tar.gz"
|
|
sha256 "79d3d5204fad725bd2712f29066e71d14a329c3ea956b708cb6ea64bb0316a0b"
|
|
license "MIT"
|
|
head "https://github.com/shadowsocks/shadowsocks-rust.git", branch: "master"
|
|
|
|
depends_on "rust" => :build
|
|
|
|
def install
|
|
system "cargo", "install", *std_cargo_args
|
|
(buildpath/"shadowsocks-rust.json").write <<~EOS
|
|
{
|
|
"server":"localhost",
|
|
"server_port":8388,
|
|
"password":"barfoo!",
|
|
"timeout":600,
|
|
"acl": "/usr/local/etc/chn.acl",
|
|
"locals": [
|
|
{
|
|
"protocol": "socks",
|
|
"local_address": "127.0.0.1",
|
|
"local_port": 1080
|
|
},
|
|
{
|
|
"protocol": "http",
|
|
"local_address": "127.0.0.1",
|
|
"local_port": 3128
|
|
}
|
|
]
|
|
}
|
|
EOS
|
|
etc.install "shadowsocks-rust.json"
|
|
end
|
|
|
|
service do
|
|
run [opt_bin/"sslocal", "--config", etc/"shadowsocks-rust.json"]
|
|
keep_alive true
|
|
end
|
|
|
|
test do
|
|
server_port = free_port
|
|
local_port = free_port
|
|
|
|
(testpath/"server.json").write <<~EOS
|
|
{
|
|
"server":"127.0.0.1",
|
|
"server_port":#{server_port},
|
|
"password":"mypassword",
|
|
"method":"aes-256-gcm"
|
|
}
|
|
EOS
|
|
(testpath/"local.json").write <<~EOS
|
|
{
|
|
"server":"127.0.0.1",
|
|
"server_port":#{server_port},
|
|
"password":"mypassword",
|
|
"method":"aes-256-gcm",
|
|
"local_address":"127.0.0.1",
|
|
"local_port":#{local_port}
|
|
}
|
|
EOS
|
|
fork { exec bin/"ssserver", "-c", testpath/"server.json" }
|
|
fork { exec bin/"sslocal", "-c", testpath/"local.json" }
|
|
sleep 3
|
|
|
|
output = shell_output "curl --socks5 127.0.0.1:#{local_port} https://example.com"
|
|
assert_match "Example Domain", output
|
|
end
|
|
end
|