001/* 002 * Copyright 2015-2024 the original author or authors 003 * 004 * This software is licensed under the Apache License, Version 2.0, 005 * the GNU Lesser General Public License version 2 or later ("LGPL") 006 * and the WTFPL. 007 * You may choose either license to govern your use of this software only 008 * upon the condition that you accept all of the terms of either 009 * the Apache License 2.0, the LGPL 2.1+ or the WTFPL. 010 */ 011package org.minidns.minidnsrepl; 012 013import java.io.FileOutputStream; 014import java.io.IOException; 015import java.lang.reflect.Field; 016 017import org.minidns.AbstractDnsClient; 018import org.minidns.DnsClient; 019import org.minidns.cache.LruCache; 020import org.minidns.dnsmessage.DnsMessage; 021import org.minidns.dnssec.DnssecClient; 022import org.minidns.hla.DnssecResolverApi; 023import org.minidns.hla.ResolverResult; 024import org.minidns.iterative.IterativeDnsClient; 025import org.minidns.jul.MiniDnsJul; 026import org.minidns.record.A; 027 028public class MiniDnsRepl { 029 030 public static final DnsClient DNSCLIENT = new DnsClient(); 031 public static final IterativeDnsClient ITERATIVEDNSCLIENT = new IterativeDnsClient(); 032 public static final DnssecClient DNSSECCLIENT = new DnssecClient(); 033 034 static { 035 LruCache cache = null; 036 try { 037 Field defaultCacheField = AbstractDnsClient.class.getDeclaredField("DEFAULT_CACHE"); 038 defaultCacheField.setAccessible(true); 039 cache = (LruCache) defaultCacheField.get(null); 040 } catch (IllegalAccessException | NoSuchFieldException | SecurityException e) { 041 throw new IllegalStateException(e); 042 } 043 DEFAULT_CACHE = cache; 044 } 045 046 public static final LruCache DEFAULT_CACHE; 047 048 public static void init() { 049 // CHECKSTYLE:OFF 050 System.out.println("MiniDNS REPL"); 051 // CHECKSTYLE:ON 052 } 053 054 public static void clearCache() throws SecurityException, IllegalArgumentException { 055 DEFAULT_CACHE.clear(); 056 } 057 058 public static void main(String[] args) throws IOException, SecurityException, IllegalArgumentException { 059 MiniDnsJul.enableMiniDnsTrace(); 060 061 ResolverResult<A> res = DnssecResolverApi.INSTANCE.resolveDnssecReliable("verteiltesysteme.net", A.class); 062 /* 063 DnssecStats.iterativeDnssecLookupNormalVsExtendedCache(); 064 DnssecClient client = new DNSSECClient(new LRUCache(1024)); 065 DnssecMessage secRes = client.queryDnssec("verteiltesysteme.net", TYPE.A); 066 */ 067 068 /* 069 DnssecStats.iterativeDnssecLookupNormalVsExtendedCache(); 070 Nsid nsid = NSIDTest.testNsidLRoot(); 071 DnsMessage res = RECURSIVEDNSCLIENT.query("mate.geekplace.eu", TYPE.A); 072 */ 073 // CHECKSTYLE:OFF 074 System.out.println(res); 075// System.out.println(nsid); 076// System.out.println(secRes); 077// System.out.println(res); 078 // CHCECKSTYLE:ON 079 } 080 081 public static void writeToFile(DnsMessage dnsMessage, String path) throws IOException { 082 try (FileOutputStream fos = new FileOutputStream(path)) { 083 dnsMessage.writeTo(fos, true); 084 } 085 } 086}