Git Product home page Git Product logo

pdns-qof's Introduction

Passive DNS - Common Output Format

This document describes the output format used between Passive DNS query interface. The output format description includes also a common meaning per Passive DNS system.

This format originated as a discussion between Aaron Kaplan, Paul Vixie, Henry Stern and Alexandre Dulaunoy (Adulau) in ~ 2011. It was submitted to the IETF in 2014 and since then had a few minor updates. The last revision was publish the 11th February 2022.

It is being used by multiple operators of passive DNS services to offer an identical output format for queries to a passive DNS database. This allows the person issuing the query to combined and/or compare results.

The output format is in JSON.

How to Contribute to the Document

You can make pull request to the xml document. We are looking for comments from passive DNS developers in order to improve the document.

IETF Internet-Draft

Users and Use-cases

pdns-qof's People

Contributors

aaronkaplan avatar adulau avatar jvbrandis avatar kklinger-pfpt avatar pstray avatar vixie avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pdns-qof's Issues

Version field proposal (as optional)

Version field proposal (as optional) to ensure potential extension,

Point to consider:

  • Existing implementation if a new mandatory field is introduced
  • Making optional would be a cleaner option (and have a fall-back statement regarding the version if not present)

Clean up https://github.com/adulau/pdns-qof/wiki/Additional-Fields

The additional fields registry at https://github.com/adulau/pdns-qof/wiki/Additional-Fields contains three fields that have long since been added to the COF draft: sensor_id, zone_time_first, and zone_time_last. I suggest that they be removed from the registry or an additional column be added to the registry table showing the draft version number or RFC number in which each additional field was added to the I-D or RFC (as/if becomes applicable).

Open discussion: TTL

Should we include TTL?

  • An implementation is doing an average of the TTL
  • It's challenging on the aggregation aspect (median, average, mean)
  • Maybe an optional field clearly describing the algorithm used
  • ttl_min / ttl_max
  • appendix for additional clarification

Clarification of JSON versus JSON-LD

I think the Overview section and mentions of JSON formatting might need some changes or clarification:

pdns-qof/i-d/pdns-qof.txt

Lines 178 to 190 in ca5bac6

3.1. Overview
The formatting of the answer follows the JSON [RFC4627] format. In
fact, it is a subset of the full JSON language. Notable differences
are the modified definition of whitespace ("ws"). The order of the
fields is not significant for the same resource type.
The intent of this output format is to be easily parsable by scripts.
Each JSON object is expressed on a single line to be processed by the
client line-by-line. Every implementation MUST support the JSON
output format.
Examples of JSON (Appendix A) output are in the appendix.

Most people reading this document might get stuck on the exact kind of JSON being used because their parsers will not be explicitly compatible. This document seems to outline the use of Newline Delimited JSON ("application/x-ndjson"), not normal JSON.

The examples in Appendix A do not follow the examples in RFC4627; there is a missing array wrapper around the JSON objects and missing comma separators between objects.

I'd like to recommend the mentions of JSON being changed to JSON-ND or NDJSON or JSON-L. An alternative would be a clarification added to this Overview section that a streaming client is required and JSON parsing is on a per-object basis instead of a whole-response basis.

jq endorses this demo (https://jqplay.org/) for web browsers and it is not compatible with the current examples and definition as-is. The built-in JSON parsers in web browsers and NPM are also not compatible right now.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.