socks5 прокси с помощью go

Я хотел знать, можно ли прослушивать локальный порт, например: 1080 socks5, и все соединения на этом порту должны быть сделаны прокси для использования внешнего хоста: порт socks5

      func main() {
    l, err := net.Listen("tcp", "127.0.0.1:1080")
    if err != nil {
        fmt.Print(err)
    }
    defer l.Close()

    for {
        conn, err := l.Accept()
        if err != nil {
            fmt.Print(err)
        }

        go handle(conn)
    }
}

func handle(conn net.Conn) {
    defer conn.Close()

    dialect, err := proxy.SOCKS5("tcp", "externalhost:externalport", nil, proxy.Direct)

    newConn, err := dialect.Dial("tcp", "targethost:targetport")
    if err != nil {
        log.Printf("Connection error: %s", err.Error())
    }

    go func() {
        _, err = io.Copy(newConn, conn)
        if err != nil {
            log.Printf("Connection error: %s", err.Error())
        }
    }()

    _, err = io.Copy(conn, newConn)
    if err != nil {
        log.Printf("Connection error: %s", err.Error())
    }
}
func handle(conn net.Conn) {
    defer conn.Close()
}

Мне нужно будет получить адреса назначения и проверить, является ли соединение socks5, а затем выполнить прокси-сервер с внешним IP-адресом и передать его в dialect.dial

0 ответов

Другие вопросы по тегам