MCPcopy Index your code
hub / github.com/discourse/discourse-auth-proxy / ParseConfig

Function ParseConfig

config.go:34–107  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

32}
33
34func ParseConfig() (*Config, error) {
35 missing := func(name string) error {
36 return fmt.Errorf("missing mandatory flag: %s", name)
37 }
38
39 rc := parseRawConfig()
40
41 if *rc.OriginURL == "" {
42 return nil, missing("origin-url")
43 }
44 if *rc.ProxyURL == "" {
45 return nil, missing("proxy-url")
46 }
47 if *rc.SSOURL == "" {
48 return nil, missing("sso-url")
49 }
50 if *rc.SSOSecret == "" {
51 return nil, missing("sso-secret")
52 }
53 if *rc.Timeout < 1 {
54 return nil, fmt.Errorf("timeout must be 1 (second) or longer")
55 }
56
57 c := &Config{}
58 {
59 u, err := url.Parse(*rc.OriginURL)
60 if err != nil {
61 return nil, fmt.Errorf("invalid origin URL: %s", *rc.OriginURL)
62 }
63 c.OriginURL = u
64 }
65 {
66 u, err := url.Parse(*rc.ProxyURL)
67 if err != nil {
68 return nil, fmt.Errorf("invalid proxy URL: %s", *rc.ProxyURL)
69 }
70 c.ProxyURL = u
71 c.ProxyURLString = u.String()
72 }
73 {
74 u, err := url.Parse(*rc.SSOURL)
75 if err != nil {
76 return nil, fmt.Errorf("invalid SSO URL - should point at Discourse site with enable sso: %s", *rc.SSOURL)
77 }
78 c.SSOURL = u
79 c.SSOURLString = u.String()
80 }
81
82 if *rc.ListenURL == "" {
83 c.ListenAddr = c.ProxyURL.Host
84 } else {
85 c.ListenAddr = *rc.ListenURL
86 }
87
88 c.SSOSecret = *rc.SSOSecret
89 c.AllowAll = *rc.AllowAll
90 c.AllowGroups = NewStringSet(*rc.AllowGroups)
91 c.BasicAuth = *rc.BasicAuth

Callers 1

mainFunction · 0.85

Calls 2

parseRawConfigFunction · 0.85
NewStringSetFunction · 0.85

Tested by

no test coverage detected