Skip to content

Instantly share code, notes, and snippets.

@greggyNapalm
Last active December 16, 2024 18:20
Show Gist options
  • Save greggyNapalm/f2c4d93c17d2b13607701f9fa42e059f to your computer and use it in GitHub Desktop.
Save greggyNapalm/f2c4d93c17d2b13607701f9fa42e059f to your computer and use it in GitHub Desktop.
package main
import (
"log"
"crypto/tls"
"net"
"bufio"
)
func main() {
log.SetFlags(log.Lshortfile)
cer, err := tls.LoadX509KeyPair("server.crt", "server.key")
if err != nil {
log.Println(err)
return
}
config := &tls.Config{
Certificates: []tls.Certificate{cer},
GetConfigForClient: func(helloInfo *tls.ClientHelloInfo) (*tls.Config, error) {
println("SupportedVersions:", helloInfo.SupportedVersions)
return nil, nil
},
}
ln, err := tls.Listen("tcp", ":443", config)
if err != nil {
log.Println(err)
return
}
defer ln.Close()
for {
conn, err := ln.Accept()
if err != nil {
log.Println(err)
continue
}
go handleConnection(conn)
}
}
func handleConnection(conn net.Conn) {
defer conn.Close()
r := bufio.NewReader(conn)
for {
msg, err := r.ReadString('\n')
if err != nil {
log.Println(err)
return
}
println(msg)
n, err := conn.Write([]byte("world\n"))
if err != nil {
log.Println(n, err)
return
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment