133 lines
3.5 KiB
Go
133 lines
3.5 KiB
Go
package generate
|
|
|
|
import (
|
|
"github.com/Akilan1999/p2p-rendering-computation/config"
|
|
"os"
|
|
)
|
|
|
|
var (
|
|
defaults = map[string]interface{}{}
|
|
configPaths []string
|
|
defaultEnvName = "P2PRC"
|
|
)
|
|
|
|
// GetPathP2PRC Getting P2PRC Directory from environment variable
|
|
func GetPathP2PRC() (string, error) {
|
|
curDir := os.Getenv(defaultEnvName)
|
|
return curDir + "/", nil
|
|
}
|
|
|
|
// SetEnvName Sets the environment name
|
|
// This is to ensure that the Path of your project is detected from
|
|
// your environment variable
|
|
// This is useful when extending the use case of P2PRC
|
|
func SetEnvName(EnvName string) error {
|
|
if EnvName != "" {
|
|
defaultEnvName = EnvName
|
|
}
|
|
// Handling error to be implemented only if needed
|
|
return nil
|
|
}
|
|
|
|
// GetCurrentPath Getting P2PRC Directory from environment variable
|
|
func GetCurrentPath() (string, error) {
|
|
curDir := os.Getenv("PWD")
|
|
return curDir + "/", nil
|
|
}
|
|
|
|
// SetDefaults This function to be called only during a
|
|
// make install
|
|
func SetDefaults(envName string, forceDefault bool, CustomConfig interface{}, NoBoilerPlate bool, ConfigUpdate ...*config.Config) (*config.Config, error) {
|
|
//Setting current directory to default path
|
|
defaultPath, err := GetCurrentPath()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
// Set Env name
|
|
err = config.SetEnvName(envName)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
////Creates ip_table.json in the json directory
|
|
//err = Copy("p2p/ip_table.json", "p2p/iptable/ip_table.json")
|
|
//if err != nil {
|
|
// return err
|
|
//}
|
|
//
|
|
////Creates a copy of trackcontainers.json in the appropriate directory
|
|
//err = Copy("client/trackcontainers.json", "client/trackcontainers/trackcontainers.json")
|
|
//if err != nil {
|
|
// return err
|
|
//}
|
|
//
|
|
////Creates a copy of trackcontainers.json in the appropriate directory
|
|
//err = Copy("client/grouptrackcontainers.json", "client/trackcontainers/grouptrackcontainers.json")
|
|
//if err != nil {
|
|
// return err
|
|
//}
|
|
|
|
var Defaults config.Config
|
|
|
|
if len(ConfigUpdate) == 0 {
|
|
//Setting default paths for the config file
|
|
Defaults.IPTable = defaultPath + "p2p/iptable/ip_table.json"
|
|
Defaults.DefaultDockerFile = defaultPath + "server/docker/containers/docker-ubuntu-sshd/"
|
|
Defaults.DockerContainers = defaultPath + "server/docker/containers/"
|
|
Defaults.SpeedTestFile = defaultPath + "p2p/50.bin"
|
|
Defaults.IPV6Address = ""
|
|
Defaults.PluginPath = defaultPath + "plugin/deploy"
|
|
Defaults.TrackContainersPath = defaultPath + "client/trackcontainers/trackcontainers.json"
|
|
Defaults.GroupTrackContainersPath = defaultPath + "client/trackcontainers/grouptrackcontainers.json"
|
|
Defaults.ServerPort = "8088"
|
|
Defaults.FRPServerPort = "True"
|
|
Defaults.CustomConfig = CustomConfig
|
|
Defaults.BehindNAT = "True"
|
|
Defaults.DockerRunLogs = "/tmp/"
|
|
// Random name generator
|
|
hostname, err := os.Hostname()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
Defaults.MachineName = hostname
|
|
} else {
|
|
Defaults = *ConfigUpdate[0]
|
|
}
|
|
|
|
//defaults["NetworkInterface"] = "wlp0s20f3"
|
|
//defaults["NetworkInterfaceIPV6Index"] = "2"
|
|
|
|
//Paths to search for config file
|
|
configPaths = append(configPaths, defaultPath)
|
|
|
|
if fileExists(defaultPath+"config.json") && forceDefault {
|
|
err := os.Remove(defaultPath + "config.json")
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
}
|
|
|
|
// write defaults to the config file
|
|
err = Defaults.WriteConfig()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
//Calling configuration file
|
|
Config, err := config.ConfigInit(defaults, nil, envName)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
if !NoBoilerPlate {
|
|
err = GenerateFiles()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
}
|
|
|
|
return Config, nil
|
|
}
|