diff --git a/config.go b/config.go index f1b2350..6c28f85 100644 --- a/config.go +++ b/config.go @@ -18,23 +18,23 @@ type AppConfig struct { Daemon struct { ListenAddress string `json:"listen_address"` + Port int `json:"port"` } `json:"daemon"` Instances map[string]InstanceMetadata `json:"instances"` } func CreateConfigWithDefaults(configPath string) *AppConfig { - home, _ := os.UserHomeDir() - basePath := filepath.Join(home, ".local", "share", "vssm") + basePath := filepath.Join(filepath.Dir(configPath), "vssm_data") cfg := &AppConfig{} - cfg.Storage.AppDataDir = basePath cfg.Storage.InstallDir = filepath.Join(basePath, "installs") cfg.Storage.InstancesDir = filepath.Join(basePath, "instances") cfg.Storage.BackupDir = filepath.Join(basePath, "backups") cfg.Storage.ConfigTemplatesDir = filepath.Join(basePath, "config_templates") - cfg.Daemon.ListenAddress = "127.0.0.1:12345" + cfg.Daemon.ListenAddress = "127.0.0.1" + cfg.Daemon.Port = 65000 cfg.Instances = make(map[string]InstanceMetadata) @@ -70,7 +70,6 @@ func LoadOrCreateConfig(configPath string) (*AppConfig, error) { } dirs := []string{ - cfg.Storage.AppDataDir, cfg.Storage.InstallDir, cfg.Storage.InstancesDir, cfg.Storage.BackupDir, diff --git a/daemon.go b/daemon.go index 4e4f789..b8059a5 100644 --- a/daemon.go +++ b/daemon.go @@ -60,8 +60,10 @@ func StartDaemon(cfg *AppConfig, configPath string) error { mux.ServeHTTP(w, r) }) + listenAddress := cfg.Daemon.ListenAddress + ":" + strconv.Itoa(cfg.Daemon.Port) + server := &http.Server{ - Addr: cfg.Daemon.ListenAddress, + Addr: listenAddress, Handler: corsWrappedHandler, } @@ -69,7 +71,7 @@ func StartDaemon(cfg *AppConfig, configPath string) error { signal.Notify(sigChan, os.Interrupt, syscall.SIGTERM) go func() { - fmt.Printf("Engine daemon actively listening on http://%s\n", cfg.Daemon.ListenAddress) + fmt.Printf("Engine daemon actively listening on http://%s\n", listenAddress) if err := server.ListenAndServe(); err != http.ErrServerClosed { fmt.Printf("Daemon runtime failure: %v\n", err) } diff --git a/main.go b/main.go index 8b83490..a069b8e 100644 --- a/main.go +++ b/main.go @@ -63,6 +63,9 @@ func main() { log.Fatalf("Initialization failed: %v", err) } + listenAddress := cfg.Daemon.ListenAddress + ":" + strconv.Itoa(cfg.Daemon.Port) + fmt.Printf("Got listen address from config: %s\n", listenAddress) + subCommand := args[0] switch subCommand { @@ -132,7 +135,9 @@ func main() { } func sendIPCRequest(cfg *AppConfig, method string, path string, body io.Reader) { - targetUrl := fmt.Sprintf("http://%s%s", cfg.Daemon.ListenAddress, path) + listenAddress := cfg.Daemon.ListenAddress + ":" + strconv.Itoa(cfg.Daemon.Port) + targetUrl := fmt.Sprintf("http://%s%s", listenAddress, path) + fmt.Printf("Listen Addr: %s; Target URL: %s\n", listenAddress, targetUrl) req, err := http.NewRequest(method, targetUrl, body) if err != nil { log.Fatalf("Failed to construct IPC frame: %v", err) @@ -158,7 +163,8 @@ func sendIPCRequest(cfg *AppConfig, method string, path string, body io.Reader) } func fetchAndPrintStatus(cfg *AppConfig) { - targetUrl := fmt.Sprintf("http://%s/instances/list", cfg.Daemon.ListenAddress) + listenAddress := cfg.Daemon.ListenAddress + ":" + strconv.Itoa(cfg.Daemon.Port) + targetUrl := fmt.Sprintf("http://%s/instances/list", listenAddress) resp, err := http.Get(targetUrl) if err != nil { log.Fatalf("IPC connection failed. Is the vs-manager daemon running? Error: %v", err)