{"id":37022154,"url":"https://github.com/minidns/minidns","last_synced_at":"2026-01-14T02:38:19.867Z","repository":{"id":15642363,"uuid":"18379456","full_name":"MiniDNS/minidns","owner":"MiniDNS","description":"DNS library for Android and Java SE","archived":false,"fork":false,"pushed_at":"2024-10-24T10:51:09.000Z","size":1818,"stargazers_count":226,"open_issues_count":46,"forks_count":61,"subscribers_count":17,"default_branch":"master","last_synced_at":"2024-11-21T03:32:16.348Z","etag":null,"topics":["android","dns-client","dns-library","dnssec","java"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MiniDNS.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2014-04-02T19:57:35.000Z","updated_at":"2024-11-19T01:01:16.000Z","dependencies_parsed_at":"2024-06-09T12:24:59.102Z","dependency_job_id":"41b5ac47-c092-4951-ab07-76faa65a1b39","html_url":"https://github.com/MiniDNS/minidns","commit_stats":null,"previous_names":["rtreffer/minidns"],"tags_count":31,"template":false,"template_full_name":null,"purl":"pkg:github/MiniDNS/minidns","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MiniDNS%2Fminidns","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MiniDNS%2Fminidns/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MiniDNS%2Fminidns/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MiniDNS%2Fminidns/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MiniDNS","download_url":"https://codeload.github.com/MiniDNS/minidns/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MiniDNS%2Fminidns/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28408711,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T01:52:23.358Z","status":"online","status_checked_at":"2026-01-14T02:00:06.678Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","dns-client","dns-library","dnssec","java"],"created_at":"2026-01-14T02:38:19.319Z","updated_at":"2026-01-14T02:38:19.839Z","avatar_url":"https://github.com/MiniDNS.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"MiniDNS - A DNSSEC enabled DNS library\n======================================\n\n[![Build Status](https://github.com/MiniDNS/minidns/workflows/CI/badge.svg)](https://github.com/MiniDNS/minidns/actions?query=workflow%3A%22CI%22)  [![Coverage Status](https://coveralls.io/repos/MiniDNS/minidns/badge.svg)](https://coveralls.io/r/MiniDNS/minidns)\n\nMiniDNS (\"**M**odular **I**nternet **N**ame **I**nformer for **DNS**\") is a DNS library for Android and Java SE. It can parse resource records (A, AAAA, NS, SRV, …) and is easy to use and extend. MiniDNS aims to be secure, modular, efficient and as simple as possible. It also provides support for **DNSSEC** and **DANE**, and is thus the ideal resolver if you want to bring DNSSEC close to your application.\n\nIt comes with a pluggable cache mechanism, a pre-configured cache and an easy to use high-level API (`minidns-hla`) for those who just want to perform a reliable lookup of a domain name.\n\n**Notice:** DNSSEC/DANE support has not yet undergo a security audit.\nIf you find the project useful and if you are able to provide the resources for a security audit, then please contact us.\n\nIf you are looking for a DNSSEC-enabled resolver in C (and/or Lua) then hava a look at the [Knot Resolver](https://www.knot-resolver.cz/). Also this library is not intended to be used as a DNS server. You might want to\nlook into [dnsjava](http://dnsjava.org/) for such functionality.\n\n**MiniDNS release resources** (javadoc, …) an be found at https://minidns.org/releases\n\nQuickstart\n----------\n\nThe easiest way to use MiniDNS is by its high-level API provided by the minidns-hla Maven artifact. Simply add the artifact to your projects dependencies. For example with gradle\n\n```groovy\ncompile \"org.minidns:minidns-hla:$minidnsVersion\"\n```\n\nThen you can use the `ResolverApi` or `DnssecResolverApi` class to perform DNS lookups and check if the result was authenticated via DNSSEC. The following example shows a lookup of A records of 'verteiltesysteme.net'.\n\n```java\nResolverResult\u003cA\u003e result = DnssecResolverApi.INSTANCE.resolve(\"verteiltesysteme.net\", A.class);\nif (!result.wasSuccessful()) {\n\tRESPONSE_CODE responseCode = result.getResponseCode();\n\t// Perform error handling.\n\t…\n\treturn;\n}\nif (!result.isAuthenticData()) {\n\t// Response was not secured with DNSSEC.\n\t…\n\treturn;\n}\nSet\u003cA\u003e answers = result.getAnswers();\nfor (A a : answers) {\n  InetAddress inetAddress = a.getInetAddress();\n  // Do someting with the InetAddress, e.g. connect to.\n  …\n}\n```\n\nMiniDNS also provides full support for SRV resource records and their handling.\n\n```java\nSrvResolverResult result = DnssecResolverApi.INSTANCE.resolveSrv(SrvType.xmpp_client, \"example.org\")\nif (!result.wasSuccessful()) {\n\tRESPONSE_CODE responseCode = result.getResponseCode();\n\t// Perform error handling.\n\t…\n\treturn;\n}\nif (!result.isAuthenticData()) {\n\t// Response was not secured with DNSSEC.\n\t…\n\treturn;\n}\nList\u003cResolvedSrvRecord\u003e srvRecords = result.getSortedSrvResolvedAddresses();\n// Loop over the domain names pointed by the SRV RR. MiniDNS will return the list\n// correctly sorted by the priority and weight of the related SRV RR.\nfor (ResolvedSrvRecord srvRecord : srvRecord) {\n\t// Loop over the Internet Address RRs resolved for the SRV RR. The order of\n\t// the list depends on the prefered IP version setting of MiniDNS.\n\tfor (InternetAddressRR inetAddressRR : srvRecord.addresses) {\n\t\tInetAddress inetAddress = inetAddressRR.getInetAddress();\n\t\tint port = srvAddresses.port;\n\t\t// Try to connect to inetAddress at port.\n\t\t…\n\t}\n}\n```\n\nREPL\n----\n\nMiniDNS comes with a REPL which can be used to perform DNS lookups and to test the library. Simple use `./repl` to start the REPL. The loaded REPL comes with some predefined variables that you can use to perform lookups. For example `c` is a simple DNS client. See `minidns-repl/scala.repl` for more.\n\n```text\nminidns $ ./repl\n...\nscala\u003e c query (\"measite.de\", TYPE.A)\nres0: dnsqueryresult.DnsQueryResult = DnsMessage@54653(QUERY NO_ERROR qr rd ra) { \\\n  [Q: measite.de.\tIN\tA] \\\n  [A: measite.de.\t3599\tIN\tA\t85.10.226.249] \\\n  [X: EDNS: version: 0, flags:; udp: 512]\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fminidns%2Fminidns","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fminidns%2Fminidns","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fminidns%2Fminidns/lists"}