MCPcopy
hub / github.com/windtf/wireproxy / ParseConfig

Function ParseConfig

config.go:519–603  ·  view source on GitHub ↗

ParseConfig takes the path of a configuration file and parses it into Configuration

(path string)

Source from the content-addressed store, hash-verified

517
518// ParseConfig takes the path of a configuration file and parses it into Configuration
519func ParseConfig(path string) (*Configuration, error) {
520 iniOpt := ini.LoadOptions{
521 Insensitive: true,
522 AllowShadows: true,
523 AllowNonUniqueSections: true,
524 }
525
526 cfg, err := ini.LoadSources(iniOpt, path)
527 if err != nil {
528 return nil, err
529 }
530
531 device := &DeviceConfig{
532 MTU: 1420,
533 }
534
535 resolve := &ResolveConfig{
536 ResolveStrategy: "auto",
537 }
538
539 root := cfg.Section("")
540 wgConf, err := root.GetKey("WGConfig")
541 wgCfg := cfg
542 if err == nil {
543 wgCfg, err = ini.LoadSources(iniOpt, wgConf.String())
544 if err != nil {
545 return nil, err
546 }
547 }
548
549 err = ParseInterface(wgCfg, device)
550 if err != nil {
551 return nil, err
552 }
553
554 err = ParsePeers(wgCfg, &device.Peers)
555 if err != nil {
556 return nil, err
557 }
558
559 var routinesSpawners []RoutineSpawner
560
561 err = parseRoutinesConfig(&routinesSpawners, cfg, "TCPClientTunnel", parseTCPClientTunnelConfig)
562 if err != nil {
563 return nil, err
564 }
565
566 err = parseRoutinesConfig(&routinesSpawners, cfg, "STDIOTunnel", parseSTDIOTunnelConfig)
567 if err != nil {
568 return nil, err
569 }
570
571 err = parseRoutinesConfig(&routinesSpawners, cfg, "TCPServerTunnel", parseTCPServerTunnelConfig)
572 if err != nil {
573 return nil, err
574 }
575
576 err = parseRoutinesConfig(&routinesSpawners, cfg, "Socks5", parseSocks5Config)

Callers 1

mainFunction · 0.92

Calls 4

ParseInterfaceFunction · 0.85
ParsePeersFunction · 0.85
parseRoutinesConfigFunction · 0.85
parseResolveConfigFunction · 0.85

Tested by

no test coverage detected