Package org.jmule.core.edonkey.packet.tag

Examples of org.jmule.core.edonkey.packet.tag.TagList


        channel.read(data);
        long creation_time = data.getLong(0);
        data = getByteBuffer(1);
        channel.read(data);
        int tagCount = data.get(0);
        TagList tagList = new TagList();
       
        for(int k = 0;k<tagCount;k++) {
          Tag tag = TagScanner.scanTag(channel);
         
          if (tag!=null)
            tagList.addTag(tag);
        }
        Source source = new Source(client_id, tagList,creation_time);
        source.setTagList(tagList);
        index.addSource(source);
      }
View Full Code Here


  private LookupTask lookup_task;
 
  public PublishSourceTask(PublishTaskListener listener, Int128 publishID, List<Tag> tagList) {
    super(publishID,listener);
    this.tagList = new TagList(tagList);
  }
View Full Code Here

    if (SharingManagerSingleton.getInstance().hasFile(fileHash)) {
      if (indexer == null) indexer = new Index(targetID);
      SharedFile file = SharingManagerSingleton.getInstance().getSharedFile(fileHash);
      InternalJKadManager _jkad_manager = (InternalJKadManager) JKadManagerSingleton.getInstance();
      ConfigurationManager config_manager = ConfigurationManagerSingleton.getInstance();
      TagList tagList = new TagList();
      tagList.addTag(new IntTag(JKadConstants.TAG_SOURCEIP, Convert.byteToInt(_jkad_manager.getIPAddress().getAddress())));
      try {
        tagList.addTag(new ShortTag(JKadConstants.TAG_SOURCEPORT, Convert.intToShort(config_manager.getTCP())));
      } catch (ConfigurationManagerException e) {
        e.printStackTrace();
        _jkad_manager.disconnect();
      }
      try {
        tagList.addTag(new ShortTag(JKadConstants.TAG_SOURCEUPORT, Convert.intToShort(config_manager.getUDP())));
      } catch (ConfigurationManagerException e) {
        e.printStackTrace();
        _jkad_manager.disconnect();
      }
      tagList.addTag(new IntTag(JKadConstants.TAG_FILESIZE, Convert.longToInt(file.length())));
      Source my_source = new Source(_jkad_manager.getClientID(), tagList);
     
      indexer.addSource(my_source);
    }
   
View Full Code Here

  }
 
  public Source(ClientID clientID, IPAddress address, int udpPort, int tcpPort) {
    creationTime = System.currentTimeMillis();
    this.clientID = clientID;
    tagList = new TagList();
    tagList.addTag(new IntTag(JKadConstants.TAG_SOURCEIP,Convert.byteToInt(address.getAddress())));
    tagList.addTag(new ShortTag(JKadConstants.TAG_SOURCEPORT,Convert.intToShort(tcpPort)));
    tagList.addTag(new ShortTag(JKadConstants.TAG_SOURCEUPORT,Convert.intToShort(udpPort)));
  }
