1. djbdns/tinydns/record

djbdns (D. J. Bernstein作)
tinydns-data プログラム の データ形式

DNS 情報は行の並びからなる。行末の空白とタブは無視される。

フィールドは省略できる場合もあるが、コロンは行末のものを除き省略できない。

項目には末尾に ttl:timestamp:location を付けられる。

A レコードは ".", "&", "=", "+", "@" などで生成される。

    項目         生成されるレコード        説明
.   fqdn:ip:x:  SOA, NS, A レコード fqdnドメインのネームサーバ、ゾーン宣言
&   fqdn:ip:x:  NS, A レコード      (下位)ドメインfqdnのためのネームサーバ
@   fqdn:ip:x:dist: MX と A レコード         fqdnのメイル中継受信ホスト
=   fqdn:ip:    A, PTR レコード     ホストfqdnはIPアドレスipである
+   fqdn:ip:    A レコード(だけ)      サービス名fqdnはIPアドレスipを持つ
'   fqdn:s:     TXTレコード
^   fqdn:p:     PTRレコード
:   fqdn:n:rdata: 一般レコード(タイプn)
#   comment --- コメント行。      この行は無視される。
C   fqdn:p:     CNAME レコード      fqdnの正規名を値とする
Z   fqdn:mname:rname:...ser:ref:ret:exp:min:    SOA レコード

tinydns-data用のファイルを読み込んで、type別に分けて出力python scriptを作ってみた。 -- ToshinoriMaeno 2015-12-09 05:49:48

#
a = dict()
def makedict(c):
     a[c] = dict()

if __name__ == "__main__":
  import fileinput
  
  for c in ".&@=+'^:#CZ-%" :
      makedict(c)
      
  for line in fileinput.input():
    rr = line[0]
    if (rr=="#") : continue
    attr = line[1:-1].split(":")
    print rr, attr
    if len(attr)>1:
     a[rr][attr[0]] = attr[1:]
    
  print '-------'

  for x in a.items():
    if len(x[1]):
      print '===', x[0], '==='
      for y in x[1:]:
          for z in sorted(y.keys()): print z, y[z]

MoinQ: djbdns/tinydns/record (last edited 2021-05-20 14:35:29 by ToshinoriMaeno)