MCPcopy Create free account
hub / github.com/coder/wush / NoiseRegistrationHandler

Method NoiseRegistrationHandler

tsserver/server.go:347–428  ·  view source on GitHub ↗
(w http.ResponseWriter, r *http.Request)

Source from the content-addressed store, hash-verified

345}
346
347func (ns *noiseServer) NoiseRegistrationHandler(w http.ResponseWriter, r *http.Request) {
348 ns.logger.Info("got noise registration request")
349
350 registerRequest := tailcfg.RegisterRequest{}
351 err := json.NewDecoder(r.Body).Decode(&registerRequest)
352 if err != nil {
353 http.Error(w, err.Error(), http.StatusBadRequest)
354 return
355 }
356
357 sp := strings.SplitN(registerRequest.Auth.AuthKey, "-", 2)
358
359 ips := ns.getIPs()
360
361 resp := tailcfg.RegisterResponse{}
362 resp.MachineAuthorized = true
363 resp.User = tailcfg.User{
364 ID: tailcfg.UserID(123),
365 LoginName: "wgsh",
366 DisplayName: "wgsh",
367 Logins: []tailcfg.LoginID{},
368 Created: time.Now(),
369 }
370 resp.Login = tailcfg.Login{
371 ID: tailcfg.LoginID(123),
372 LoginName: "wgsh",
373 DisplayName: "wgsh",
374 }
375
376 if !registerRequest.Expiry.IsZero() && registerRequest.Expiry.Before(time.Now()) {
377 node := ns.getSelfNode().Clone()
378 if node != nil {
379 node.Online = ptr.To(false)
380 ns.storeNode(node)
381 }
382 ns.notifyUpdate()
383
384 w.Header().Set("Content-Type", "application/json")
385 w.WriteHeader(http.StatusOK)
386 _ = json.NewEncoder(w).Encode(resp)
387 return
388 }
389
390 nodeID := tailcfg.NodeID(rand.Int64())
391 addrs := []netip.Prefix{}
392 for _, ip := range ips {
393 addrs = append(addrs, netip.PrefixFrom(ip, ip.BitLen()))
394 }
395
396 ns.storeNode(&tailcfg.Node{
397 ID: nodeID,
398 StableID: tailcfg.StableNodeID(sp[0]),
399 Hostinfo: registerRequest.Hostinfo.View(),
400 Name: registerRequest.Hostinfo.Hostname,
401 User: resp.User.ID,
402 Machine: ns.machineKey,
403 Key: registerRequest.NodeKey,
404 LastSeen: ptr.To(time.Now()),

Callers

nothing calls this directly

Calls 3

getSelfNodeMethod · 0.95
storeNodeMethod · 0.95
notifyUpdateMethod · 0.95

Tested by

no test coverage detected