123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- package main
- import (
- "embed"
- "flag"
- "io/fs"
- "log"
- "net/http"
- "os"
- )
- const (
- defaultDevMode = true
- configPath = "./config"
- usbKvmConfigPath = configPath + "/usbkvm.json"
- )
- var (
- developent = flag.Bool("dev", defaultDevMode, "Enable development mode with local static files")
- mode = flag.String("mode", "usbkvm", "Mode of operation: usbkvm, ipkvm or debug")
- tool = flag.String("tool", "", "Run debug tool, must be used with -mode=debug")
- )
- /* Web Server Static Files */
- //go:embed www
- var embeddedFiles embed.FS
- var webfs http.FileSystem
- func init() {
- // Initiate the web server static files
- if *developent {
- webfs = http.Dir("./www")
- } else {
- // Embed the ./www folder and trim the prefix
- subFS, err := fs.Sub(embeddedFiles, "www")
- if err != nil {
- log.Fatal(err)
- }
- webfs = http.FS(subFS)
- }
- // Initiate the config folder if not exists
- err := os.MkdirAll("./config", 0755)
- if err != nil {
- log.Fatal("Failed to create config folder:", err)
- }
- }
- func main() {
- flag.Parse()
- switch *mode {
- case "cfgchip":
- //Load config file or create default one
- kvmCfg, err := loadUsbKvmConfig()
- if err != nil {
- log.Fatal("Failed to load or create USB KVM config:", err)
- }
- //Override the baudrate to 9600 for chip configuration
- kvmCfg.USBKVMBaudrate = 9600
- err = SetupHIDCommunication(kvmCfg)
- if err != nil {
- log.Fatal(err)
- }
- case "debug":
- err := handle_debug_tool()
- if err != nil {
- log.Fatal(err)
- }
- case "ipkvm":
- //Check runtime dependencies
- err := run_dependency_precheck()
- if err != nil {
- log.Fatal(err)
- }
- //Start IP-KVM mode
- err = init_ipkvm_mode()
- if err != nil {
- log.Fatal(err)
- }
- case "usbkvm":
- //Check runtime dependencies
- err := run_dependency_precheck()
- if err != nil {
- log.Fatal(err)
- }
- //Load config file or create default one
- kvmCfg, err := loadUsbKvmConfig()
- if err != nil {
- log.Fatal("Failed to load or create USB KVM config:", err)
- }
- //Start USB KVM mode
- err = startUsbKvmMode(kvmCfg)
- if err != nil {
- log.Fatal(err)
- }
- default:
- log.Fatalf("Unknown mode: %s. Supported modes are: usbkvm, capture", *mode)
- }
- }
|