001/*
002 * Copyright 2015-2018 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.IOException;
014import java.lang.reflect.Field;
015
016import org.minidns.AbstractDnsClient;
017import org.minidns.DnsClient;
018import org.minidns.cache.LruCache;
019import org.minidns.dnssec.DnssecClient;
020import org.minidns.hla.DnssecResolverApi;
021import org.minidns.hla.ResolverResult;
022import org.minidns.iterative.IterativeDnsClient;
023import org.minidns.jul.MiniDnsJul;
024import org.minidns.record.A;
025
026public class MiniDnsRepl {
027
028    public static final DnsClient DNSCLIENT = new DnsClient();
029    public static final IterativeDnsClient ITERATIVEDNSCLIENT = new IterativeDnsClient();
030    public static final DnssecClient DNSSECCLIENT = new DnssecClient();
031
032    static {
033        LruCache cache = null;
034        try {
035            Field defaultCacheField = AbstractDnsClient.class.getDeclaredField("DEFAULT_CACHE");
036            defaultCacheField.setAccessible(true);
037            cache = (LruCache) defaultCacheField.get(null);
038        } catch (IllegalAccessException | NoSuchFieldException | SecurityException e) {
039            throw new IllegalStateException(e);
040        }
041        DEFAULT_CACHE = cache;
042    }
043
044    public static final LruCache DEFAULT_CACHE;
045
046    public static void init() {
047        // CHECKSTYLE:OFF
048        System.out.println("MiniDNS REPL");
049        // CHECKSTYLE:ON
050    }
051
052    public static void clearCache() throws SecurityException, IllegalArgumentException {
053        DEFAULT_CACHE.clear();
054    }
055
056    public static void main(String[] args) throws IOException, SecurityException, IllegalArgumentException {
057        MiniDnsJul.enableMiniDnsTrace();
058
059        ResolverResult<A> res = DnssecResolverApi.INSTANCE.resolveDnssecReliable("verteiltesysteme.net", A.class);
060        /*
061        DnssecStats.iterativeDnssecLookupNormalVsExtendedCache();
062        DnssecClient client = new DNSSECClient(new LRUCache(1024));
063        DnssecMessage secRes = client.queryDnssec("verteiltesysteme.net", TYPE.A);
064        */
065
066        /*
067        DnssecStats.iterativeDnssecLookupNormalVsExtendedCache();
068        Nsid nsid = NSIDTest.testNsidLRoot();
069        DnsMessage res = RECURSIVEDNSCLIENT.query("mate.geekplace.eu", TYPE.A);
070        */
071        // CHECKSTYLE:OFF
072        System.out.println(res);
073//        System.out.println(nsid);
074//      System.out.println(secRes);
075//        System.out.println(res);
076        // CHCECKSTYLE:ON
077    }
078
079}