Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/missdeer/ads

CoreDNS plugin to block ads. Inspried by PiHole.
https://github.com/missdeer/ads

Last synced: 26 days ago
JSON representation

CoreDNS plugin to block ads. Inspried by PiHole.

Awesome Lists containing this project

README

        

# CoreDNS - ads Plugin

[![Build Status](https://cloud.drone.io/api/badges/c-mueller/ads/status.svg)](https://cloud.drone.io/c-mueller/ads)
[![codecov](https://codecov.io/gh/c-mueller/ads/branch/master/graph/badge.svg)](https://codecov.io/gh/c-mueller/ads)

DNS AdBlocker plugin for CoreDNS.

## IMPORTANT! - `ads` has been archived

The project is no longer maintained, due to the lack of free time. I have therefore archived it. Feel free to fork it.

## Compiling

First get the CoreDNS source code by running, after you cloned this repository into the proper path in your `GOPATH`
```bash
go get github.com/coredns/coredns
```

Then navigate to the coredns directory
```bash
cd $(go env GOPATH)/src/github.com/coredns/coredns
```

Next update the `plugin.cfg` in the root of the coredns repository as follows

```bash
sed -i 's|loadbalance:loadbalance|ads:github.com/c-mueller/ads\nloadbalance:loadbalance|g' plugin.cfg
```

while I would suggest having the `ads` plugin before the `cache` plugin because it will
cause the changes in the blocklists to be applied instantly. However the overall performance of
the DNS server could degrade when having many regex rules. In that case I recommend putting the
plugin before the `hosts` plugin:

```bash
sed -i 's|hosts:hosts|ads:github.com/c-mueller/ads\nhosts:hosts|g' plugin.cfg
```

Finally run `make` to build CoreDNS with the `ads` plugin

The releases section also contains binaries of the latest CoreDNS with the
ads plugin. These get built automatically using drone. Once they have been triggered.

### Building development binaries

Building untagged code is complicated. The simplest way i've stumbled upon for CoreDNS is mimicing a in tree plugin using symlinks.

For this you have to create a symlink to the `ads` repository in the `plugins/` folder using a command similar to the following:
Assuming you are in the `plugins/` directory

```
ln -s ~/go/src/github.com/c-mueller/ads ads
```

Make sure to replace `~/go/src/github.com/c-mueller/ads` with the proper path to the `ads` repo.

Next we have to insert the plugin into the `plugin.cfg`. here we use the following command, instead of the one above:
```
sed -i 's|loadbalance:loadbalance|ads:ads\nloadbalance:loadbalance|g' plugin.cfg
```

Before running make in the CoreDNS repo we have to make sure the `ads` repo does not contain a `go.mod` file. to do this we rename it to `go.mod.old`.
If you want to continue developing using Goland for example. The file should be renamed again to make sure syntax highlighting works.

#### A note on `go modules`

To prevent version conflicts between CoreDNS and the ads plugin it is important to keep the
`go.mod` file empty or if dependencies have been added that are not used by coreDNS only these should
be added in the `go.mod` file on master.
For reference the empty `go.mod` file looks like this:
```
module github.com/c-mueller/ads

go 1.12
```

The go sum file should get deleted.

Because this strategy will make development annoying you can run `go mod tidy` to regenerate a proper `go,mod` file.

## Configuring

The following shows how to use the ads plugin with default parameters, if you want to configure it further take a look at
[This Document](docs/configuration.md).

### Default settings

Running the `ads` plugin with all defaults is done by just adding the `ads` keyword to your Corefile.

For example:
```
.:53 {
ads
forward . 1.1.1.1
log
errors
}
```

## License

This plugin is licensed under Apache 2 License. See [LICENSE](LICENSE) for more information.