MCPcopy Index your code
hub / github.com/ContentSquare/chproxy / LoadFile

Function LoadFile

config/config.go:1154–1191  ·  view source on GitHub ↗

LoadFile loads and validates configuration from provided .yml file

(filename string)

Source from the content-addressed store, hash-verified

1152
1153// LoadFile loads and validates configuration from provided .yml file
1154func LoadFile(filename string) (*Config, error) {
1155 content, err := os.ReadFile(filename)
1156 if err != nil {
1157 return nil, err
1158 }
1159
1160 content = findAndReplacePlaceholders(content)
1161
1162 cfg := &Config{}
1163 if err := yaml.Unmarshal(content, cfg); err != nil {
1164 return nil, err
1165 }
1166 cfg.networkReg = make(map[string]Networks, len(cfg.NetworkGroups))
1167 for _, ng := range cfg.NetworkGroups {
1168 if _, ok := cfg.networkReg[ng.Name]; ok {
1169 return nil, fmt.Errorf("duplicate `network_groups.name` %q", ng.Name)
1170 }
1171 cfg.networkReg[ng.Name] = ng.Networks
1172 }
1173 if cfg.Server.HTTP.AllowedNetworks, err = cfg.groupToNetwork(cfg.Server.HTTP.NetworksOrGroups); err != nil {
1174 return nil, err
1175 }
1176 if cfg.Server.HTTPS.AllowedNetworks, err = cfg.groupToNetwork(cfg.Server.HTTPS.NetworksOrGroups); err != nil {
1177 return nil, err
1178 }
1179 if cfg.Server.Metrics.AllowedNetworks, err = cfg.groupToNetwork(cfg.Server.Metrics.NetworksOrGroups); err != nil {
1180 return nil, err
1181 }
1182
1183 if err := cfg.setDefaults(); err != nil {
1184 return nil, err
1185 }
1186
1187 if err := cfg.checkVulnerabilities(); err != nil {
1188 return nil, fmt.Errorf("security breach: %w\nSet option `hack_me_please=true` to disable security errors", err)
1189 }
1190 return cfg, nil
1191}
1192
1193var envVarRegex = regexp.MustCompile(`\${([a-zA-Z_][a-zA-Z0-9_]*)}`)
1194

Callers 6

loadConfigFunction · 0.92
TestLoadConfigFunction · 0.85
TestBadConfigFunction · 0.85
TestExamplesFunction · 0.85
TestConfigTimeoutsFunction · 0.85
TestConfigReplaceEnvVarsFunction · 0.85

Calls 4

groupToNetworkMethod · 0.95
setDefaultsMethod · 0.95
checkVulnerabilitiesMethod · 0.95

Tested by 5

TestLoadConfigFunction · 0.68
TestBadConfigFunction · 0.68
TestExamplesFunction · 0.68
TestConfigTimeoutsFunction · 0.68
TestConfigReplaceEnvVarsFunction · 0.68