mirror of https://github.com/0xERR0R/blocky.git
Deployed 72d747c
to main with MkDocs 1.5.2 and mike 1.1.2
This commit is contained in:
parent
c81d751253
commit
ac50479b95
|
@ -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
|
|
@ -0,0 +1,6 @@
|
|||
package docs
|
||||
|
||||
import _ "embed"
|
||||
|
||||
//go:embed api/openapi.yaml
|
||||
var OpenAPI string
|
|
@ -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">>-</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 -> 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 -> 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">'1.0'</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">'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)'</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">'200'</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">'400'</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">'200'</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">'200'</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">'#/components/schemas/api.BlockingStatus'</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">'200'</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">'500'</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">'#/components/schemas/api.QueryRequest'</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">'200'</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">'#/components/schemas/api.QueryResult'</span>
|
||||
<span class="w"> </span><span class="s">'400'</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">>-</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>
|
||||
|
|
|
@ -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.
8639
main/swagger.html
8639
main/swagger.html
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue