m/pkg/socksproxy: init
This implements a simple SOCKS5 proxy server, which will be used within
nanoswitch to expose multiple nodes to test code and metroctl.
Some existing alternatives were considered, but none were in a healthy
enough state to be usable within Metropolis. And, in the end, we only
need a small subset of an already simple standard, so implementing this
ourselves isn't a massive waste of time.
Change-Id: Ifa4d4edf837b55b93cae9981028efef336ff2a3d
Reviewed-on: https://review.monogon.dev/c/monogon/+/646
Reviewed-by: Mateusz Zalega <mateusz@monogon.tech>
diff --git a/metropolis/pkg/socksproxy/BUILD.bazel b/metropolis/pkg/socksproxy/BUILD.bazel
new file mode 100644
index 0000000..c953dbf
--- /dev/null
+++ b/metropolis/pkg/socksproxy/BUILD.bazel
@@ -0,0 +1,18 @@
+load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")
+
+go_library(
+ name = "socksproxy",
+ srcs = [
+ "protocol.go",
+ "socksproxy.go",
+ ],
+ importpath = "source.monogon.dev/metropolis/pkg/socksproxy",
+ visibility = ["//visibility:public"],
+)
+
+go_test(
+ name = "socksproxy_test",
+ srcs = ["socksproxy_test.go"],
+ embed = [":socksproxy"],
+ deps = ["@org_golang_x_net//proxy"],
+)