@@ -98,89 +98,6 @@ import (
98
98
"github.com/coder/wgtunnel/tunnelsdk"
99
99
)
100
100
101
- // ReadGitAuthProvidersFromEnv is provided for compatibility purposes with the
102
- // viper CLI.
103
- // DEPRECATED
104
- func ReadGitAuthProvidersFromEnv (environ []string ) ([]codersdk.ExternalAuthConfig , error ) {
105
- // The index numbers must be in-order.
106
- sort .Strings (environ )
107
-
108
- var providers []codersdk.ExternalAuthConfig
109
- for _ , v := range clibase .ParseEnviron (environ , "CODER_GITAUTH_" ) {
110
- tokens := strings .SplitN (v .Name , "_" , 2 )
111
- if len (tokens ) != 2 {
112
- return nil , xerrors .Errorf ("invalid env var: %s" , v .Name )
113
- }
114
-
115
- providerNum , err := strconv .Atoi (tokens [0 ])
116
- if err != nil {
117
- return nil , xerrors .Errorf ("parse number: %s" , v .Name )
118
- }
119
-
120
- var provider codersdk.ExternalAuthConfig
121
- switch {
122
- case len (providers ) < providerNum :
123
- return nil , xerrors .Errorf (
124
- "provider num %v skipped: %s" ,
125
- len (providers ),
126
- v .Name ,
127
- )
128
- case len (providers ) == providerNum :
129
- // At the next next provider.
130
- providers = append (providers , provider )
131
- case len (providers ) == providerNum + 1 :
132
- // At the current provider.
133
- provider = providers [providerNum ]
134
- }
135
-
136
- key := tokens [1 ]
137
- switch key {
138
- case "ID" :
139
- provider .ID = v .Value
140
- case "TYPE" :
141
- provider .Type = v .Value
142
- case "CLIENT_ID" :
143
- provider .ClientID = v .Value
144
- case "CLIENT_SECRET" :
145
- provider .ClientSecret = v .Value
146
- case "AUTH_URL" :
147
- provider .AuthURL = v .Value
148
- case "TOKEN_URL" :
149
- provider .TokenURL = v .Value
150
- case "VALIDATE_URL" :
151
- provider .ValidateURL = v .Value
152
- case "REGEX" :
153
- provider .Regex = v .Value
154
- case "DEVICE_FLOW" :
155
- b , err := strconv .ParseBool (v .Value )
156
- if err != nil {
157
- return nil , xerrors .Errorf ("parse bool: %s" , v .Value )
158
- }
159
- provider .DeviceFlow = b
160
- case "DEVICE_CODE_URL" :
161
- provider .DeviceCodeURL = v .Value
162
- case "NO_REFRESH" :
163
- b , err := strconv .ParseBool (v .Value )
164
- if err != nil {
165
- return nil , xerrors .Errorf ("parse bool: %s" , v .Value )
166
- }
167
- provider .NoRefresh = b
168
- case "SCOPES" :
169
- provider .Scopes = strings .Split (v .Value , " " )
170
- case "APP_INSTALL_URL" :
171
- provider .AppInstallURL = v .Value
172
- case "APP_INSTALLATIONS_URL" :
173
- provider .AppInstallationsURL = v .Value
174
- case "DISPLAY_NAME" :
175
- provider .DisplayName = v .Value
176
- case "DISPLAY_ICON" :
177
- provider .DisplayIcon = v .Value
178
- }
179
- providers [providerNum ] = provider
180
- }
181
- return providers , nil
182
- }
183
-
184
101
func createOIDCConfig (ctx context.Context , vals * codersdk.DeploymentValues ) (* coderd.OIDCConfig , error ) {
185
102
if vals .OIDC .ClientID == "" {
186
103
return nil , xerrors .Errorf ("OIDC client ID must be set!" )
@@ -572,14 +489,14 @@ func (r *RootCmd) Server(newAPI func(context.Context, *coderd.Options) (*coderd.
572
489
}
573
490
}
574
491
575
- gitAuthEnv , err := ReadGitAuthProvidersFromEnv (os .Environ ())
492
+ extAuthEnv , err := ReadExternalAuthProvidersFromEnv (os .Environ ())
576
493
if err != nil {
577
- return xerrors .Errorf ("read git auth providers from env: %w" , err )
494
+ return xerrors .Errorf ("read external auth providers from env: %w" , err )
578
495
}
579
496
580
- vals .GitAuthProviders .Value = append (vals .GitAuthProviders .Value , gitAuthEnv ... )
497
+ vals .ExternalAuthConfigs .Value = append (vals .ExternalAuthConfigs .Value , extAuthEnv ... )
581
498
externalAuthConfigs , err := externalauth .ConvertConfig (
582
- vals .GitAuthProviders .Value ,
499
+ vals .ExternalAuthConfigs .Value ,
583
500
vals .AccessURL .Value (),
584
501
)
585
502
if err != nil {
@@ -2246,3 +2163,101 @@ func ConfigureHTTPServers(inv *clibase.Invocation, cfg *codersdk.DeploymentValue
2246
2163
2247
2164
return httpServers , nil
2248
2165
}
2166
+
2167
+ // ReadExternalAuthProvidersFromEnv is provided for compatibility purposes with
2168
+ // the viper CLI.
2169
+ func ReadExternalAuthProvidersFromEnv (environ []string ) ([]codersdk.ExternalAuthConfig , error ) {
2170
+ providers , err := readExternalAuthProvidersFromEnv ("CODER_EXTERNAL_AUTH_" , environ )
2171
+ if err != nil {
2172
+ return nil , err
2173
+ }
2174
+ // Deprecated: To support legacy git auth!
2175
+ gitProviders , err := readExternalAuthProvidersFromEnv ("CODER_GITAUTH_" , environ )
2176
+ if err != nil {
2177
+ return nil , err
2178
+ }
2179
+ return append (providers , gitProviders ... ), nil
2180
+ }
2181
+
2182
+ // readExternalAuthProvidersFromEnv consumes environment variables to parse
2183
+ // external auth providers. A prefix is provided to support the legacy
2184
+ // parsing of `GITAUTH` environment variables.
2185
+ func readExternalAuthProvidersFromEnv (prefix string , environ []string ) ([]codersdk.ExternalAuthConfig , error ) {
2186
+ // The index numbers must be in-order.
2187
+ sort .Strings (environ )
2188
+
2189
+ var providers []codersdk.ExternalAuthConfig
2190
+ for _ , v := range clibase .ParseEnviron (environ , prefix ) {
2191
+ tokens := strings .SplitN (v .Name , "_" , 2 )
2192
+ if len (tokens ) != 2 {
2193
+ return nil , xerrors .Errorf ("invalid env var: %s" , v .Name )
2194
+ }
2195
+
2196
+ providerNum , err := strconv .Atoi (tokens [0 ])
2197
+ if err != nil {
2198
+ return nil , xerrors .Errorf ("parse number: %s" , v .Name )
2199
+ }
2200
+
2201
+ var provider codersdk.ExternalAuthConfig
2202
+ switch {
2203
+ case len (providers ) < providerNum :
2204
+ return nil , xerrors .Errorf (
2205
+ "provider num %v skipped: %s" ,
2206
+ len (providers ),
2207
+ v .Name ,
2208
+ )
2209
+ case len (providers ) == providerNum :
2210
+ // At the next next provider.
2211
+ providers = append (providers , provider )
2212
+ case len (providers ) == providerNum + 1 :
2213
+ // At the current provider.
2214
+ provider = providers [providerNum ]
2215
+ }
2216
+
2217
+ key := tokens [1 ]
2218
+ switch key {
2219
+ case "ID" :
2220
+ provider .ID = v .Value
2221
+ case "TYPE" :
2222
+ provider .Type = v .Value
2223
+ case "CLIENT_ID" :
2224
+ provider .ClientID = v .Value
2225
+ case "CLIENT_SECRET" :
2226
+ provider .ClientSecret = v .Value
2227
+ case "AUTH_URL" :
2228
+ provider .AuthURL = v .Value
2229
+ case "TOKEN_URL" :
2230
+ provider .TokenURL = v .Value
2231
+ case "VALIDATE_URL" :
2232
+ provider .ValidateURL = v .Value
2233
+ case "REGEX" :
2234
+ provider .Regex = v .Value
2235
+ case "DEVICE_FLOW" :
2236
+ b , err := strconv .ParseBool (v .Value )
2237
+ if err != nil {
2238
+ return nil , xerrors .Errorf ("parse bool: %s" , v .Value )
2239
+ }
2240
+ provider .DeviceFlow = b
2241
+ case "DEVICE_CODE_URL" :
2242
+ provider .DeviceCodeURL = v .Value
2243
+ case "NO_REFRESH" :
2244
+ b , err := strconv .ParseBool (v .Value )
2245
+ if err != nil {
2246
+ return nil , xerrors .Errorf ("parse bool: %s" , v .Value )
2247
+ }
2248
+ provider .NoRefresh = b
2249
+ case "SCOPES" :
2250
+ provider .Scopes = strings .Split (v .Value , " " )
2251
+ case "APP_INSTALL_URL" :
2252
+ provider .AppInstallURL = v .Value
2253
+ case "APP_INSTALLATIONS_URL" :
2254
+ provider .AppInstallationsURL = v .Value
2255
+ case "DISPLAY_NAME" :
2256
+ provider .DisplayName = v .Value
2257
+ case "DISPLAY_ICON" :
2258
+ provider .DisplayIcon = v .Value
2259
+ }
2260
+ providers [providerNum ] = provider
2261
+ }
2262
+ return providers , nil
2263
+ }
0 commit comments