Skip to content

Instantly share code, notes, and snippets.

@gboddin
Created March 3, 2021 17:03
Show Gist options
  • Save gboddin/95faf4897150609040a98f8c0eaa2269 to your computer and use it in GitHub Desktop.
Save gboddin/95faf4897150609040a98f8c0eaa2269 to your computer and use it in GitHub Desktop.
Go pot
package main
import (
"bufio"
"fmt"
"log"
"net"
"time"
)
var lport = ":8883"
var replyDummy = true
func main() {
sock, err := net.Listen("tcp", lport)
if err != nil {
log.Fatal(err)
}
log.Printf("Listening on %s", lport)
for {
conn, err := sock.Accept()
if err != nil {
continue
}
go handleConnection(conn)
}
}
func handleConnection(conn net.Conn) {
defer conn.Close()
err := conn.SetReadDeadline(time.Now().Add(2*time.Second))
if err != nil {
log.Fatal(err)
}
receiveBuffer := []byte{}
scanner := bufio.NewScanner(conn)
for scanner.Scan() {
if scanner.Text() == "" {
if replyDummy { writeDummy(conn) }
conn.Close()
break
}
receiveBuffer = append(receiveBuffer, scanner.Bytes()...)
receiveBuffer = append(receiveBuffer, '\n')
if len(receiveBuffer) > 128*1024 {
conn.Close()
break
}
}
fmt.Println(string(receiveBuffer))
}
func writeDummy(conn net.Conn) {
err := conn.SetWriteDeadline(time.Now().Add(2*time.Second))
if err != nil {
return
}
conn.Write([]byte("HTTP/1.1 200 OK\r\n\r\nCucumber\r\n"))
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment