AdGuard Home et les services bloqués

Hell 0 world,

Petit billet rapide sur comment ajouter des services dans la page « services bloqués » de AdGuard Home.

Docker AdGuard

Pour ma part AdGuard Home est dans une instance Docker avec comme conf :

version: '3.8'
services:
  adguard:
    container_name: adguardhome
    image: adguard/adguardhome
    environment:
      - TZ=Europe/Paris
    volumes:
      - ./work:/opt/adguardhome/work
      - ./conf:/opt/adguardhome/conf
    ports:
      - 53:53/tcp  # port DNS
      - 53:53/udp  # port DNS
      - 5151:80/tcp  # port HTTP
      - 853:853/tcp  
      - 5152:3000/tcp 
    restart: unless-stopped

Mon docker à cette tête :

root@virgile:/disk/DOCKER/adguard# find 
.
./work
./work/data
./work/data/sessions.db
./work/data/stats.db
./work/data/filters
./work/data/filters/2.txt
./work/data/filters/1.txt
./work/data/filters/4.txt
./work/data/querylog.json
./docker-compose.ym
./conf
./conf/AdGuardHome.yaml
./AdGuardHome

Modif code Adguard Home

Je voudrais rajouter à la page Services bloqués d’autre « service » de mon choix.

Du coup j’ai repéré dans le code ou il fallait faire les modifs :

  • blocked.go
  • constants.js

Il suffit donc de récupérer le code modifié les 2 fichiers compilé et remplacé le fichier ./AdGuardHome mon docker.

Dans le fichier bloked.go j’ai ajouté les lignes ci-dessous après « var serviceRulesArray = []svc{ » :

{"searchengine", []string{
    "||bing.com^",
    "||yahoo.co.uk^",
    "||aol.co.uk^",
    "||ask.com^",
    "||excite.com^",
    "||bing.com^",
    "||yahoo.co.uk^",
    "||aol.co.uk^",
    "||ask.com^",
    "||excite.com^",
    "||google.com^",
}},

Et dans constants.js après « export const SERVICES = [ » j’ai ajouté :

    {
        id: 'searchengine',
        name: 'Moteur de rechreche',
    },

Docker de compilation nodejs npm yarn go

Du coup … J’ai fait un autre docker pour compiler le tout 🙂

FROM ubuntu
MAINTAINER Guillaume Astier Ruiz "guillaume@tuxme.net"

RUN apt -y  update
RUN apt -y install nodejs  
RUN apt -y install npm 
 RUN npm update
 RUN npm install webpack -g 
 RUN npm config set registry http://registry.npmjs.org/
RUN npm install --global yarn
RUN apt -y install git curl
RUN  curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
     echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list \
RUN apt update &&  apt -y install yarn  wget
RUN mkdir temp
RUN cd /temp && wget https://dl.google.com/go/go1.15.6.linux-amd64.tar.gz && tar -xvf go1.15.6.linux-amd64.tar.gz
RUN mv /temp/go /bin/ 
RUN echo 'PATH=${PATH}:/bin/go/bin/' >> /root/.profile

RUN git clone https://github.com/AdguardTeam/AdGuardHome
COPY blocked.go  /AdGuardHome//internal/dnsfilter/blocked.go
COPY constants.js /AdGuardHome/client/src/helpers/constants.js
RUN mkdir /res/
COPY build.sh /

Le fichier de build :

#!/bin/bash
export PATH=${PATH}:/bin/go/bin/

cd /AdGuardHome/
make init
make &> /res/log.txt
cp AdGuardHome /res/

Donc dans le docker de compilation on a :

root@virgile:~/git# ls -l docker-compil-AdGuardHome
total 21256
-rw-r--r-- 1 root root     7963 mars   7 09:12 blocked.go
-rwxr-xr-x 1 root root      115 mars   7 11:21 build.sh
-rw-r--r-- 1 root root    16233 mars   6 23:38 constants.js
-rw-r--r-- 1 root root      944 mars   7 09:33 Dockerfile
drwxr-xr-x 2 root root     4096 mars   7 09:34 res

Compilation et restart

Y a plus qu’a ….

docker run   -v $(pwd)/res/:/res  -ti compiladguard /build.sh

Pour regarder les logs de compil :

tail -f /res/log.txt

Copier le binaire

cp docker-compil-AdGuardHome/res/AdGuardHome /disk/DOCKER/adguard/
# remplacer /disk/DOCKER/adguard/ par le path de votre docker adguard :)

On relance le docker-compose de adguard home :

root@virgile:/disk/DOCKER/adguard# docker-compose restart

Et voilà … :