org.apache.sshd.common.util.buffer.Buffer.putBuffer()方法的使用及代码示例

x33g5p2x  于2022-01-17 转载在 其他  
字(10.1k)|赞(0)|评价(0)|浏览(93)

本文整理了Java中org.apache.sshd.common.util.buffer.Buffer.putBuffer()方法的一些代码示例,展示了Buffer.putBuffer()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Buffer.putBuffer()方法的具体详情如下:
包路径:org.apache.sshd.common.util.buffer.Buffer
类名称:Buffer
方法名:putBuffer

Buffer.putBuffer介绍

暂无

代码示例

代码示例来源:origin: org.apache.sshd/sshd-osgi

public abstract void putBuffer(ByteBuffer buffer);

代码示例来源:origin: org.apache.sshd/sshd-common

public abstract void putBuffer(ByteBuffer buffer);

代码示例来源:origin: org.apache.sshd/sshd-core

public void write(Readable src) throws IOException {
  synchronized (buffer) {
    buffer.putBuffer(src);
  }
  doRead(true);
}

代码示例来源:origin: org.apache.sshd/sshd-common

public void putChars(char[] chars, int offset, int len, Charset charset) {
  if (len <= 0) {
    putBytes(GenericUtils.EMPTY_BYTE_ARRAY);
  } else {
    putBuffer(charset.encode(CharBuffer.wrap(chars, offset, len)));
  }
}

代码示例来源:origin: org.apache.sshd/sshd-osgi

public void write(Readable src) throws IOException {
  synchronized (buffer) {
    buffer.putBuffer(src);
  }
  doRead(true);
}

代码示例来源:origin: org.apache.sshd/sshd-osgi

public void putChars(char[] chars, int offset, int len, Charset charset) {
  if (len <= 0) {
    putBytes(GenericUtils.EMPTY_BYTE_ARRAY);
  } else {
    CharBuffer charBuf = CharBuffer.wrap(chars, offset, len);
    ByteBuffer byteBuf = charset.encode(charBuf);
    putBuffer(byteBuf);
  }
}

代码示例来源:origin: org.apache.sshd/sshd-core

@Override
@SuppressWarnings("synthetic-access")
public void messageReceived(IoSession session, Readable message) throws Exception {
  if (isClosing()) {
    if (debugEnabled) {
      log.debug("doInit({}) Ignoring write to channel in CLOSING state", TcpipServerChannel.this);
    }
  } else {
    Buffer buffer = new ByteArrayBuffer(message.available() + Long.SIZE, false);
    buffer.putBuffer(message);
    out.write(buffer.array(), buffer.rpos(), buffer.available());
    out.flush();
  }
}

代码示例来源:origin: org.apache.sshd/sshd-core

@Override
public void messageReceived(IoSession session, Readable message) throws Exception {
  ChannelForwardedX11 channel = (ChannelForwardedX11) session.getAttribute(ChannelForwardedX11.class);
  Buffer buffer = new ByteArrayBuffer(message.available() + Long.SIZE, false);
  buffer.putBuffer(message);
  if (log.isTraceEnabled()) {
    log.trace("messageReceived({}) channel={}, len={}", session, channel, buffer.available());
  }
  OutputStream outputStream = channel.getInvertedIn();
  outputStream.write(buffer.array(), buffer.rpos(), buffer.available());
  outputStream.flush();
}

代码示例来源:origin: org.apache.sshd/sshd-osgi

@Override
@SuppressWarnings("synthetic-access")
public void messageReceived(IoSession session, Readable message) throws Exception {
  if (isClosing()) {
    if (debugEnabled) {
      log.debug("doInit({}) Ignoring write to channel in CLOSING state", TcpipServerChannel.this);
    }
  } else {
    Buffer buffer = new ByteArrayBuffer(message.available() + Long.SIZE, false);
    buffer.putBuffer(message);
    out.write(buffer.array(), buffer.rpos(), buffer.available());
    out.flush();
  }
}

代码示例来源:origin: org.apache.sshd/sshd-osgi

@Override
public void messageReceived(IoSession session, Readable message) throws Exception {
  ChannelForwardedX11 channel = (ChannelForwardedX11) session.getAttribute(ChannelForwardedX11.class);
  Buffer buffer = new ByteArrayBuffer(message.available() + Long.SIZE, false);
  buffer.putBuffer(message);
  if (log.isTraceEnabled()) {
    log.trace("messageReceived({}) channel={}, len={}", session, channel, buffer.available());
  }
  OutputStream outputStream = channel.getInvertedIn();
  outputStream.write(buffer.array(), buffer.rpos(), buffer.available());
  outputStream.flush();
}

