refactor - pasdns can now look sane

This commit is contained in:
amy 2024-07-15 21:54:27 +03:30
parent cc8322f221
commit 0be492aa87
7 changed files with 97 additions and 31 deletions

View file

@ -1,43 +1,41 @@
package main
package pas
import (
"bufio"
"fmt"
"log"
"net"
"strconv"
"strings"
"exhq.dev/pas/src/Constants"
"exhq.dev/pas/src/helper"
"exhq.dev/pas/src/parser"
)
func main() {
ln, err := net.Listen("tcp", ":42069")
func StartServer(port int, handler func(request Constants.Request, response func(Constants.Response)), errr error) error {
ln, err := net.Listen("tcp", ":"+strconv.Itoa(port))
if err != nil {
log.Fatal(err)
return err
}
fmt.Println("Listening on port 42069")
for {
conn, err := ln.Accept()
if err != nil {
log.Fatal(err)
}
message, err := helper.ReadUntilNullString(bufio.NewReader(conn))
if err != nil {
log.Fatal(err)
}
parsed := parser.ParseIntent(message)
if parsed.Path == "/" {
conn.Write(helper.StringToByteWithEnd(helper.IntentGenerator(Constants.OK, map[string]string{
"version": "0.69",
}) + "welcome to the first ever shitternet page"))
}
if parsed.Path == "/meow" {
conn.Write(helper.StringToByteWithEnd(helper.IntentGenerator(Constants.OK, map[string]string{
"version": "0.69",
}) + "meowmeow"))
return err
}
go handleConnection(conn, handler)
}
}
func handleConnection(conn net.Conn, handler func(request Constants.Request, response func(Constants.Response))) {
defer conn.Close()
raw, err := helper.ReadUntilNullString(bufio.NewReader(conn))
if err != nil {
log.Println(err)
return
}
parsed := parser.ParseIntent(raw)
request := Constants.Request{Intent: parsed, Body: strings.SplitN(raw, "\n\n", 2)[1]}
handler(request, func(c Constants.Response) {
conn.Write(helper.StringToByteWithEnd(helper.IntentGenerator(c)))
})
}