42 lines
743 B
Go
42 lines
743 B
Go
package main
|
|
|
|
import (
|
|
"net"
|
|
"os"
|
|
|
|
"github.com/rs/zerolog"
|
|
"github.com/rs/zerolog/log"
|
|
)
|
|
|
|
func main() {
|
|
log.Logger = log.Output(zerolog.ConsoleWriter{Out: os.Stderr})
|
|
|
|
// Create a new listener
|
|
listener, err := net.Listen("tcp", ":8443")
|
|
if err != nil {
|
|
log.Panic().Err(err).Msg("Failed to create listener")
|
|
}
|
|
|
|
// Accept connections
|
|
for {
|
|
conn, err := listener.Accept()
|
|
if err != nil {
|
|
log.Err(err).Msg("Failed to accept connection")
|
|
continue
|
|
}
|
|
go func(conn net.Conn) {
|
|
defer conn.Close()
|
|
|
|
serverName, _, err := getServerNameExtension(conn)
|
|
if err != nil {
|
|
log.Err(err).Msg("Failed to read client hello")
|
|
return
|
|
}
|
|
|
|
log.Info().Str("SNI", serverName).Msg("Accepted connection")
|
|
|
|
}(conn)
|
|
|
|
}
|
|
|
|
}
|