forked from 0xERR0R/blocky
-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Deployed 270dc17 to main with MkDocs 1.5.3 and mike 2.0.0
- Loading branch information
1 parent
78d3f87
commit 0fe2f5f
Showing
67 changed files
with
21,101 additions
and
1 deletion.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,245 @@ | ||
openapi: 3.1.1 | ||
info: | ||
title: blocky API | ||
description: >- | ||
# 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](https://prometheus.io/) metrics | ||
- Prepared [Grafana](https://grafana.com/) 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](https://0xerr0r.github.io/blocky/installation/) chapter in the documentation. | ||
## Full documentation | ||
You can find full documentation and configuration examples | ||
at: [https://0xERR0R.github.io/blocky/](https://0xERR0R.github.io/blocky/) | ||
contact: | ||
name: blocky@github | ||
url: https://github.com/0xERR0R/blocky | ||
license: | ||
name: Apache 2.0 | ||
url: http://www.apache.org/licenses/LICENSE-2.0.html | ||
version: '1.0' | ||
servers: | ||
- url: /api | ||
paths: | ||
/blocking/disable: | ||
get: | ||
operationId: disableBlocking | ||
tags: | ||
- blocking | ||
summary: Disable blocking | ||
description: disable the blocking status | ||
parameters: | ||
- name: duration | ||
in: query | ||
description: 'duration of blocking (Example: 300s, 5m, 1h, 5m30s)' | ||
schema: | ||
type: string | ||
- name: groups | ||
in: query | ||
description: groups to disable (comma separated). If empty, disable all groups | ||
schema: | ||
type: string | ||
responses: | ||
'200': | ||
description: Blocking is disabled | ||
'400': | ||
description: Bad request (e.g. unknown group) | ||
content: | ||
text/plain: | ||
schema: | ||
type: string | ||
example: Bad request | ||
/blocking/enable: | ||
get: | ||
operationId: enableBlocking | ||
tags: | ||
- blocking | ||
summary: Enable blocking | ||
description: enable the blocking status | ||
responses: | ||
'200': | ||
description: Blocking is enabled | ||
/blocking/status: | ||
get: | ||
operationId: blockingStatus | ||
tags: | ||
- blocking | ||
summary: Blocking status | ||
description: get current blocking status | ||
responses: | ||
'200': | ||
description: Returns current blocking status | ||
content: | ||
application/json: | ||
schema: | ||
$ref: '#/components/schemas/api.BlockingStatus' | ||
/lists/refresh: | ||
post: | ||
operationId: listRefresh | ||
tags: | ||
- lists | ||
summary: List refresh | ||
description: Refresh all lists | ||
responses: | ||
'200': | ||
description: Lists were reloaded | ||
'500': | ||
description: List refresh error | ||
content: | ||
text/plain: | ||
schema: | ||
type: string | ||
example: Error text | ||
/query: | ||
post: | ||
operationId: query | ||
tags: | ||
- query | ||
summary: Performs DNS query | ||
description: Performs DNS query | ||
requestBody: | ||
description: query data | ||
content: | ||
application/json: | ||
schema: | ||
$ref: '#/components/schemas/api.QueryRequest' | ||
required: true | ||
responses: | ||
'200': | ||
description: query was executed | ||
content: | ||
application/json: | ||
schema: | ||
$ref: '#/components/schemas/api.QueryResult' | ||
'400': | ||
description: Wrong request format | ||
content: | ||
text/plain: | ||
schema: | ||
type: string | ||
example: Bad request | ||
/cache/flush: | ||
post: | ||
operationId: cacheFlush | ||
tags: | ||
- cache | ||
summary: Clears the DNS response cache | ||
description: Removes all DNS responses from cache | ||
responses: | ||
'200': | ||
description: All caches cleared | ||
components: | ||
schemas: | ||
api.BlockingStatus: | ||
type: object | ||
properties: | ||
autoEnableInSec: | ||
type: integer | ||
minimum: 0 | ||
description: >- | ||
If blocking is temporary disabled: amount of seconds until blocking | ||
will be enabled | ||
disabledGroups: | ||
type: array | ||
description: Disabled group names | ||
items: | ||
type: string | ||
enabled: | ||
type: boolean | ||
description: True if blocking is enabled | ||
required: | ||
- enabled | ||
api.QueryRequest: | ||
type: object | ||
properties: | ||
query: | ||
type: string | ||
description: query for DNS request | ||
type: | ||
type: string | ||
description: request type (A, AAAA, ...) | ||
required: | ||
- query | ||
- type | ||
api.QueryResult: | ||
type: object | ||
properties: | ||
reason: | ||
type: string | ||
description: blocky reason for resolution | ||
response: | ||
type: string | ||
description: actual DNS response | ||
responseType: | ||
type: string | ||
description: response type (CACHED, BLOCKED, ...) | ||
returnCode: | ||
type: string | ||
description: DNS return code (NOERROR, NXDOMAIN, ...) | ||
required: | ||
- reason | ||
- response | ||
- responseType | ||
- returnCode |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Oops, something went wrong.