代码示例来源:origin: org.apache.sshd/sshd-core

@Override
public void messageReceived(final IoSession session, org.apache.sshd.common.util.Readable message) throws Exception {
  Buffer buffer = new ByteArrayBuffer(message.available() + Long.SIZE, false);
  buffer.putBuffer(message);
  Proxy proxy = proxies.get(session);
  if (proxy == null) {
    int version = buffer.getUByte();
    if (version == 0x04) {
      proxy = new Socks4(session);
    } else if (version == 0x05) {
      proxy = new Socks5(session);
    } else {
      throw new IllegalStateException("Unsupported version: " + version);
    }
    proxy.onMessage(buffer);
    proxies.put(session, proxy);
  } else {
    proxy.onMessage(buffer);
  }
}

代码示例来源:origin: org.apache.sshd/sshd-osgi

@Override
public void messageReceived(final IoSession session, org.apache.sshd.common.util.Readable message) throws Exception {
  Buffer buffer = new ByteArrayBuffer(message.available() + Long.SIZE, false);
  buffer.putBuffer(message);
  Proxy proxy = proxies.get(session);
  if (proxy == null) {
    int version = buffer.getUByte();
    if (version == 0x04) {
      proxy = new Socks4(session);
    } else if (version == 0x05) {
      proxy = new Socks5(session);
    } else {
      throw new IllegalStateException("Unsupported version: " + version);
    }
    proxy.onMessage(buffer);
    proxies.put(session, proxy);
  } else {
    proxy.onMessage(buffer);
  }
}

代码示例来源:origin: org.apache.sshd/sshd-sftp

/**
 * Process an SFTP packet
 *
 * @param incoming The received {@link Buffer}
 * @throws IOException if failed to process the buffer
 */
protected void process(Buffer incoming) throws IOException {
  // create a copy of the buffer in case it is being re-used
  Buffer buffer = new ByteArrayBuffer(incoming.available() + Long.SIZE, false);
  buffer.putBuffer(incoming);
  int rpos = buffer.rpos();
  int length = buffer.getInt();
  int type = buffer.getUByte();
  Integer id = buffer.getInt();
  buffer.rpos(rpos);
  if (log.isTraceEnabled()) {
    log.trace("process({}) id={}, type={}, len={}",
         getClientChannel(), id, SftpConstants.getCommandMessageName(type), length);
  }
  synchronized (messages) {
    messages.put(id, buffer);
    messages.notifyAll();
  }
}

代码示例来源:origin: org.apache.sshd/sshd-osgi

protected void messageReceived(Buffer buffer) throws Exception {
  Buffer message = null;
  synchronized (receiveBuffer) {
    receiveBuffer.putBuffer(buffer);
    if (receiveBuffer.available() >= 4) {
      int rpos = receiveBuffer.rpos();
      int len = receiveBuffer.getInt();
      // Protect against malicious or corrupted packets
      if (len < 0) {
        throw new StreamCorruptedException("Illogical message length: " + len);
      }
      receiveBuffer.rpos(rpos);
      if (receiveBuffer.available() >= (4 + len)) {
        message = new ByteArrayBuffer(receiveBuffer.getBytes());
        receiveBuffer.compact();
      }
    }
  }
  if (message != null) {
    synchronized (messages) {
      messages.offer(message);
      messages.notifyAll();
    }
  }
}

代码示例来源:origin: org.apache.sshd/sshd-core

protected void messageReceived(Buffer buffer) throws Exception {
  Buffer message = null;
  synchronized (receiveBuffer) {
    receiveBuffer.putBuffer(buffer);
    if (receiveBuffer.available() >= 4) {
      int rpos = receiveBuffer.rpos();
      int len = receiveBuffer.getInt();
      receiveBuffer.rpos(rpos);
      if (receiveBuffer.available() >= 4 + len) {
        message = new ByteArrayBuffer(receiveBuffer.getBytes());
        receiveBuffer.compact();
      }
    }
  }
  if (message != null) {
    synchronized (messages) {
      messages.offer(message);
      messages.notifyAll();
    }
  }
}

代码示例来源:origin: org.apache.sshd/sshd-core

