Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "flag"
- "io"
- "log"
- "net"
- )
- var (
- addr = flag.String("addr", ":8100", "Local proxy address")
- raddr = flag.String("raddr", "localhost:10000", "Remove endpoint address")
- )
- func main() {
- flag.Parse()
- list, err := net.Listen("tcp", *addr)
- if err != nil {
- log.Fatalf("cannot listen to %s: %v", *addr, err)
- }
- for {
- conn, err := list.Accept()
- if err != nil {
- log.Fatalf("cannot accept conn: %v", err)
- }
- go proxy(conn)
- }
- }
- // proxy proxies connection to remote service. Not that this is not production ready
- // as it is missing timeouts, slow client atacks etc.
- func proxy(conn net.Conn) {
- log.Printf("proxy %s: %s\n", conn.LocalAddr().String(), conn.RemoteAddr().String())
- remote, err := net.Dial("tcp", *raddr)
- if err != nil {
- log.Fatalf("cannot dial to remote: %v", err)
- }
- defer remote.Close()
- go io.Copy(remote, conn)
- io.Copy(conn, remote)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement