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

Function sshCmd

cmd/wush/ssh.go:22–131  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

20)
21
22func sshCmd() *serpent.Command {
23 var (
24 verbose bool
25 quiet bool
26 derpmapFi string
27 logger = new(slog.Logger)
28 logf = func(str string, args ...any) {}
29
30 dm = new(tailcfg.DERPMap)
31 overlayOpts = new(sendOverlayOpts)
32 send = new(overlay.Send)
33 )
34 return &serpent.Command{
35 Use: "ssh",
36 Aliases: []string{},
37 Short: "Open a SSH connection to a wush server.",
38 Long: "Use " + cliui.Code("wush serve") + " on the computer you would like to connect to.",
39 Middleware: serpent.Chain(
40 initLogger(&verbose, &quiet, logger, &logf),
41 initAuth(&overlayOpts.authKey, &overlayOpts.clientAuth),
42 derpMap(&derpmapFi, dm),
43 sendOverlayMW(overlayOpts, &send, logger, dm, &logf),
44 ),
45 Handler: func(inv *serpent.Invocation) error {
46 ctx := inv.Context()
47
48 s, err := tsserver.NewServer(ctx, logger, send, dm)
49 if err != nil {
50 return err
51 }
52
53 if send.Auth.ReceiverDERPRegionID != 0 {
54 go send.ListenOverlayDERP(ctx)
55 } else if send.Auth.ReceiverStunAddr.IsValid() {
56 go send.ListenOverlaySTUN(ctx)
57 } else {
58 return errors.New("auth key provided neither DERP nor STUN")
59 }
60
61 go s.ListenAndServe(ctx)
62 netns.SetDialerOverride(s.Dialer())
63 ts, err := newTSNet("send", verbose)
64 if err != nil {
65 return err
66 }
67
68 logf("Bringing WireGuard up..")
69 ts.Up(ctx)
70 logf("WireGuard is ready!")
71
72 lc, err := ts.LocalClient()
73 if err != nil {
74 return err
75 }
76
77 ip, err := waitUntilHasPeerHasIP(ctx, logf, lc)
78 if err != nil {
79 return err

Callers 1

mainFunction · 0.85

Calls 14

CodeFunction · 0.92
NewServerFunction · 0.92
TailnetSSHFunction · 0.92
initLoggerFunction · 0.85
initAuthFunction · 0.85
derpMapFunction · 0.85
sendOverlayMWFunction · 0.85
waitUntilHasPeerHasIPFunction · 0.85
waitUntilHasP2PFunction · 0.85
ListenAndServeMethod · 0.80
DialerMethod · 0.80
newTSNetFunction · 0.70

Tested by

no test coverage detected