Compare commits
	
		
			2 Commits
		
	
	
		
			13fae1c23f
			...
			4f44974c58
		
	
	| 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 ( | require ( | ||||||
| 	github.com/TwiN/go-color v1.4.1 // indirect | 	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/labstack/gommon v0.4.2 // indirect | ||||||
| 	github.com/mattn/go-colorable v0.1.14 // indirect | 	github.com/mattn/go-colorable v0.1.14 // indirect | ||||||
| 	github.com/mattn/go-isatty v0.0.20 // 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/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 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= | ||||||
| github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | 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 h1:dKccXx7xA56UNqOcFIbuqFjAWPVtP688j5QMgmo6OHU= | ||||||
| github.com/kirsle/configdir v0.0.0-20170128060238-e45d2f54772f/go.mod h1:4rEELDSfUAlBSyUjPG0JnaNGjf13JySHFeRdD/3dLP0= | 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 h1:oTZZW+T3s9gAu5L8vmzihV7/lkXGZuITzTQkTEhcXEA= | ||||||
| github.com/labstack/echo/v4 v4.13.4/go.mod h1:g63b33BZ5vZzcIUF8AtRH40DrTlXnx4UMC8rBdndmjQ= | github.com/labstack/echo/v4 v4.13.4/go.mod h1:g63b33BZ5vZzcIUF8AtRH40DrTlXnx4UMC8rBdndmjQ= | ||||||
| github.com/labstack/gommon v0.4.2 h1:F8qTUNXgG1+6WQmqoUWnz8WiEU60mXVVw0P4ht1WRA0= | 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 ( | import ( | ||||||
| 	"log" | 	"log" | ||||||
| 	"net/http" | 	"net/http" | ||||||
|  | 	"path/filepath" | ||||||
| 	"strconv" | 	"strconv" | ||||||
| 	"time" | 	"time" | ||||||
|  |  | ||||||
| 	"gitea.elara.ws/Hazel/transfem-startpage/internal/cache" |  | ||||||
| 	"gitea.elara.ws/Hazel/transfem-startpage/internal/rendering" | 	"gitea.elara.ws/Hazel/transfem-startpage/internal/rendering" | ||||||
| 	"github.com/labstack/echo/v4" |  | ||||||
| ) | ) | ||||||
|  |  | ||||||
| var Config = rendering.NewConfig() | 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 { | func Start(profile string) error { | ||||||
| 	err := Config.ScanForConfigFile(profile) | 	err := Config.ScanForConfigFile(profile) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| @@ -38,30 +47,36 @@ func Start(profile string) error { | |||||||
| 		log.Println(err) | 		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) | 		e := echo.New() | ||||||
| 	if !cache.Disabled { |  | ||||||
| 		cache.StartStaticServer(e) |  | ||||||
|  |  | ||||||
| 		log.Println("downloading website icons...") | 		// statically serve the file | ||||||
| 		for i, w := range Config.Template.Websites { | 		cache := cache.NewCache(profile) | ||||||
| 			u, err := cache.CacheUrl(w.ImageUrl) | 		if !cache.Disabled { | ||||||
| 			if err != nil { | 			cache.StartStaticServer(e) | ||||||
| 				log.Println(err) |  | ||||||
|  | 			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 | 		// https://echo.labstack.com/docs/cookbook/embed-resources | ||||||
| 	staticHandler := http.FileServer(getFileSystem()) | 			staticHandler := http.FileServer(getFileSystem()) | ||||||
| 	e.GET("/assets/*", echo.WrapHandler(http.StripPrefix("/", staticHandler))) | 			e.GET("/assets/*", echo.WrapHandler(http.StripPrefix("/", staticHandler))) | ||||||
| 	e.GET("/scripts/*", echo.WrapHandler(http.StripPrefix("/", staticHandler))) | 			e.GET("/scripts/*", echo.WrapHandler(http.StripPrefix("/", staticHandler))) | ||||||
| 	e.GET("/", getIndex) | 			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 | 	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))) | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user