vaulterm/server/main.go

94 lines
1.8 KiB
Go
Raw Normal View History

2024-11-05 18:43:59 +07:00
package main
2024-11-06 06:24:14 +00:00
import (
2024-11-06 13:49:41 +00:00
"os"
2024-11-06 06:24:14 +00:00
2024-11-06 09:50:41 +00:00
"github.com/gofiber/contrib/websocket"
"github.com/gofiber/fiber/v2"
2024-11-06 13:49:41 +00:00
"github.com/joho/godotenv"
2024-11-06 09:50:41 +00:00
"rul.sh/vaulterm/lib"
2024-11-06 06:24:14 +00:00
)
2024-11-06 09:50:41 +00:00
func main() {
2024-11-06 13:49:41 +00:00
godotenv.Load()
2024-11-06 09:50:41 +00:00
app := fiber.New()
2024-11-06 06:24:14 +00:00
2024-11-06 13:49:41 +00:00
var pve = &lib.PVEServer{
2024-11-07 04:56:19 +07:00
HostName: "10.0.0.1",
2024-11-06 13:49:41 +00:00
Port: 8006,
Username: os.Getenv("PVE_USERNAME"),
Password: os.Getenv("PVE_PASSWORD"),
}
2024-11-06 09:50:41 +00:00
app.Get("/", func(c *fiber.Ctx) error {
return c.SendString("Hello, World!")
2024-11-06 06:24:14 +00:00
})
2024-11-06 09:50:41 +00:00
app.Use("/ws", func(c *fiber.Ctx) error {
if websocket.IsWebSocketUpgrade(c) {
return c.Next()
2024-11-06 06:24:14 +00:00
}
2024-11-06 09:50:41 +00:00
return fiber.ErrUpgradeRequired
})
2024-11-06 14:53:07 +07:00
2024-11-06 09:50:41 +00:00
app.Get("/ws/ssh", websocket.New(func(c *websocket.Conn) {
2024-11-06 17:32:39 +00:00
cfg := &lib.SSHConfig{
HostName: "10.0.0.102",
User: "root",
Password: "ausya2",
2024-11-06 13:49:41 +00:00
}
2024-11-06 06:24:14 +00:00
2024-11-06 17:32:39 +00:00
if err := lib.NewSSHWebsocketSession(c, cfg); err != nil {
2024-11-06 13:49:41 +00:00
c.WriteMessage(websocket.TextMessage, []byte(err.Error()))
2024-11-06 06:24:14 +00:00
}
2024-11-06 17:32:39 +00:00
}))
2024-11-06 06:24:14 +00:00
2024-11-06 17:32:39 +00:00
app.Get("/ws/pve", websocket.New(func(c *websocket.Conn) {
client := c.Query("client")
serverId := c.Query("serverId")
var node *lib.PVEInstance
switch serverId {
case "2":
node = &lib.PVEInstance{
Type: "qemu",
Node: "pve",
VMID: "105",
}
case "3":
node = &lib.PVEInstance{
Type: "lxc",
Node: "pve",
VMID: "102",
}
2024-11-06 13:49:41 +00:00
}
2024-11-06 17:32:39 +00:00
var err error
if client == "vnc" {
err = pve.NewVNCSession(c, node)
} else {
err = pve.NewTerminalSession(c, node)
2024-11-06 13:49:41 +00:00
}
2024-11-06 17:32:39 +00:00
if err != nil {
c.WriteMessage(websocket.TextMessage, []byte(err.Error()))
}
2024-11-06 13:49:41 +00:00
}))
2024-11-07 04:56:19 +07:00
app.Get("/ws/incus", websocket.New(func(c *websocket.Conn) {
incus := &lib.IncusServer{
HostName: "100.64.0.3",
Port: 8443,
ClientCert: "",
ClientKey: "",
}
if err := lib.NewIncusWebsocketSession(c, incus); err != nil {
c.WriteMessage(websocket.TextMessage, []byte(err.Error()))
}
}))
2024-11-06 09:50:41 +00:00
app.Listen(":3000")
2024-11-05 18:43:59 +07:00
}