initial commit
This commit is contained in:
64
cmd/kvm/main.go
Normal file
64
cmd/kvm/main.go
Normal file
@@ -0,0 +1,64 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
"rkkvm/config"
|
||||
"rkkvm/http/hw/rtc"
|
||||
"rkkvm/http/hw/stream"
|
||||
"rkkvm/http/route"
|
||||
"strings"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
log "github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
func main() {
|
||||
config.Init()
|
||||
cfg := config.Get()
|
||||
lvl, err := log.ParseLevel(cfg.LogLevel)
|
||||
if err == nil {
|
||||
log.SetLevel(lvl)
|
||||
} else {
|
||||
log.Println("Failed to parse log level, use default level: info")
|
||||
}
|
||||
|
||||
if cfg.Stream.Source == config.StreamSourceMjpeg {
|
||||
ustreamer := stream.Init(cfg.UStreamer.Path, strings.Split(cfg.UStreamer.Args, " "))
|
||||
ustreamer.Start()
|
||||
//go ustreamer.Watch()
|
||||
} else if cfg.Stream.Source == config.StreamSourceH264 {
|
||||
ffmpeg := stream.InitFFmpeg(cfg.FFmpeg.Path, cfg.FFmpeg.FormatArgs())
|
||||
ffmpeg.Start()
|
||||
//go ffmpeg.Watch()
|
||||
} else {
|
||||
log.Fatalf("unsupported stream source type: %v", cfg.Stream.Source)
|
||||
}
|
||||
|
||||
webrtc, err := rtc.Init(cfg.WebRtc.Host, cfg.WebRtc.Port)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
go webrtc.Read()
|
||||
go webrtc.Listen()
|
||||
|
||||
r := gin.Default()
|
||||
r.Use(gin.Recovery())
|
||||
r.GET("/ping", func(c *gin.Context) {
|
||||
c.JSON(http.StatusOK, gin.H{
|
||||
"message": "pong",
|
||||
})
|
||||
})
|
||||
route.Api(r)
|
||||
route.Static(r)
|
||||
|
||||
if cfg.NanoKVMUISupport {
|
||||
r.POST("/api/auth/login", func(c *gin.Context) {
|
||||
c.JSON(http.StatusOK, gin.H{
|
||||
"token": "disabled",
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
r.Run(fmt.Sprintf(":%d", cfg.Port))
|
||||
}
|
||||
Reference in New Issue
Block a user