Files
Archive/shadowsocks-rust/homebrew/shadowsocks-rust.rb
2024-03-05 02:32:38 -08:00

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