vaulterm/server/main.go

73 lines
1.5 KiB
Go

package main
import (
"os"
"github.com/gofiber/contrib/websocket"
"github.com/gofiber/fiber/v2"
"github.com/joho/godotenv"
"rul.sh/vaulterm/lib"
)
func main() {
godotenv.Load()
app := fiber.New()
var pve = &lib.PVEServer{
HostName: "pve",
Port: 8006,
Username: os.Getenv("PVE_USERNAME"),
Password: os.Getenv("PVE_PASSWORD"),
}
app.Get("/", func(c *fiber.Ctx) error {
return c.SendString("Hello, World!")
})
app.Use("/ws", func(c *fiber.Ctx) error {
if websocket.IsWebSocketUpgrade(c) {
return c.Next()
}
return fiber.ErrUpgradeRequired
})
// app.Get("/ws/ssh", websocket.New(func(c *websocket.Conn) {
// err := lib.NewSSHWebsocketSession(c, &lib.SSHConfig{
// HostName: "10.0.0.102",
// User: "root",
// Password: "ausya2",
// })
// if err != nil {
// msg := fmt.Sprintf("\r\n%s\r\n", err.Error())
// c.WriteMessage(websocket.TextMessage, []byte(msg))
// }
// }))
app.Get("/ws/ssh", websocket.New(func(c *websocket.Conn) {
node := &lib.PVEInstance{
Type: "lxc",
Node: "pve",
VMID: "102",
}
access, err := pve.GetAccessTicket()
if err != nil {
c.WriteMessage(websocket.TextMessage, []byte(err.Error()))
return
}
ticket, err := pve.GetVNCTicket(access, node, false)
if err != nil {
c.WriteMessage(websocket.TextMessage, []byte(err.Error()))
return
}
if err := pve.NewTerminalSession(c, access, node, ticket); err != nil {
c.WriteMessage(websocket.TextMessage, []byte(err.Error()))
}
}))
app.Listen(":3000")
}