commit 4d9eed02504028f85e003354389a5ba76a42fd40
parent 20b812b172e2ed3512716d88d3038731c3c716dd
Author: Lucy <contact@lucy.lt>
Date: Sat, 16 May 2026 11:18:04 +0300
Update go version, fix module name, fix vurnerabilities, some idiomatic changes
Diffstat:
3 files changed, 32 insertions(+), 29 deletions(-)
diff --git a/.gitignore b/.gitignore
@@ -1,5 +1,5 @@
profiles/*
root
-finger
+flick
*.exe
*.sum
diff --git a/go.mod b/go.mod
@@ -1,5 +1,5 @@
-module finger
+module flick
-go 1.16
+go 1.25
-require github.com/mitchellh/go-finger v0.0.0-20170709001451-be12f0ff8b97 // indirect
+require github.com/mitchellh/go-finger v0.0.0-20170709001451-be12f0ff8b97
diff --git a/main.go b/main.go
@@ -1,50 +1,53 @@
package main
-import "github.com/mitchellh/go-finger"
import (
- "fmt"
- "bufio"
- "os"
- "io/ioutil"
- "io"
- "context"
+ "bufio"
+ "context"
+ "fmt"
+ "io"
+ "os"
+ "path/filepath"
+ "regexp"
+
+ "github.com/mitchellh/go-finger"
)
func main() {
+ profile_folder := "profiles"
- profile_folder := "profiles/"
+ var validUser = regexp.MustCompile(`^[a-zA-Z0-9_-]+$`)
go finger.Serve(finger.HandlerFunc(func(ctx context.Context, w io.Writer, q *finger.Query) {
text := ""
filename := ""
+ if !validUser.MatchString(q.Username) {
+ w.Write([]byte("ERR:\nInvalid username!"))
+ return
+ }
+
if q.Username == "" {
filename = "root"
} else {
- filename = profile_folder + q.Username
+ filename = filepath.Join(profile_folder, q.Username)
}
- file, err := os.Open(filename)
+ b, err := os.ReadFile(filename)
if err != nil {
text = "ERR:\nNo such user!"
+ } else {
+ text = "MSG:\n" + string(b)
}
- defer func() {
- if err = file.Close(); err != nil {
- }
- }()
-
- if err == nil {
- b, err := ioutil.ReadAll(file)
- if err != nil {
- text = "ERR:\nNo such user!"
- } else {
- text = "OK:\n" + string(b)
- }
- }
- w.Write([]byte(fmt.Sprintln(text)))
- fmt.Printf("Requested username: %s\n", q.Username)
+ fmt.Fprint(w, text)
+
+ if q.Username == "" {
+ fmt.Println("Requested root")
+ } else {
+ fmt.Printf("Requested username: %s\n", q.Username)
+ }
}))
+
fmt.Print("Flick Finger Server is running on 0.0.0.0\n")
bufio.NewReader(os.Stdin).ReadBytes('\n')
}