* usage page now has more dynamic part where user can enter id and publis ssh keys and the server will generate the appropriate commmands to execute depending on the local and remote shell.
95 lines
2.0 KiB
Go
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",
|
|
HostPort: "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)
|
|
})
|
|
}
|