Package org.xbill.DNS

Examples of org.xbill.DNS.Record


    }

    private void addAdditional2(Message response, int section, int flags) {
        Record[] records = response.getSectionArray(section);
        for (int i = 0; i < records.length; i++) {
            Record r = records[i];
            Name glueName = r.getAdditionalName();
            if (glueName != null)
                addGlue(response, glueName, flags);
        }
    }
View Full Code Here


        if (header.getRcode() != Rcode.NOERROR)
            return errorMessage(query, Rcode.FORMERR);
        if (header.getOpcode() != Opcode.QUERY)
            return errorMessage(query, Rcode.NOTIMP);

        Record queryRecord = query.getQuestion();

        TSIGRecord queryTSIG = query.getTSIG();
        TSIG tsig = null;
        if (queryTSIG != null) {
            tsig = (TSIG) TSIGs.get(queryTSIG.getName());
            if (tsig == null ||
                    tsig.verify(query, in, length, null) != Rcode.NOERROR)
                return formerrMessage(in);
        }

        OPTRecord queryOPT = query.getOPT();
        if (queryOPT != null && queryOPT.getVersion() > 0)
            badversion = true;

        if (s != null)
            maxLength = 65535;
        else if (queryOPT != null)
            maxLength = Math.max(queryOPT.getPayloadSize(), 512);
        else
            maxLength = 512;

        if (queryOPT != null && (queryOPT.getFlags() & ExtendedFlags.DO) != 0)
            flags = FLAG_DNSSECOK;

        Message response = new Message(query.getHeader().getID());
        response.getHeader().setFlag(Flags.QR);
        if (query.getHeader().getFlag(Flags.RD))
            response.getHeader().setFlag(Flags.RD);
        response.addRecord(queryRecord, Section.QUESTION);

        Name name = queryRecord.getName();
        int type = queryRecord.getType();
        int dclass = queryRecord.getDClass();
        if (type == Type.AXFR && s != null)
            return doAXFR(name, query, tsig, queryTSIG, s);
        if (!Type.isRR(type) && type != Type.ANY)
            return errorMessage(query, Rcode.NOTIMP);
View Full Code Here

            case DNSRequest.TXT: type = Type.TXT; break;
            default:
                throw new UnsupportedOperationException("Unknown query type: "+request.getRecordType());
        }
       
        Record question = Record.newRecord(name, type, DClass.ANY);
        Message query = Message.newQuery(question);
        query.getHeader().setID(id);
        return query;
    }
View Full Code Here

            if (response.findRRset(name, rrset.getType(), s))
                return;
        if ((flags & FLAG_SIGONLY) == 0) {
            Iterator it = rrset.rrs();
            while (it.hasNext()) {
                Record r = (Record) it.next();
                if (r.getName().isWild() && !name.isWild())
                    r = r.withName(name);
                response.addRecord(r, section);
            }
        }
        if ((flags & (FLAG_SIGONLY | FLAG_DNSSECOK)) != 0) {
            Iterator it = rrset.sigs();
            while (it.hasNext()) {
                Record r = (Record) it.next();
                if (r.getName().isWild() && !name.isWild())
                    r = r.withName(name);
                response.addRecord(r, section);
            }
        }
    }
View Full Code Here

    }

    private void addAdditional2(Message response, int section, int flags) {
        Record[] records = response.getSectionArray(section);
        for (int i = 0; i < records.length; i++) {
            Record r = records[i];
            Name glueName = r.getAdditionalName();
            if (glueName != null)
                addGlue(response, glueName, flags);
        }
    }
View Full Code Here

        if (header.getRcode() != Rcode.NOERROR)
            return errorMessage(query, Rcode.FORMERR);
        if (header.getOpcode() != Opcode.QUERY)
            return errorMessage(query, Rcode.NOTIMP);

        Record queryRecord = query.getQuestion();

        OPTRecord queryOPT = query.getOPT();
        if (queryOPT != null && queryOPT.getVersion() > 0) {
        }

        if (s != null)
            maxLength = 65535;
        else if (queryOPT != null)
            maxLength = Math.max(queryOPT.getPayloadSize(), 512);
        else
            maxLength = 512;

        if (queryOPT != null && (queryOPT.getFlags() & ExtendedFlags.DO) != 0)
            flags = FLAG_DNSSECOK;

        Message response = new Message(query.getHeader().getID());
        response.getHeader().setFlag(Flags.QR);
        if (query.getHeader().getFlag(Flags.RD))
            response.getHeader().setFlag(Flags.RD);
        response.addRecord(queryRecord, Section.QUESTION);

        Name name = queryRecord.getName();
        int type = queryRecord.getType();
        int dclass = queryRecord.getDClass();
        if (!Type.isRR(type) && type != Type.ANY)
            return errorMessage(query, Rcode.NOTIMP);

        byte rcode = addAnswer(response, name, type, dclass, 0, flags);
       
