| 123456789101112131415161718192021222324252627282930313233 |
- package amneziawgnet
- import "encoding/json"
- // BuildSocksBridge swaps an "amneziawg" outbound for its loopback socks
- // form, preserving sibling keys; false = unbridgeable, fail loudly upstream.
- func BuildSocksBridge(raw []byte) ([]byte, bool) {
- var ob map[string]any
- if err := json.Unmarshal(raw, &ob); err != nil {
- return nil, false
- }
- tag, _ := ob["tag"].(string)
- if tag == "" {
- return nil, false
- }
- settings := map[string]any{
- "address": "127.0.0.1",
- "port": EgressBasePort,
- "user": tag,
- "pass": SocksPassword(),
- }
- bs, err := json.Marshal(settings)
- if err != nil {
- return nil, false
- }
- ob["protocol"] = "socks"
- ob["settings"] = json.RawMessage(bs)
- out, err := json.Marshal(ob)
- if err != nil {
- return nil, false
- }
- return out, true
- }
|