(ctx context.Context, termSize waveobj.TermSize, cmdStr string, cmdOpts CommandOptsType, conn *conncontroller.SSHConn)
| 292 | } |
| 293 | |
| 294 | func 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 | |
| 337 | func StartRemoteShellProc(ctx context.Context, logCtx context.Context, termSize waveobj.TermSize, cmdStr string, cmdOpts CommandOptsType, conn *conncontroller.SSHConn) (*ShellProc, error) { |
| 338 | if cmdOpts.SwapToken == nil { |
no test coverage detected