refactor - pasdns can now look sane
This commit is contained in:
parent
cc8322f221
commit
0be492aa87
7 changed files with 97 additions and 31 deletions
46
src/main.go
46
src/main.go
|
|
@ -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)))
|
||||
})
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue