Exemple #1
0
  private static byte[] _monitor_handleAnnouncement(
      DirectoryAnnouncement da, String detected_sa, DBInterface db, boolean storeNAT)
      throws P2PDDSQLException {
    if (DEBUG) System.out.println("Got announcement: " + da);
    if (da.getGID() != null)
      db.deleteNoSyncNULL(
          table.registered.TNAME,
          new String[] {table.registered.global_peer_ID, table.registered.instance},
          new String[] {da.getGID(), da.instance},
          DEBUG);
    else
      db.deleteNoSyncNULL(
          table.registered.TNAME,
          new String[] {table.registered.global_peer_ID_hash, table.registered.instance},
          new String[] {da.getGIDH(), da.instance},
          DEBUG);
    String adr = da.address.addresses();
    // da.address.domain+":"+da.address.port+ADDR_SEP+detected_sa,
    if (storeNAT) adr = Address.joinAddresses(detected_sa, adr);

    String params[] = new String[table.registered.fields_noID_list.length];
    params[table.registered.REG_GID] = da.getGID();
    params[table.registered.REG_GID_HASH] = da.getGIDH();
    params[table.registered.REG_INSTANCE] = da.instance;
    params[table.registered.REG_BRANCH] = da.branch;
    params[table.registered.REG_AGENT_VERSION] = Util.getVersion(da.agent_version);
    params[table.registered.REG_NAME] = da.name;
    params[table.registered.REG_CERT] =
        (da.certificate.length == 0) ? null : Util.stringSignatureFromByte(da.certificate);
    params[table.registered.REG_ADDR] = adr;
    params[table.registered.REG_SIGN] =
        (da.signature.length == 0) ? null : Util.stringSignatureFromByte(da.signature);
    Calendar timestamp = da.date;
    if (timestamp == null) timestamp = Util.CalendargetInstance();
    params[table.registered.REG_TIME] =
        Encoder.getGeneralizedTime(
            timestamp); // (Util.CalendargetInstance().getTimeInMillis()/1000)+"";

    long id =
        db.insert(
            table.registered.TNAME,
            table.registered.fields_noID_list,
            //				new
            // String[]{table.registered.global_peer_ID,table.registered.certificate,table.registered.addresses,table.registered.signature,table.registered.timestamp},
            params);
    if (DEBUG) out.println("DirectoryServer: mon_handleAnnoncement:inserted with ID=" + id);
    byte[] answer = new DirectoryAnnouncement_Answer(detected_sa).encode();
    if (DEBUG) out.println("sending answer: " + Util.byteToHexDump(answer));
    return answer;
  }