{"id":13484285,"url":"https://github.com/alexdalitz/dnsruby","last_synced_at":"2026-02-18T09:42:16.411Z","repository":{"id":21104621,"uuid":"24405039","full_name":"alexdalitz/dnsruby","owner":"alexdalitz","description":"Dnsruby is a feature-complete DNS(SEC) client for Ruby, as used by many of the world's largest DNS registries and the OpenDNSSEC project","archived":false,"fork":false,"pushed_at":"2026-01-12T14:36:26.000Z","size":1835,"stargazers_count":206,"open_issues_count":5,"forks_count":81,"subscribers_count":12,"default_branch":"master","last_synced_at":"2026-02-14T23:15:20.856Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","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/alexdalitz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"alexdalitz"}},"created_at":"2014-09-24T07:27:33.000Z","updated_at":"2026-02-01T00:28:02.000Z","dependencies_parsed_at":"2024-01-31T05:09:37.735Z","dependency_job_id":"56776229-ce54-4c2a-8388-087300ddf929","html_url":"https://github.com/alexdalitz/dnsruby","commit_stats":{"total_commits":877,"total_committers":30,"mean_commits":"29.233333333333334","dds":"0.48346636259977194","last_synced_commit":"a286841b5671f9a76b2c7014d94b4cc297533e70"},"previous_names":[],"tags_count":23,"template":false,"template_full_name":null,"purl":"pkg:github/alexdalitz/dnsruby","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexdalitz%2Fdnsruby","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexdalitz%2Fdnsruby/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexdalitz%2Fdnsruby/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexdalitz%2Fdnsruby/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alexdalitz","download_url":"https://codeload.github.com/alexdalitz/dnsruby/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexdalitz%2Fdnsruby/sbom","scorecard":{"id":181094,"data":{"date":"2025-08-11","repo":{"name":"github.com/alexdalitz/dnsruby","commit":"baffc1545145520fa23762212ac421933bedab3f"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.2,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":4,"reason":"Found 9/20 approved changesets -- score normalized to 4","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/ci.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/alexdalitz/dnsruby/ci.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/alexdalitz/dnsruby/ci.yml/master?enable=pin","Info:   0 out of   1 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 19 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-16T18:53:24.827Z","repository_id":21104621,"created_at":"2025-08-16T18:53:24.827Z","updated_at":"2025-08-16T18:53:24.827Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29465560,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-15T01:01:38.065Z","status":"online","status_checked_at":"2026-02-15T02:00:07.449Z","response_time":118,"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":[],"created_at":"2024-07-31T17:01:21.895Z","updated_at":"2026-02-18T09:42:16.371Z","avatar_url":"https://github.com/alexdalitz.png","language":"Ruby","readme":"[![Build Status](https://github.com/alexdalitz/dnsruby/actions/workflows/ci.yml/badge.svg)]\n[![Coverage Status](https://img.shields.io/coveralls/alexdalitz/dnsruby.svg)](https://coveralls.io/r/alexdalitz/dnsruby?branch=master)\n\n\u003cimg src=\"http://caerkettontech.com/dnsruby/DNSRuby-colour-mid.png\" width=\"200\" height=\"200\" /\u003e\n\nDnsruby\n=======\n\nDnsruby is a pure Ruby DNS client library which implements a\nstub resolver. It aims to comply with all DNS RFCs.\n\nDnsruby presents an enhanced API for DNS. It is based on Ruby's core\nresolv.rb Resolv API, but has been much extended to provide a\ncomplete DNS implementation.\n\nDnsruby runs a single I/O thread to handle all concurrent\nqueries. It is therefore suitable for high volume DNS applications.\n\nThe following is a (non-exhaustive) list of features :\n\n- Implemented RRs :  A, AAAA, AFSDB, ANY, CAA, CERT, CNAME, DNAME,\n     GPOS, HINFO, ISDN, LOC, MB, MG, MINFO, MR, MX, NAPTR, NS, NSAP,\n     NXT, OPT, PTR, PX, RP, RT, SOA, SPF, SRV, TKEY, TSIG, TXT,\n     WKS, X25, DNSKEY, RRSIG, NSEC, NSEC3, NSEC3PARAM, DS, DLV\n\n- Generic RR types supported (RFC3597)\n\n- (Signed) Zone transfer (AXFR and IXFR) supported\n\n- (Signed) Dynamic updates supported\n\n- DNSSEC validation supported\n\nDependencies\n------------\n\nDnsruby can run with no dependencies. However, if you wish to\nuse TSIG or DNSSEC then the OpenSSL library must be available.\nThis is a part of the Ruby standard library, but appears not to\nbe present on all Ruby platforms. If it is not available, then\nthe test code will not run the tests which require it. Code which\nattempts to use the library (if it is not present) will raise an\nexception.\n\nDemo Code\n---------\n\nThe demo folder contains some example programs using Dnsruby.\nThese examples include a basic dig tool (rubydig) and a tool to\nconcurrently resolve many names, amongst others.\n\nUnit Tests\n----------\n\nTests require a current version of minitest (see the .gemspec file\nfor which version is required).  In order for the tests to run\nsuccessfully you may need to have the bundler gem installed and\nrun `bundle` or `bundle install` from the project root to install\na suitable version of minitest.\n\nThere are \"online\" and \"offline\" tests.  You can use rake to\nconveniently run the tests.  From the project root you can run:\n```\nrake test          # run all tests\nrake test_offline  # run only offline tests\nrake test_online   # run only online tests\n```\nIf you get the following error when running rake test tasks,\nthen you may need to preface the command with bundle exec to\nensure that the gem versions specified in Gemfile.lock are used\nat runtime:\n\n```\nbundle exec rake test\n```\n\nUsage Help\n----------\n\nThere are a couple of blog articles that might be helpful\nin understanding how to use Dnsruby. These used to be hosted by\nNominet UK, however the original content has been copied to the\ndnsruby github wiki at :\n\nhttps://github.com/alexdalitz/dnsruby/wiki\n\nContact/Links\n-------\n\n| Link Type | Link/Text |\n|-----|-----\n| Author Email | alex@caerkettontech.com |\n| Github | https://github.com/alexdalitz/dnsruby |\n| Google Group | https://groups.google.com/forum/#!forum/dnsruby |\n| Rubygems | http://rubygems.org/gems/dnsruby/ |\n| Documentation | https://www.rubydoc.info/gems/dnsruby/ |\n","funding_links":["https://github.com/sponsors/alexdalitz"],"categories":["Networking","Ruby","Security"],"sub_categories":["DNS-SEC"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexdalitz%2Fdnsruby","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falexdalitz%2Fdnsruby","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexdalitz%2Fdnsruby/lists"}