@@ -117,6 +117,8 @@ func (p *provisionerDaemonAuth) authorize(r *http.Request, tags map[string]strin
117
117
if p .psk != "" {
118
118
psk := r .Header .Get (codersdk .ProvisionerDaemonPSK )
119
119
if subtle .ConstantTimeCompare ([]byte (p .psk ), []byte (psk )) == 1 {
120
+ // If using PSK auth, the daemon is, by definition, scoped to the organization.
121
+ tags [provisionerdserver .TagScope ] = provisionerdserver .ScopeOrganization
120
122
return tags , true
121
123
}
122
124
}
@@ -172,10 +174,12 @@ func (api *API) provisionerDaemonServe(rw http.ResponseWriter, r *http.Request)
172
174
173
175
tags , authorized := api .provisionerDaemonAuth .authorize (r , tags )
174
176
if ! authorized {
177
+ api .Logger .Warn (ctx , "unauthorized provisioner daemon serve request" , slog .F ("tags" , tags ))
175
178
httpapi .Write (ctx , rw , http .StatusForbidden ,
176
179
codersdk.Response {Message : "You aren't allowed to create provisioner daemons" })
177
180
return
178
181
}
182
+ api .Logger .Debug (ctx , "provisioner authorized" , slog .F ("tags" , tags ))
179
183
180
184
provisioners := make ([]database.ProvisionerType , 0 )
181
185
for p := range provisionersMap {
@@ -188,6 +192,11 @@ func (api *API) provisionerDaemonServe(rw http.ResponseWriter, r *http.Request)
188
192
}
189
193
190
194
name := namesgenerator .GetRandomName (1 )
195
+ log := api .Logger .With (
196
+ slog .F ("name" , name ),
197
+ slog .F ("provisioners" , provisioners ),
198
+ slog .F ("tags" , tags ),
199
+ )
191
200
daemon , err := api .Database .InsertProvisionerDaemon (ctx , database.InsertProvisionerDaemonParams {
192
201
ID : uuid .New (),
193
202
CreatedAt : database .Now (),
@@ -196,6 +205,9 @@ func (api *API) provisionerDaemonServe(rw http.ResponseWriter, r *http.Request)
196
205
Tags : tags ,
197
206
})
198
207
if err != nil {
208
+ if ! xerrors .Is (err , context .Canceled ) {
209
+ log .Error (ctx , "write provisioner daemon" , slog .Error (err ))
210
+ }
199
211
httpapi .Write (ctx , rw , http .StatusInternalServerError , codersdk.Response {
200
212
Message : "Internal error writing provisioner daemon." ,
201
213
Detail : err .Error (),
@@ -205,6 +217,9 @@ func (api *API) provisionerDaemonServe(rw http.ResponseWriter, r *http.Request)
205
217
206
218
rawTags , err := json .Marshal (daemon .Tags )
207
219
if err != nil {
220
+ if ! xerrors .Is (err , context .Canceled ) {
221
+ log .Error (ctx , "marshal provisioner tags" , slog .Error (err ))
222
+ }
208
223
httpapi .Write (ctx , rw , http .StatusInternalServerError , codersdk.Response {
209
224
Message : "Internal error marshaling daemon tags." ,
210
225
Detail : err .Error (),
@@ -222,6 +237,9 @@ func (api *API) provisionerDaemonServe(rw http.ResponseWriter, r *http.Request)
222
237
CompressionMode : websocket .CompressionDisabled ,
223
238
})
224
239
if err != nil {
240
+ if ! xerrors .Is (err , context .Canceled ) {
241
+ log .Error (ctx , "accept provisioner websocket conn" , slog .Error (err ))
242
+ }
225
243
httpapi .Write (ctx , rw , http .StatusBadRequest , codersdk.Response {
226
244
Message : "Internal error accepting websocket connection." ,
227
245
Detail : err .Error (),
@@ -267,6 +285,9 @@ func (api *API) provisionerDaemonServe(rw http.ResponseWriter, r *http.Request)
267
285
},
268
286
)
269
287
if err != nil {
288
+ if ! xerrors .Is (err , context .Canceled ) {
289
+ log .Error (ctx , "create provisioner daemon server" , slog .Error (err ))
290
+ }
270
291
_ = conn .Close (websocket .StatusInternalError , httpapi .WebsocketCloseSprintf ("create provisioner daemon server: %s" , err ))
271
292
return
272
293
}
0 commit comments