MCPcopy Index your code
hub / github.com/wavetermdev/waveterm / StartRemoteShellProcNoWsh

Function StartRemoteShellProcNoWsh

pkg/shellexec/shellexec.go:294–335  ·  view source on GitHub ↗
(ctx context.Context, termSize waveobj.TermSize, cmdStr string, cmdOpts CommandOptsType, conn *conncontroller.SSHConn)

Source from the content-addressed store, hash-verified

292}
293
294func StartRemoteShellProcNoWsh(ctx context.Context, termSize waveobj.TermSize, cmdStr string, cmdOpts CommandOptsType, conn *conncontroller.SSHConn) (*ShellProc, error) {
295 client := conn.GetClient()
296 conn.Infof(ctx, "SSH-NEWSESSION (StartRemoteShellProcNoWsh)")
297 session, err := client.NewSession()
298 if err != nil {
299 return nil, err
300 }
301
302 remoteStdinRead, remoteStdinWriteOurs, err := os.Pipe()
303 if err != nil {
304 return nil, err
305 }
306
307 remoteStdoutReadOurs, remoteStdoutWrite, err := os.Pipe()
308 if err != nil {
309 return nil, err
310 }
311
312 pipePty := &PipePty{
313 remoteStdinWrite: remoteStdinWriteOurs,
314 remoteStdoutRead: remoteStdoutReadOurs,
315 }
316 if termSize.Rows == 0 || termSize.Cols == 0 {
317 termSize.Rows = shellutil.DefaultTermRows
318 termSize.Cols = shellutil.DefaultTermCols
319 }
320 if termSize.Rows <= 0 || termSize.Cols <= 0 {
321 return nil, fmt.Errorf("invalid term size: %v", termSize)
322 }
323 session.Stdin = remoteStdinRead
324 session.Stdout = remoteStdoutWrite
325 session.Stderr = remoteStdoutWrite
326
327 session.RequestPty("xterm-256color", termSize.Rows, termSize.Cols, nil)
328 sessionWrap := MakeSessionWrap(session, "", pipePty)
329 err = session.Shell()
330 if err != nil {
331 pipePty.Close()
332 return nil, err
333 }
334 return &ShellProc{Cmd: sessionWrap, ConnName: conn.GetName(), CloseOnce: &sync.Once{}, DoneCh: make(chan any)}, nil
335}
336
337func StartRemoteShellProc(ctx context.Context, logCtx context.Context, termSize waveobj.TermSize, cmdStr string, cmdOpts CommandOptsType, conn *conncontroller.SSHConn) (*ShellProc, error) {
338 if cmdOpts.SwapToken == nil {

Callers 3

testShellWithCommandFunction · 0.92
testInteractiveShellFunction · 0.92

Calls 5

CloseMethod · 0.95
MakeSessionWrapFunction · 0.85
GetClientMethod · 0.45
InfofMethod · 0.45
GetNameMethod · 0.45

Tested by

no test coverage detected