Files
Remote-Gameplay/config/config.go
2025-02-13 22:49:42 +00:00

211 lines
5.1 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
NATEscapeGameServerPort string
NATEscapeScreenSharePort string
NATEscapeBarrierPort string
BackendURL string
BrowserCommand string
Rate float64
ScreenName string
InternalGameServerPort string
InternalScreenSharePort string
DomainName 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"
c.InternalGameServerPort = "8098"
c.InternalScreenSharePort = "8888"
c.DomainName = "xplane-webrtc.akilan.io"
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["NATEscapeGameServerPort"] = c.NATEscapeGameServerPort
//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
}