All Projects → tungd → Elixir Dns

tungd / Elixir Dns

Licence: bsd-3-clause
DNS library for Elixir

Programming Languages

elixir
2628 projects

Labels

Projects that are alternatives of or similar to Elixir Dns

Cloudflare Cli
CLI utility managing CloudFlare services using CloudFlare API
Stars: ✭ 61 (-29.07%)
Mutual labels:  dns
C Ares
A C library for asynchronous DNS requests
Stars: ✭ 1,193 (+1287.21%)
Mutual labels:  dns
Wirehole
WireHole is a combination of WireGuard, Pi-hole, and Unbound in a docker-compose project with the intent of enabling users to quickly and easily create a personally managed full or split-tunnel WireGuard VPN with ad blocking capabilities thanks to Pi-hole, and DNS caching, additional privacy options, and upstream providers via Unbound.
Stars: ✭ 1,232 (+1332.56%)
Mutual labels:  dns
Ioc2rpz
ioc2rpz is a place where threat intelligence meets DNS.
Stars: ✭ 67 (-22.09%)
Mutual labels:  dns
Domainfuzz
Domain name permutation engine for detecting typo squatting, phishing and corporate espionage
Stars: ✭ 74 (-13.95%)
Mutual labels:  dns
Noisy
Simple random DNS, HTTP/S internet traffic noise generator
Stars: ✭ 1,208 (+1304.65%)
Mutual labels:  dns
Blocklist
Privacy DNS
Stars: ✭ 61 (-29.07%)
Mutual labels:  dns
1hosts
DNS filter-/blocklists | safe. private. clean. browsing!
Stars: ✭ 85 (-1.16%)
Mutual labels:  dns
Dns Over Https
High performance DNS over HTTPS client & server
Stars: ✭ 1,189 (+1282.56%)
Mutual labels:  dns
Blockcheck
Russian ISP blocking type checker NOTE: NOT WORKING CURRENTLY. ВНИМАНИЕ: НЕ РАБОТАЕТ НА ТЕКУЩИЙ МОМЕНТ
Stars: ✭ 1,218 (+1316.28%)
Mutual labels:  dns
Intercert
Use Let's Encrypt on private (LAN) servers using DNS validation
Stars: ✭ 68 (-20.93%)
Mutual labels:  dns
Tor Router
A SOCKS, HTTP and DNS proxy for distributing traffic across multiple instances of Tor
Stars: ✭ 69 (-19.77%)
Mutual labels:  dns
Minecraft Nintendo Switch Private Server
Stars: ✭ 78 (-9.3%)
Mutual labels:  dns
Simpledns
A very simple and small DNS Server to help understanding the protocol basics.
Stars: ✭ 62 (-27.91%)
Mutual labels:  dns
Is Google
Verify that a request is from Google crawlers using Google's DNS verification steps
Stars: ✭ 82 (-4.65%)
Mutual labels:  dns
Ads
CoreDNS plugin to block ads. Inspried by PiHole.
Stars: ✭ 61 (-29.07%)
Mutual labels:  dns
Downloads
AD Health Check, Send HTML Email, Ping machines, Encrypt Password,Bulk Password,Microsoft Teams,Monitor Certificate expiry, Monitor cert expiry, AD attributes, IP to Hostname, Export AD group, CSV to SQL,Shutdown, Restart, Local Admin, Disk Space, Account expiry,Restore Permissions, Backup permissions, Delete Files Older Than X-Days, export DHCP options,Read Registry,Distribution group AD attributes,Monitor Windows Services,Export Reverse DNS,Task Monitor,Monitor and alert, Exchange Health check,Get Network Info, Export AD Attributes,AD group members, Office 365 Group member, SQL to CSV, Outlook save send attachments, Upload files to FTP,Exchange – Total Messages Sent Received, Set Teams Only Mode, Intune Duplicate Device,Intune Cleanup Not Evaluated, Ownership and Grant Permissions, Write Create Modify Registry , Organization Hierarchy from AD,Azure AD Privileged Identity Management,Intune – Export MAM Devices,Intune Marking devices as Corporate, Dynamic to Static Distribution Group,Monitor Alert Office 365 services,Group Member Count,Bulk Addition external users sharepoint, ADD to Exchange online License Group,All in One Office 365 Powershell,Bulk Addition of Secondary Email, Automate move mailboxes to o365, Addition Modification Termination Exchange users, Monitoring Unified Messaging port,Unified Messaging Extensions Report, Set Default Quota for SharePoint,Bulk Contact Creation and Forwarding, Uploading and Downloading files sftp, Monitoring Sftp file and download, Office 365 groups Write back, CSV parser, Email address update, Email address modify, MDM enrollment, Welcome Email, Intune Welcome Email, remove messages, remove email, SKOB to AD, SKOB to group, PowerApps report, Powerautomate Report, Flow report, Server QA, Server Check List, O365 IP range, IP range Monitor, o365 Admin Roles, memberof extraction, CSV to Excel, Skype Policy, UPN Flip, Rooms Report, License Reconciliation,Intune Bulk Device Removal, Device Removal, Clear Activesync, Lync Account Termination,Lync Account Removal, Enable office 365 services, Enable o365 Services, Export PST, Site collection Report, Office 365 Group Sites, System Admin,ActiveSync Report,White Space,Active Directory attributes, outlook automation, Intune Detect App, Distribution list Fix, Legacy DN, start service, stop service, disable service, Message tracking, Distribution lists report,Distribution groups report,Quota Report, Auto reply, out of office, robocopy multi session, Home Folder, local admin, Database, UPN SIP Mismatch, Recoverable deleted, teams number, Number assignment, teams phone, AD Group Hierarchy, Hierarchy membership, Sync Groups
Stars: ✭ 75 (-12.79%)
Mutual labels:  dns
Ten34
A globally-distributed, eventually-consistent, 100% available key-value store ;)
Stars: ✭ 87 (+1.16%)
Mutual labels:  dns
Dns
Async DNS resolution for PHP based on Amp.
Stars: ✭ 82 (-4.65%)
Mutual labels:  dns
Drool
DNS Replay Tool
Stars: ✭ 78 (-9.3%)
Mutual labels:  dns

