grim/gobnc

Just cleaning up old incomplete commits
draft
2020-04-27, Gary Kramlich
289b2d7f32b6
Just cleaning up old incomplete commits
package server
import (
"fmt"
"net"
"sync"
)
type Server struct {
cfg *Config
sock net.Listener
proxies map[string]*Proxy
proxyLock sync.Mutex
}
func NewServer(cfg *Config) *Server {
return &Server{
cfg: cfg,
proxies: map[string]*Proxy{},
}
}
func (s *Server) Listen() error {
if s.sock != nil {
return fmt.Errorf("server already listening")
}
sock, err := net.Listen("tcp", s.cfg.ListenAddress())
if err != nil {
return err
}
s.sock = sock
defer s.sock.Close()
for {
conn, err := s.sock.Accept()
if err != nil {
return err
}
proxy := NewProxy(s, conn)
go proxy.Run()
}
return nil
}