Mercurial > 510Connectbot
changeset 288:5824a1475be4 ganymed
start conversion from trilead to ganymed
author | Carl Byington <carl@five-ten-sg.com> |
---|---|
date | Fri, 18 Jul 2014 19:59:32 -0700 |
parents | db9b028016de |
children | d2ee20d9dff1 |
files | src/ch/ethz/ssh2/channel/ChannelManager.java src/ch/ethz/ssh2/packets/PacketChannelAuthAgentReq.java |
diffstat | 2 files changed, 62 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/ch/ethz/ssh2/channel/ChannelManager.java Fri Jul 18 19:52:08 2014 -0700 +++ b/src/ch/ethz/ssh2/channel/ChannelManager.java Fri Jul 18 19:59:32 2014 -0700 @@ -46,7 +46,9 @@ private int globalSuccessCounter = 0; private int globalFailedCounter = 0; - private final Map<Integer, RemoteForwardingData> remoteForwardings = new HashMap<Integer, RemoteForwardingData>(); + private final HashMap<Integer, RemoteForwardingData> remoteForwardings = new HashMap<Integer, RemoteForwardingData>(); + + private AuthAgentCallback authAgent; private final List<IChannelWorkerThread> listenerThreads = new ArrayList<IChannelWorkerThread>(); @@ -460,6 +462,35 @@ } } + /** + * @param agent + * @throws IOException + */ + public boolean requestChannelAgentForwarding(Channel c, AuthAgentCallback authAgent) throws IOException { + synchronized (this) { + if (this.authAgent != null) + throw new IllegalStateException("Auth agent already exists"); + + this.authAgent = authAgent; + } + + synchronized (channels) { + globalSuccessCounter = globalFailedCounter = 0; + } + + log.debug("Requesting agent forwarding"); + + PacketChannelAuthAgentReq aar = new PacketChannelAuthAgentReq(c.remoteID); + tm.sendMessage(aar.getPayload()); + + if (waitForChannelRequestResult(c) == false) { + authAgent = null; + return false; + } + + return true; + } + public void registerThread(IChannelWorkerThread thr) throws IOException { synchronized(listenerThreads) { if(listenerThreadsAllowed == false) {
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/ch/ethz/ssh2/packets/PacketChannelAuthAgentReq.java Fri Jul 18 19:59:32 2014 -0700 @@ -0,0 +1,30 @@ +package ch.ethz.ssh2.packets; + +/** + * PacketGlobalAuthAgent. + * + * @author Kenny Root, kenny@the-b.org + * @version $Id$ + */ +public class PacketChannelAuthAgentReq { + byte[] payload; + + public int recipientChannelID; + + public PacketChannelAuthAgentReq(int recipientChannelID) { + this.recipientChannelID = recipientChannelID; + } + + public byte[] getPayload() { + if (payload == null) { + TypesWriter tw = new TypesWriter(); + tw.writeByte(Packets.SSH_MSG_CHANNEL_REQUEST); + tw.writeUINT32(recipientChannelID); + tw.writeString("auth-agent-req@openssh.com"); + tw.writeBoolean(true); // want reply + payload = tw.getBytes(); + } + + return payload; + } +}