211 lines
5.1 KiB
Go
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
|
|
}
|