* updated Deprecated comments
* moved redis config t seperate file
* added more ruedis options
* fmt,lint&test
* init ruedis
* ruedis init
* ruedis rework
* go mod tidy
* redis unit test 1
* changed redis config validation
* go generate
* unshadow
* removed all redis unit tests
* fix e2e tests
* removed one e2e test as it fails(even when a similar setup works in my test environment)
* e2e timing problem
* build(deps): bump github.com/docker/docker
Bumps [github.com/docker/docker](https://github.com/docker/docker) from 23.0.1+incompatible to 23.0.3+incompatible.
- [Release notes](https://github.com/docker/docker/releases)
- [Commits](https://github.com/docker/docker/compare/v23.0.1...v23.0.3)
---
updated-dependencies:
- dependency-name: github.com/docker/docker
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <[email protected]>
* build(deps): bump gorm.io/gorm
Bumps [gorm.io/gorm](https://github.com/go-gorm/gorm) from 1.24.7-0.20230306060331-85eaf9eeda11 to 1.25.0.
- [Release notes](https://github.com/go-gorm/gorm/releases)
- [Commits](https://github.com/go-gorm/gorm/commits/v1.25.0)
---
updated-dependencies:
- dependency-name: gorm.io/gorm
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <[email protected]>
* build(deps): bump github.com/prometheus/client_golang
Bumps [github.com/prometheus/client_golang](https://github.com/prometheus/client_golang) from 1.14.0 to 1.15.0.
- [Release notes](https://github.com/prometheus/client_golang/releases)
- [Changelog](https://github.com/prometheus/client_golang/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prometheus/client_golang/compare/v1.14.0...v1.15.0)
---
updated-dependencies:
- dependency-name: github.com/prometheus/client_golang
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <[email protected]>
* build(deps): bump gorm.io/driver/sqlite from 1.4.4 to 1.5.0
Bumps [gorm.io/driver/sqlite](https://github.com/go-gorm/sqlite) from 1.4.4 to 1.5.0.
- [Release notes](https://github.com/go-gorm/sqlite/releases)
- [Commits](https://github.com/go-gorm/sqlite/compare/v1.4.4...v1.5.0)
---
updated-dependencies:
- dependency-name: gorm.io/driver/sqlite
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <[email protected]>
* build(deps): bump gorm.io/driver/mysql from 1.4.7 to 1.5.0
Bumps [gorm.io/driver/mysql](https://github.com/go-gorm/mysql) from 1.4.7 to 1.5.0.
- [Release notes](https://github.com/go-gorm/mysql/releases)
- [Commits](https://github.com/go-gorm/mysql/compare/v1.4.7...v1.5.0)
---
updated-dependencies:
- dependency-name: gorm.io/driver/mysql
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <[email protected]>
* build(deps): bump github.com/swaggo/swag from 1.8.12 to 1.16.1
Bumps [github.com/swaggo/swag](https://github.com/swaggo/swag) from 1.8.12 to 1.16.1.
- [Release notes](https://github.com/swaggo/swag/releases)
- [Changelog](https://github.com/swaggo/swag/blob/master/.goreleaser.yml)
- [Commits](https://github.com/swaggo/swag/compare/v1.8.12...v1.16.1)
---
updated-dependencies:
- dependency-name: github.com/swaggo/swag
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <[email protected]>
* build(deps): bump github.com/alicebob/miniredis/v2 from 2.30.1 to 2.30.2
Bumps [github.com/alicebob/miniredis/v2](https://github.com/alicebob/miniredis) from 2.30.1 to 2.30.2.
- [Release notes](https://github.com/alicebob/miniredis/releases)
- [Changelog](https://github.com/alicebob/miniredis/blob/master/CHANGELOG.md)
- [Commits](https://github.com/alicebob/miniredis/compare/v2.30.1...v2.30.2)
---
updated-dependencies:
- dependency-name: github.com/alicebob/miniredis/v2
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <[email protected]>
* Goreleaser fix (#1003)
* use zig for goreleaser
* added test workflow
* Revert "added test workflow"
This reverts commit 9c55c5fd9e.
* added goreleaser test
* autorun goreleaser tests
* add pseudo tag for goreleaser
* added test
* added arm test
* arch test
* missing qemu setup?
* test alternate run
* test rework
* path fix?
* 18 won't run
* another test
* permission fix
* amd64 matrix
* added macos
* added windows test
* consolidate unix tests
* fix path
* fix path2
* matrix consolidation
* +x fails on macos
* fix runner
* windows fix
* Update .github/workflows/goreleaser-test.yml
Co-authored-by: ThinkChaos <[email protected]>
* Update .github/workflows/goreleaser-test.yml
Co-authored-by: ThinkChaos <[email protected]>
* Update .github/workflows/goreleaser-test.yml
Co-authored-by: ThinkChaos <[email protected]>
* Update .github/workflows/goreleaser-test.yml
Co-authored-by: ThinkChaos <[email protected]>
* auto test binaries on release
---------
Co-authored-by: ThinkChaos <[email protected]>
* build(deps): bump github.com/avast/retry-go/v4 from 4.3.3 to 4.3.4
Bumps [github.com/avast/retry-go/v4](https://github.com/avast/retry-go) from 4.3.3 to 4.3.4.
- [Release notes](https://github.com/avast/retry-go/releases)
- [Commits](https://github.com/avast/retry-go/compare/4.3.3...4.3.4)
---
updated-dependencies:
- dependency-name: github.com/avast/retry-go/v4
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <[email protected]>
* go mod tidy
* don't store context in client
* Update redis/redis.go
Co-authored-by: ThinkChaos <[email protected]>
* Update redis/redis.go
Co-authored-by: ThinkChaos <[email protected]>
* moved ClientOptions getter to config package
* moved validation functions
* linter fix
* log warnings about config ignore
* log fetch error
* %w is not supported
* build(deps): bump github.com/prometheus/client_golang
Bumps [github.com/prometheus/client_golang](https://github.com/prometheus/client_golang) from 1.15.0 to 1.15.1.
- [Release notes](https://github.com/prometheus/client_golang/releases)
- [Changelog](https://github.com/prometheus/client_golang/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prometheus/client_golang/compare/v1.15.0...v1.15.1)
---
updated-dependencies:
- dependency-name: github.com/prometheus/client_golang
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <[email protected]>
* retry.Do implementation
* log redis config if enabled
---------
Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: ThinkChaos <[email protected]>
Blocky
Blocky is a DNS proxy and ad-blocker for the local network written in Go with following features:
Features
-
Blocking - Blocking of DNS queries with external lists (Ad-block, malware) and whitelisting
- Definition of black and white lists per client group (Kids, Smart home devices, etc.)
- Periodical reload of external black and white lists
- Regex support
- Blocking of request domain, response CNAME (deep CNAME inspection) and response IP addresses (against IP lists)
-
Advanced DNS configuration - not just an ad-blocker
- Custom DNS resolution for certain domain names
- Conditional forwarding to external DNS server
- Upstream resolvers can be defined per client group
-
Performance - Improves speed and performance in your network
- Customizable caching of DNS answers for queries -> improves DNS resolution speed and reduces amount of external DNS queries
- Prefetching and caching of often used queries
- Using multiple external resolver simultaneously
- Low memory footprint
-
Various Protocols - Supports modern DNS protocols
- DNS over UDP and TCP
- DNS over HTTPS (aka DoH)
- DNS over TLS (aka DoT)
-
Security and Privacy - Secure communication
- Supports modern DNS extensions: DNSSEC, eDNS, ...
- Free configurable blocking lists - no hidden filtering etc.
- Provides DoH Endpoint
- Uses random upstream resolvers from the configuration - increases your privacy through the distribution of your DNS traffic over multiple provider
- Blocky does NOT collect any user data, telemetry, statistics etc.
-
Integration - various integration
- Prometheus metrics
- Prepared Grafana dashboards (Prometheus and database)
- Logging of DNS queries per day / per client in CSV format or MySQL/MariaDB/PostgreSQL database - easy to analyze
- Various REST API endpoints
- CLI tool
-
Simple configuration - single or multiple configuration files in YAML format
- Simple to maintain
- Simple to backup
-
Simple installation/configuration - blocky was designed for simple installation
- Stateless (no database, no temporary files)
- Docker image with Multi-arch support
- Single binary
- Supports x86-64 and ARM architectures -> runs fine on Raspberry PI
- Community supported Helm chart for k8s deployment
Quick start
You can jump to Installation chapter in the documentation.
Full documentation
You can find full documentation and configuration examples at: https://0xERR0R.github.io/blocky/
Contribution
Issues, feature suggestions and pull requests are welcome!