From aff3757618ab6c0739f2e1b7b118ef6360ae7321 Mon Sep 17 00:00:00 2001 From: exhq Date: Sat, 8 Jun 2024 21:58:43 +0330 Subject: [PATCH] meow purrr :3 --- go.mod | 3 +++ src/helper/decorder.go | 21 ++++++++++++++++++++ src/helper/read.go | 21 ++++++++++++++++++++ src/helper/stringfuckery.go | 9 +++++++++ src/main.go | 39 +++++++++++++++++++++++++++++++++++++ 5 files changed, 93 insertions(+) create mode 100644 go.mod create mode 100644 src/helper/decorder.go create mode 100644 src/helper/read.go create mode 100644 src/helper/stringfuckery.go create mode 100644 src/main.go diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..93f7756 --- /dev/null +++ b/go.mod @@ -0,0 +1,3 @@ +module exhq.dev/mptp + +go 1.22.3 diff --git a/src/helper/decorder.go b/src/helper/decorder.go new file mode 100644 index 0000000..412ebc6 --- /dev/null +++ b/src/helper/decorder.go @@ -0,0 +1,21 @@ +package helper + +import ( + "regexp" + "strings" +) + +func GetHeaders(rawMessage string) (map[string][]string, string) { + msgarr := strings.Split(rawMessage, "\n") + pattern := `^MPTP/\d\.\d HAIIII :3 (GIB|TAEK)$` + re := regexp.MustCompile(pattern) + + // Check if msgarr[0] matches the pattern + if !re.MatchString(msgarr[0]) { + return nil, "wrong nuggets" + } + + return map[string][]string{ + "version": {strings.Split(msgarr[0], "HAIIII :3")[0]}, + }, "" +} diff --git a/src/helper/read.go b/src/helper/read.go new file mode 100644 index 0000000..a00d62e --- /dev/null +++ b/src/helper/read.go @@ -0,0 +1,21 @@ +package helper + +import ( + "bufio" + "bytes" +) + +func ReadUntilNull(reader *bufio.Reader) ([]byte, error) { + var buf bytes.Buffer + for { + b, err := reader.ReadByte() + if err != nil { + return nil, err + } + if b == byte(rune(0)) { + break + } + buf.WriteByte(b) + } + return buf.Bytes(), nil +} diff --git a/src/helper/stringfuckery.go b/src/helper/stringfuckery.go new file mode 100644 index 0000000..9663f2f --- /dev/null +++ b/src/helper/stringfuckery.go @@ -0,0 +1,9 @@ +package helper + +func Ender() string { + return string(rune(0)) +} + +func ByteWithEnd(str string) []byte { + return append([]byte(str), byte(0)) +} diff --git a/src/main.go b/src/main.go new file mode 100644 index 0000000..c8d9413 --- /dev/null +++ b/src/main.go @@ -0,0 +1,39 @@ +package main + +import ( + "bufio" + "fmt" + "log" + "net" + "strings" + + "exhq.dev/mptp/src/helper" +) + +func main() { + ln, err := net.Listen("tcp", ":8000") + if err != nil { + log.Fatal(err) + } + fmt.Println("Listening on port 8000") + for { + conn, err := ln.Accept() + if err != nil { + log.Fatal(err) + } + message, err := helper.ReadUntilNull(bufio.NewReader(conn)) + if err != nil { + log.Fatal(err) + } + header, er := helper.GetHeaders(string(message)) + println("connected to: " + (conn.RemoteAddr().String())) + if er == "wrong nuggets" { + conn.Write(helper.ByteWithEnd("UR NUGGIES ARE INVALID >:3")) + continue + } + if strings.TrimSpace(strings.Join(header["version"], "")) != "MPTP/0.1" { + conn.Write(helper.ByteWithEnd("i... don know that language >M<")) + } + conn.Write([]byte("meoww :3\nhiiii" + string(rune(0)))) + } +}