()
| 32 | } |
| 33 | |
| 34 | func 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 |
no test coverage detected