converge/cmd/templaterender/render.go
Erik Brakkee 1b76add15b Alternative contextpath is now supported.
This will simplify hosting in cases where you have no control over DNS but only over one domain.
2024-08-03 23:10:57 +02:00

95 lines
2.0 KiB
Go

package main
import (
"context"
"converge/pkg/comms"
"converge/pkg/models"
templates2 "converge/pkg/server/templates"
"github.com/a-h/templ"
"log"
"os"
"path/filepath"
"time"
)
type RenderFunc func() templ.Component
func render(dir string, name string, render RenderFunc) {
fname := filepath.Join(dir, name)
log.Printf("Writing to %s", fname)
f, err := os.Create(fname)
if err != nil {
panic(err)
}
defer f.Close()
err = render().Render(context.Background(), f)
if err != nil {
panic(err)
}
}
func main() {
dir := "html/docs"
netherlands, err := time.LoadLocation("Europe/Amsterdam")
if err != nil {
panic(err)
}
access := models.ConvergeAccess{
Secure: "s",
BaseUrl: "example.com",
Location: netherlands,
Username: "converge",
}
fullindex := func() templ.Component {
return templates2.Index(access)
}
usage := func() templ.Component {
return templates2.UsageTab(access)
}
render(dir, "fullindex.html", fullindex)
render(dir, "index.html", templates2.AboutTab)
render(dir, "usage.html", usage)
render(dir, "downloads.html", templates2.Downloads)
render(dir, "sessions-none.html", func() templ.Component {
return templates2.SessionsTab(nil, netherlands)
})
render(dir, "sessions.html", func() templ.Component {
japan, err := time.LoadLocation("Asia/Tokyo")
if err != nil {
panic(err)
}
state := models.State{}
agent := models.Agent{
PublicId: "id",
GeneratedId: "100",
StartTime: time.Now().In(japan),
AgentInfo: comms.AgentInfo{
Username: "ci",
Hostname: "container123",
Pwd: "/home/ci",
OS: "linux",
Shell: "/bin/bash",
},
ExpiryTime: time.Now().In(japan).Add(10 * time.Minute),
}
state.Agents = append(state.Agents, agent)
client := models.Client{
PublicId: "c1",
AgentId: "100",
ClientId: 3,
StartTime: time.Now().In(japan),
SessionType: "sftp",
}
state.Clients = append(state.Clients, client)
return templates2.SessionsTab(&state, netherlands)
})
}