kopia lustrzana https://github.com/bugout-dev/moonstream
134 wiersze
3.5 KiB
Go
134 wiersze
3.5 KiB
Go
|
/*
|
||
|
Configurations for robots server.
|
||
|
*/
|
||
|
package main
|
||
|
|
||
|
import (
|
||
|
"encoding/json"
|
||
|
"fmt"
|
||
|
"io/ioutil"
|
||
|
"log"
|
||
|
"os"
|
||
|
"path/filepath"
|
||
|
"strings"
|
||
|
)
|
||
|
|
||
|
var (
|
||
|
NODEBALANCER_ACCESS_ID = os.Getenv("ENGINE_NODEBALANCER_ACCESS_ID")
|
||
|
MUMBAI_WEB3_PROVIDER_URI = os.Getenv("MOONSTREAM_MUMBAI_WEB3_PROVIDER_URI")
|
||
|
POLYGON_WEB3_PROVIDER_URI = os.Getenv("MOONSTREAM_POLYGON_WEB3_PROVIDER_URI")
|
||
|
WYRM_WEB3_PROVIDER_URI = os.Getenv("MOONSTREAM_WYRM_WEB3_PROVIDER_URI")
|
||
|
|
||
|
JOURNAL_SEARCH_BATCH_SIZE = 20
|
||
|
|
||
|
ROBOTS_SIGNER_SECRETS_DIR_PATH = os.Getenv("ENGINE_ROBOTS_SECRETS_DIR")
|
||
|
|
||
|
HUMBUG_REPORTER_ROBOTS_HEARTBEAT_TOKEN = os.Getenv("HUMBUG_REPORTER_ROBOTS_HEARTBEAT_TOKEN")
|
||
|
)
|
||
|
|
||
|
type RobotsConfig struct {
|
||
|
CollectionId string `json:"collection_id"`
|
||
|
SignerKeyfileName string `json:"signer_keyfile_name"`
|
||
|
SignerPasswordFileName string `json:"signer_password_file_name"`
|
||
|
TerminusPoolId int64 `json:"terminus_pool_id"`
|
||
|
Blockchain string `json:"blockchain"`
|
||
|
TerminusAddress string `json:"terminus_address"`
|
||
|
ValueToClaim int64 `json:"value_to_claim"`
|
||
|
MaxValueToClaim int64 `json:"max_value_to_claim"`
|
||
|
}
|
||
|
|
||
|
func LoadConfig(configPath string) (*[]RobotsConfig, error) {
|
||
|
rawBytes, err := ioutil.ReadFile(configPath)
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
robotsConfigs := &[]RobotsConfig{}
|
||
|
err = json.Unmarshal(rawBytes, robotsConfigs)
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
return robotsConfigs, nil
|
||
|
}
|
||
|
|
||
|
type ConfigPlacement struct {
|
||
|
ConfigDirPath string
|
||
|
ConfigDirExists bool
|
||
|
|
||
|
ConfigPath string
|
||
|
ConfigExists bool
|
||
|
}
|
||
|
|
||
|
// CheckPathExists checks if path to file exists
|
||
|
func CheckPathExists(path string) (bool, error) {
|
||
|
var exists = true
|
||
|
_, err := os.Stat(path)
|
||
|
if err != nil {
|
||
|
if os.IsNotExist(err) {
|
||
|
exists = false
|
||
|
} else {
|
||
|
return exists, fmt.Errorf("Error due checking file path exists, err: %v", err)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return exists, nil
|
||
|
}
|
||
|
|
||
|
func PrepareConfigPlacement(providedPath string) (*ConfigPlacement, error) {
|
||
|
var configDirPath, configPath string
|
||
|
if providedPath == "" {
|
||
|
homeDir, err := os.UserHomeDir()
|
||
|
if err != nil {
|
||
|
return nil, fmt.Errorf("Unable to find user home directory, %v", err)
|
||
|
}
|
||
|
configDirPath = fmt.Sprintf("%s/.robots", homeDir)
|
||
|
configPath = fmt.Sprintf("%s/config.json", configDirPath)
|
||
|
} else {
|
||
|
configPath = strings.TrimSuffix(providedPath, "/")
|
||
|
configDirPath = filepath.Dir(configPath)
|
||
|
}
|
||
|
|
||
|
configDirPathExists, err := CheckPathExists(configDirPath)
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
configPathExists, err := CheckPathExists(configPath)
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
|
||
|
configPlacement := &ConfigPlacement{
|
||
|
ConfigDirPath: configDirPath,
|
||
|
ConfigDirExists: configDirPathExists,
|
||
|
|
||
|
ConfigPath: configPath,
|
||
|
ConfigExists: configPathExists,
|
||
|
}
|
||
|
|
||
|
return configPlacement, nil
|
||
|
}
|
||
|
|
||
|
// Generates empty list of robots configuration
|
||
|
func GenerateDefaultConfig(config *ConfigPlacement) error {
|
||
|
if !config.ConfigDirExists {
|
||
|
if err := os.MkdirAll(config.ConfigDirPath, os.ModePerm); err != nil {
|
||
|
return fmt.Errorf("Unable to create directory, %v", err)
|
||
|
}
|
||
|
log.Printf("Config directory created at: %s", config.ConfigDirPath)
|
||
|
}
|
||
|
|
||
|
if !config.ConfigExists {
|
||
|
tempConfig := []RobotsConfig{}
|
||
|
tempConfigJson, err := json.Marshal(tempConfig)
|
||
|
if err != nil {
|
||
|
return fmt.Errorf("Unable to marshal configuration data, err: %v", err)
|
||
|
}
|
||
|
err = ioutil.WriteFile(config.ConfigPath, tempConfigJson, os.ModePerm)
|
||
|
if err != nil {
|
||
|
return fmt.Errorf("Unable to write default config to file %s, err: %v", config.ConfigPath, err)
|
||
|
}
|
||
|
log.Printf("Created default configuration at %s", config.ConfigPath)
|
||
|
}
|
||
|
|
||
|
return nil
|
||
|
}
|