Package ch.ethz.ssh2.packets

Examples of ch.ethz.ssh2.packets.TypesReader


    log.debug("Sending SSH_FXP_FSTAT...");
    sendMessage(Packet.SSH_FXP_FSTAT, req_id, tw.getBytes());

    byte[] resp = receiveMessage(34000);

    TypesReader tr = new TypesReader(resp);

    int t = tr.readByte();
    listener.read(Packet.forName(t));

    int rep_id = tr.readUINT32();
    if (rep_id != req_id)
    {
      throw new RequestMismatchException();
    }

    if (t == Packet.SSH_FXP_ATTRS)
    {
      return readAttrs(tr);
    }

    if (t != Packet.SSH_FXP_STATUS)
    {
      throw new PacketTypeException(t);
    }

    int errorCode = tr.readUINT32();
    String errorMessage = tr.readString();
    listener.read(errorMessage);
    throw new SFTPException(errorMessage, errorCode);
  }
View Full Code Here


    log.debug("Sending SSH_FXP_STAT/SSH_FXP_LSTAT...");
    sendMessage(statMethod, req_id, tw.getBytes());

    byte[] resp = receiveMessage(34000);

    TypesReader tr = new TypesReader(resp);

    int t = tr.readByte();
    listener.read(Packet.forName(t));

    int rep_id = tr.readUINT32();
    if (rep_id != req_id)
    {
      throw new RequestMismatchException();
    }

    if (t == Packet.SSH_FXP_ATTRS)
    {
      return readAttrs(tr);
    }

    if (t != Packet.SSH_FXP_STATUS)
    {
      throw new PacketTypeException(t);
    }

    int errorCode = tr.readUINT32();
    String errorMessage = tr.readString();
    listener.read(errorMessage);
    throw new SFTPException(errorMessage, errorCode);
  }
View Full Code Here

    log.debug("Sending SSH_FXP_READLINK...");
    sendMessage(Packet.SSH_FXP_READLINK, req_id, tw.getBytes());

    byte[] resp = receiveMessage(34000);

    TypesReader tr = new TypesReader(resp);

    int t = tr.readByte();
    listener.read(Packet.forName(t));

    int rep_id = tr.readUINT32();
    if (rep_id != req_id)
    {
      throw new RequestMismatchException();
    }

    if (t == Packet.SSH_FXP_NAME)
    {
      int count = tr.readUINT32();

      if (count != 1)
      {
        throw new IOException("The server sent an invalid SSH_FXP_NAME packet.");
      }

      return tr.readString(charsetName);
    }

    if (t != Packet.SSH_FXP_STATUS)
    {
      throw new PacketTypeException(t);
    }

    int errorCode = tr.readUINT32();
    String errorMessage = tr.readString();
    listener.read(errorMessage);
    throw new SFTPException(errorMessage, errorCode);
  }
View Full Code Here

  private void expectStatusOKMessage(int id) throws IOException
  {
    byte[] resp = receiveMessage(34000);

    TypesReader tr = new TypesReader(resp);

    int t = tr.readByte();
    listener.read(Packet.forName(t));

    int rep_id = tr.readUINT32();
    if (rep_id != id)
    {
      throw new RequestMismatchException();
    }

    if (t != Packet.SSH_FXP_STATUS)
    {
      throw new PacketTypeException(t);
    }

    int errorCode = tr.readUINT32();

    if (errorCode == ErrorCodes.SSH_FX_OK)
    {
      return;
    }
    String errorMessage = tr.readString();
    listener.read(errorMessage);
    throw new SFTPException(errorMessage, errorCode);
  }
View Full Code Here

    log.debug("Sending SSH_FXP_REALPATH...");
    sendMessage(Packet.SSH_FXP_REALPATH, req_id, tw.getBytes());

    byte[] resp = receiveMessage(34000);

    TypesReader tr = new TypesReader(resp);

    int t = tr.readByte();
    listener.read(Packet.forName(t));

    int rep_id = tr.readUINT32();
    if (rep_id != req_id)
    {
      throw new RequestMismatchException();
    }

    if (t == Packet.SSH_FXP_NAME)
    {
      int count = tr.readUINT32();

      if (count != 1)
      {
        throw new IOException("The server sent an invalid SSH_FXP_NAME packet.");
      }

      final String name = tr.readString(charsetName);
      listener.read(name);
      return name;
    }

    if (t != Packet.SSH_FXP_STATUS)
    {
      throw new PacketTypeException(t);
    }

    int errorCode = tr.readUINT32();
    String errorMessage = tr.readString();
    listener.read(errorMessage);
    throw new SFTPException(errorMessage, errorCode);
  }
View Full Code Here

      log.debug("Sending SSH_FXP_READDIR...");
      sendMessage(Packet.SSH_FXP_READDIR, req_id, tw.getBytes());

      byte[] resp = receiveMessage(34000);

      TypesReader tr = new TypesReader(resp);

      int t = tr.readByte();
      listener.read(Packet.forName(t));

      int rep_id = tr.readUINT32();
      if (rep_id != req_id)
      {
        throw new RequestMismatchException();
      }

      if (t == Packet.SSH_FXP_NAME)
      {
        int count = tr.readUINT32();

        log.debug("Parsing " + count + " name entries...");
        while (count > 0)
        {
          SFTPv3DirectoryEntry dirEnt = new SFTPv3DirectoryEntry();

          dirEnt.filename = tr.readString(charsetName);
          dirEnt.longEntry = tr.readString(charsetName);
          listener.read(dirEnt.longEntry);

          dirEnt.attributes = readAttrs(tr);
          files.add(dirEnt);

          log.debug("File: '" + dirEnt.filename + "'");
          count--;
        }
        continue;
      }

      if (t != Packet.SSH_FXP_STATUS)
      {
        throw new PacketTypeException(t);
      }

      int errorCode = tr.readUINT32();

      if (errorCode == ErrorCodes.SSH_FX_EOF)
      {
        return files;
      }
      String errorMessage = tr.readString();
      listener.read(errorMessage);
      throw new SFTPException(errorMessage, errorCode);
    }
  }
