Compare commits
2 Commits
main
...
server/tem
Author | SHA1 | Date | |
---|---|---|---|
|
4f44974c58 | ||
|
a62b445f19 |
@ -1,293 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="350mm"
|
||||
height="250mm"
|
||||
viewBox="0 0 350 250"
|
||||
version="1.1"
|
||||
id="svg1"
|
||||
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
|
||||
sodipodi:docname="bg.svg"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#000000"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:export-bgcolor="#00000000"
|
||||
inkscape:zoom="0.48315491"
|
||||
inkscape:cx="734.75399"
|
||||
inkscape:cy="595.04724"
|
||||
inkscape:window-width="1672"
|
||||
inkscape:window-height="957"
|
||||
inkscape:window-x="816"
|
||||
inkscape:window-y="1259"
|
||||
inkscape:window-maximized="0"
|
||||
inkscape:current-layer="layer1" />
|
||||
<defs
|
||||
id="defs1">
|
||||
<rect
|
||||
x="1105.2356"
|
||||
y="300.11078"
|
||||
width="161.4389"
|
||||
height="53.812968"
|
||||
id="rect4" />
|
||||
<rect
|
||||
x="203.42924"
|
||||
y="897.13763"
|
||||
width="220.99149"
|
||||
height="62.931351"
|
||||
id="rect3" />
|
||||
<rect
|
||||
x="140.49789"
|
||||
y="166.84126"
|
||||
width="339.53659"
|
||||
height="86.347672"
|
||||
id="rect2" />
|
||||
<rect
|
||||
x="125.8627"
|
||||
y="753.71271"
|
||||
width="357.09882"
|
||||
height="87.811188"
|
||||
id="rect1" />
|
||||
<rect
|
||||
x="125.8627"
|
||||
y="753.71271"
|
||||
width="357.09882"
|
||||
height="87.811188"
|
||||
id="rect1-7" />
|
||||
<rect
|
||||
x="125.8627"
|
||||
y="753.71271"
|
||||
width="357.09882"
|
||||
height="87.811188"
|
||||
id="rect1-2" />
|
||||
<rect
|
||||
x="125.8627"
|
||||
y="753.71271"
|
||||
width="357.09882"
|
||||
height="87.811188"
|
||||
id="rect1-9" />
|
||||
<rect
|
||||
x="125.8627"
|
||||
y="753.71271"
|
||||
width="357.09882"
|
||||
height="87.811188"
|
||||
id="rect1-6" />
|
||||
<rect
|
||||
x="140.49789"
|
||||
y="166.84126"
|
||||
width="339.53659"
|
||||
height="86.347672"
|
||||
id="rect2-0" />
|
||||
<rect
|
||||
x="140.49789"
|
||||
y="166.84126"
|
||||
width="339.53659"
|
||||
height="86.347672"
|
||||
id="rect2-2" />
|
||||
<rect
|
||||
x="140.49789"
|
||||
y="166.84126"
|
||||
width="339.53659"
|
||||
height="86.347672"
|
||||
id="rect2-2-6" />
|
||||
<rect
|
||||
x="1105.2356"
|
||||
y="300.11078"
|
||||
width="161.4389"
|
||||
height="53.812969"
|
||||
id="rect4-4" />
|
||||
<rect
|
||||
x="1105.2356"
|
||||
y="300.11078"
|
||||
width="161.4389"
|
||||
height="53.812969"
|
||||
id="rect4-3" />
|
||||
<rect
|
||||
x="1105.2356"
|
||||
y="300.11078"
|
||||
width="161.4389"
|
||||
height="53.812969"
|
||||
id="rect4-3-2" />
|
||||
<rect
|
||||
x="125.8627"
|
||||
y="753.71271"
|
||||
width="357.09882"
|
||||
height="87.811188"
|
||||
id="rect1-2-4" />
|
||||
<rect
|
||||
x="1105.2356"
|
||||
y="300.11078"
|
||||
width="161.4389"
|
||||
height="53.812969"
|
||||
id="rect4-3-3" />
|
||||
<rect
|
||||
x="1105.2356"
|
||||
y="300.11078"
|
||||
width="161.4389"
|
||||
height="53.812969"
|
||||
id="rect6" />
|
||||
<rect
|
||||
x="140.49789"
|
||||
y="166.84126"
|
||||
width="339.53659"
|
||||
height="86.347672"
|
||||
id="rect2-2-6-7" />
|
||||
</defs>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
transform="matrix(0.26273149,-0.03124901,0.03124901,0.26273149,9.6318685,1.010781)"
|
||||
id="text1"
|
||||
style="font-size:37.7953px;line-height:1;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-align:start;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect1);display:inline;fill:#ffffff;stroke-width:4.91339"><tspan
|
||||
x="125.86328"
|
||||
y="784.2323"
|
||||
id="tspan7">Meow</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
transform="matrix(0.26223034,0.03520772,-0.03520772,0.26223034,181.67491,-73.913601)"
|
||||
id="text1-3"
|
||||
style="font-size:37.7953px;line-height:1;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-align:start;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect1-7);display:inline;fill:#ffffff;stroke-width:4.91339"><tspan
|
||||
x="125.86328"
|
||||
y="784.2323"
|
||||
id="tspan8">Meow</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
transform="matrix(0.2637851,0.02053679,-0.02053679,0.2637851,9.5700315,-96.792778)"
|
||||
id="text1-1"
|
||||
style="font-size:37.7953px;line-height:1;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-align:start;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect1-2);display:inline;fill:#ffffff;stroke-width:4.91339"><tspan
|
||||
x="125.86328"
|
||||
y="784.2323"
|
||||
id="tspan9">Meow</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
transform="matrix(0.26279038,-0.03074987,0.03074987,0.26279038,54.519132,-87.602003)"
|
||||
id="text1-1-6"
|
||||
style="font-size:37.7953px;line-height:1;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-align:start;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect1-2-4);display:inline;fill:#ffffff;stroke-width:4.91339"><tspan
|
||||
x="125.86328"
|
||||
y="784.2323"
|
||||
id="tspan10">Meow</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
transform="matrix(0.26273149,-0.03124901,0.03124901,0.26273149,160.00124,-138.94545)"
|
||||
id="text1-6"
|
||||
style="font-size:37.7953px;line-height:1;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-align:start;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect1-9);display:inline;fill:#ffffff;stroke-width:4.91339"><tspan
|
||||
x="125.86328"
|
||||
y="784.2323"
|
||||
id="tspan11">Meow</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
transform="matrix(0.26430785,-0.01207042,0.01207042,0.26430785,123.83488,0.36913542)"
|
||||
id="text1-8"
|
||||
style="font-size:37.7953px;line-height:1;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-align:start;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect1-6);display:inline;fill:#ffffff;stroke-width:4.91339"><tspan
|
||||
x="125.86328"
|
||||
y="784.2323"
|
||||
id="tspan12">Meow</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
transform="matrix(0.26458333,0,0,0.26458333,-21.357022,-13.142783)"
|
||||
id="text2"
|
||||
style="font-size:37.7953px;line-height:1;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-align:start;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect2);display:inline;fill:#ffffff;stroke-width:4.91339"><tspan
|
||||
x="140.49805"
|
||||
y="197.36121"
|
||||
id="tspan13">gock <333</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
transform="matrix(0.26309895,-0.02798714,0.02798714,0.26309895,43.481131,24.812837)"
|
||||
id="text2-3"
|
||||
style="font-size:37.7953px;line-height:1;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-align:start;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect2-0);display:inline;fill:#ffffff;stroke-width:4.91339"><tspan
|
||||
x="140.49805"
|
||||
y="197.36121"
|
||||
id="tspan14">gock <333</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
transform="matrix(0.26094671,-0.04371676,0.04371676,0.26094671,222.97079,141.94755)"
|
||||
id="text2-8"
|
||||
style="font-size:37.7953px;line-height:1;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-align:start;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect2-2);display:inline;fill:#ffffff;stroke-width:4.91339"><tspan
|
||||
x="140.49805"
|
||||
y="197.36121"
|
||||
id="tspan15">gock <333</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
transform="matrix(0.26260965,-0.03225692,0.03225692,0.26260965,163.16927,187.98351)"
|
||||
id="text2-8-2"
|
||||
style="font-size:37.7953px;line-height:1;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-align:start;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect2-2-6);display:inline;fill:#ffffff;stroke-width:4.91339"><tspan
|
||||
x="140.49805"
|
||||
y="197.36121"
|
||||
id="tspan16">gock <333</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
transform="matrix(0.26261141,0.03224256,-0.03224256,0.26261141,-26.436727,169.44502)"
|
||||
id="text2-8-2-4"
|
||||
style="font-size:37.7953px;line-height:1;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-align:start;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect2-2-6-7);display:inline;fill:#ffffff;stroke-width:4.91339"><tspan
|
||||
x="140.49805"
|
||||
y="197.36121"
|
||||
id="tspan17">gock <333</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
transform="scale(0.26458333)"
|
||||
id="text3"
|
||||
style="font-size:37.7953px;line-height:1;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-align:start;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect3);display:inline;fill:#ffffff;stroke-width:4.91339" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
transform="matrix(0.26458333,0,0,0.26458333,20.26179,-16.976094)"
|
||||
id="text4"
|
||||
style="font-size:37.7953px;line-height:1;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-align:start;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect4);display:inline;fill:#ffffff;stroke-width:4.91339"><tspan
|
||||
x="1105.2363"
|
||||
y="330.63074"
|
||||
id="tspan18">Gay :3</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
transform="matrix(0.25941349,0.05204788,-0.05204788,0.25941349,14.622996,-20.113934)"
|
||||
id="text4-8"
|
||||
style="font-size:37.7953px;line-height:1;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-align:start;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect4-4);display:inline;fill:#ffffff;stroke-width:4.91339"><tspan
|
||||
x="1105.2363"
|
||||
y="330.63074"
|
||||
id="tspan19">Gay :3</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
transform="matrix(0.26458333,0,0,0.26458333,-185.03108,79.899068)"
|
||||
id="text4-1"
|
||||
style="font-size:37.7953px;line-height:1;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-align:start;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect4-3);display:inline;fill:#ffffff;stroke-width:4.91339"><tspan
|
||||
x="1105.2363"
|
||||
y="330.63074"
|
||||
id="tspan20">Gay :3</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
transform="matrix(0.26300551,-0.02885206,0.02885206,0.26300551,-153.43986,-14.753595)"
|
||||
id="text4-1-6"
|
||||
style="font-size:37.7953px;line-height:1;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-align:start;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect4-3-2);display:inline;fill:#ffffff;stroke-width:4.91339"><tspan
|
||||
x="1105.2363"
|
||||
y="330.63074"
|
||||
id="tspan21">Gay :3</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
transform="matrix(0.25999838,0.04904269,-0.04904269,0.25999838,-255.80374,45.596021)"
|
||||
id="text4-1-4"
|
||||
style="font-size:37.7953px;line-height:1;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-align:start;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect4-3-3);display:inline;fill:#ffffff;stroke-width:4.91339"><tspan
|
||||
x="1105.2363"
|
||||
y="330.63074"
|
||||
id="tspan22">Gay :3</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
transform="matrix(0.25999838,0.04904269,-0.04904269,0.25999838,-255.80374,45.596021)"
|
||||
id="text6"
|
||||
style="font-size:37.7953px;line-height:1;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-align:start;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect6);display:inline;fill:#ffffff;stroke-width:4.91339"><tspan
|
||||
x="1105.2363"
|
||||
y="330.63074"
|
||||
id="tspan23">Gay :3</tspan></text>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 12 KiB |
Binary file not shown.
Before Width: | Height: | Size: 26 KiB |
2
go.mod
2
go.mod
@ -6,6 +6,8 @@ require github.com/labstack/echo/v4 v4.13.4
|
||||
|
||||
require (
|
||||
github.com/TwiN/go-color v1.4.1 // indirect
|
||||
github.com/dgrijalva/jwt-go v3.2.0+incompatible // indirect
|
||||
github.com/labstack/echo v3.3.10+incompatible // indirect
|
||||
github.com/labstack/gommon v0.4.2 // indirect
|
||||
github.com/mattn/go-colorable v0.1.14 // indirect
|
||||
github.com/mattn/go-isatty v0.0.20 // indirect
|
||||
|
4
go.sum
4
go.sum
@ -4,8 +4,12 @@ github.com/TwiN/go-color v1.4.1 h1:mqG0P/KBgHKVqmtL5ye7K0/Gr4l6hTksPgTgMk3mUzc=
|
||||
github.com/TwiN/go-color v1.4.1/go.mod h1:WcPf/jtiW95WBIsEeY1Lc/b8aaWoiqQpu5cf8WFxu+s=
|
||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM=
|
||||
github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
|
||||
github.com/kirsle/configdir v0.0.0-20170128060238-e45d2f54772f h1:dKccXx7xA56UNqOcFIbuqFjAWPVtP688j5QMgmo6OHU=
|
||||
github.com/kirsle/configdir v0.0.0-20170128060238-e45d2f54772f/go.mod h1:4rEELDSfUAlBSyUjPG0JnaNGjf13JySHFeRdD/3dLP0=
|
||||
github.com/labstack/echo v3.3.10+incompatible h1:pGRcYk231ExFAyoAjAfD85kQzRJCRI8bbnE7CX5OEgg=
|
||||
github.com/labstack/echo v3.3.10+incompatible/go.mod h1:0INS7j/VjnFxD4E2wkz67b8cVwCLbBmJyDaka6Cmk1s=
|
||||
github.com/labstack/echo/v4 v4.13.4 h1:oTZZW+T3s9gAu5L8vmzihV7/lkXGZuITzTQkTEhcXEA=
|
||||
github.com/labstack/echo/v4 v4.13.4/go.mod h1:g63b33BZ5vZzcIUF8AtRH40DrTlXnx4UMC8rBdndmjQ=
|
||||
github.com/labstack/gommon v0.4.2 h1:F8qTUNXgG1+6WQmqoUWnz8WiEU60mXVVw0P4ht1WRA0=
|
||||
|
@ -1,42 +0,0 @@
|
||||
package server
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"embed"
|
||||
"io/fs"
|
||||
"log"
|
||||
"net/http"
|
||||
"text/template"
|
||||
|
||||
"github.com/labstack/echo/v4"
|
||||
)
|
||||
|
||||
var FrontendFiles embed.FS
|
||||
|
||||
func getFileContent() string {
|
||||
content, err := FrontendFiles.ReadFile("frontend/index.html")
|
||||
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
return string(content)
|
||||
}
|
||||
|
||||
func getIndex(c echo.Context) error {
|
||||
IndexTemplate := template.Must(template.New("index").Parse(getFileContent()))
|
||||
|
||||
var tpl bytes.Buffer
|
||||
IndexTemplate.Execute(&tpl, Config.Template)
|
||||
|
||||
return c.HTML(http.StatusOK, tpl.String())
|
||||
}
|
||||
|
||||
func getFileSystem() http.FileSystem {
|
||||
fsys, err := fs.Sub(FrontendFiles, "frontend")
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
return http.FS(fsys)
|
||||
}
|
@ -3,12 +3,11 @@ package server
|
||||
import (
|
||||
"log"
|
||||
"net/http"
|
||||
"path/filepath"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"gitea.elara.ws/Hazel/transfem-startpage/internal/cache"
|
||||
"gitea.elara.ws/Hazel/transfem-startpage/internal/rendering"
|
||||
"github.com/labstack/echo/v4"
|
||||
)
|
||||
|
||||
var Config = rendering.NewConfig()
|
||||
@ -25,6 +24,16 @@ func StartFetching() {
|
||||
}
|
||||
}
|
||||
|
||||
func GetFilepath(u string) string {
|
||||
return filepath.Join("frontend", u)
|
||||
}
|
||||
|
||||
func staticHandler(w http.ResponseWriter, r *http.Request) {
|
||||
filepath := GetFilepath(r.URL.Path)
|
||||
log.Println("serving file:", filepath)
|
||||
http.ServeFileFS(w, r, FrontendFiles, filepath)
|
||||
}
|
||||
|
||||
func Start(profile string) error {
|
||||
err := Config.ScanForConfigFile(profile)
|
||||
if err != nil {
|
||||
@ -38,30 +47,36 @@ func Start(profile string) error {
|
||||
log.Println(err)
|
||||
}
|
||||
|
||||
e := echo.New()
|
||||
http.HandleFunc("/static", staticHandler)
|
||||
http.ListenAndServe(":"+strconv.Itoa(Config.Server.Port), nil)
|
||||
|
||||
// statically serve the file
|
||||
cache := cache.NewCache(profile)
|
||||
if !cache.Disabled {
|
||||
cache.StartStaticServer(e)
|
||||
/*
|
||||
e := echo.New()
|
||||
|
||||
log.Println("downloading website icons...")
|
||||
for i, w := range Config.Template.Websites {
|
||||
u, err := cache.CacheUrl(w.ImageUrl)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
// statically serve the file
|
||||
cache := cache.NewCache(profile)
|
||||
if !cache.Disabled {
|
||||
cache.StartStaticServer(e)
|
||||
|
||||
log.Println("downloading website icons...")
|
||||
for i, w := range Config.Template.Websites {
|
||||
u, err := cache.CacheUrl(w.ImageUrl)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
}
|
||||
Config.Template.Websites[i].ImageUrl = u
|
||||
Config.Template.Websites[i].IsFetched = true
|
||||
}
|
||||
Config.Template.Websites[i].ImageUrl = u
|
||||
Config.Template.Websites[i].IsFetched = true
|
||||
}
|
||||
}
|
||||
|
||||
// https://echo.labstack.com/docs/cookbook/embed-resources
|
||||
staticHandler := http.FileServer(getFileSystem())
|
||||
e.GET("/assets/*", echo.WrapHandler(http.StripPrefix("/", staticHandler)))
|
||||
e.GET("/scripts/*", echo.WrapHandler(http.StripPrefix("/", staticHandler)))
|
||||
e.GET("/", getIndex)
|
||||
// https://echo.labstack.com/docs/cookbook/embed-resources
|
||||
staticHandler := http.FileServer(getFileSystem())
|
||||
e.GET("/assets/*", echo.WrapHandler(http.StripPrefix("/", staticHandler)))
|
||||
e.GET("/scripts/*", echo.WrapHandler(http.StripPrefix("/", staticHandler)))
|
||||
e.GET("/", getIndex)
|
||||
StartTemplating(e)
|
||||
|
||||
e.Logger.Fatal(e.Start(":" + strconv.Itoa(Config.Server.Port)))
|
||||
e.Logger.Fatal(e.Start(":" + strconv.Itoa(Config.Server.Port)))
|
||||
*/
|
||||
return nil
|
||||
}
|
||||
|
80
internal/server/templates.go
Normal file
80
internal/server/templates.go
Normal file
@ -0,0 +1,80 @@
|
||||
package server
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"embed"
|
||||
"fmt"
|
||||
"io"
|
||||
"io/fs"
|
||||
"log"
|
||||
"net/http"
|
||||
"path/filepath"
|
||||
"text/template"
|
||||
|
||||
"github.com/labstack/echo/v4"
|
||||
)
|
||||
|
||||
var FrontendFiles embed.FS
|
||||
|
||||
func getFileContent() string {
|
||||
content, err := FrontendFiles.ReadFile("frontend/index.html")
|
||||
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
return string(content)
|
||||
}
|
||||
|
||||
func getIndex(c echo.Context) error {
|
||||
IndexTemplate := template.Must(template.New("index").Parse(getFileContent()))
|
||||
|
||||
var tpl bytes.Buffer
|
||||
IndexTemplate.Execute(&tpl, Config.Template)
|
||||
|
||||
return c.HTML(http.StatusOK, tpl.String())
|
||||
}
|
||||
|
||||
func getFileSystem() http.FileSystem {
|
||||
fsys, err := fs.Sub(FrontendFiles, "frontend")
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
return http.FS(fsys)
|
||||
}
|
||||
|
||||
type Template struct {
|
||||
templates *template.Template
|
||||
}
|
||||
|
||||
func (t *Template) Render(w io.Writer, name string, data interface{}, c echo.Context) error {
|
||||
return t.templates.ExecuteTemplate(w, name, data)
|
||||
}
|
||||
|
||||
var t *template.Template
|
||||
|
||||
func ServeTemplate(c echo.Context) error {
|
||||
filename := filepath.Base(c.Request().URL.Path)
|
||||
if filename == "/" {
|
||||
filename = "index.html"
|
||||
}
|
||||
fmt.Println(filename)
|
||||
|
||||
var tpl bytes.Buffer
|
||||
t.ExecuteTemplate(&tpl, filename, Config.Template)
|
||||
return c.HTML(http.StatusOK, tpl.String())
|
||||
}
|
||||
|
||||
func StartTemplating(e *echo.Echo) {
|
||||
// register templates as renderer
|
||||
t = template.Must(template.ParseFS(
|
||||
FrontendFiles,
|
||||
"frontend/templates/*",
|
||||
))
|
||||
fmt.Println(t.ParseName)
|
||||
|
||||
e.GET("/*", ServeTemplate)
|
||||
staticHandler := http.FileServer(getFileSystem())
|
||||
e.GET("/static/*", echo.WrapHandler(http.StripPrefix("/", staticHandler)))
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user