From bcd6d459a976a61910cac430f8f8d56fa0ca478a Mon Sep 17 00:00:00 2001 From: Wojciech Kwolek Date: Sun, 10 Oct 2021 23:33:40 +0200 Subject: [PATCH] web frontend --- .gitignore | 1 + main.go | 17 ++++++- web.go | 135 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 151 insertions(+), 2 deletions(-) create mode 100644 .gitignore create mode 100644 web.go diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..849ddff --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +dist/ diff --git a/main.go b/main.go index deb7b51..2156bb3 100644 --- a/main.go +++ b/main.go @@ -41,6 +41,15 @@ func (ml *MessageList) List() []Message { return ml.list } +func (ml *MessageList) Reverse() []Message { + r := make([]Message, len(ml.list)) + l := len(ml.list) - 1 + for i, m := range ml.list { + r[l-i] = m + } + return r +} + func CheckString(s string) bool { for i := 0; i < len(s); i++ { if s[i] < 32 || s[i] > 126 { @@ -82,7 +91,7 @@ func main() { term.Escape.Blue, pkHexShort, term.Escape.Reset) - fmt.Fprintf(s, "%sRun %s`w`%s to write a message, %s`p`%s to print existing messages and %s`q`%s to quit.%s\n\n", + fmt.Fprintf(s, "%sRun %s`w`%s to write a message, %s`p`%s to print existing messages and %s`q`%s to quit.%s\n", term.Escape.Blue, term.Escape.Cyan, term.Escape.Blue, term.Escape.Cyan, term.Escape.Blue, @@ -90,7 +99,7 @@ func main() { term.Escape.Reset) for { - term.SetPrompt(fmt.Sprintf("%s>%s ", term.Escape.Blue, term.Escape.Reset)) + term.SetPrompt(fmt.Sprintf("\n%s>%s ", term.Escape.Blue, term.Escape.Reset)) cmd, err := term.ReadLine() if err == io.EOF { cmd = "q" @@ -151,5 +160,9 @@ func main() { } }) + web := Web{ + Messages: m, + } + go web.ListenAndServe(":8080") log.Fatal(ssh.ListenAndServe(":2222", nil, pkAuth)) } diff --git a/web.go b/web.go new file mode 100644 index 0000000..7177088 --- /dev/null +++ b/web.go @@ -0,0 +1,135 @@ +package main + +import ( + "html/template" + "net/http" +) + +type Web struct { + Messages *MessageList +} + +var siteTemplate string = ` + +messages.sh + + +

messages.sh

+

Hello! To add your own message, run:

+
ssh messages.sh
+

Latest messages

+

+ {{range .}} +

+
{{ .Timestamp.Format "2006-01-02 15:04:05 MST" }}
{{ .Username }} ({{ .PKShort }})
{{ .Content }}

+
+ {{end}} +

+` + +func (w *Web) ListenAndServe(addr string) { + w.Messages.Add(Message{ + Content: "2137 papiez", + Username: "weeeoefka", + PKShort: "23daa6f", + }) + w.Messages.Add(Message{ + Content: "2137 papiez lorem ipsum dolan sit amet saldkjaksjdf sdkjf slkdj flskjdf lkjsdlkfj ", + Username: "weeeoe", + PKShort: "23daa6f", + }) + tmpl := template.Must(template.New("tmpl").Parse(siteTemplate)) + http.HandleFunc("/", func(rw http.ResponseWriter, r *http.Request) { + tmpl.Execute(rw, w.Messages.Reverse()) + }) + http.ListenAndServe(addr, nil) +}