@Override
  protected void doWriteData(byte[] data, int off, long len) throws IOException {
    ValidateUtils.checkTrue(len <= Integer.MAX_VALUE, "Data length exceeds int boundaries: %d", len);

    Buffer message = null;
    synchronized (receiveBuffer) {
      receiveBuffer.putBuffer(new ByteArrayBuffer(data, off, (int) len));
      if (receiveBuffer.available() >= 4) {
        off = receiveBuffer.rpos();
        len = receiveBuffer.getInt();
        receiveBuffer.rpos(off);
        if (receiveBuffer.available() >= (4 + len)) {
          message = new ByteArrayBuffer(receiveBuffer.getBytes());
          receiveBuffer.compact();
        }
      }
    }
    if (message != null) {
      synchronized (messages) {
        messages.offer(message);
        messages.notifyAll();
      }
    }
  }
}

代码示例来源:origin: org.apache.sshd/sshd-core

protected boolean verifySignature(
    ServerSession session, String username, String alg, PublicKey key, Buffer buffer, Signature verifier, byte[] sig)
      throws Exception {
  byte[] id = session.getSessionId();
  String service = getService();
  String name = getName();
  Buffer buf = new ByteArrayBuffer(id.length + username.length() + service.length() + name.length()
    + alg.length() + ByteArrayBuffer.DEFAULT_SIZE + Long.SIZE, false);
  buf.putBytes(id);
  buf.putByte(SshConstants.SSH_MSG_USERAUTH_REQUEST);
  buf.putString(username);
  buf.putString(service);
  buf.putString(name);
  buf.putBoolean(true);
  buf.putString(alg);
  buf.putBuffer(buffer);
  if (log.isTraceEnabled()) {
    log.trace("verifySignature({}@{})[{}][{}] key type={}, fingerprint={} - verification data={}",
       username, session, service, name, alg, KeyUtils.getFingerPrint(key), buf.toHex());
    log.trace("verifySignature({}@{})[{}][{}] key type={}, fingerprint={} - expected signature={}",
       username, session, service, name, alg, KeyUtils.getFingerPrint(key), BufferUtils.toHex(sig));
  }
  verifier.update(buf.array(), buf.rpos(), buf.available());
  return verifier.verify(sig);
}

代码示例来源:origin: org.apache.sshd/sshd-osgi

protected boolean verifySignature(
    ServerSession session, String username, String alg, PublicKey key, Buffer buffer, Signature verifier, byte[] sig)
      throws Exception {
  byte[] id = session.getSessionId();
  String service = getService();
  String name = getName();
  Buffer buf = new ByteArrayBuffer(id.length + username.length() + service.length() + name.length()
    + alg.length() + ByteArrayBuffer.DEFAULT_SIZE + Long.SIZE, false);
  buf.putBytes(id);
  buf.putByte(SshConstants.SSH_MSG_USERAUTH_REQUEST);
  buf.putString(username);
  buf.putString(service);
  buf.putString(name);
  buf.putBoolean(true);
  buf.putString(alg);
  buf.putBuffer(buffer);
  if (log.isTraceEnabled()) {
    log.trace("verifySignature({}@{})[{}][{}] key type={}, fingerprint={} - verification data={}",
       username, session, service, name, alg, KeyUtils.getFingerPrint(key), buf.toHex());
    log.trace("verifySignature({}@{})[{}][{}] key type={}, fingerprint={} - expected signature={}",
       username, session, service, name, alg, KeyUtils.getFingerPrint(key), BufferUtils.toHex(sig));
  }
  verifier.update(buf.array(), buf.rpos(), buf.available());
  return verifier.verify(sig);
}

代码示例来源:origin: org.apache.sshd/sshd-core

protected Buffer insertCharacter(Buffer org, int c) {
  int remaining = org.capacity();
  int readPos = org.rpos();
  // see if can accommodate the character in the original buffer
  if ((remaining > 0) && (readPos > 0)) {
    int writePos = org.wpos();
    org.wpos(readPos - 1);
    org.putByte((byte) c);
    org.wpos(writePos);
    org.rpos(readPos - 1);
    return org;
  } else {
    Buffer buf = new ByteArrayBuffer(org.available() + Byte.SIZE, false);
    buf.putByte((byte) c);
    buf.putBuffer(org);
    return buf;
  }
}

代码示例来源:origin: org.apache.sshd/sshd-osgi

protected Buffer insertCharacter(Buffer org, int c) {
  int remaining = org.capacity();
  int readPos = org.rpos();
  // see if can accommodate the character in the original buffer
  if ((remaining > 0) && (readPos > 0)) {
    int writePos = org.wpos();
    org.wpos(readPos - 1);
    org.putByte((byte) c);
    org.wpos(writePos);
    org.rpos(readPos - 1);
    return org;
  } else {
    Buffer buf = new ByteArrayBuffer(org.available() + Byte.SIZE, false);
    buf.putByte((byte) c);
    buf.putBuffer(org);
    return buf;
  }
}

相关文章