From 06abfbe67dc24560330bf5489a88ea7dc327cbe8 Mon Sep 17 00:00:00 2001 From: Kyle Harding Date: Thu, 17 Oct 2024 11:05:50 -0400 Subject: [PATCH] Improve formatting and linting via prettier Signed-off-by: Kyle Harding --- .prettierrc.json | 16 +++++++ CONTRIBUTING.md | 116 ++++++++++++++++++++++++++--------------------- README.md | 30 ++++++++---- 3 files changed, 102 insertions(+), 60 deletions(-) create mode 100644 .prettierrc.json diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 0000000..a378146 --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1,16 @@ +{ + "printWidth": 80, + "tabWidth": 2, + "useTabs": false, + "semi": false, + "singleQuote": true, + "quoteProps": "as-needed", + "jsxSingleQuote": false, + "trailingComma": "none", + "bracketSpacing": true, + "bracketSameLine": true, + "arrowParens": "avoid", + "proseWrap": "always", + "htmlWhitespaceSensitivity": "css", + "endOfLine": "lf" +} diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 263c8f6..ef23d04 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,6 +1,7 @@ # Contributing -We love your input! We want to make contributing to this project as easy and transparent as possible, whether it's: +We love your input! We want to make contributing to this project as easy and +transparent as possible, whether it's: - Reporting a bug - Discussing the current state of the code @@ -10,11 +11,13 @@ We love your input! We want to make contributing to this project as easy and tra ## We develop with Github -We use Github to host code, to track issues and feature requests, as well as accept pull requests. +We use Github to host code, to track issues and feature requests, as well as +accept pull requests. ## We use [Github Flow](https://guides.github.com/introduction/flow/index.html), so all code changes happen through pull requests -Pull requests are the best way to propose changes to the codebase. We actively welcome your pull requests: +Pull requests are the best way to propose changes to the codebase. We actively +welcome your pull requests: 1. Fork the repo and create your branch from `main`. 2. If you've added code that should be tested, add tests. @@ -25,11 +28,15 @@ Pull requests are the best way to propose changes to the codebase. We actively w ## Any contributions you make will be under the [Software License](LICENSE.md) -In short, when you submit code changes, your submissions are understood to be under the same [Software License](LICENSE.md) that covers the project. Feel free to contact the maintainers if that's a concern. +In short, when you submit code changes, your submissions are understood to be +under the same [Software License](LICENSE.md) that covers the project. Feel free +to contact the maintainers if that's a concern. ## Report bugs using Github's [issues](https://github.com/klutchell/unbound-docker/issues) -We use GitHub issues to track public bugs. Report a bug by [opening a new issue](https://github.com/klutchell/unbound-docker/issues/new); it's that easy! +We use GitHub issues to track public bugs. Report a bug by +[opening a new issue](https://github.com/klutchell/unbound-docker/issues/new); +it's that easy! **Great Bug Reports** tend to have: @@ -39,98 +46,105 @@ We use GitHub issues to track public bugs. Report a bug by [opening a new issue] - Give sample code if you can. - What you expected would happen - What actually happens -- Notes (possibly including why you think this might be happening, or stuff you tried that didn't work) +- Notes (possibly including why you think this might be happening, or stuff you + tried that didn't work) People _love_ thorough bug reports. I'm not even kidding. ## Use a consistent coding style -- Use [hadolint](https://github.com/hadolint/hadolint) for linting and validating Dockerfile changes -- Use [prettier](https://prettier.io) for linting and validating Markdown changes +- Use [hadolint](https://github.com/hadolint/hadolint) for linting and + validating Dockerfile changes +- Use [prettier](https://prettier.io) for linting and validating Markdown + changes ## Building 1. Enable docker buildkit and experimental mode -```bash -export DOCKER_BUILDKIT=1 -export DOCKER_CLI_EXPERIMENTAL=enabled -``` + ```bash + export DOCKER_BUILDKIT=1 + export DOCKER_CLI_EXPERIMENTAL=enabled + ``` 2. Build image for host architecture -```bash -docker build . --tag klutchell/unbound:dev -``` + ```bash + docker build . --tag klutchell/unbound:dev + ``` 3. Optionally cross-build for another architecture -```bash -docker run --rm --privileged multiarch/qemu-user-static --reset -p yes -docker build . --tag klutchell/unbound:dev --platform linux/arm/v6 -``` + ```bash + docker run --rm --privileged multiarch/qemu-user-static --reset -p yes + docker build . --tag klutchell/unbound:dev --platform linux/arm/v6 + ``` -> [!NOTE] -> Outgoing port 53 must not be blocked on the network where the build is running -> in order to generate initial root keys with unbound-anchor! +> [!NOTE] Outgoing port 53 must not be blocked on the network where the build is +> running in order to generate initial root keys with unbound-anchor! ## Testing 1. Run a detached unbound container -```bash -docker run --rm -d --name unbound klutchell/unbound:dev -``` + ```bash + docker run --rm -d --name unbound klutchell/unbound:dev + ``` 2. Run drill with DNSSEC to test NOERROR -```bash -docker exec unbound drill @127.0.0.1 dnssec.works -``` + ```bash + docker exec unbound drill @127.0.0.1 dnssec.works + ``` 3. Run drill with dnssec to test SERVFAIL -```bash -docker exec unbound drill @127.0.0.1 fail01.dnssec.works -docker exec unbound drill @127.0.0.1 fail02.dnssec.works -docker exec unbound drill @127.0.0.1 fail03.dnssec.works -docker exec unbound drill @127.0.0.1 fail04.dnssec.works -``` + ```bash + docker exec unbound drill @127.0.0.1 fail01.dnssec.works + docker exec unbound drill @127.0.0.1 fail02.dnssec.works + docker exec unbound drill @127.0.0.1 fail03.dnssec.works + docker exec unbound drill @127.0.0.1 fail04.dnssec.works + ``` 4. Stop and remove the test container -```bash -docker stop unbound -``` + ```bash + docker stop unbound + ``` ## Packaging new Unbound releases -1. In your working copy, create a new branch if you haven't already, and update the following fields in the [Dockerfile](Dockerfile) with the new version and hash. +1. In your working copy, create a new branch if you haven't already, and update + the following fields in the [Dockerfile](Dockerfile) with the new version and + hash. -```dockerfile -ARG UNBOUND_VERSION=1.19.1 -# https://nlnetlabs.nl/downloads/unbound/unbound-1.19.1.tar.gz.sha256 -ARG UNBOUND_SHA256="a97532468854c61c2de48ca4170de854fd3bc95c8043bb0cfb0fe26605966624" -``` + ```dockerfile + ARG UNBOUND_VERSION=1.19.1 + # https://nlnetlabs.nl/downloads/unbound/unbound-1.19.1.tar.gz.sha256 + ARG UNBOUND_SHA256="a97532468854c61c2de48ca4170de854fd3bc95c8043bb0cfb0fe26605966624" + ``` 2. Run the following docker build command to copy the example config. -```bash -export DOCKER_BUILDKIT=1 -export DOCKER_CLI_EXPERIMENTAL=enabled -docker build . --target conf-example --output rootfs_overlay/etc/unbound/ -``` + ```bash + export DOCKER_BUILDKIT=1 + export DOCKER_CLI_EXPERIMENTAL=enabled + docker build . --target conf-example --output rootfs_overlay/etc/unbound/ + ``` 3. [Build](#building) and [test](#testing) changes locally. 4. Commit and push changes to `Dockerfile` and `unbound.conf.example`. -[Here](https://github.com/klutchell/unbound-docker/pull/235) is an example pull request for reference. +[Here](https://github.com/klutchell/unbound-docker/pull/235) is an example pull +request for reference. ## License -By contributing, you agree that your contributions will be licensed under its [Software License](LICENSE.md). +By contributing, you agree that your contributions will be licensed under its +[Software License](LICENSE.md). ## References -This document was adapted from the open-source contribution guidelines for [Facebook's Draft](https://github.com/facebook/draft-js) +This document was adapted from the open-source contribution guidelines for +[Facebook's Draft](https://github.com/facebook/draft-js) diff --git a/README.md b/README.md index 870a06b..7ff8c7e 100644 --- a/README.md +++ b/README.md @@ -3,11 +3,15 @@ [![Docker Pulls](https://img.shields.io/docker/pulls/klutchell/unbound.svg?style=flat-square)](https://hub.docker.com/r/klutchell/unbound) [![Docker Stars](https://img.shields.io/docker/stars/klutchell/unbound.svg?style=flat-square)](https://hub.docker.com/r/klutchell/unbound) -[Unbound](https://unbound.net/) is a validating, recursive, and caching DNS resolver. +[Unbound](https://unbound.net/) is a validating, recursive, and caching DNS +resolver. -Note that this image is [distroless](https://github.com/GoogleContainerTools/distroless)! +Note that this image is +[distroless](https://github.com/GoogleContainerTools/distroless)! -> "Distroless" images contain only your application and its runtime dependencies. They do not contain package managers, shells or any other programs you would expect to find in a standard Linux distribution. +> "Distroless" images contain only your application and its runtime +> dependencies. They do not contain package managers, shells or any other +> programs you would expect to find in a standard Linux distribution. ## Usage/Examples @@ -19,8 +23,9 @@ docker run --name unbound \ klutchell/unbound ``` -Optionally mount [custom configuration](https://unbound.docs.nlnetlabs.nl/en/latest/manpages/unbound.conf.html) from a host directory. -Files must be readable by user/group `101:102` or world. +Optionally mount +[custom configuration](https://unbound.docs.nlnetlabs.nl/en/latest/manpages/unbound.conf.html) +from a host directory. Files must be readable by user/group `101:102` or world. ```bash docker run --name unbound \ @@ -31,11 +36,17 @@ docker run --name unbound \ ### Optional: Enable CacheDB Module with Redis backend -The cache DB module was compiled into daemon, but is disabled by default. To enable this module, follow this steps: -* Modify [unbound.conf](https://unbound.docs.nlnetlabs.nl/en/latest/manpages/unbound.conf.html#cache-db-module-options) to add the following directive: - > module-config: "validator cachedb iterator" +The cache DB module was compiled into daemon, but is disabled by default. To +enable this module, follow this steps: -* Create a `cachedb.conf` under your custom configuration directory `/path/to/config/custom.conf.d` with Redis credentials: +- Modify + [unbound.conf](https://unbound.docs.nlnetlabs.nl/en/latest/manpages/unbound.conf.html#cache-db-module-options) + to add the following directive: + + > module-config: "validator cachedb iterator" + +- Create a `cachedb.conf` under your custom configuration directory + `/path/to/config/custom.conf.d` with Redis credentials: ```bash cachedb: @@ -44,6 +55,7 @@ cachedb: redis-server-port: 6379 redis-expire-records: yes ``` + Files must be readable by user/group `101:102` or world. Examples of docker-compose usage can be found in [examples](examples).