{"id":17257213,"url":"https://github.com/gaukas/socks5","last_synced_at":"2025-07-19T23:34:39.992Z","repository":{"id":64300698,"uuid":"571006464","full_name":"gaukas/socks5","owner":"gaukas","description":"A sub-RFC1928 SOCKS5 server implementation in Go with zero external dependencies. ","archived":false,"fork":false,"pushed_at":"2023-09-05T00:20:35.000Z","size":94,"stargazers_count":13,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-14T06:11:26.416Z","etag":null,"topics":["go","golang","proxy","proxy-server","rfc-1928","rfc-1929","socks5","socks5-proxy","socks5-server"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gaukas.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-11-26T21:08:07.000Z","updated_at":"2025-02-21T14:27:33.000Z","dependencies_parsed_at":"2024-06-21T15:14:49.774Z","dependency_job_id":null,"html_url":"https://github.com/gaukas/socks5","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/gaukas/socks5","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gaukas%2Fsocks5","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gaukas%2Fsocks5/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gaukas%2Fsocks5/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gaukas%2Fsocks5/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gaukas","download_url":"https://codeload.github.com/gaukas/socks5/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gaukas%2Fsocks5/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266041826,"owners_count":23867953,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["go","golang","proxy","proxy-server","rfc-1928","rfc-1929","socks5","socks5-proxy","socks5-server"],"created_at":"2024-10-15T07:16:41.000Z","updated_at":"2025-07-19T23:34:39.966Z","avatar_url":"https://github.com/gaukas.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# socks5\n\nA sub-RFC1928 SOCKS5 server supporting custom transport layer implemented in pure Go with no external dependency. \n\n## Overview\n\nThis package implements the SOCKS5 protocol as described in [RFC1928](https://tools.ietf.org/html/rfc1928) in Go with no external dependency. Unlike a traditional SOCKS5 server, this implementation separates the SOCKS5 server from the **actual** proxy server, which allows it to be used with any custom transport and/or in other applications.\n\n### SOCKS5 Features\n\n- Authentication Methods\n    - [x] NO AUTHENTICATION REQUIRED\n    - [x] USERNAME/PASSWORD (untested)\n    - [ ] GSSAPI (custom support possible via `PrivateMethods` in `Authenticator`)\n- Commands\n    - [x] CONNECT\n    - [x] BIND\n    - [x] UDP ASSOCIATE\n\n## Usage\n\nIt is mandatory to provide a `Proxy` implementation to spin up a SOCKS5 `Server` with this package. \n\nA `Proxy` interface provides a general-purpose proxy backend service with following methods:\n\n```go\ntype Proxy interface {\n\tConnect(dst net.Addr) (conn net.Conn, err error)\n\tBind(dst net.Addr) (net.Listener, error)\n\tUDPAssociate() (net.PacketConn, error)\n}\n```\n\nEssentially, by allowing custom `Proxy`, this package enables high programmability and flexibility for how SOCKS5 server proxies network traffic. It is possible to implement a `Proxy` that proxies traffic via another remote server via some more complex protocol such as TLS.\n\nAn example of a `Proxy` implementation can be found as `localProxy` in `proxy.go`. If a `Server` is spun up with this `localProxy`, it will act as a traditional SOCKS5 server that proxies traffic directly from the machine it runs on.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgaukas%2Fsocks5","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgaukas%2Fsocks5","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgaukas%2Fsocks5/lists"}