flick

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

commit 1c431553933dad925f4ca4a84bb55eef786f5ff2
parent 4d9eed02504028f85e003354389a5ba76a42fd40
Author: Lucy <contact@lucy.lt>
Date:   Tue, 23 Jun 2026 00:20:39 +0300

Another update

Diffstat:
Mmain.go | 74++++++++++++++++++++++++++++++++++++++++++++------------------------------
1 file changed, 44 insertions(+), 30 deletions(-)

diff --git a/main.go b/main.go @@ -1,53 +1,67 @@ package main import ( - "bufio" "context" "fmt" "io" "os" + "os/signal" "path/filepath" "regexp" + "syscall" "github.com/mitchellh/go-finger" ) -func main() { - profile_folder := "profiles" +var profile_folder = "profiles" + +var validUser = regexp.MustCompile(`^[a-zA-Z0-9_-]*$`) + +func handler(ctx context.Context, w io.Writer, q *finger.Query) { + text := "" + filename := "" + + if !validUser.MatchString(q.Username) { + w.Write([]byte("ERR:\nInvalid username!")) + return + } - var validUser = regexp.MustCompile(`^[a-zA-Z0-9_-]+$`) + if q.Username == "" { + filename = "root" + } else { + filename = filepath.Join(profile_folder, q.Username) + } - go finger.Serve(finger.HandlerFunc(func(ctx context.Context, w io.Writer, q *finger.Query) { - text := "" - filename := "" + b, err := os.ReadFile(filename) + if err != nil { + text = "ERR:\nNo such user!" + } else { + text = "MSG:\n" + string(b) + } - if !validUser.MatchString(q.Username) { - w.Write([]byte("ERR:\nInvalid username!")) - return - } + fmt.Fprint(w, text) - if q.Username == "" { - filename = "root" - } else { - filename = filepath.Join(profile_folder, q.Username) - } + if q.Username == "" { + fmt.Println("Requested root") + } else { + fmt.Printf("Requested username: %s\n", q.Username) + } +} + +func main() { + fmt.Print("\x1b[?1049h") - b, err := os.ReadFile(filename) - if err != nil { - text = "ERR:\nNo such user!" - } else { - text = "MSG:\n" + string(b) - } + sig := make(chan os.Signal, 1) + signal.Notify(sig, os.Interrupt, syscall.SIGTERM) - fmt.Fprint(w, text) + go func() { + <-sig - if q.Username == "" { - fmt.Println("Requested root") - } else { - fmt.Printf("Requested username: %s\n", q.Username) - } - })) + fmt.Println("\nShutting down...") + fmt.Print("\x1b[?1049l") + os.Exit(0) + }() fmt.Print("Flick Finger Server is running on 0.0.0.0\n") - bufio.NewReader(os.Stdin).ReadBytes('\n') + finger.Serve(finger.HandlerFunc(handler)) }