159 lines
4.3 KiB
Go
159 lines
4.3 KiB
Go
package main
|
|
|
|
import (
|
|
"io/ioutil"
|
|
"net/http"
|
|
"strconv"
|
|
"strings"
|
|
)
|
|
|
|
/*
|
|
|
|
Timezone = UTC
|
|
|
|
*/
|
|
|
|
func main() {
|
|
addr := readHttpYML()
|
|
|
|
logger("----------------START----------------")
|
|
logger("timezone = UTC")
|
|
logger("connection open with address " + addr)
|
|
|
|
handler()
|
|
|
|
err := http.ListenAndServe(addr, nil)
|
|
errorPanic(err)
|
|
}
|
|
|
|
func handler() {
|
|
//reihenfolge ist wichtig!
|
|
|
|
//admin pages
|
|
logger("----------------HANDLE ADMIN LOGIN----------------")
|
|
keys := getAdminKeys()
|
|
if len(keys) > 0 {
|
|
for _, key := range keys {
|
|
httpHandleFunc("admin/"+key, "./web/pages/admin/dashboard.html", "text/html")
|
|
httpHandleFuncWithPOST("admin/"+key+"/addEvent", "./web/pages/admin/dashboard.html", "text/html")
|
|
}
|
|
}
|
|
logger("----------------HANDLE END----------------")
|
|
|
|
//events
|
|
handleEvents()
|
|
|
|
//images
|
|
handleImages()
|
|
|
|
//styles
|
|
logger("----------------HANDLE STYLES----------------")
|
|
handleFilesInFolder("style/", "./web/styles/", false)
|
|
logger("----------------HANDLE END----------------")
|
|
|
|
//pages
|
|
logger("----------------HANDLE PAGES----------------")
|
|
httpHandleFunc("", "./web/pages/home.html", "text/html")
|
|
handleFilesInFolder("", "./web/pages/", true)
|
|
logger("----------------HANDLE END----------------")
|
|
}
|
|
|
|
func handleEvents() {
|
|
if getEventCount() > 0 {
|
|
logger("----------------HANDLE EVENTS----------------")
|
|
events := getEvents()
|
|
for _, e := range events {
|
|
httpHandleFunc("event/"+strconv.Itoa(e.id), "./web/pages/event.html", "text/html")
|
|
}
|
|
logger("----------------HANDLE END----------------")
|
|
}
|
|
}
|
|
|
|
func handleImages() {
|
|
logger("----------------HANDLE IMAGES----------------")
|
|
handleFilesInFolder("image/", "./web/images/", false)
|
|
logger("----------------HANDLE END----------------")
|
|
}
|
|
|
|
var alreadyHandledFiles []string = []string{"./web/pages/admin/dashboard.html", "./web/pages/event.html"}
|
|
|
|
func handleFilesInFolder(urlPrefix string, folderpath string, handleWithoutFileSuffix bool) {
|
|
if folderpath[len(folderpath)-1] != '/' {
|
|
folderpath += "/"
|
|
}
|
|
files, err := ioutil.ReadDir(folderpath)
|
|
errorPanic(err)
|
|
|
|
for _, file := range files {
|
|
alreadyHandled := stringListContains(alreadyHandledFiles, folderpath+file.Name())
|
|
|
|
if !alreadyHandled {
|
|
if !file.IsDir() {
|
|
f := strings.Split(file.Name(), ".")
|
|
ContentType := f[len(f)-1]
|
|
filename := ""
|
|
|
|
if handleWithoutFileSuffix {
|
|
for index, item := range f {
|
|
if index < len(f)-1 {
|
|
filename += item
|
|
}
|
|
}
|
|
} else {
|
|
filename = file.Name()
|
|
}
|
|
|
|
switch ContentType {
|
|
case "png":
|
|
httpHandleFunc(urlPrefix+filename, folderpath+file.Name(), "image/png")
|
|
case "webp":
|
|
httpHandleFunc(urlPrefix+filename, folderpath+file.Name(), "image/webp")
|
|
case "svg":
|
|
httpHandleFunc(urlPrefix+filename, folderpath+file.Name(), "image/svg+xml")
|
|
case "jpeg":
|
|
httpHandleFunc(urlPrefix+filename, folderpath+file.Name(), "image/jpeg")
|
|
case "jpg":
|
|
httpHandleFunc(urlPrefix+filename, folderpath+file.Name(), "image/jpeg")
|
|
case "gif":
|
|
httpHandleFunc(urlPrefix+filename, folderpath+file.Name(), "image/gif")
|
|
case "css":
|
|
httpHandleFunc(urlPrefix+filename, folderpath+file.Name(), "text/css")
|
|
case "html":
|
|
httpHandleFunc(urlPrefix+filename, folderpath+file.Name(), "text/html")
|
|
default:
|
|
logger("handleFilesInFolder -> content-type unknown : " + folderpath + file.Name())
|
|
}
|
|
alreadyHandledFiles = append(alreadyHandledFiles, folderpath+file.Name())
|
|
} else {
|
|
childFolder := file.Name()
|
|
handleFilesInFolder(childFolder, folderpath+childFolder, handleWithoutFileSuffix)
|
|
}
|
|
} else {
|
|
logger("handleFilesInFolder -> already handled : " + folderpath + file.Name())
|
|
}
|
|
}
|
|
}
|
|
|
|
func getPages() [][]string {
|
|
output := [][]string{}
|
|
|
|
output = append(output, []string{"home", "/home"})
|
|
output = append(output, []string{"zeiten & location", "/treff"})
|
|
output = append(output, []string{"events", "/events"})
|
|
output = append(output, []string{"über uns", "/about"})
|
|
output = append(output, []string{"kontakt", "/kontakt"})
|
|
output = append(output, []string{"verein", "/verein"})
|
|
output = append(output, []string{"unterstützung", "/support"})
|
|
|
|
return output
|
|
}
|
|
|
|
func getFooterPages() [][]string {
|
|
output := [][]string{}
|
|
|
|
output = append(output, []string{"impressum", "/impressum"})
|
|
output = append(output, []string{"datenschutzerklärung", "/datenschutz"})
|
|
|
|
return output
|
|
}
|