[![CoreDNS](https://coredns.io/images/CoreDNS_Colour_Horizontal.png)](https://coredns.io) [![Documentation](https://img.shields.io/badge/godoc-reference-blue.svg)](https://godoc.org/github.com/coredns/coredns) [![Build Status](https://img.shields.io/travis/coredns/coredns/master.svg?label=build)](https://travis-ci.org/coredns/coredns) [![Code Coverage](https://img.shields.io/codecov/c/github/coredns/coredns/master.svg)](https://codecov.io/github/coredns/coredns?branch=master) [![Go Report Card](https://goreportcard.com/badge/github.com/coredns/coredns)](https://goreportcard.com/report/coredns/coredns) [![FOSSA Status](https://app.fossa.io/api/projects/git%2Bhttps%3A%2F%2Fgithub.com%2Fcoredns%2Fcoredns.svg?type=shield)](https://app.fossa.io/projects/git%2Bhttps%3A%2F%2Fgithub.com%2Fcoredns%2Fcoredns?ref=badge_shield) [![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/1250/badge)](https://bestpractices.coreinfrastructure.org/projects/1250) CoreDNS (written in Go) chains [plugins](https://coredns.io/plugins). Each plugin performs a DNS function. CoreDNS is a [Cloud Native Computing Foundation](https://cncf.io) inception level project. CoreDNS is the successor to [SkyDNS](https://github.com/skynetservices/skydns). SkyDNS is a thin layer that exposes services in etcd in the DNS. CoreDNS builds on this idea and is a **generic** DNS server that can talk to multiple backends (etcd, kubernetes, etc.). CoreDNS aims to be a fast and flexible DNS server. The keyword here is *flexible*: with CoreDNS you are able to do what you want with your DNS data. And if not: write a plugin! CoreDNS can listen for DNS request coming in over UDP/TCP (go'old DNS), TLS ([RFC 7858](https://tools.ietf.org/html/rfc7858)) and [gRPC](https://grpc.io) (not a standard). Currently CoreDNS is able to: * Serve zone data from a file; both DNSSEC (NSEC only) and DNS are supported (*file*). * Retrieve zone data from primaries, i.e., act as a secondary server (AXFR only) (*secondary*). * Sign zone data on-the-fly (*dnssec*). * Load balancing of responses (*loadbalance*). * Allow for zone transfers, i.e., act as a primary server (*file*). * Automatically load zone files from disk (*auto*). * Caching (*cache*). * Health checking endpoint (*health*). * Use etcd as a backend, i.e., a 101.5% replacement for [SkyDNS](https://github.com/skynetservices/skydns) (*etcd*). * Use k8s (kubernetes) as a backend (*kubernetes*). * Serve as a proxy to forward queries to some other (recursive) nameserver (*proxy*). * Provide metrics (by using Prometheus) (*metrics*). * Provide query (*log*) and error (*error*) logging. * Support the CH class: `version.bind` and friends (*chaos*). * Profiling support (*pprof*). * Rewrite queries (qtype, qclass and qname) (*rewrite*). * Echo back the IP address, transport and port number used (*whoami*). This is also the default plugin that gets loaded when CoreDNS can't find a Corefile to load. Each of the plugins has a README.md of its own, see [coredns.io/plugins](https://coredns.io/plugins) for all in-tree plugins, and [coredns.io/explugins](https://coredns.io/explugins) for all out-of-tree plugins. ## Status CoreDNS can be used as an authoritative nameserver for your domains. CoreDNS should be able to provide you with enough functionality to replace parts of BIND 9, Knot, NSD or PowerDNS and SkyDNS. ## Compilation Check out the project and do dependency resolution with: go get github.com/coredns/coredns Some of the dependencies require Go version 1.8 or later. (If you already have the source of CoreDNS checked out in the appropriate place in your `GOPATH`, you can get all dependencies with `go get ./...`.) Then use `go build` as you would normally do: go build This should yield a `coredns` binary. ## Compilation with Docker CoreDNS requires Go to compile. However, if you already have docker installed and prefer not to setup a Go environment, you could build coredns easily: ``` $ docker run --rm -i -t -v $PWD:/go/src/github.com/coredns/coredns \ -w /go/src/github.com/coredns/coredns golang:1.9 make ``` The above command alone will have `coredns` binary generated. ## Examples When starting CoreDNS without any configuration, it loads the [*whoami*](https://coredns.io/plugins/whoami) plugin and starts listening on port 53 (override with `-dns.port`), it should show the following: ~~~ txt .:53 2016/09/18 09:20:50 [INFO] CoreDNS-001 CoreDNS-001 ~~~ Any query send to port 53 should return some information; your sending address, port and protocol used. If you have a Corefile without a port number specified it will, by default, use port 53, but you can override the port with the `-dns.port` flag: `./coredns -dns.port 1053`, runs the server on port 1053. Start a simple proxy, you'll need to be root to start listening on port 53. `Corefile` contains: ~~~ corefile .:53 { proxy . 8.8.8.8:53 log } ~~~ Just start CoreDNS: `./coredns`. Then just query on that port (53). The query should be forwarded to 8.8.8.8 and the response will be returned. Each query should also show up in the log which is printed on standard output. Serve the (NSEC) DNSSEC-signed `example.org` on port 1053, with errors and logging sent to standard output. Allow zone transfers to everybody, but specifically mention 1 IP address so that CoreDNS can send notifies to it. ~~~ txt example.org:1053 { file /var/lib/coredns/example.org.signed { transfer to * transfer to 2001:500:8f::53 } errors log } ~~~ Serve `example.org` on port 1053, but forward everything that does *not* match `example.org` to a recursive nameserver *and* rewrite ANY queries to HINFO. ~~~ txt .:1053 { rewrite ANY HINFO proxy . 8.8.8.8:53 file /var/lib/coredns/example.org.signed example.org { transfer to * transfer to 2001:500:8f::53 } errors log } ~~~ IP addresses are also allowed. They are automatically converted to reverse zones: ~~~ corefile 10.0.0.0/24 { whoami } ~~~ Means you are authoritative for `0.0.10.in-addr.arpa.`. This also works for IPv6 addresses. If for some reason you want to serve a zone named `10.0.0.0/24` add the closing dot: `10.0.0.0/24.` as this also stops the conversion. This even works for CIDR (See RFC 1518 and 1519) addressing, i.e `10.0.0.0/25`, CoreDNS will then check if the `in-addr` request falls in the correct range. Listening on TLS and for gRPC? Use: ~~~ corefile tls://example.org grpc://example.org { whoami } ~~~ Specifying ports works in the same way: ~~~ txt grpc://example.org:1443 { # ... } ~~~ When no transport protocol is specified the default `dns://` is assumed. ## Community - Website: - Blog: - Twitter: [@corednsio](https://twitter.com/corednsio) - Github: - Mailing list/group: - Slack: #coredns on ## Deployment Examples for deployment via systemd and other use cases can be found in the [deployment repository](https://github.com/coredns/deployment). '>jarred/faster-ordered-properties Unnamed repository; edit this file 'description' to name the repository.
aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2023-08-23Update globals.d.ts (#4276)Gravatar VietnamecDevelopment 1-1/+1
2023-08-23Fix ffi type (#4265)Gravatar Code Hz 2-49/+272
* add readonly so it works with as const * split ffi type infer to args and returns * add JSCallback to FFITypeToArgsType * add read functions * simplify FFITypeOrString * fix cstring type * fix pointer type test * fix readonly * add unknown handling * trigger action * use Parameters * add read type test * add other read function to tests
2023-08-23Bunch of streams fixes (#4251)Gravatar Jarred Sumner 31-548/+866
* Update WebKit * Don't do async hooks things when async hooks are not enabled * Smarter scheduling of event loop tasks with the http server * less exciting approach * Bump WebKit * Another approach * Fix body-stream tests * Fixes #1886 * Fix UAF in fetch body streaming * Missing from commit * Fix leak * Fix the other leak * Fix test * Fix crash * missing duperef * Make this code clearer * Ignore empty chunks * Fixes #3969 * Delete flaky test * Update bun-linux-build.yml * Fix memory issue * fix result body, and .done status before the last callback, dont touch headers after sent once * refactor HTTPClientResult * less flasky corrupted test * oops * fix mutex invalid state * fix onProgressUpdate deinit/unlock * fix onProgressUpdate deinit/unlock * oops * remove verbose * fix posible null use * avoid http null * metadata can still be used onReject after toResponse * dont leak task.http * fix flask tests * less flask close tests --------- Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> Co-authored-by: cirospaciari <ciro.spaciari@gmail.com>
2023-08-23docs: remove broken DNS link which is also not present in the official docs ↵Gravatar Quentin 1-1/+0
(#4268)
2023-08-23Fix more types. (#4273)Gravatar xxxhussein 8-16/+22
2023-08-23ask for bun --revision instead bun -v (#4256)Gravatar Jozef Steinhübl 1-1/+1
2023-08-22fix yield (#4264)Gravatar dave caruso 2-1/+17
2023-08-22Fix Bun.inspect typesGravatar Colin McDonnell 1-1/+1
2023-08-21fix fsevents and stub for qwikcity (#4247)Gravatar dave caruso 9-64/+24
* fix test * ok * cm * EE * remove the hack we didnt need
2023-08-21fix stdin stream unref and resuming (#4250)Gravatar Dylan Conway 4-19/+26
* fix stream unref and resuming stream * fix `child-process-stdio` test
2023-08-21Docs and types for v0.8.0 (#4199)Gravatar Colin McDonnell 10-37/+487
* Improve test documentation * Update nodejs compat docs with tty * Add debugger guide * Document Bun.inspect.custom, improve bun test nav * Address reviews * Update Bun.file types * Add Nuxt guide * Add tty types
2023-08-21Bun v0.8Gravatar Jarred Sumner 5-5/+5
2023-08-21Make the code generator less duplicativeGravatar Jarred Sumner 2-84/+39
2023-08-21import errors have `code` set to `ERR_MODULE_NOT_FOUND` and `require` errors ↵Gravatar Jarred Sumner 11-19/+122
have `code` set to `MODULE_NOT_FOUND` (#4244) * ResolveMessage * Fix it --------- Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
2023-08-21fetch(stream) add stream support for compressed and uncompressed data (#4127)Gravatar Ciro Spaciari 19-156/+1876
* streams non compressed data in 64kb chunks (at least) * fmt * wip remove pause * fix default streaming and buffering * fix atomic lags * fix size * make chunked encoding work again (WIP streaming chunked) * WIP: chunked encoding streaming * fix end of streamings * working streaming + compression * add fixes + tests * fmt + fix proxy * fix oopsies * codegen after merge * fmt + fixes * more fixes * more fixes and logs * avoid double free * check empty before pop * check empty on pop * fix copy to real when complete * remove unnecessary logs * better has_schedule_callback swap, body locked size helper, remove isEmpty from unbounded_queue pop * fix response ref, fix body_size * add deflate support, fix error throw, add more tests * codegen after merge * remove logs, add connection close test * fix macOS build * fix redirect error option * make body_size more clear * support new Reponse(response) * toString DOMWrapper objects properly instead of supporting response in Response constructor * ignore headers with no name, add more tests * oops * handle transform with fetch * add gz image stream test * remove duplicate test * fix missing chunk on macOS under pressure * oops include all OS * some fixes * compare buffers instead of sizes * refactor err.err and protect it
2023-08-21Fix inquirer (#4245)Gravatar dave caruso 2-3/+6
2023-08-21Update module_loader.zigGravatar Jarred Sumner 1-1/+1
2023-08-21Fix(bundler): allow generating exe file in nested path. (#4226)Gravatar Ai Hoshino 3-7/+49
* Fix(bundler): allow generating binary file in nested path. Close: #4195 * Add read flag for fd. * refactor
2023-08-21Fix typoGravatar Colin McDonnell 1-1/+1
2023-08-21Fix crypto.EC constructor (#4242)Gravatar dave caruso 2-3/+4
* Fix EC constructor * make js
2023-08-21Implement `napi_ref_threadsafe_function` (#4156)Gravatar dave caruso 10-7/+65
* Implement napi_ref_threadsafe_function * work on this * i hate event loops * little better * clean
2023-08-21feat: Implement Bun.inspect.custom (#4243)Gravatar dave caruso 6-8/+26
* add Bun.inspect.custom * test * Add Types
2023-08-21Fixes #4089 (#4105)Gravatar Jarred Sumner 3-36/+136
* Fixes #4089 * Update bindings.cpp * address PR feedback --------- Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
2023-08-2140x faster .toString('hex') (#4237)Gravatar Jarred Sumner 3-17/+105
Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
2023-08-21Fix memory leak in `buffer.toString("hex")` (#4235)Gravatar Jarred Sumner 2-1/+6
Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
2023-08-21Update README.md (#4232)Gravatar xxxhussein 1-1/+1
Fix typo in README.md
2023-08-21Add missing header changeGravatar Jarred Sumner 1-1/+1
2023-08-21Add LazyPropertyGravatar Jarred Sumner 1-0/+3
2023-08-21Fix BigIntStats generated classGravatar Jarred Sumner 1-1/+1
cc @paperdave, code generator script misses a constructor decl when this isn't true
2023-08-21RegenerateGravatar Jarred Sumner 1-8/+15
2023-08-21Implement FileGravatar Jarred Sumner 12-12/+387
2023-08-20Fixes #1675 (#4230)Gravatar Jarred Sumner 8-70/+297
* Fixes https://github.com/oven-sh/bun/issues/1675 * Add fallback for Bun.write * Update blob.zig * Fix test --------- Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
2023-08-20Implement `--inspect-brk` (#4222)Gravatar Jarred Sumner 17-41/+101
* Implement `--inspect-brk` * Bump WebKit --------- Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
2023-08-20Fix test failures from 3a9a6c63a (#4231)Gravatar Jarred Sumner 4-32/+34
cc @Hanaasagi Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
2023-08-20Fix(bundler): use different alias mappings based on the target. (#4163)Gravatar Ai Hoshino 8-18/+90
* Fix(bundler): use different alias mappings based on the target. Close: #3844 * chore: reduce duplicated code. * chore: split to two separate ComptimeStringMap.
2023-08-19Update BunDebugger.cppGravatar Jarred Sumner 1-1/+3
2023-08-19Introduce `bun --inspect-wait`Gravatar Jarred Sumner 3-19/+47
This waits for the inspector to connect before beginning execution
2023-08-19misc non-posix fixesGravatar Jarred Sumner 2-3/+3
2023-08-19Update lockfile.mdGravatar Jarred Sumner 1-1/+8
2023-08-19Update lockfile.mdGravatar Jarred Sumner 1-4/+4
2023-08-19Update lockfile.mdGravatar Jarred Sumner 1-1/+29
2023-08-19Update Dockerfile-distroless (#4210)Gravatar Omar 1-0/+1
2023-08-19Fix symbol visibilityGravatar Jarred Sumner 1-0/+1
2023-08-19[napi] Implement `node_api_create_syntax_error`, `node_api_symbol_for`, ↵Gravatar Jarred Sumner 5-1/+70
`node_api_throw_syntax_error` These were marked as experimental
2023-08-19Fix crash impacting sharp & resvg (#4221)Gravatar Jarred Sumner 5-73/+73
Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
2023-08-19Fixes #172 (#4220)Gravatar Jarred Sumner 7-9/+87
Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
2023-08-19Add inline sourcemaps when `--inspect` is enabled (#4213)Gravatar Jarred Sumner 3-3/+64
* Add inline sourcemaps when --inspect is enabled * Add some assertions * Update javascript.zig --------- Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
2023-08-19tty `ReadStream`, `WriteStream`, and readline rawmode (#4179)Gravatar Dylan Conway 23-722/+821
* tty `WriteStream`, `ReadStream`, and rawmode * tests * refactor prototypes * fix failing test * fix test and library usage * more merge * fix child_process test * create pseudo terminal for tty tests * match node logic * handle invalid tty * close descriptors * move tests to another process * fix test again * fix test on linux
2023-08-18Fix make headers (again)Gravatar Jarred Sumner 1-0/+2