View Full Code Here

    final Record[] queryResult = query.run();
    //TODO file bug upstream that queryResult may never be null
    final int length = queryResult == null ? 0 : queryResult.length;
    for (int j = 0; j < length; j++) {
      Record[] srvQueryResult = null;
      final Record record = queryResult[j];
      if(record instanceof PTRRecord) {
        final PTRRecord ptrRecord = (PTRRecord) record;
        final Name target = ptrRecord.getTarget();
        final Lookup srvQuery = new Lookup(target, Type.SRV);
        srvQuery.setResolver(resolver);
View Full Code Here

  protected void sendToServer(final IServiceInfo serviceInfo, final boolean mode) {
    Assert.isNotNull(serviceInfo);
    Assert.isLegal(serviceInfo.getServiceID() instanceof DnsSdServiceID);
    final DnsSdServiceID serviceID = (DnsSdServiceID) serviceInfo.getServiceID();
    try {
      final Record srvRecord = serviceID.toSRVRecord(); // TYPE.SRV
      final Record[] txtRecords = serviceID.toTXTRecords(srvRecord); // TYPE.TXT
      final Name name = serviceID.getDnsName();
   
      final String[] registrationDomains = getRegistrationDomains(serviceID.getServiceTypeID());
   
      for (int i = 0; i < registrationDomains.length; i++) {
        final Name zone = new Name(registrationDomains[i]);
        final Name fqdn = new Name(name.toString() + "." + zone.toString()); //$NON-NLS-1$
        final Update update = new Update(zone);

        //TYPE.SRV
        if(mode == ADD) {
          //TODO add absent/present condition checks
          update.replace(srvRecord.withName(fqdn));
        } else {
          update.delete(srvRecord.withName(fqdn));
        }
       
        //TYPE.TXT
        for (int j = 0; j < txtRecords.length; j++) {
          if(mode == ADD) {
View Full Code Here

  private IServiceTypeID[] getServiceTypes(final DnsSdServiceTypeID serviceTypeId) {
    List result = new ArrayList();
    Record[] queryResult = getRecords(serviceTypeId);
    for (int j = 0; j < queryResult.length; j++) {
      Record record = queryResult[j];
      if(record instanceof PTRRecord) {
        PTRRecord ptrRecord = (PTRRecord) record;
        result.add(new DnsSdServiceTypeID(getServicesNamespace(), ptrRecord.getTarget()));
      } else if (record instanceof SRVRecord) {
        SRVRecord srvRecord = (SRVRecord) record;
View Full Code Here

    query.setResolver(resolver);
    Record[] queryResult = query.run();
    //TODO file bug upstream that queryResult may never be null
    int length = queryResult == null ? 0 : queryResult.length;
    for (int j = 0; j < length; j++) {
      final Record record = queryResult[j];
      if(record instanceof NSRecord) {
        final NSRecord nsRecord = (NSRecord) record;
        final Name target = nsRecord.getTarget();
        result.add(new SRVRecord(name, DClass.IN, nsRecord.getTTL(), 0, 0, SimpleResolver.DEFAULT_PORT, target));
      }
    }
   
    //query for primary ns in SOA record (may overwrite/be equal to one of the ns records)
    query = new Lookup(zone, Type.SOA);
    query.setResolver(resolver);
    queryResult = query.run();
    //TODO file bug upstream that queryResult may never be null
    length = queryResult == null ? 0 : queryResult.length;
    for (int j = 0; j < length; j++) {
      final Record record = queryResult[j];
      if(record instanceof SOARecord) {
        final SOARecord soaRecord = (SOARecord) record;
        result.add(new SRVRecord(name, DClass.IN, soaRecord.getTTL(), 0, 0, SimpleResolver.DEFAULT_PORT, soaRecord.getHost()));
      }
    }
View Full Code Here

TOP

Related Classes of org.xbill.DNS.Record

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.