View Full Code Here

    log.debug("Sending SSH_FXP_OPENDIR...");
    sendMessage(Packet.SSH_FXP_OPENDIR, req_id, tw.getBytes());

    byte[] resp = receiveMessage(34000);

    TypesReader tr = new TypesReader(resp);

    int t = tr.readByte();
    listener.read(Packet.forName(t));

    int rep_id = tr.readUINT32();
    if (rep_id != req_id)
    {
      throw new RequestMismatchException();
    }

    if (t == Packet.SSH_FXP_HANDLE)
    {
      log.debug("Got SSH_FXP_HANDLE.");
      return new SFTPv3FileHandle(this, tr.readByteString());
    }

    if (t != Packet.SSH_FXP_STATUS)
    {
      throw new PacketTypeException(t);
    }

    int errorCode = tr.readUINT32();
    String errorMessage = tr.readString();
    listener.read(errorMessage);
    throw new SFTPException(errorMessage, errorCode);
  }
View Full Code Here

    sendMessage(Packet.SSH_FXP_INIT, 0, tw.getBytes());

    /* Receive SSH_FXP_VERSION */

    log.debug("Waiting for SSH_FXP_VERSION...");
    TypesReader tr = new TypesReader(receiveMessage(34000)); /* Should be enough for any reasonable server */

    int t = tr.readByte();
    listener.read(Packet.forName(t));

    if (t != Packet.SSH_FXP_VERSION)
    {
      throw new IOException("The server did not send a SSH_FXP_VERSION packet (got " + t + ")");
    }

    protocol_version = tr.readUINT32();

    log.debug("SSH_FXP_VERSION: protocol_version = " + protocol_version);
    if (protocol_version != 3)
    {
      throw new IOException("Server version " + protocol_version + " is currently not supported");
    }

    /* Read and save extensions (if any) for later use */

    while (tr.remain() != 0)
    {
      String name = tr.readString();
      listener.read(name);
      byte[] value = tr.readByteString();
      log.debug("SSH_FXP_VERSION: extension: " + name + " = '" + expandString(value, 0, value.length) + "'");
    }
  }
View Full Code Here

    log.debug("Sending SSH_FXP_OPEN...");
    sendMessage(Packet.SSH_FXP_OPEN, req_id, tw.getBytes());

    byte[] resp = receiveMessage(34000);

    TypesReader tr = new TypesReader(resp);

    int t = tr.readByte();
    listener.read(Packet.forName(t));

    int rep_id = tr.readUINT32();
    if (rep_id != req_id)
    {
      throw new RequestMismatchException();
    }

    if (t == Packet.SSH_FXP_HANDLE)
    {
      log.debug("Got SSH_FXP_HANDLE.");
      return new SFTPv3FileHandle(this, tr.readByteString());
    }

    if (t != Packet.SSH_FXP_STATUS)
    {
      throw new PacketTypeException(t);
    }

    int errorCode = tr.readUINT32();
    String errorMessage = tr.readString();
    listener.read(errorMessage);
    throw new SFTPException(errorMessage, errorCode);
  }
View Full Code Here

        break;
      }

      // Receive a single answer
      byte[] resp = receiveMessage(34000);
      TypesReader tr = new TypesReader(resp);

      int t = tr.readByte();
      listener.read(Packet.forName(t));

      // Search the pending queue
      OutstandingReadRequest req = pendingReadQueue.remove(tr.readUINT32());
      if (null == req)
      {
        throw new RequestMismatchException();
      }
      // Evaluate the answer
      if (t == Packet.SSH_FXP_STATUS)
      {
        /* In any case, stop sending more packets */

        int code = tr.readUINT32();
        String msg = tr.readString();
        listener.read(msg);

        if (log.isDebugEnabled())
        {
          String[] desc = ErrorCodes.getDescription(code);
          log.debug("Got SSH_FXP_STATUS (" + req.req_id + ") (" + ((desc != null) ? desc[0] : "UNKNOWN") + ")");
        }
        // Flag to read all pending requests but don't send any more.
        errorOccured = true;
        if (pendingReadQueue.isEmpty())
        {
          if (ErrorCodes.SSH_FX_EOF == code)
          {
            return -1;
          }
          throw new SFTPException(msg, code);
        }
      }
      else if (t == Packet.SSH_FXP_DATA)
      {
        // OK, collect data
        int readLen = tr.readUINT32();

        if ((readLen < 0) || (readLen > req.len))
        {
          throw new IOException("The server sent an invalid length field in a SSH_FXP_DATA packet.");
        }

        if (log.isDebugEnabled())
        {
          log.debug("Got SSH_FXP_DATA (" + req.req_id + ") " + req.serverOffset + "/" + readLen
              + " (requested: " + req.len + ")");
        }

        // Read bytes into buffer
        tr.readBytes(req.buffer, req.dstOffset, readLen);

        if (readLen < req.len)
        {
          /* Send this request packet again to request the remaing data in this slot. */
          req.req_id = generateNextRequestID();
View Full Code Here

TOP

Related Classes of ch.ethz.ssh2.packets.TypesReader

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.