Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Adds a command line client for the outline-ss-server. This should help with easier prototyping of features without having to go through the whole stack.
It starts a SOCKS server, accepts TCP connections and proxies them to the configured outline server.
Non-goals for this PR (can be added later):
--
Two decisions I made which are worth discussing:
Should it have a separate
main
or should we implement it as part of the same (server) binary and distinguish between running the server and client using a flag (similar to what go-shadowsocks2 does). I prefer separate myself and thats what I went with (though maybe we want to restructure packages a bit), let me know if you think it's better to go with a single binary.How should the client take in the server configurations (e.g, host, port, password)
go run cmd/client -p port -s server -m cipher -k password
go run cmd/client -c config.yaml
This will have to be a different config format that the one used for the server since the client can't take multiple keys
go run cmd/client -k ss://Y2hhY2hhMjAtaWV0Zi1wb2x5MTMwNTpteXBhc3N3b3JkCg@1.2.3.4:8080
This is the one I'm going with right now. I'm not sure if the way I parse the key is fully compilable with SIP002 but I think its compilable enough (?).