updated logging, added theming, added settings button

This commit is contained in:
partisan 2024-08-11 21:45:52 +02:00
parent 51b2ef43bc
commit ca15fb7ec5
25 changed files with 384 additions and 62 deletions

47
main.go
View file

@ -2,6 +2,7 @@ package main
import (
"fmt"
"html/template"
"log"
"net/http"
"strconv"
@ -13,6 +14,8 @@ type LanguageOption struct {
Name string
}
var settings UserSettings
var languageOptions = []LanguageOption{
{Code: "", Name: "Any Language"},
{Code: "lang_en", Name: "English"},
@ -66,27 +69,55 @@ var languageOptions = []LanguageOption{
func handleSearch(w http.ResponseWriter, r *http.Request) {
query, safe, lang, searchType, page := parseSearchParams(r)
// Load user settings
settings = loadUserSettings(r)
// Update the theme, safe search, and language based on query parameters or use existing settings
theme := r.URL.Query().Get("theme")
if theme != "" {
settings.Theme = theme
saveUserSettings(w, settings)
} else if settings.Theme == "" {
settings.Theme = "dark" // Default theme
}
if safe != "" {
settings.SafeSearch = safe
saveUserSettings(w, settings)
}
if lang != "" {
settings.Language = lang
saveUserSettings(w, settings)
}
// Render the search page template if no query
if query == "" {
http.ServeFile(w, r, "templates/search.html")
tmpl := template.Must(template.ParseFiles("templates/search.html"))
tmpl.Execute(w, settings)
return
}
settings := loadUserSettings(r)
// Handle search based on the type
switch searchType {
case "image":
handleImageSearch(w, query, safe, lang, page)
handleImageSearch(w, settings, query, safe, lang, page)
case "video":
handleVideoSearch(w, query, safe, lang, page)
handleVideoSearch(w, settings, query, safe, lang, page)
case "map":
handleMapSearch(w, query, safe)
handleMapSearch(w, settings, query, safe)
case "forum":
handleForumsSearch(w, query, safe, lang, page)
handleForumsSearch(w, settings, query, safe, lang, page)
case "file":
handleFileSearch(w, query, safe, lang, page)
handleFileSearch(w, settings, query, safe, lang, page)
case "text":
fallthrough
default:
HandleTextSearch(w, query, safe, lang, page)
HandleTextSearch(w, settings, query, safe, lang, page)
}
// This is immeasurably stupid it passes safe and language then it passes settings with safe and lang again
}
func parseSearchParams(r *http.Request) (query, safe, lang, searchType string, page int) {
@ -139,7 +170,7 @@ func runServer() {
config := loadConfig()
generateOpenSearchXML(config)
fmt.Printf("Server is listening on http://localhost:%d\n", config.Port)
printMessage("Server is listening on http://localhost:%d", config.Port)
log.Fatal(http.ListenAndServe(fmt.Sprintf(":%d", config.Port), nil))
// Start automatic update checker