From 43309deebed3b7a22cb56a0e7d5b59c541140f7a Mon Sep 17 00:00:00 2001 From: shokara Date: Thu, 23 Dec 2021 17:29:28 +0000 Subject: [PATCH] format gophermap lines git-svn-id: file:///srv/svn/repo/tokiko/trunk@2 8f5ca974-a7f8-e144-9f80-d41d5039c194 --- Gophermap | 4 ++-- main.go | 63 ++++++++++++++++++++++++++++++++++++++----------------- 2 files changed, 46 insertions(+), 21 deletions(-) diff --git a/Gophermap b/Gophermap index 4b86553..d8f388f 100644 --- a/Gophermap +++ b/Gophermap @@ -1,2 +1,2 @@ -iGophermap test file Err localhost 7070 -0Server source file /main.go localhost 7070 +iGophermap test file +0Server source file /main.go diff --git a/main.go b/main.go index 83f33ba..2a22d43 100644 --- a/main.go +++ b/main.go @@ -3,12 +3,47 @@ package main import ( "bufio" // "fmt" - "io/ioutil" "log" "net" "os" + "strings" ) +const HOST = "0.0.0.0" +const PORT = "7070" +const HOSTNAME = "demiurge.shoko.home" +const DIR = "." + +func formatLine(line string) string { + splitted := strings.Split(line, "\t") + if len(splitted) == 3 { + return line + } else if len(splitted) == 2 { + line += "\t" + HOSTNAME + "\t" + PORT + } else if len(splitted) == 1 { + line += "\tErr\t" + HOSTNAME + "\t" + PORT + } + + return line +} + +func printGophermap(c net.Conn, dir string) { + file, err := os.Open(dir + "Gophermap") + if err != nil { + log.Fatal(err) + } + defer func() { + if err = file.Close(); err != nil { + log.Fatal(err) + } + }() + + scanner := bufio.NewScanner(file) + for scanner.Scan() { + c.Write([]byte(formatLine(scanner.Text()) + "\n")) + } +} + func connHandle(c net.Conn) { data, err := bufio.NewReader(c).ReadString('\n') if err != nil { @@ -16,30 +51,20 @@ func connHandle(c net.Conn) { return } - if string(data) == "\r\n" { - file, err := os.Open("Gophermap") - if err != nil { - log.Fatal(err) - } - defer func() { - if err = file.Close(); err != nil { - log.Fatal(err) - } - }() - - content, err := ioutil.ReadAll(file) - c.Write([]byte(content)) - c.Write([]byte(".\r\n")) + if data == "\r\n" { + printGophermap(c, "./") } + + c.Write([]byte(".\r\n")) + c.Close() } func main() { - HOST := "0.0.0.0" - PORT := "7070" - ADDR := HOST + ":" + PORT - + const ADDR = HOST + ":" + PORT log.Printf("Starting thomomys on %s\n", ADDR) + os.Chdir(DIR) + l, err := net.Listen("tcp", ADDR) if err != nil { log.Fatal(err)