milter-experiment/main.go

48 lines
1.0 KiB
Go

package main
import (
"bufio"
"bytes"
"encoding/binary"
"encoding/hex"
"os"
)
import (
"milter-experiment/logging"
)
var (
// Global logger for application wide logging. Not sure if this is a good pattern yet.
logger logging.Logger
)
func handleMtaConnection(clientConnection *bufio.ReadWriter) {
buf := make([]byte, 4096)
for {
bytesRead, err := clientConnection.Read(buf)
if err != nil {
logger.Errorln("Error reading from clientConnection:", err.Error())
break
} else {
logger.Infof("Read %d bytes from connection\n", bytesRead)
logger.Debugf("Hexdump of bytes read:\n%s", hex.Dump(buf[0:bytesRead]))
// First 4 Bytes will be some integer thing "length"
// Let's parse that
var packetLength uint32
bytesReader := bytes.NewReader(buf[0:4])
err := binary.Read(bytesReader, binary.BigEndian, &packetLength)
if err != nil {
logger.Errorln(err.Error())
}
logger.Debugf("Parsed length: %d\n", packetLength)
}
}
}
func main() {
logger = logging.NewLogger(os.Stdout, os.Stderr, logging.DEBUG)
runServer()
}