diff --git a/config/config.go b/config/config.go index 5b8c08a..52e9ab2 100644 --- a/config/config.go +++ b/config/config.go @@ -2,7 +2,6 @@ package config import ( "encoding/json" - "github.com/spf13/viper" "io/ioutil" "os" "os/user" @@ -27,7 +26,9 @@ type Config struct { NATEscapeServerPort string NATEscapeBarrierPort string BackendURL string + BrowserCommand string Rate float64 + ScreenName string } // Exists reports whether the named file or directory exists. @@ -44,10 +45,11 @@ func fileExists(name string) bool { // make install func SetDefaults() error { //Getting Current Directory from environment variable - curDir := os.Getenv("REMOTEGAMING") + //curDir := os.Getenv("REMOTEGAMING") //Setting current directory to default path - defaultPath = curDir + "/" + defaultPath, _ = os.Getwd() + defaultPath = defaultPath + "/" // Get system username user, err := user.Current() @@ -61,73 +63,105 @@ func SetDefaults() error { return err } - //Setting default paths for the config file - defaults["SystemUsername"] = user.Username - defaults["BarrierHostName"] = name - defaults["Rooms"] = defaultPath + "room.json" - defaults["ScriptToExecute"] = "" - defaults["SSHPassword"] = "" - defaults["Rate"] = 0.0 - defaults["BackendURL"] = "https://xplane-webrtc.akilan.io" + var c Config - //Paths to search for config file - configPaths = append(configPaths, defaultPath) + c.BrowserCommand = "chromium-browser" + c.SystemUsername = user.Username + c.Rooms = defaultPath + "room.json" + c.BarrierHostName = name + c.ScriptToExecute = "" + c.SSHPassword = "" + c.Rate = 0.0 + c.BackendURL = "https://xplane-webrtc.akilan.io" + c.ScreenName = "Entire screen" - //Create rooms.json file - os.Create(defaultPath + "room.json") + file, _ := json.MarshalIndent(c, "", " ") - // If the config file exists remove and make a new one - if fileExists(defaultPath + "config.json") { - err = os.Remove(defaultPath + "config.json") - if err != nil { - return err - } - } + _ = ioutil.WriteFile(configFile, file, 0644) - //Calling configuration file - _, err = ConfigInit() - if err != nil { - return err - } + ////Setting default paths for the config file + //defaults["SystemUsername"] = user.Username + //defaults["BarrierHostName"] = name + //defaults["Rooms"] = defaultPath + "room.json" + //defaults["ScriptToExecute"] = "" + //defaults["SSHPassword"] = "" + //defaults["Rate"] = 0.0 + //defaults["BackendURL"] = "https://xplane-webrtc.akilan.io" + //defaults["BrowserCommand"] = "chromium-browser" + // + ////Paths to search for config file + //configPaths = append(configPaths, defaultPath) + // + ////Create rooms.json file + //os.Create(defaultPath + "room.json") + // + //// If the config file exists remove and make a new one + //if fileExists(defaultPath + "config.json") { + // err = os.Remove(defaultPath + "config.json") + // if err != nil { + // return err + // } + //} + // + ////Calling configuration file + //_, err = ConfigInit() + //if err != nil { + // return err + //} return nil } func ConfigInit() (*Config, error) { - curDir := os.Getenv("REMOTEGAMING") - //Setting current directory to default path - defaultPath = curDir + "/" - //Paths to search for config file - configPaths = append(configPaths, defaultPath) + //curDir := os.Getenv("REMOTEGAMING") + ////Setting current directory to default path + //defaultPath = curDir + "/" + ////Paths to search for config file + //configPaths = append(configPaths, defaultPath) + // + ////Add all possible configurations paths + //for _, v := range configPaths { + // viper.AddConfigPath(v) + //} + // + ////Read config file + //if err := viper.ReadInConfig(); err != nil { + // // If the error thrown is config file not found + // //Sets default configuration to viper + // for k, v := range defaults { + // viper.SetDefault(k, v) + // } + // + // viper.SetConfigName(configName) + // viper.SetConfigFile(configFile) + // viper.SetConfigType(configType) + // + // if err = viper.WriteConfig(); err != nil { + // return nil, err + // } + //} + // + //// Adds configuration to the struct + //var config Config + //if err := viper.Unmarshal(&config); err != nil { + // return nil, err + //} - //Add all possible configurations paths - for _, v := range configPaths { - viper.AddConfigPath(v) - } - - //Read config file - if err := viper.ReadInConfig(); err != nil { - // If the error thrown is config file not found - //Sets default configuration to viper - for k, v := range defaults { - viper.SetDefault(k, v) - } - - viper.SetConfigName(configName) - viper.SetConfigFile(configFile) - viper.SetConfigType(configType) - - if err = viper.WriteConfig(); err != nil { - return nil, err - } - } - - // Adds configuration to the struct - var config Config - if err := viper.Unmarshal(&config); err != nil { + // Open our jsonFile + jsonFile, err := os.Open(configFile) + // if we os.Open returns an error then handle it + if err != nil { return nil, err } + // defer the closing of our jsonFile so that we can parse it later on + defer jsonFile.Close() + + byteValue, _ := ioutil.ReadAll(jsonFile) + + var config Config + json.Unmarshal(byteValue, &config) + return &config, nil } diff --git a/main.go b/main.go index 48b181c..1a279e0 100644 --- a/main.go +++ b/main.go @@ -110,7 +110,7 @@ func main() { if *headless { // Running starting a browser as a background process go func() { - Config, err := config.ConfigInit() + Config, err = config.ConfigInit() if err != nil { log.Fatalln(err) } @@ -134,10 +134,8 @@ func main() { TaskExecute = Config.ScriptToExecute } - fmt.Println(addr) - // Starting screen share headless - cmd := exec.Command("chromium-browser", "--no-sandbox", "--auto-select-desktop-capture-source=Entire screen", "--url", "https://"+*addr+":"+*port+"/?mode=headless", "--ignore-certificate-errors") + cmd := exec.Command(Config.BrowserCommand, "--no-sandbox", "--auto-select-desktop-capture-source="+Config.ScreenName, "--url", "https://"+*addr+":"+*port+"/?mode=headless", "--ignore-certificate-errors") if err := cmd.Start(); err != nil { log.Fatalln(err) }