View Full Code Here

  }

  DownloadSession(ED2KFileLink fileLink) {
    this();
    try {
      TagList tagList = new TagList();
      Tag tag;
      tag = new StringTag(FT_FILENAME, fileLink.getFileName());
      tagList.addTag(tag);
      tag = new IntTag(FT_FILESIZE, Convert.longToInt((fileLink
          .getFileSize())));
      tagList.addTag(tag);
      createDownloadFiles(fileLink.getFileName(), fileLink.getFileSize(),
          fileLink.getFileHash(), null, tagList);
      int partCount = (int) ((sharedFile.length() / PARTSIZE));
      if (sharedFile.length() % PARTSIZE != 0)
        partCount++;
View Full Code Here

   * </table>
   */
  public static Packet getServerLoginPacket(UserHash userHash, int clientPort,
      String userNickName) throws JMException {
   
    TagList tagList = new TagList();
    tagList.addTag(new StringTag(TAG_NAME_NAME, userNickName));
    tagList.addTag(new IntTag(TAG_NAME_PROTOCOLVERSION,ProtocolVersion ));
    tagList.addTag(new IntTag(TAG_NAME_CLIENTVER, ServerSoftwareVersion));
    tagList.addTag(new IntTag(TAG_NAME_FLAGS, SUPPORTED_FLAGS));
    tagList.addTag(new IntTag(TAG_NAME_UDP_PORT, ConfigurationManagerSingleton.getInstance().getUDP()));
 
    int tag_list_size = tagList.getByteSize();
   
    Packet packet = new Packet(16 + 4 + 2 + 4 + tag_list_size, PROTO_EDONKEY_TCP);
    packet.setCommand(OP_LOGINREQUEST);//Insert LOGIN_COMMAND
    packet.insertData(userHash.getUserHash());//Insert user Hash
    packet.insertData(new byte[]{0,0,0,0});//Insert default user ID
    packet.insertData((short)clientPort);//Insert user port

    packet.insertData(tagList.size());//Insert tag count
    for(Tag tag : tagList) {
      packet.insertData(tag.getAsByteBuffer());
    }
   
    return packet;
View Full Code Here

    } catch (Throwable e) {
      throw new SharedFileException("Failed to open "+file+"\n"+Misc.getStackTrace(e));
    }
   
    this.partFile = partFile;
    this.tagList = new TagList(partFile.getTagList().getAsList());
    tagList.removeTag(E2DKConstants.JMuleInternalTags);
   
    tempFileName = tempDir + File.separator + partFile.getTempFileName();
   
    metFileName = tempDir + File.separator + partFile.getName();
View Full Code Here

     */
    public static Packet getOfferFilesPacket(ClientID userID, List<SharedFile> sharedFiles) throws JMException  {
      int data_length=0;
      List<ByteBuffer> shared_files_data = new LinkedList<ByteBuffer>();
      for(SharedFile sFile : sharedFiles) {
        TagList tag_list = sFile.getTagList();
        int tag_list_size = tag_list.getByteSize();
        ByteBuffer buffer = Misc.getByteBuffer(16 + 4 + 2 + 4 + tag_list_size);
        data_length += buffer.limit();
        buffer.position(0);
        buffer.put(sFile.getFileHash().getHash());
        if (userID.isHighID()) {
          buffer.put(userID.getClientID());
          buffer.putShort((short)ConfigurationManagerSingleton.getInstance().getTCP());
        }
        else {
          buffer.putInt(0);
          buffer.putShort((short)0);
        }
        buffer.putInt(tag_list.size());//Insert tag count
       
        for(Tag tag : tag_list)
          buffer.put(tag.getAsByteBuffer());
       
        shared_files_data.add(buffer);
View Full Code Here

        for (int i = 0; i < clientCount; i++) {
          byte clientID[] = new byte[16];
          rawData.get(clientID);
          int tagCount = shortToInt(rawData.get());
          TagList tagList = new TagList();
          for (int k = 0; k < tagCount; k++) {
            Tag tag = TagScanner.scanTag(rawData);
            tagList.addTag(tag);
          }
          ClientID client_id = new ClientID(clientID);
          Source source = new Source(client_id, tagList);

          source.setAddress(new IPAddress(packet.getAddress()));
          source.setUDPPort(packet.getAddress().getPort());

          KadContact contact = routing_table.getContact(client_id);
          if (contact != null)
            source.setTCPPort(contact.getTCPPort());

          list.add(source);
        }

        boolean source_load = false;

        for (Source source : list) {
          boolean isSourcePublish = false;
          isSourcePublish = source.getTagList()
              .hasTag(TAG_SOURCETYPE);
          if (isSourcePublish) {
            indexer.addFileSource(targetID, source);
            source_load = true;
          } else
            indexer.addFileSource(targetID, source);
        }
        KadPacket response = null;
        if (source_load)
          response = PacketFactory.getPublishResPacket(targetID,
              indexer.getFileSourcesLoad());
        else
          response = PacketFactory.getPublishResPacket(targetID,
              indexer.getKeywordLoad());
        _network_manager.sendKadPacket(response, sender_address,
            sender_port);

      } else if (packetOPCode == KADEMLIA_PUBLISH_RES) {
        byte targetID[] = new byte[16];
        rawData.get(targetID);
        int load = byteToInt(rawData.get());
        publisher.processGenericResponse(new ClientID(targetID), load);
      } else if (packetOPCode == KADEMLIA_SEARCH_NOTES_REQ) {
        byte[] targetID = new byte[16];
        rawData.get(targetID);
        List<Source> source_list = indexer.getNoteSources(new Int128(
            targetID));
        KadPacket response = PacketFactory.getNotesRes(new Int128(
            targetID), source_list);
        _network_manager.sendKadPacket(response, sender_address,
            sender_port);
      } else if (packetOPCode == KADEMLIA_SEARCH_NOTES_RES) {
        byte[] noteID = new byte[16];
        rawData.get(noteID);
        int resultCount = shortToInt(rawData.getShort());
        List<Source> sourceList = new LinkedList<Source>();

        for (int i = 0; i < resultCount; i++) {
          byte[] clientID = new byte[16];
          rawData.get(clientID);
          Convert.updateSearchID(clientID);
          int tagCount = shortToInt(rawData.get());
          TagList tagList = new TagList();
          for (int k = 0; k < tagCount; k++) {
            Tag tag = TagScanner.scanTag(rawData);
            tagList.addTag(tag);
          }
          Source source = new Source(new ClientID(clientID), tagList);
          source.setAddress(new IPAddress(packet.getAddress()));
          source.setUDPPort(packet.getAddress().getPort());
          KadContact contact = RoutingTable.getSingleton()
              .getContact(new ClientID(clientID));
          if (contact != null)
            source.setTCPPort(contact.getTCPPort());
          sourceList.add(source);
        }
        search.processResults(packet.getAddress(), new Int128(noteID),
            sourceList);
      } else if (packetOPCode == KADEMLIA_PUBLISH_NOTES_REQ) {
        byte[] noteID = new byte[16];
        rawData.get(noteID);
        byte[] publisherID = new byte[16];
        rawData.get(publisherID);
        int tagCount = byteToInt(rawData.get());
        TagList tagList = new TagList();
        for (int i = 0; i < tagCount; i++) {
          Tag tag = TagScanner.scanTag(rawData);
          tagList.addTag(tag);
        }
        ClientID publisher_id = new ClientID(publisherID);
        Source source = new Source(publisher_id, tagList);
        source.setAddress(new IPAddress(packet.getAddress()));
        source.setUDPPort(packet.getAddress().getPort());

        KadContact contact = routing_table.getContact(publisher_id);
        if (contact != null)
          source.setTCPPort(contact.getTCPPort());

        indexer.addNoteSource(new Int128(noteID), source);
        KadPacket response = PacketFactory.getPublishNotesRes(
            new Int128(noteID), indexer.getNoteLoad());
        _network_manager.sendKadPacket(response, sender_address,
            sender_port);

      } else if (packetOPCode == KADEMLIA_PUBLISH_NOTES_RES) {
        byte[] noteID = new byte[16];
        rawData.get(noteID);
        int load = byteToInt(rawData.get());
        publisher.processNoteResponse(new Int128(noteID), load);
      } else if (packetOPCode == KADEMLIA_SEARCH_REQ) {
        byte targetID[] = new byte[16];
        rawData.get(targetID);
        boolean sourceSearch = false;
        if (rawData.limit() == 17)
          if (rawData.get() == 1)
            sourceSearch = true;
        List<Source> source_list;

        if (sourceSearch)
          source_list = indexer.getFileSources(new Int128(targetID));
        else
          source_list = indexer
              .getKeywordSources(new Int128(targetID));
        KadPacket response = PacketFactory.getSearchResPacket(
            new Int128(targetID), source_list);
        _network_manager.sendKadPacket(response, sender_address,
            sender_port);
      } else if (packetOPCode == KADEMLIA_SEARCH_RES) {
        byte targetID[] = new byte[16];
        rawData.get(targetID);
        int resultCount = shortToInt(rawData.getShort());

        List<Source> sourceList = new LinkedList<Source>();

        for (int i = 0; i < resultCount; i++) {
          byte[] contactID = new byte[16];
          rawData.get(contactID);
          int tagCount = byteToInt(rawData.get());
          TagList tagList = new TagList();
          for (int k = 0; k < tagCount; k++) {
            try {
              Tag tag = TagScanner.scanTag(rawData);
              if (tag == null)
                continue;

              tagList.addTag(tag);
            } catch (Throwable t) {
              t.printStackTrace();
            }
          }
          ClientID client_id = new ClientID(contactID);
          Source source = new Source(client_id, tagList);
          KadContact contact = routing_table.getContact(client_id);
          if (contact != null) {
            source.setUDPPort(contact.getUDPPort());
            source.setTCPPort(contact.getTCPPort());
          }
          sourceList.add(source);
        }
        search.processResults(packet.getAddress(),
            new Int128(targetID), sourceList);
      } else if (packetOPCode == KADEMLIA_FIREWALLED_REQ) {
        int tcpPort = shortToInt(rawData.getShort());
        firewallChecker.processFirewallRequest(packet.getAddress(),
            tcpPort);
      } else if (packetOPCode == KADEMLIA_FIREWALLED_RES) {
        byte[] address = new byte[4];
        rawData.get(address);
        firewallChecker.porcessFirewallResponse(packet.getAddress(),
            new IPAddress(address));
      } else if (packetOPCode == KADEMLIA2_HELLO_REQ) {
        byte[] client_id_raw = new byte[16];
        rawData.get(client_id_raw);
        ClientID clientID = new ClientID(client_id_raw);
        int tcpPort = shortToInt(rawData.getShort());
        byte version = rawData.get();
        byte tag_count = rawData.get();
        List<Tag> tag_list = new LinkedList<Tag>();
        for (byte i = 0; i < tag_count; i++) {
          Tag tag = TagScanner.scanTag(rawData);
          if (tag == null)
            throw new CorruptedPacketException();
          tag_list.add(tag);
        }

        KadContact contact = routing_table.getContact(clientID);
        if (contact != null) {
          contact.setTCPPort(tcpPort);
          contact.setUDPPort(packet.getAddress().getPort());
          contact.setVersion(version);
        }

        KadPacket response = PacketFactory
            .getHello2ResPacket(TagList.EMPTY_TAG_LIST);
        _network_manager.sendKadPacket(response, sender_address,
            sender_port);
      } else if (packetOPCode == KADEMLIA2_HELLO_RES) {
        byte[] client_id_raw = new byte[16];
        rawData.get(client_id_raw);
        ClientID clientID = new ClientID(client_id_raw);
        int tcpPort = shortToInt(rawData.getShort());
        byte version = rawData.get();
        byte tag_count = rawData.get();
        List<Tag> tag_list = new LinkedList<Tag>();

        for (byte i = 0; i < tag_count; i++) {
          Tag tag = TagScanner.scanTag(rawData);
          if (tag == null)
            throw new CorruptedPacketException();
          tag_list.add(tag);
        }

        KadContact contact = routing_table.getContact(clientID);
        if (contact != null) {
          contact.setTCPPort(tcpPort);
          contact.setVersion(version);
        }
        // ignore message if contact is not in routing table
        /*
         * ContactAddress address = new ContactAddress(new
         * IPAddress(packet.getSender()),packet.getSender().getPort());
         * KadContact add_contact = new KadContact(clientID, address,
         * tcpPort,version, null);
         * routing_table.addContact(add_contact);
         *
         * add_contact.setConnected(true);
         */

      } else if (packetOPCode == KADEMLIA2_REQ) {
        byte type = rawData.get();

        byte[] client_id_raw = new byte[16];
        rawData.get(client_id_raw);
        ClientID targetClientID = new ClientID(client_id_raw);

        client_id_raw = new byte[16];
        rawData.get(client_id_raw);
        ClientID receiverClientID = new ClientID(client_id_raw);
        RequestType requestType = RequestType.FIND_VALUE;
        switch (type) {
        case JKadConstants.FIND_VALUE:
          requestType = RequestType.FIND_VALUE;
          break;

        case JKadConstants.STORE:
          requestType = RequestType.STORE;
          break;

        case JKadConstants.FIND_NODE:
          requestType = RequestType.FIND_NODE;
          break;
        }

        lookup.processRequest(packet.getAddress(), requestType,
            targetClientID, receiverClientID, 2);
      } else if (packetOPCode == KADEMLIA2_RES) {
        byte[] client_id_raw = new byte[16];
        rawData.get(client_id_raw);
        int contactCount = byteToInt(rawData.get());
        List<KadContact> contact_list = new LinkedList<KadContact>();
        for (int i = 0; i < contactCount; i++) {
          contact_list.add(getContact(rawData));
        }
        lookup.processResponse(packet.getAddress(), new ClientID(
            client_id_raw), contact_list);
      } else if (packetOPCode == KADEMLIA2_PUBLISH_KEY_REQ) {
        byte[] client_id = new byte[16];
        rawData.get(client_id);
        ClientID clientID = new ClientID(client_id);
        int count = rawData.getShort();
        for (int i = 0; i < count; i++) {
          byte[] hash = new byte[16];
          rawData.get(hash);
          byte tagCount = rawData.get();
          TagList tag_list = new TagList();
          for (int j = 0; j < tagCount; j++) {
            Tag tag = TagScanner.scanTag(rawData);
            if (tag == null)
              throw new CorruptedPacketException();
            tag_list.addTag(tag);
          }
          Source source = new Source(clientID, tag_list);
          source.setAddress(new IPAddress(packet.getAddress()));
          source.setUDPPort(packet.getAddress().getPort());

          KadContact contact = routing_table.getContact(clientID);
          if (contact != null)
            source.setTCPPort(contact.getTCPPort());

          indexer.addKeywordSource(new Int128(hash), source);
        }
        KadPacket response = PacketFactory.getPublishRes2Packet(
            clientID, indexer.getKeywordLoad());
        _network_manager.sendKadPacket(response, sender_address,
            sender_port);

      } else if (packetOPCode == KADEMLIA2_PUBLISH_RES) {
        byte targetID[] = new byte[16];
        rawData.get(targetID);
        int load = byteToInt(rawData.get());
        publisher.processGenericResponse(new ClientID(targetID), load);
      } else if (packetOPCode == KADEMLIA2_PUBLISH_SOURCE_REQ) {
        byte[] client_id = new byte[16];
        byte[] source_id = new byte[16];

        rawData.get(client_id);
        rawData.get(source_id);

        int tagCount = rawData.get();
        TagList tag_list = new TagList();
        for (int i = 0; i < tagCount; i++) {
          Tag tag = TagScanner.scanTag(rawData);
          if (tag == null)
            throw new CorruptedPacketException();
          tag_list.addTag(tag);
        }
        Source source = new Source(new ClientID(client_id), tag_list);
        source.setAddress(new IPAddress(packet.getAddress()));
        source.setUDPPort(packet.getAddress().getPort());

View Full Code Here

      byte[] serverIP,int serverPort,String userName, Map<PeerFeatures, Integer> clientFeatures) throws JMException  {
       
    int misc_optins1 = Utils.peerFeatures1ToInt(clientFeatures);
    int misc_optins2 = Utils.peerFeatures2ToInt(clientFeatures);
   
    TagList tagList = new TagList();
    tagList.addTag(new StringTag(TAG_NAME_NAME, userName));
    tagList.addTag(new IntTag(TAG_NAME_MISC_OPTIONS1,misc_optins1 ));
    tagList.addTag(new IntTag(TAG_NAME_MISC_OPTIONS2,misc_optins2));
   
    tagList.addTag(new IntTag(TAG_NAME_PROTOCOLVERSION,ProtocolVersion ));
    tagList.addTag(new IntTag(TAG_NAME_CLIENTVER, E2DKConstants.getSoftwareVersion()));
    tagList.addTag(new IntTag(TAG_NAME_FLAGS, SUPPORTED_FLAGS));
    tagList.addTag(new IntTag(TAG_NAME_UDP_PORT_PEER, ConfigurationManagerSingleton.getInstance().getUDP()));
 
    int tag_list_size = tagList.getByteSize();
   
       
        Packet packet = new Packet(1 + 16 + 4 + 2 + 4 + tag_list_size + 4 + 2, PROTO_EDONKEY_TCP);
      
        packet.setCommand(OP_PEERHELLO);//hello
        packet.insertData((byte)16);//Insert length of user Hash
        packet.insertData(userHash.getUserHash());//insert user hash
        if (clientID == null)
          packet.insertData(new byte[]{0,0,0,0});//insert user ID
        else
          packet.insertData(clientID.getClientID());//insert user ID
        packet.insertData((short)myPort);//insert my active port
        packet.insertData(tagList.size());//insert tag count
        packet.insertData(tagList.getAsByteBuffer());
       
        if (serverIP==null)
            packet.insertData(new byte[] { 0, 0, 0, 0 });
          else
            packet.insertData((serverIP));
View Full Code Here

TOP

Related Classes of org.jmule.core.edonkey.packet.tag.TagList

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.