Files
Remote-Gameplay/config/config.go
2023-03-01 10:41:37 +00:00

204 lines
4.8 KiB
Go

package config
import (
"encoding/json"
"io/ioutil"
"os"
"os/user"
)
var (
defaultPath string
defaults = map[string]interface{}{}
configName = "config"
configType = "json"
configFile = "config.json"
configPaths []string
)
type Config struct {
SystemUsername string
BarrierHostName string
Rooms string
IPAddress string
ScriptToExecute string
SSHPassword string
NATEscapeServerPort string
NATEscapeBarrierPort string
BackendURL string
BrowserCommand string
Rate float64
ScreenName string
}
// Exists reports whether the named file or directory exists.
func fileExists(name string) bool {
if _, err := os.Stat(name); err != nil {
if os.IsNotExist(err) {
return false
}
}
return true
}
// SetDefaults This function to be called only during a
// make install
func SetDefaults() error {
//Getting Current Directory from environment variable
//curDir := os.Getenv("REMOTEGAMING")
//Setting current directory to default path
defaultPath, _ = os.Getwd()
defaultPath = defaultPath + "/"
// Get system username
user, err := user.Current()
if err != nil {
return err
}
// Get Hostname
name, err := os.Hostname()
if err != nil {
return err
}
var c Config
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"
file, _ := json.MarshalIndent(c, "", " ")
_ = ioutil.WriteFile(configFile, file, 0644)
////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)
//
////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
//}
// 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
}
func (c *Config) WriteConfig() error {
//Getting Current Directory from environment variable
//curDir := os.Getenv("REMOTEGAMING")
//
////Setting current directory to default path
//defaultPath = curDir + "/"
//
////Setting default paths for the config file
//defaults["SystemUsername"] = c.SystemUsername
//defaults["BarrierHostName"] = c.BarrierHostName
//defaults["Rooms"] = c.Rooms
//defaults["IPAddress"] = c.IPAddress
//defaults["ScriptToExecute"] = c.ScriptToExecute
//defaults["SSHPassword"] = c.SSHPassword
//defaults["NATEscapeServerPort"] = c.NATEscapeServerPort
//defaults["NATEscapeBarrierPort"] = c.NATEscapeBarrierPort
// 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
//}
file, _ := json.MarshalIndent(c, "", " ")
_ = ioutil.WriteFile("config.json", file, 0644)
return nil
}