mirror of
https://github.com/pi-hole/docs.git
synced 2025-12-20 03:08:45 +00:00
Add Markdownlint (#203)
* Add markdownlint-cli This is an initial config but should be tweaked later as needed. * Adhere to the new rules
This commit is contained in:
7
.gitignore
vendored
7
.gitignore
vendored
@@ -1,5 +1,6 @@
|
||||
*.iml
|
||||
/.idea
|
||||
.idea
|
||||
site/
|
||||
*.sw*
|
||||
.idea
|
||||
/.idea
|
||||
/node_modules/
|
||||
/site/
|
||||
|
||||
38
.markdownlint.json
Normal file
38
.markdownlint.json
Normal file
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"default": true,
|
||||
"MD003": {
|
||||
"style": "atx"
|
||||
},
|
||||
"MD004": {
|
||||
"style": "consistent"
|
||||
},
|
||||
"MD007": {
|
||||
"indent": 4
|
||||
},
|
||||
"MD013": false,
|
||||
"MD024": false,
|
||||
"MD025": false,
|
||||
"MD026": false,
|
||||
"MD033": {
|
||||
"allowed_elements": [
|
||||
"a",
|
||||
"br",
|
||||
"code",
|
||||
"img",
|
||||
"strong",
|
||||
"p",
|
||||
"sub",
|
||||
"table", "tbody", "th", "tr", "td"
|
||||
]
|
||||
},
|
||||
"MD035": {
|
||||
"style": "---"
|
||||
},
|
||||
"MD036": false,
|
||||
"MD040": false,
|
||||
"MD041": false,
|
||||
"MD045": false,
|
||||
"MD046": {
|
||||
"style": "fenced"
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,9 @@
|
||||
language: python
|
||||
install:
|
||||
- pip install -r requirements.txt
|
||||
- pip install -r requirements.txt || travis_terminate 1
|
||||
- npm ci
|
||||
script:
|
||||
- npm test || travis_terminate 1
|
||||
- mkdocs build --verbose --clean
|
||||
cache: pip
|
||||
deploy:
|
||||
|
||||
13
README.md
13
README.md
@@ -1,7 +1,10 @@
|
||||
<p align="center">
|
||||
<a href="https://pi-hole.net"><img src="https://pi-hole.github.io/graphics/Vortex/Vortex_with_text.png" width="150" height="255" alt="Pi-hole"></a>
|
||||
<br/><br/>
|
||||
<b>Network-wide ad blocking via your own Linux hardware</b><br/>
|
||||
<p style="text-align: center;">
|
||||
<a href="https://pi-hole.net">
|
||||
<img src="https://pi-hole.github.io/graphics/Vortex/Vortex_with_text.png" width="150" height="255" alt="Pi-hole">
|
||||
</a>
|
||||
<br>
|
||||
<strong>Network-wide ad blocking via your own Linux hardware</strong>
|
||||
<br>
|
||||
</p>
|
||||
|
||||
The Pi-hole[®](https://pi-hole.net/trademark-rules-and-brand-guidelines/) is a [DNS sinkhole](https://en.wikipedia.org/wiki/DNS_Sinkhole) that protects your devices from unwanted content, without installing any client-side software.
|
||||
@@ -67,4 +70,4 @@ Please make sure you fork the repo and change the clone URL in the example below
|
||||
/root/.local/bin/mkdocs serve --dev-addr 0.0.0.0:8000"
|
||||
```
|
||||
|
||||
After these commands, the current branch is accessible through your favorite browser at http://localhost:8000
|
||||
After these commands, the current branch is accessible through your favorite browser at <http://localhost:8000>
|
||||
|
||||
@@ -8,7 +8,7 @@ last_updated: Sat Feb 09 00:00:00 2019 UTC
|
||||
|
||||
Docker runs in a separate network by default called a docker bridge network, which makes DHCP want to serve addresses to that network and not your LAN network where you probably want it. This document details why Docker Pi-hole DHCP is different from normal Pi-hole and how to fix the problem.
|
||||
|
||||
### Technical details
|
||||
## Technical details
|
||||
|
||||
Docker's bridge network mode is default and recommended as a more secure setting for containers because docker is all about isolation, they isolate processes by default and the bridge network isolates the networking by default too. You gain access to the isolated container's service ports by using port forwards in your container's runtime config; for example `-p 67:67` is DHCP. However DHCP protocol operates through a network 'broadcast' which cannot span multiple networks (docker's bridge, and your LAN network). In order to get DHCP on to your network there are a few approaches:
|
||||
|
||||
|
||||
@@ -25,14 +25,14 @@ doubleclick.net. 2 IN AAAA ::
|
||||
|
||||
Following [RFC 3513, Internet Protocol Version 6 (IPv6) Addressing Architecture, section 2.5.2](https://tools.ietf.org/html/rfc3513#section-2.5.2), the address `0:0:0:0:0:0:0:0` (or `::` for short) is the unspecified address. It must never be assigned to any node and indicates the absence of an address. Following [RFC1122, section 3.2](https://tools.ietf.org/html/rfc1122#section-3.2), the address `0.0.0.0` can be understood as the IPv4 equivalent of `::`.
|
||||
|
||||
##### Advantages
|
||||
### Advantages
|
||||
|
||||
- The client does not even try to establish a connection for the requested website
|
||||
- Speedup and less traffic
|
||||
- Solves potential HTTPS timeouts as requests are never performed
|
||||
- No need to run a webserver on your Pi-hole (reduces complexity when running other web services on the same machine)
|
||||
|
||||
##### Disadvantage
|
||||
### Disadvantage
|
||||
|
||||
- Blocking page cannot be shown and whitelisting has to be performed from the dashboard or CLI
|
||||
|
||||
@@ -54,12 +54,12 @@ Blocked queries will be answered with the local IPv4 addresses of your Pi-hole (
|
||||
doubleclick.net. 2 IN A 192.168.2.11
|
||||
```
|
||||
|
||||
##### Advantage
|
||||
### Advantage
|
||||
|
||||
- Shows blocking page from which blocked domains can be whitelisted
|
||||
- Serves IPv4-only replies and hence mitigates issues with rotating IPv6 prefixes
|
||||
|
||||
##### Disadvantages
|
||||
### Disadvantages
|
||||
|
||||
- Requires a webserver to run on your Pi-hole
|
||||
- May cause time-outs for HTTPS content even with properly configured firewall rules
|
||||
@@ -83,11 +83,11 @@ doubleclick.net. 2 IN A 192.168.2.11
|
||||
doubleclick.net. 2 IN AAAA fda2:2001:4756:0:ab27:beff:ef37:4242
|
||||
```
|
||||
|
||||
##### Advantage
|
||||
### Advantage
|
||||
|
||||
- Shows blocking page from which blocked domains can be whitelisted
|
||||
|
||||
##### Disadvantages
|
||||
### Disadvantages
|
||||
|
||||
- Requires a webserver to run on your Pi-hole
|
||||
- May cause time-outs for HTTPS content even with properly configured firewall rules
|
||||
@@ -108,7 +108,7 @@ Blocked queries will be answered with an empty response (no answer section) and
|
||||
;doubleclick.net. IN ANY
|
||||
```
|
||||
|
||||
##### Advantages & Disadvantages
|
||||
### Advantages & Disadvantages
|
||||
|
||||
Similar to `NULL` blocking, but experiments suggest that clients may try to resolve blocked domains more often compared to `NULL` blocking.
|
||||
|
||||
@@ -127,7 +127,7 @@ Blocked queries will be answered with an empty response (no answer section) and
|
||||
;doubleclick.net. IN ANY
|
||||
```
|
||||
|
||||
##### Advantages & Disadvantages
|
||||
### Advantages & Disadvantages
|
||||
|
||||
Similar to `NXDOMAIN` blocking. Clients might have a better acceptance of `NODATA` replies compared to `NXDOMAIN` replies.
|
||||
|
||||
|
||||
@@ -5,13 +5,13 @@ We pre-compile *FTL*DNS for you to save you the trouble of compiling anything yo
|
||||
First, we'll install the basic software you'll need to compile from source, like the GCC compiler and other utilities.
|
||||
Install them by running the following command in a terminal:
|
||||
|
||||
###### Debian / Ubuntu / Raspbian
|
||||
##### Debian / Ubuntu / Raspbian
|
||||
|
||||
```bash
|
||||
sudo apt install build-essential libgmp-dev m4
|
||||
```
|
||||
|
||||
###### Fedora
|
||||
##### Fedora
|
||||
|
||||
```bash
|
||||
sudo dnf install gcc gmp-devel gmp-static m4
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
We provide a short but thorough introduction to our regular expressions implementation. This may come in handy if you are designing blocking rules (see also our cheat sheet below!). In our implementation, all characters match themselves except for the following special characters: `.[{}()\*+?|^$`. If you want to match those, you need to escape them like `\.` for a literal period, but no rule without exception (see character groups below for further details).
|
||||
|
||||
### Anchors (`^` and `$`)
|
||||
## Anchors (`^` and `$`)
|
||||
|
||||
First of all, we look at anchors which can be used to indicate the start or the end of a domain, respectively. If you don't specify anchors, the match may be partial (see examples below).
|
||||
|
||||
@@ -13,7 +13,7 @@ Example | Interpretation
|
||||
`^abc` | matches any domain **starting** (`^`) in "abc" like `abcdomain.com`, `abc.domain.com` but not `def.abc.com`
|
||||
`com$` | matches any domain **ending** (`$`) in "com" such as `domain.com` but not `domain.com.co.uk`
|
||||
|
||||
### Wildcard (`.`)
|
||||
## Wildcard (`.`)
|
||||
|
||||
An unescaped period stands for any *single* character.
|
||||
|
||||
@@ -21,7 +21,7 @@ Example | Interpretation
|
||||
--- | ---
|
||||
`^domain.$` | matches `domaina`, `domainb`, `domainc`, but not `domain`
|
||||
|
||||
### Bounds and multipliers (`{}`, `*`, `+`, and `?`)
|
||||
## Bounds and multipliers (`{}`, `*`, `+`, and `?`)
|
||||
|
||||
With bounds, one can denote the number of times something has to occur:
|
||||
|
||||
@@ -48,7 +48,7 @@ Example | Interpretation
|
||||
`^r-+movie` | matches only the domains with at least one dash, i.e., not `rmovie.com`
|
||||
`^a?b+` | matches domains like `abbbb.com` (zero or one `a` at the beginning followed by one or more `b`)
|
||||
|
||||
### Character groups (`[]`)
|
||||
## Character groups (`[]`)
|
||||
|
||||
With character groups, a set of characters can be matched:
|
||||
|
||||
@@ -65,7 +65,7 @@ Character group | Interpretation
|
||||
|
||||
Bracket expressions are an exception to the character escape rule. Inside them, all special characters, including the backslash (`\`), lose their special powers, i.e. they match themselves exactly. Furthermore, to include a literal `]` in the list, make it the first character (like `[]]` or `[^]]` if negated). To include a literal `-`, make it the first or last character, or the second endpoint of a range (e.g. `[a-z-]` to match `a` to `z` and `-`).
|
||||
|
||||
### Groups (`()`)
|
||||
## Groups (`()`)
|
||||
|
||||
Using groups, we can enclose regular expressions, they are most powerful when combined with bounds or multipliers (see also alternations below).
|
||||
|
||||
@@ -75,7 +75,7 @@ Example | Interpretation
|
||||
`(abc)*` | matches zero or more copies of `abc` like `abcabc` but not `abcdefabc`
|
||||
`(abc){1,3}` | matches one, two or three copies of `abc`: `abc`, `abcabc`, `abcabcabc` but nothing else
|
||||
|
||||
### Alternations (`|`)
|
||||
## Alternations (`|`)
|
||||
|
||||
Alternations can be used as an "or" operator in regular expressions.
|
||||
|
||||
@@ -85,7 +85,7 @@ Example | Interpretation
|
||||
`domain(a|b)\.com` | matches `domaina.com` and `domainb.com` but not `domain.com` or `domainx.com`
|
||||
`domain(a|b)*\.com` | matches `domain.com`, `domainaaaa.com` `domainbbb.com` but not `domainab.com` (any number of `a` or `b` in between `domain` and `.com`)
|
||||
|
||||
### Character classes (`[:class:]`)
|
||||
## Character classes (`[:class:]`)
|
||||
|
||||
In addition to character groups, there are also some special character classes available, such as
|
||||
|
||||
@@ -97,11 +97,11 @@ Character class | Group equivalent | Interpretation
|
||||
`[:alpha:]` | `[A-Za-z]` | matches alphabetic characters
|
||||
`[:alnum:]` | `[A-Za-z0-9]` | matches alphabetic characters and digits
|
||||
|
||||
## Advanced examples
|
||||
# Advanced examples
|
||||
|
||||
After going through our quick tutorial, we provide some more advances examples so you can test your knowledge.
|
||||
|
||||
### Block domain with only numbers
|
||||
## Block domain with only numbers
|
||||
|
||||
```
|
||||
^[0-9][^a-z]+\.((com)|(edu))$
|
||||
@@ -117,7 +117,7 @@ Blocks domains containing only numbers (no letters) and ending in `.com` or `.ed
|
||||
|
||||
A domain name shall not start or end with a dash but can contain any number of them. It must be followed by a TLD (we assume a valid TLD length of two to seven characters)
|
||||
|
||||
## Cheatsheet
|
||||
# Cheatsheet
|
||||
|
||||
Expression | Meaning | Example
|
||||
------------ | ------------- | -----------
|
||||
|
||||
@@ -6,7 +6,7 @@ If you want to protect your - unencrypted by default - DNS requests from easily
|
||||
|
||||
If you got spare resources consider [running a Tor Relay](https://www.torproject.org/docs/tor-doc-relay.html.en) (or [Exit](https://blog.torproject.org/tips-running-exit-node)) Node to contribute back to the Tor Network. The default installation doesn't do either of these. And/Or consider [donating](https://donate.torproject.org).
|
||||
|
||||
***
|
||||
---
|
||||
|
||||
### ⚠️ Warnings & Considerations
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ Point your browser to use your Pi-hole IP or Hostname (e.g. `pi.hole`) and `Port
|
||||
|
||||
If you want to access .onion addresses with this kind of setup you have to activate [Transparent Access to Tor Hidden Services](https://www.grepular.com/Transparent_Access_to_Tor_Hidden_Services) on the Pi-hole host.
|
||||
|
||||
***
|
||||
---
|
||||
|
||||
#### Notes
|
||||
|
||||
|
||||
@@ -52,7 +52,7 @@ Finally, reject access from anywhere else (i.e. if no rule has matched up to thi
|
||||
iptables -P INPUT DROP
|
||||
```
|
||||
|
||||
###### Blocking HTTPS advertisement assets
|
||||
##### Blocking HTTPS advertisement assets
|
||||
|
||||
Since you're `:head-desk:`ing with `iptables`, you can also use this opportunity to block HTTPS advertisements to [improve blocking ads that are loaded via HTTPS](https://discourse.pi-hole.net/t/why-do-some-sites-take-forever-to-load-when-using-pi-hole-for-versions-v4-0/3654/4) and also deal with QUIC.
|
||||
|
||||
|
||||
@@ -4,9 +4,13 @@ description: Brief overview of Pi-hole
|
||||
last_updated: Thur May 02 01:00:00 2019 UTC
|
||||
---
|
||||
|
||||
<p align="center">
|
||||
<a href="https://pi-hole.net"><img src="https://pi-hole.github.io/graphics/Vortex/Vortex_with_text.png" width="150" height="255" alt="Pi-hole"></a><br/>
|
||||
<b>Network-wide ad blocking via your own Linux hardware</b><br/>
|
||||
<p style="text-align: center;">
|
||||
<a href="https://pi-hole.net">
|
||||
<img src="https://pi-hole.github.io/graphics/Vortex/Vortex_with_text.png" width="150" height="255" alt="Pi-hole">
|
||||
</a>
|
||||
<br>
|
||||
<strong>Network-wide ad blocking via your own Linux hardware</strong>
|
||||
<br>
|
||||
</p>
|
||||
|
||||
The Pi-hole[®](https://pi-hole.net/trademark-rules-and-brand-guidelines/) is a [DNS sinkhole](https://en.wikipedia.org/wiki/DNS_Sinkhole) that protects your devices from unwanted content, without installing any client-side software.
|
||||
@@ -22,7 +26,7 @@ The Pi-hole[®](https://pi-hole.net/trademark-rules-and-brand-guidelines/) is a
|
||||
- **Modern**: blocks ads over both IPv4 and IPv6
|
||||
- **Free**: open source software which helps ensure _you_ are the sole person in control of your privacy
|
||||
|
||||
-----
|
||||
---
|
||||
|
||||
## Pi-hole is free, but powered by your support
|
||||
|
||||
|
||||
@@ -6,12 +6,14 @@ Those who want to get started quickly and conveniently, may install Pi-hole usin
|
||||
curl -sSL https://install.pi-hole.net | bash
|
||||
```
|
||||
|
||||
<!-- markdownlint-disable code-block-style -->
|
||||
!!! info
|
||||
[Piping to `bash` is a controversial topic](https://pi-hole.net/2016/07/25/curling-and-piping-to-bash), as it prevents you from [reading code that is about to run](https://github.com/pi-hole/pi-hole/blob/master/automated%20install/basic-install.sh) on your system.
|
||||
|
||||
If you would prefer to review the code before installation, we provide these alternative installation methods.
|
||||
<!-- markdownlint-enable code-block-style -->
|
||||
|
||||
#### Alternative 1: Clone our repository and run
|
||||
### Alternative 1: Clone our repository and run
|
||||
|
||||
```bash
|
||||
git clone --depth 1 https://github.com/pi-hole/pi-hole.git Pi-hole
|
||||
@@ -19,7 +21,7 @@ cd "Pi-hole/automated install/"
|
||||
sudo bash basic-install.sh
|
||||
```
|
||||
|
||||
#### Alternative 2: Manually download the installer and run
|
||||
### Alternative 2: Manually download the installer and run
|
||||
|
||||
```bash
|
||||
wget -O basic-install.sh https://install.pi-hole.net
|
||||
|
||||
292
package-lock.json
generated
Normal file
292
package-lock.json
generated
Normal file
@@ -0,0 +1,292 @@
|
||||
{
|
||||
"name": "docs",
|
||||
"version": "1.0.0",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
"argparse": {
|
||||
"version": "1.0.10",
|
||||
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
|
||||
"integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"sprintf-js": "~1.0.2"
|
||||
}
|
||||
},
|
||||
"balanced-match": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
|
||||
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
|
||||
"dev": true
|
||||
},
|
||||
"brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"balanced-match": "^1.0.0",
|
||||
"concat-map": "0.0.1"
|
||||
}
|
||||
},
|
||||
"commander": {
|
||||
"version": "2.9.0",
|
||||
"resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz",
|
||||
"integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"graceful-readlink": ">= 1.0.0"
|
||||
}
|
||||
},
|
||||
"concat-map": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
||||
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
|
||||
"dev": true
|
||||
},
|
||||
"deep-extend": {
|
||||
"version": "0.5.1",
|
||||
"resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz",
|
||||
"integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==",
|
||||
"dev": true
|
||||
},
|
||||
"entities": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz",
|
||||
"integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==",
|
||||
"dev": true
|
||||
},
|
||||
"esprima": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
|
||||
"integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
|
||||
"dev": true
|
||||
},
|
||||
"fs.realpath": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
|
||||
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
|
||||
"dev": true
|
||||
},
|
||||
"get-stdin": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz",
|
||||
"integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=",
|
||||
"dev": true
|
||||
},
|
||||
"glob": {
|
||||
"version": "7.1.6",
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
|
||||
"integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"fs.realpath": "^1.0.0",
|
||||
"inflight": "^1.0.4",
|
||||
"inherits": "2",
|
||||
"minimatch": "^3.0.4",
|
||||
"once": "^1.3.0",
|
||||
"path-is-absolute": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"graceful-readlink": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz",
|
||||
"integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=",
|
||||
"dev": true
|
||||
},
|
||||
"ignore": {
|
||||
"version": "5.1.4",
|
||||
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz",
|
||||
"integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==",
|
||||
"dev": true
|
||||
},
|
||||
"inflight": {
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
|
||||
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"once": "^1.3.0",
|
||||
"wrappy": "1"
|
||||
}
|
||||
},
|
||||
"inherits": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
|
||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
|
||||
"dev": true
|
||||
},
|
||||
"ini": {
|
||||
"version": "1.3.5",
|
||||
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
|
||||
"integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
|
||||
"dev": true
|
||||
},
|
||||
"js-yaml": {
|
||||
"version": "3.13.1",
|
||||
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
|
||||
"integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"argparse": "^1.0.7",
|
||||
"esprima": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"jsonc-parser": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.2.0.tgz",
|
||||
"integrity": "sha512-4fLQxW1j/5fWj6p78vAlAafoCKtuBm6ghv+Ij5W2DrDx0qE+ZdEl2c6Ko1mgJNF5ftX1iEWQQ4Ap7+3GlhjkOA==",
|
||||
"dev": true
|
||||
},
|
||||
"linkify-it": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz",
|
||||
"integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"uc.micro": "^1.0.1"
|
||||
}
|
||||
},
|
||||
"lodash.differencewith": {
|
||||
"version": "4.5.0",
|
||||
"resolved": "https://registry.npmjs.org/lodash.differencewith/-/lodash.differencewith-4.5.0.tgz",
|
||||
"integrity": "sha1-uvr7yRi1UVTheRdqALsK76rIVLc=",
|
||||
"dev": true
|
||||
},
|
||||
"lodash.flatten": {
|
||||
"version": "4.4.0",
|
||||
"resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz",
|
||||
"integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=",
|
||||
"dev": true
|
||||
},
|
||||
"markdown-it": {
|
||||
"version": "10.0.0",
|
||||
"resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-10.0.0.tgz",
|
||||
"integrity": "sha512-YWOP1j7UbDNz+TumYP1kpwnP0aEa711cJjrAQrzd0UXlbJfc5aAq0F/PZHjiioqDC1NKgvIMX+o+9Bk7yuM2dg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"argparse": "^1.0.7",
|
||||
"entities": "~2.0.0",
|
||||
"linkify-it": "^2.0.0",
|
||||
"mdurl": "^1.0.1",
|
||||
"uc.micro": "^1.0.5"
|
||||
}
|
||||
},
|
||||
"markdownlint": {
|
||||
"version": "0.18.0",
|
||||
"resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.18.0.tgz",
|
||||
"integrity": "sha512-nQAfK9Pbq0ZRoMC/abNGterEnV3kL8MZmi0WHhw8WJKoIbsm3cXGufGsxzCRvjW15cxe74KWcxRSKqwplS26Bw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"markdown-it": "10.0.0"
|
||||
}
|
||||
},
|
||||
"markdownlint-cli": {
|
||||
"version": "0.21.0",
|
||||
"resolved": "https://registry.npmjs.org/markdownlint-cli/-/markdownlint-cli-0.21.0.tgz",
|
||||
"integrity": "sha512-gvnczz3W3Wgex851/cIQ/2y8GNhY+EVK8Ael8kRd8hoSQ0ps9xjhtwPwMyJPoiYbAoPxG6vSBFISiysaAbCEZg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"commander": "~2.9.0",
|
||||
"deep-extend": "~0.5.1",
|
||||
"get-stdin": "~5.0.1",
|
||||
"glob": "~7.1.2",
|
||||
"ignore": "~5.1.4",
|
||||
"js-yaml": "~3.13.1",
|
||||
"jsonc-parser": "~2.2.0",
|
||||
"lodash.differencewith": "~4.5.0",
|
||||
"lodash.flatten": "~4.4.0",
|
||||
"markdownlint": "~0.18.0",
|
||||
"markdownlint-rule-helpers": "~0.6.0",
|
||||
"minimatch": "~3.0.4",
|
||||
"rc": "~1.2.7"
|
||||
}
|
||||
},
|
||||
"markdownlint-rule-helpers": {
|
||||
"version": "0.6.0",
|
||||
"resolved": "https://registry.npmjs.org/markdownlint-rule-helpers/-/markdownlint-rule-helpers-0.6.0.tgz",
|
||||
"integrity": "sha512-LiZVAbg9/cqkBHtLNNqHV3xuy4Y2L/KuGU6+ZXqCT9NnCdEkIoxeI5/96t+ExquBY0iHy2CVWxPH16nG1RKQVQ==",
|
||||
"dev": true
|
||||
},
|
||||
"mdurl": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
|
||||
"integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=",
|
||||
"dev": true
|
||||
},
|
||||
"minimatch": {
|
||||
"version": "3.0.4",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
|
||||
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"brace-expansion": "^1.1.7"
|
||||
}
|
||||
},
|
||||
"minimist": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
|
||||
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
|
||||
"dev": true
|
||||
},
|
||||
"once": {
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
|
||||
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"wrappy": "1"
|
||||
}
|
||||
},
|
||||
"path-is-absolute": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
|
||||
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
|
||||
"dev": true
|
||||
},
|
||||
"rc": {
|
||||
"version": "1.2.8",
|
||||
"resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
|
||||
"integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"deep-extend": "^0.6.0",
|
||||
"ini": "~1.3.0",
|
||||
"minimist": "^1.2.0",
|
||||
"strip-json-comments": "~2.0.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"deep-extend": {
|
||||
"version": "0.6.0",
|
||||
"resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
|
||||
"integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"sprintf-js": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
|
||||
"integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
|
||||
"dev": true
|
||||
},
|
||||
"strip-json-comments": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
|
||||
"integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
|
||||
"dev": true
|
||||
},
|
||||
"uc.micro": {
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz",
|
||||
"integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==",
|
||||
"dev": true
|
||||
},
|
||||
"wrappy": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
||||
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
}
|
||||
25
package.json
Normal file
25
package.json
Normal file
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"name": "docs",
|
||||
"private": true,
|
||||
"version": "1.0.0",
|
||||
"description": "Source for the official Pi-hole documentation",
|
||||
"main": "",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/pi-hole/docs.git"
|
||||
},
|
||||
"keywords": [],
|
||||
"author": "",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"bugs": {
|
||||
"url": "https://github.com/pi-hole/docs/issues"
|
||||
},
|
||||
"homepage": "https://docs.pi-hole.net/",
|
||||
"scripts": {
|
||||
"markdownlint": "markdownlint \"**/*.md\" -i \"**/node_modules/**\"",
|
||||
"test": "npm run markdownlint"
|
||||
},
|
||||
"devDependencies": {
|
||||
"markdownlint-cli": "^0.21.0"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user