Inital commit
This commit is contained in:
86
main.go
Normal file
86
main.go
Normal file
@@ -0,0 +1,86 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
_ "embed"
|
||||
"flag"
|
||||
"fmt"
|
||||
"log"
|
||||
"net/http"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"text/template"
|
||||
)
|
||||
|
||||
//go:embed hjem.html
|
||||
var hjemTemplate string
|
||||
|
||||
var port = flag.Int("p", 1437, "set the port for hjem to use")
|
||||
|
||||
type HjemData struct {
|
||||
OS string
|
||||
Email string
|
||||
}
|
||||
|
||||
func main() {
|
||||
flag.Parse()
|
||||
|
||||
t, err := template.New("hjem").Parse(hjemTemplate)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
user_os := "Unknown"
|
||||
|
||||
file, err := os.Open("/etc/os-release")
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
defer file.Close()
|
||||
|
||||
scanner := bufio.NewScanner(file)
|
||||
if scanner.Scan() {
|
||||
user_os = strings.TrimRight(strings.TrimLeft(scanner.Text(), "NAME='"), "'")
|
||||
}
|
||||
|
||||
user_email := "unknown@example.com"
|
||||
|
||||
file, err = os.Open(filepath.Join(func() string {
|
||||
hostname, err := os.UserHomeDir()
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
return hostname
|
||||
}(), ".gitconfig"))
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
defer file.Close()
|
||||
|
||||
scanner = bufio.NewScanner(file)
|
||||
for scanner.Scan() {
|
||||
text := scanner.Text()
|
||||
if strings.Contains(text, "email = ") {
|
||||
user_email = strings.TrimLeft(strings.TrimSpace(text), "email = ")
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
|
||||
w.Header().Set("Content-Type", "text/html; charset=utf-8")
|
||||
|
||||
err := t.ExecuteTemplate(w, "hjem", HjemData{
|
||||
OS: user_os,
|
||||
Email: user_email,
|
||||
})
|
||||
if err != nil {
|
||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
||||
}
|
||||
})
|
||||
|
||||
fmt.Printf("Web server is available at http://0.0.0.0:%d\n", *port)
|
||||
fmt.Println("Press Ctrl+C to stop")
|
||||
|
||||
log.Fatal(http.ListenAndServe(fmt.Sprintf(":%d", *port), nil))
|
||||
}
|
||||
Reference in New Issue
Block a user