1 2 29 30 package com.jcraft.jsch; 31 32 import java.util.*; 33 34 public class ChannelShell extends ChannelSession{ 35 36 private boolean pty=true; 37 38 private String ttype="vt100"; 39 private int tcol=80; 40 private int trow=24; 41 private int twp=640; 42 private int thp=480; 43 private byte[] terminal_mode=null; 44 45 public void setPty(boolean enable){ 46 pty=enable; 47 } 48 public void setTerminalMode(byte[] terminal_mode){ 49 this.terminal_mode=terminal_mode; 50 } 51 public void start() throws JSchException{ 52 try{ 53 Request request; 54 55 if(agent_forwarding){ 56 request=new RequestAgentForwarding(); 57 request.request(session, this); 58 } 59 60 if(xforwading){ 61 request=new RequestX11(); 62 request.request(session, this); 63 } 64 65 if(pty){ 66 request=new RequestPtyReq(); 67 ((RequestPtyReq)request).setTType(ttype); 68 ((RequestPtyReq)request).setTSize(tcol, trow, twp, thp); 69 if(terminal_mode!=null){ 70 ((RequestPtyReq)request).setTerminalMode(terminal_mode); 71 } 72 request.request(session, this); 73 } 74 75 if(env!=null){ 76 for(Enumeration _env=env.keys() ; _env.hasMoreElements() ;) { 77 String name=(String )(_env.nextElement()); 78 String value=(String )(env.get(name)); 79 request=new RequestEnv(); 80 ((RequestEnv)request).setEnv(name, value); 81 request.request(session, this); 82 } 83 } 84 85 request=new RequestShell(); 86 request.request(session, this); 87 } 88 catch(Exception e){ 89 if(e instanceof JSchException) throw (JSchException)e; 90 if(e instanceof Throwable ) 91 throw new JSchException("ChannelShell", (Throwable )e); 92 throw new JSchException("ChannelShell"); 93 } 94 95 if(io.in!=null){ 96 thread=new Thread (this); 97 thread.setName("Shell for "+session.host); 98 if(session.daemon_thread){ 99 thread.setDaemon(session.daemon_thread); 100 } 101 thread.start(); 102 } 103 } 104 public void init(){ 106 io.setInputStream(session.in); 107 io.setOutputStream(session.out); 108 } 109 public void setPtySize(int col, int row, int wp, int hp){ 110 try{ 112 RequestWindowChange request=new RequestWindowChange(); 113 request.setSize(col, row, wp, hp); 114 request.request(session, this); 115 } 116 catch(Exception e){ 117 } 119 } 120 public void setPtyType(String ttype){ 121 setPtyType(ttype, 80, 24, 640, 480); 122 } 123 public void setPtyType(String ttype, int col, int row, int wp, int hp){ 124 this.ttype=ttype; 125 this.tcol=col; 126 this.trow=row; 127 this.twp=wp; 128 this.thp=hp; 129 } 130 } 131 | Popular Tags |