func NewFTPStorage(config *conf.ConfigFile) (*FTPStorage, error) { server, err := config.GetString("storage", "server") if err != nil { return nil, errors.New("Error: FTPStorage indicated in config file, but 'server' not specified.") } port, err := config.GetInt("storage", "port") if err != nil { return nil, errors.New("Error: FTPStorage indicated in config file, but 'port' not specified.") } directory, err := config.GetString("storage", "directory") if err != nil { return nil, errors.New("Error: FTPStorage indicated in config file, but 'directory' not specified.") } username, err := config.GetString("storage", "username") if err != nil { return nil, errors.New("Error: FTPStorage indicated in config file, but 'username' not specified.") } password, err := config.GetString("storage", "password") if err != nil { return nil, errors.New("Error: FTPStorage indicated in config file, but 'password' not specified.") } fs := new(FTPStorage) fs.server = server fs.port = port fs.directory = directory fs.username = username fs.password = password fs.connectionsChan = make(chan int, FTP_MAX_CONNECTIONS) return fs, nil }
func getInt(c *conf.ConfigFile, section, option string) (value int) { value, err := c.GetInt(section, option) if err != nil { log.Fatal("missing config value: ", option) } return }
func getPasswords(c *conf.ConfigFile) ([]string, error) { count, err := c.GetInt("default", "sandboxCount") if err != nil { return nil, err } result := make([]string, count) for i := range result { result[i] = "password" + strconv.Itoa(i) } return result, nil }
func LoadDatabaseConfig(cf *conf.ConfigFile) (*DatabaseConfig, error) { var err error c := new(DatabaseConfig) c.PushServiceManager = GetPushServiceManager() c.Engine, err = cf.GetString("Database", "engine") if err != nil || c.Engine == "" { c.Engine = "redis" } c.Name, err = cf.GetString("Database", "name") if err != nil || c.Name == "" { c.Name = "0" } c.Port, err = cf.GetInt("Database", "port") if err != nil || c.Port <= 0 { c.Port = -1 } c.Host, err = cf.GetString("Database", "host") if err != nil || c.Host == "" { c.Host = "localhost" } c.Password, err = cf.GetString("Database", "password") if err != nil { c.Password = "" } i, e := cf.GetInt("Database", "everysec") c.EverySec = int64(i) if e != nil || c.EverySec <= 60 { c.EverySec = 600 } c.LeastDirty, err = cf.GetInt("Database", "leastdirty") if err != nil || c.LeastDirty < 0 { c.LeastDirty = 10 } c.CacheSize, err = cf.GetInt("Database", "cachesize") if err != nil || c.CacheSize < 0 { c.CacheSize = 1024 } return c, nil }
// Parse the configuration file for CDRStatConfigs func ParseCfgDefaultCDRStatsConfig(c *conf.ConfigFile) (*CdrStatsConfig, error) { var err error csCfg := NewCdrStatsConfigWithDefaults() if hasOpt := c.HasOption("cdrstats", "queue_length"); hasOpt { csCfg.QueueLength, _ = c.GetInt("cdrstats", "queue_length") } if hasOpt := c.HasOption("cdrstats", "time_window"); hasOpt { durStr, _ := c.GetString("cdrstats", "time_window") if csCfg.TimeWindow, err = utils.ParseDurationWithSecs(durStr); err != nil { return nil, err } } if hasOpt := c.HasOption("cdrstats", "metrics"); hasOpt { metricsStr, _ := c.GetString("cdrstats", "metrics") if csCfg.Metrics, err = ConfigSlice(metricsStr); err != nil { return nil, err } } if hasOpt := c.HasOption("cdrstats", "setup_interval"); hasOpt { setupIntervalStr, _ := c.GetString("cdrstats", "setup_interval") if len(setupIntervalStr) != 0 { // If we parse empty, will get empty time, we prefer nil if setupIntervalSlc, err := ConfigSlice(setupIntervalStr); err != nil { return nil, err } else { for _, setupTimeStr := range setupIntervalSlc { if setupTime, err := utils.ParseTimeDetectLayout(setupTimeStr); err != nil { return nil, err } else { csCfg.SetupInterval = append(csCfg.SetupInterval, setupTime) } } } } } if hasOpt := c.HasOption("cdrstats", "tors"); hasOpt { torsStr, _ := c.GetString("cdrstats", "tors") if csCfg.TORs, err = ConfigSlice(torsStr); err != nil { return nil, err } } if hasOpt := c.HasOption("cdrstats", "cdr_hosts"); hasOpt { valsStr, _ := c.GetString("cdrstats", "cdr_hosts") if csCfg.CdrHosts, err = ConfigSlice(valsStr); err != nil { return nil, err } } if hasOpt := c.HasOption("cdrstats", "cdr_sources"); hasOpt { valsStr, _ := c.GetString("cdrstats", "cdr_sources") if csCfg.CdrSources, err = ConfigSlice(valsStr); err != nil { return nil, err } } if hasOpt := c.HasOption("cdrstats", "req_types"); hasOpt { valsStr, _ := c.GetString("cdrstats", "req_types") if csCfg.ReqTypes, err = ConfigSlice(valsStr); err != nil { return nil, err } } if hasOpt := c.HasOption("cdrstats", "directions"); hasOpt { valsStr, _ := c.GetString("cdrstats", "directions") if csCfg.Directions, err = ConfigSlice(valsStr); err != nil { return nil, err } } if hasOpt := c.HasOption("cdrstats", "tenants"); hasOpt { valsStr, _ := c.GetString("cdrstats", "tenants") if csCfg.Tenants, err = ConfigSlice(valsStr); err != nil { return nil, err } } if hasOpt := c.HasOption("cdrstats", "categories"); hasOpt { valsStr, _ := c.GetString("cdrstats", "categories") if csCfg.Categories, err = ConfigSlice(valsStr); err != nil { return nil, err } } if hasOpt := c.HasOption("cdrstats", "accounts"); hasOpt { valsStr, _ := c.GetString("cdrstats", "accounts") if csCfg.Accounts, err = ConfigSlice(valsStr); err != nil { return nil, err } } if hasOpt := c.HasOption("cdrstats", "subjects"); hasOpt { valsStr, _ := c.GetString("cdrstats", "subjects") if csCfg.Subjects, err = ConfigSlice(valsStr); err != nil { return nil, err } } if hasOpt := c.HasOption("cdrstats", "destination_prefixes"); hasOpt { valsStr, _ := c.GetString("cdrstats", "destination_prefixes") if csCfg.DestinationPrefixes, err = ConfigSlice(valsStr); err != nil { return nil, err } } if hasOpt := c.HasOption("cdrstats", "usage_interval"); hasOpt { usageIntervalStr, _ := c.GetString("cdrstats", "usage_interval") if usageIntervalSlc, err := ConfigSlice(usageIntervalStr); err != nil { return nil, err } else { for _, usageDurStr := range usageIntervalSlc { if usageDur, err := utils.ParseDurationWithSecs(usageDurStr); err != nil { return nil, err } else { csCfg.UsageInterval = append(csCfg.UsageInterval, usageDur) } } } } if hasOpt := c.HasOption("cdrstats", "mediation_run_ids"); hasOpt { valsStr, _ := c.GetString("cdrstats", "mediation_run_ids") if csCfg.MediationRunIds, err = ConfigSlice(valsStr); err != nil { return nil, err } } if hasOpt := c.HasOption("cdrstats", "rated_accounts"); hasOpt { valsStr, _ := c.GetString("cdrstats", "rated_accounts") if csCfg.RatedAccounts, err = ConfigSlice(valsStr); err != nil { return nil, err } } if hasOpt := c.HasOption("cdrstats", "rated_subjects"); hasOpt { valsStr, _ := c.GetString("cdrstats", "rated_subjects") if csCfg.RatedSubjects, err = ConfigSlice(valsStr); err != nil { return nil, err } } if hasOpt := c.HasOption("cdrstats", "cost_intervals"); hasOpt { valsStr, _ := c.GetString("cdrstats", "cost_intervals") if costSlc, err := ConfigSlice(valsStr); err != nil { return nil, err } else { for _, costStr := range costSlc { if cost, err := strconv.ParseFloat(costStr, 64); err != nil { return nil, err } else { csCfg.CostInterval = append(csCfg.CostInterval, cost) } } } } return csCfg, nil }