87 lines
3.4 KiB
Plaintext
87 lines
3.4 KiB
Plaintext
package main
|
|
|
|
import "io/fs"
|
|
|
|
var (
|
|
siteName = "FollieCDN"
|
|
siteURL = "https://cdn.folliehiyuki.com/"
|
|
)
|
|
|
|
templ pageTemplate(path string) {
|
|
<html lang="en-us">
|
|
<head>
|
|
<title>
|
|
if path != "" {
|
|
{ path + " | " }
|
|
}
|
|
{ siteName }
|
|
</title>
|
|
<meta charset="utf-8"/>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
if path != "" {
|
|
<meta name="description" content={ path + " | " + siteName }/>
|
|
} else {
|
|
<meta name="description" content={ siteName }/>
|
|
}
|
|
<link rel="icon" type="image/x-icon" href="/favicon.ico"/>
|
|
<link rel="canonical" href={ siteURL + path }/>
|
|
<link rel="stylesheet" href="/styles/normalize.css" integrity="sha256-Atknw9eu6T9FV6v//wFp8skKdJ5JcAqANQ1bPykR4go=" crossorigin="anonymous"/>
|
|
<link rel="stylesheet" href="/styles/self.css" integrity="sha256-KReR+W3bFJ+Eu2X+F0lR+bULlbmaLS8SXUhIQJ/p/p4=" crossorigin="anonymous"/>
|
|
<link rel="stylesheet" href="/fonts/iosevka/iosevka-aile.css" integrity="sha256-20HRMpRlRW2+dk9R7asoOl5/z8Xyc2BbjeLZsButUww=" crossorigin="anonymous"/>
|
|
<link rel="stylesheet" href="/fonts/font-awesome/solid.css" integrity="sha256-xuw8YIIudFiLKxnOSDufxt0N2CFAJQXsK2lnTUPbofE=" crossorigin="anonymous"/>
|
|
<link rel="preload" href="/fonts/iosevka/iosevka-aile-bold.woff2" as="font" type="font/woff2" integrity="sha256-Hu4sqJ4m0rjWqqKYxhGKw1Lqz/VpftqKe0CeHACkSto=" crossorigin="anonymous"/>
|
|
<link rel="preload" href="/fonts/iosevka/iosevka-aile-bolditalic.woff2" as="font" type="font/woff2" integrity="sha256-fRJP2kQFy+xRyveNgFHkYWfHUG/DSkoUrXdfx7RGJMk=" crossorigin="anonymous"/>
|
|
<link rel="preload" href="/fonts/iosevka/iosevka-aile-italic.woff2" as="font" type="font/woff2" integrity="sha256-gH5Tq4ZWU0MJJQjXsdC00d++xrM842dN8pCVRmBnf0k=" crossorigin="anonymous"/>
|
|
<link rel="preload" href="/fonts/iosevka/iosevka-aile-regular.woff2" as="font" type="font/woff2" integrity="sha256-y6fQ+gvBFZWjeNgxiWQrYYgni3T5H+TLAwHCsSFSjKE=" crossorigin="anonymous"/>
|
|
</head>
|
|
<body>
|
|
<main>
|
|
{ children... }
|
|
</main>
|
|
</body>
|
|
</html>
|
|
}
|
|
|
|
templ indexPage() {
|
|
@pageTemplate("") {
|
|
<h1>FollieHiyuki's personal web assets</h1>
|
|
<p>
|
|
Hi! Welcome to my <em>"Content Delivery Network"</em> <s>freeloading</s> running on Cloudflare. The files served here are used to power my websites, including my
|
|
<a href="https://www.folliehiyuki.com" target="_blank" rel="author noopener external">personal blog</a> and
|
|
<a href="https://docs.folliehiyuki.com" target="_blank" rel="noopener external">handbook</a>. The source code is avaliable to see on
|
|
<a href="https://gitlab.com/FollieHiyuki/cdn" target="_blank" rel="noreferrer nofollow external">GitLab</a>.
|
|
</p>
|
|
<h2>Packages</h2>
|
|
<p>
|
|
<span class="fa-solid"></span> <a href="/fonts/">fonts</a> - Various 3rd-party fonts I use everywhere
|
|
<br/>
|
|
<span class="fa-solid"></span> <a href="/styles/">styles</a> - Some minimal, opinionated CSS settings
|
|
<br/>
|
|
</p>
|
|
}
|
|
}
|
|
|
|
templ listingPage(path string, entries []fs.DirEntry) {
|
|
@pageTemplate(path) {
|
|
<h1>{ path }</h1>
|
|
<p>
|
|
<span class="fa-solid"></span> <a href="../">{ "../" }</a>
|
|
<br/>
|
|
for _, entry := range entries {
|
|
// Obviously we need to discard the index file from the UI
|
|
if entry.Name() != "index.html" {
|
|
<span class="fa-solid">
|
|
if entry.IsDir() {
|
|

|
|
} else {
|
|

|
|
}
|
|
</span>
|
|
<a href={ templ.URL("./" + entry.Name()) }>{ entry.Name() }</a>
|
|
<br/>
|
|
}
|
|
}
|
|
</p>
|
|
}
|
|
}
|