DNS

Hex.pm Hex.pm Build Status

DNS library for Elixir. Currently, the package provides:

  • Elixir structs to interface with inet_dns module.
  • DNS.Server behavior
  • DNS client

Note: the inet_dns module is considered internal to Erlang and subject to change. If this happened this library will be updated to accommodate for that, but for now inet_dns is simple and worked for me.

Installation

The package is available in Hex and can be installed as:

  1. Make sure you have the Erlang/OTP source files installed, otherwise the compilation will fail with an {:error, :enoent} message. On Ubuntu, this can be done using apt-get install erlang-src.

  2. Add dns to your list of dependencies in mix.exs:

    def deps do
      [{:dns, "~> 2.2.0"}]
    end
    

Usage

DNS client

iex> DNS.resolve("google.com")
{:ok, [{216, 58, 221, 110}]}

iex> DNS.resolve("notfound.domain")
{:error, :not_found}

iex> DNS.query("google.com")
%DNS.Record{anlist: [%DNS.Resource{bm: [], class: :in, cnt: 0,
   data: {216, 58, 221, 110}, domain: 'google.com', func: false, tm: :undefined,
   ttl: 129, type: :a}], arlist: [],
 header: %DNS.Header{aa: false, id: 0, opcode: :query, pr: false, qr: true,
  ra: true, rcode: 0, rd: false, tc: false}, nslist: [],
 qdlist: [%DNS.Query{class: :in, domain: 'google.com', type: :a}]}

iex> DNS.resolve("google.com", :a, {"8.8.8.8", 53})
...

DNS server

defmodule ServerExample do
  @moduledoc """
  Example implementing DNS.Server behaviour
  """
  @behaviour DNS.Server
  use DNS.Server

  def handle(record, _cl) do
    Logger.info(fn -> "#{inspect(record)}" end)
    query = hd(record.qdlist)

    result =
      case query.type do
        :a -> {127, 0, 0, 1}
        :cname -> 'your.domain.com'
        :txt -> ['your txt value']
        _ -> nil
      end

    resource = %DNS.Resource{
      domain: query.domain,
      class: query.class,
      type: query.type,
      ttl: 0,
      data: result
    }

    %{record | anlist: [resource], header: %{record.header | qr: true}}
  end
end

To run the example server in iex:

iex(1)> c "example/test_server.ex"
[ServerExample]
iex(2)> {:ok, server_pid} = ServerExample.start_link 8000
Server listening at 8000
{:ok, #PID<0.180.0>}
iex(3)> Process.exit(server_pid, :normal)

For more information, see API Reference

License

BSD-3-Clauses

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].