networking

This commit is contained in:
saintilya
2026-04-29 16:57:58 +02:00
parent 3d9e23afc8
commit 58cbf34618

View File

@@ -0,0 +1,85 @@
package network
import (
"bufio"
"fmt"
"io"
"net"
"strings"
"git.uwushka.cc/nzx056/nzx056/nzx_tmpmail/loggingshit"
)
type Session struct {
Conn net.Conn
Reader *bufio.Reader
Writer *bufio.Writer
MailFrom string
RcptTo []string
RemoteAddr string
}
func init() {
loggingshit.Log("lmtp init", 1)
ln, err := net.Listen("tcp", "127.0.0.1:2525")
if err != nil {
loggingshit.Log("lmtp init failed with error %v", 3, err)
}
for {
conn, err := ln.Accept()
if err != nil {
loggingshit.Log("failed to accept connection with error %v, skipping", 2, err)
continue
}
go handle_conn(conn)
}
}
func handle_conn(conn net.Conn) {
defer conn.Close()
s := &Session{
Conn: conn,
Writer: bufio.NewWriter(conn),
Reader: bufio.NewReader(conn),
RemoteAddr: conn.RemoteAddr().String(),
}
s.reply("220 nzx056.love LMTP ready")
for {
l, err := s.readline()
if err != nil {
if err != io.EOF {
loggingshit.Log("readline failed for %s with error: %v", 2, s.RemoteAddr, err)
}
loggingshit.Log("caught EOF from %s, closing conn", 2, s.RemoteAddr)
return
}
upper := strings.ToUpper(l)
switch {
}
}
}
func (s *Session) readline() (string, error) {
l, err := s.Reader.ReadString('\n')
if err != nil {
return "", err
}
l = strings.TrimRight(l, "\r\n")
loggingshit.Log("readline %s from %s", 1, l, s.RemoteAddr)
return l, nil
}
func (s *Session) reply(st string) {
loggingshit.Log("write to %s: %s", 1, s.RemoteAddr, st)
fmt.Fprintf(s.Writer, "%s\r\n", st)
s.Writer.Flush()
}