Deployed 72d747c to main with MkDocs 1.5.2 and mike 1.1.2

This commit is contained in:
github-actions[bot] 2023-09-09 17:31:33 +00:00
parent c81d751253
commit ac50479b95
7 changed files with 506 additions and 8642 deletions

235
main/api/openapi.yaml Normal file
View File

@ -0,0 +1,235 @@
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
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

6
main/embed.go Normal file
View File

@ -0,0 +1,6 @@
package docs
import _ "embed"
//go:embed api/openapi.yaml
var OpenAPI string

View File

@ -469,8 +469,247 @@
<h1 id="interfaces">Interfaces</h1>
<h2 id="rest-api"><abbr title="Representational State Transfer">REST</abbr> <abbr title="Application Programming Interface">API</abbr></h2>
<p>If http listener is enabled, blocky provides <abbr title="Representational State Transfer">REST</abbr> <abbr title="Application Programming Interface">API</abbr>. You can browse the <abbr title="Application Programming Interface">API</abbr> documentation (Swagger) documentation
under <a href="https://0xERR0R.github.io/blocky/swagger.html">https://0xERR0R.github.io/blocky/swagger.html</a>.</p>
<details class="abstract">
<summary>OpenAPI specification</summary>
<div class="highlight"><pre><span></span><code><span class="nt">openapi</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">3.1.1</span>
<span class="nt">info</span><span class="p">:</span>
<span class="w"> </span><span class="nt">title</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">blocky API</span>
<span class="w"> </span><span class="nt">description</span><span class="p">:</span><span class="w"> </span><span class="p p-Indicator">&gt;-</span>
<span class="w"> </span><span class="no"># Blocky</span>
<span class="w"> </span><span class="no">Blocky is a DNS proxy and ad-blocker for the local network written in Go with following features:</span>
<span class="w"> </span><span class="no">## Features</span>
<span class="w"> </span><span class="no">- **Blocking** - Blocking of DNS queries with external lists (Ad-block, malware) and whitelisting</span>
<span class="w"> </span><span class="no">- Definition of black and white lists per client group (Kids, Smart home devices, etc.)</span>
<span class="w"> </span><span class="no">- Periodical reload of external black and white lists</span>
<span class="w"> </span><span class="no">- Regex support</span>
<span class="w"> </span><span class="no">- Blocking of request domain, response CNAME (deep CNAME inspection) and response IP addresses (against IP lists)</span>
<span class="w"> </span><span class="no">- **Advanced DNS configuration** - not just an ad-blocker</span>
<span class="w"> </span><span class="no">- Custom DNS resolution for certain domain names</span>
<span class="w"> </span><span class="no">- Conditional forwarding to external DNS server</span>
<span class="w"> </span><span class="no">- Upstream resolvers can be defined per client group</span>
<span class="w"> </span><span class="no">- **Performance** - Improves speed and performance in your network</span>
<span class="w"> </span><span class="no">- Customizable caching of DNS answers for queries -&gt; improves DNS resolution speed and reduces amount of external DNS</span>
<span class="w"> </span><span class="no">queries</span>
<span class="w"> </span><span class="no">- Prefetching and caching of often used queries</span>
<span class="w"> </span><span class="no">- Using multiple external resolver simultaneously</span>
<span class="w"> </span><span class="no">- Low memory footprint</span>
<span class="w"> </span><span class="no">- **Various Protocols** - Supports modern DNS protocols</span>
<span class="w"> </span><span class="no">- DNS over UDP and TCP</span>
<span class="w"> </span><span class="no">- DNS over HTTPS (aka DoH)</span>
<span class="w"> </span><span class="no">- DNS over TLS (aka DoT)</span>
<span class="w"> </span><span class="no">- **Security and Privacy** - Secure communication</span>
<span class="w"> </span><span class="no">- Supports modern DNS extensions: DNSSEC, eDNS, ...</span>
<span class="w"> </span><span class="no">- Free configurable blocking lists - no hidden filtering etc.</span>
<span class="w"> </span><span class="no">- Provides DoH Endpoint</span>
<span class="w"> </span><span class="no">- Uses random upstream resolvers from the configuration - increases your privacy through the distribution of your DNS</span>
<span class="w"> </span><span class="no">traffic over multiple provider</span>
<span class="w"> </span><span class="no">- Blocky does **NOT** collect any user data, telemetry, statistics etc.</span>
<span class="w"> </span><span class="no">- **Integration** - various integration</span>
<span class="w"> </span><span class="no">- [Prometheus](https://prometheus.io/) metrics</span>
<span class="w"> </span><span class="no">- Prepared [Grafana](https://grafana.com/) dashboards (Prometheus and database)</span>
<span class="w"> </span><span class="no">- Logging of DNS queries per day / per client in CSV format or MySQL/MariaDB/PostgreSQL database - easy to analyze</span>
<span class="w"> </span><span class="no">- Various REST API endpoints</span>
<span class="w"> </span><span class="no">- CLI tool</span>
<span class="w"> </span><span class="no">- **Simple configuration** - single or multiple configuration files in YAML format</span>
<span class="w"> </span><span class="no">- Simple to maintain</span>
<span class="w"> </span><span class="no">- Simple to backup</span>
<span class="w"> </span><span class="no">- **Simple installation/configuration** - blocky was designed for simple installation</span>
<span class="w"> </span><span class="no">- Stateless (no database, no temporary files)</span>
<span class="w"> </span><span class="no">- Docker image with Multi-arch support</span>
<span class="w"> </span><span class="no">- Single binary</span>
<span class="w"> </span><span class="no">- Supports x86-64 and ARM architectures -&gt; runs fine on Raspberry PI</span>
<span class="w"> </span><span class="no">- Community supported Helm chart for k8s deployment</span>
<span class="w"> </span><span class="no">## Quick start</span>
<span class="w"> </span><span class="no">You can jump to [Installation](https://0xerr0r.github.io/blocky/installation/) chapter in the documentation.</span>
<span class="w"> </span><span class="no">## Full documentation</span>
<span class="w"> </span><span class="no">You can find full documentation and configuration examples</span>
<span class="w"> </span><span class="no">at: [https://0xERR0R.github.io/blocky/](https://0xERR0R.github.io/blocky/)</span>
<span class="w"> </span><span class="nt">contact</span><span class="p">:</span>
<span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">blocky@github</span>
<span class="w"> </span><span class="nt">url</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">https://github.com/0xERR0R/blocky</span>
<span class="w"> </span><span class="nt">license</span><span class="p">:</span>
<span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Apache 2.0</span>
<span class="w"> </span><span class="nt">url</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">http://www.apache.org/licenses/LICENSE-2.0.html</span>
<span class="w"> </span><span class="nt">version</span><span class="p">:</span><span class="w"> </span><span class="s">&#39;1.0&#39;</span>
<span class="nt">servers</span><span class="p">:</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">url</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">/api</span>
<span class="nt">paths</span><span class="p">:</span>
<span class="w"> </span><span class="nt">/blocking/disable</span><span class="p">:</span>
<span class="w"> </span><span class="nt">get</span><span class="p">:</span>
<span class="w"> </span><span class="nt">operationId</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">disableBlocking</span>
<span class="w"> </span><span class="nt">tags</span><span class="p">:</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">blocking</span>
<span class="w"> </span><span class="nt">summary</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Disable blocking</span>
<span class="w"> </span><span class="nt">description</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">disable the blocking status</span>
<span class="w"> </span><span class="nt">parameters</span><span class="p">:</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">duration</span>
<span class="w"> </span><span class="nt">in</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">query</span>
<span class="w"> </span><span class="nt">description</span><span class="p">:</span><span class="w"> </span><span class="s">&#39;duration</span><span class="nv"> </span><span class="s">of</span><span class="nv"> </span><span class="s">blocking</span><span class="nv"> </span><span class="s">(Example:</span><span class="nv"> </span><span class="s">300s,</span><span class="nv"> </span><span class="s">5m,</span><span class="nv"> </span><span class="s">1h,</span><span class="nv"> </span><span class="s">5m30s)&#39;</span>
<span class="w"> </span><span class="nt">schema</span><span class="p">:</span>
<span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">string</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">groups</span>
<span class="w"> </span><span class="nt">in</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">query</span>
<span class="w"> </span><span class="nt">description</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">groups to disable (comma separated). If empty, disable all groups</span>
<span class="w"> </span><span class="nt">schema</span><span class="p">:</span>
<span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">string</span>
<span class="w"> </span><span class="nt">responses</span><span class="p">:</span>
<span class="w"> </span><span class="s">&#39;200&#39;</span><span class="p p-Indicator">:</span>
<span class="w"> </span><span class="nt">description</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Blocking is disabled</span>
<span class="w"> </span><span class="s">&#39;400&#39;</span><span class="p p-Indicator">:</span>
<span class="w"> </span><span class="nt">description</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Bad request (e.g. unknown group)</span>
<span class="w"> </span><span class="nt">content</span><span class="p">:</span>
<span class="w"> </span><span class="nt">text/plain</span><span class="p">:</span>
<span class="w"> </span><span class="nt">schema</span><span class="p">:</span>
<span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">string</span>
<span class="w"> </span><span class="nt">example</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Bad request</span>
<span class="w"> </span><span class="nt">/blocking/enable</span><span class="p">:</span>
<span class="w"> </span><span class="nt">get</span><span class="p">:</span>
<span class="w"> </span><span class="nt">operationId</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">enableBlocking</span>
<span class="w"> </span><span class="nt">tags</span><span class="p">:</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">blocking</span>
<span class="w"> </span><span class="nt">summary</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Enable blocking</span>
<span class="w"> </span><span class="nt">description</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">enable the blocking status</span>
<span class="w"> </span><span class="nt">responses</span><span class="p">:</span>
<span class="w"> </span><span class="s">&#39;200&#39;</span><span class="p p-Indicator">:</span>
<span class="w"> </span><span class="nt">description</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Blocking is enabled</span>
<span class="w"> </span><span class="nt">/blocking/status</span><span class="p">:</span>
<span class="w"> </span><span class="nt">get</span><span class="p">:</span>
<span class="w"> </span><span class="nt">operationId</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">blockingStatus</span>
<span class="w"> </span><span class="nt">tags</span><span class="p">:</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">blocking</span>
<span class="w"> </span><span class="nt">summary</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Blocking status</span>
<span class="w"> </span><span class="nt">description</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">get current blocking status</span>
<span class="w"> </span><span class="nt">responses</span><span class="p">:</span>
<span class="w"> </span><span class="s">&#39;200&#39;</span><span class="p p-Indicator">:</span>
<span class="w"> </span><span class="nt">description</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Returns current blocking status</span>
<span class="w"> </span><span class="nt">content</span><span class="p">:</span>
<span class="w"> </span><span class="nt">application/json</span><span class="p">:</span>
<span class="w"> </span><span class="nt">schema</span><span class="p">:</span>
<span class="w"> </span><span class="nt">$ref</span><span class="p">:</span><span class="w"> </span><span class="s">&#39;#/components/schemas/api.BlockingStatus&#39;</span>
<span class="w"> </span><span class="nt">/lists/refresh</span><span class="p">:</span>
<span class="w"> </span><span class="nt">post</span><span class="p">:</span>
<span class="w"> </span><span class="nt">operationId</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">listRefresh</span>
<span class="w"> </span><span class="nt">tags</span><span class="p">:</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">lists</span>
<span class="w"> </span><span class="nt">summary</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">List refresh</span>
<span class="w"> </span><span class="nt">description</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Refresh all lists</span>
<span class="w"> </span><span class="nt">responses</span><span class="p">:</span>
<span class="w"> </span><span class="s">&#39;200&#39;</span><span class="p p-Indicator">:</span>
<span class="w"> </span><span class="nt">description</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Lists were reloaded</span>
<span class="w"> </span><span class="s">&#39;500&#39;</span><span class="p p-Indicator">:</span>
<span class="w"> </span><span class="nt">description</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">List refresh error</span>
<span class="w"> </span><span class="nt">content</span><span class="p">:</span>
<span class="w"> </span><span class="nt">text/plain</span><span class="p">:</span>
<span class="w"> </span><span class="nt">schema</span><span class="p">:</span>
<span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">string</span>
<span class="w"> </span><span class="nt">example</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Error text</span>
<span class="w"> </span><span class="nt">/query</span><span class="p">:</span>
<span class="w"> </span><span class="nt">post</span><span class="p">:</span>
<span class="w"> </span><span class="nt">operationId</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">query</span>
<span class="w"> </span><span class="nt">tags</span><span class="p">:</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">query</span>
<span class="w"> </span><span class="nt">summary</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Performs DNS query</span>
<span class="w"> </span><span class="nt">description</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Performs DNS query</span>
<span class="w"> </span><span class="nt">requestBody</span><span class="p">:</span>
<span class="w"> </span><span class="nt">description</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">query data</span>
<span class="w"> </span><span class="nt">content</span><span class="p">:</span>
<span class="w"> </span><span class="nt">application/json</span><span class="p">:</span>
<span class="w"> </span><span class="nt">schema</span><span class="p">:</span>
<span class="w"> </span><span class="nt">$ref</span><span class="p">:</span><span class="w"> </span><span class="s">&#39;#/components/schemas/api.QueryRequest&#39;</span>
<span class="w"> </span><span class="nt">required</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">true</span>
<span class="w"> </span><span class="nt">responses</span><span class="p">:</span>
<span class="w"> </span><span class="s">&#39;200&#39;</span><span class="p p-Indicator">:</span>
<span class="w"> </span><span class="nt">description</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">query was executed</span>
<span class="w"> </span><span class="nt">content</span><span class="p">:</span>
<span class="w"> </span><span class="nt">application/json</span><span class="p">:</span>
<span class="w"> </span><span class="nt">schema</span><span class="p">:</span>
<span class="w"> </span><span class="nt">$ref</span><span class="p">:</span><span class="w"> </span><span class="s">&#39;#/components/schemas/api.QueryResult&#39;</span>
<span class="w"> </span><span class="s">&#39;400&#39;</span><span class="p p-Indicator">:</span>
<span class="w"> </span><span class="nt">description</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Wrong request format</span>
<span class="w"> </span><span class="nt">content</span><span class="p">:</span>
<span class="w"> </span><span class="nt">text/plain</span><span class="p">:</span>
<span class="w"> </span><span class="nt">schema</span><span class="p">:</span>
<span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">string</span>
<span class="w"> </span><span class="nt">example</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Bad request</span>
<span class="nt">components</span><span class="p">:</span>
<span class="w"> </span><span class="nt">schemas</span><span class="p">:</span>
<span class="w"> </span><span class="nt">api.BlockingStatus</span><span class="p">:</span>
<span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">object</span>
<span class="w"> </span><span class="nt">properties</span><span class="p">:</span>
<span class="w"> </span><span class="nt">autoEnableInSec</span><span class="p">:</span>
<span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">integer</span>
<span class="w"> </span><span class="nt">minimum</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">0</span>
<span class="w"> </span><span class="nt">description</span><span class="p">:</span><span class="w"> </span><span class="p p-Indicator">&gt;-</span>
<span class="w"> </span><span class="no">If blocking is temporary disabled: amount of seconds until blocking</span>
<span class="w"> </span><span class="no">will be enabled</span>
<span class="w"> </span><span class="nt">disabledGroups</span><span class="p">:</span>
<span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">array</span>
<span class="w"> </span><span class="nt">description</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Disabled group names</span>
<span class="w"> </span><span class="nt">items</span><span class="p">:</span>
<span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">string</span>
<span class="w"> </span><span class="nt">enabled</span><span class="p">:</span>
<span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">boolean</span>
<span class="w"> </span><span class="nt">description</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">True if blocking is enabled</span>
<span class="w"> </span><span class="nt">required</span><span class="p">:</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">enabled</span>
<span class="w"> </span><span class="nt">api.QueryRequest</span><span class="p">:</span>
<span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">object</span>
<span class="w"> </span><span class="nt">properties</span><span class="p">:</span>
<span class="w"> </span><span class="nt">query</span><span class="p">:</span>
<span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">string</span>
<span class="w"> </span><span class="nt">description</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">query for DNS request</span>
<span class="w"> </span><span class="nt">type</span><span class="p">:</span>
<span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">string</span>
<span class="w"> </span><span class="nt">description</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">request type (A, AAAA, ...)</span>
<span class="w"> </span><span class="nt">required</span><span class="p">:</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">query</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">type</span>
<span class="w"> </span><span class="nt">api.QueryResult</span><span class="p">:</span>
<span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">object</span>
<span class="w"> </span><span class="nt">properties</span><span class="p">:</span>
<span class="w"> </span><span class="nt">reason</span><span class="p">:</span>
<span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">string</span>
<span class="w"> </span><span class="nt">description</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">blocky reason for resolution</span>
<span class="w"> </span><span class="nt">response</span><span class="p">:</span>
<span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">string</span>
<span class="w"> </span><span class="nt">description</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">actual DNS response</span>
<span class="w"> </span><span class="nt">responseType</span><span class="p">:</span>
<span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">string</span>
<span class="w"> </span><span class="nt">description</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">response type (CACHED, BLOCKED, ...)</span>
<span class="w"> </span><span class="nt">returnCode</span><span class="p">:</span>
<span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">string</span>
<span class="w"> </span><span class="nt">description</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">DNS return code (NOERROR, NXDOMAIN, ...)</span>
<span class="w"> </span><span class="nt">required</span><span class="p">:</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">reason</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">response</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">responseType</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">returnCode</span>
</code></pre></div>
</details>
<p>If http listener is enabled, blocky provides <abbr title="Representational State Transfer">REST</abbr> <abbr title="Application Programming Interface">API</abbr>. You can download the <a href="../api/openapi.yaml">OpenAPI <abbr title="YAML Ain't Markup Language">YAML</abbr></a> interface specification. </p>
<p>You can also browse the interactive <abbr title="Application Programming Interface">API</abbr> documentation (RapiDoc) documentation <a href="../rapidoc.html">online</a>.</p>
<h2 id="cli"><abbr title="Command Line Interface">CLI</abbr></h2>
<p>Blocky provides a <abbr title="Command Line Interface">CLI</abbr> interface to control. This interface uses internally the <abbr title="Representational State Transfer">REST</abbr> <abbr title="Application Programming Interface">API</abbr>.</p>
<p>To run the <abbr title="Command Line Interface">CLI</abbr>, please ensure, that blocky <abbr title="Domain Name System">DNS</abbr> server is running, then execute <code>blocky help</code> for help or</p>

23
main/rapidoc.html Normal file
View File

@ -0,0 +1,23 @@
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<script type="module" src="https://unpkg.com/rapidoc/dist/rapidoc-min.js"></script>
</head>
<body>
<rapi-doc
spec-url="api/openapi.yaml"
theme = "light"
allow-authentication = "false"
show-header = "false"
bg-color = "#fdf8ed"
nav-bg-color = "#3f4d67"
nav-text-color = "#a9b7d0"
nav-hover-bg-color = "#333f54"
nav-hover-text-color = "#fff"
nav-accent-color = "#f87070"
primary-color = "#5c7096"
allow-try = "false"
> </rapi-doc>
</body>
</html>

File diff suppressed because one or more lines are too long

Binary file not shown.

File diff suppressed because it is too large Load Diff