Files
website/backend/main.go
T
2026-05-24 09:40:20 +02:00

63 lines
1.9 KiB
Go

package main
import (
"log"
"net/http"
"os"
)
func main() {
port := os.Getenv("PORT")
if port == "" {
port = "8080"
}
frontendPath := os.Getenv("FRONTEND_PATH")
if frontendPath == "" {
frontendPath = "static"
}
dbPath := os.Getenv("DB_PATH")
if dbPath == "" {
dbPath = "./database.sqlite"
}
db, err := NewDatabase(dbPath, os.Getenv("ROOT_PASSWORD"))
if err != nil {
log.Fatal(err.Error())
}
defer db.Close()
apiHandler := &ApiHandler{db: db}
mux := http.NewServeMux()
mux.Handle("/", http.FileServer(http.Dir(frontendPath)))
mux.Handle("GET /api/blog", apiHandler.ProcessAuth(http.HandlerFunc(func(writer http.ResponseWriter, request *http.Request) {
apiHandler.ServeBlogGet(writer, request)
}), false))
mux.Handle("PUT /api/blog", apiHandler.ProcessAuth(http.HandlerFunc(func(writer http.ResponseWriter, request *http.Request) {
apiHandler.ServeBlogPut(writer, request)
}), true))
mux.Handle("GET /api/blog/{id}", apiHandler.ProcessAuth(http.HandlerFunc(func(writer http.ResponseWriter, request *http.Request) {
apiHandler.ServeBlogGetSingle(writer, request)
}), false))
mux.Handle("GET /api/blog/{articleId}/file/{fileId}", apiHandler.ProcessAuth(http.HandlerFunc(func(writer http.ResponseWriter, request *http.Request) {
apiHandler.ServeBlogFileGetSingle(writer, request)
}), false))
mux.HandleFunc("POST /api/login", func(writer http.ResponseWriter, request *http.Request) {
apiHandler.ServeLoginPost(writer, request)
})
mux.Handle("POST /api/logout", apiHandler.ProcessAuth(http.HandlerFunc(func(writer http.ResponseWriter, request *http.Request) {
apiHandler.ServeLogoutPost(writer, request)
}), true))
mux.HandleFunc("/api/", func(writer http.ResponseWriter, request *http.Request) {
http.NotFound(writer, request)
})
log.Println("Listening on port", port)
err = http.ListenAndServe(":"+port, mux)
if err != nil {
log.Fatalln(err.Error())
}
}