Pi-hole temporär deaktivieren (DNS ändern)

Veröffentliche deine funktionierenden Skripte und Funktionen

Moderator: jNizM

Bentschi
Posts: 22
Joined: 02 Oct 2013, 18:45

Pi-hole temporär deaktivieren (DNS ändern)

08 Oct 2019, 20:57

Hallo
Lange ists her, viel ist passiert die letzen, ..., ähm, ... 10 Jahre oder so?
Viele kennen mich vielleicht gar nicht mehr hier.
Aber ich hab mal wieder was gemacht wofür ich dachte dass AHK perfekt ist.

Also, ich bin in Besitz eines Raspberry PI 3 worauf ich Pi-hole laufen hab.
Pi-hole ist sozusagen ein DNS server im lokalen LAN mit dem es möglich ist zB Werbung zu blocken.
Hin und wieder kommt es vor dass Pi-hole was blockt das ich sehen will.
Dafür hat Pi-hole zwar selbst ne "Whitelist" die bearbeitet werden kann, allerdings will ich hin und wieder nur temporär etwas nicht blocken.

Mein Skript ist gedacht dass das Icon in der Taskleiste Pi-hole aktiviert bzw. deaktiviert mit nur einem klick, oder temporär für 10 minuten oder eine Stunde.
Dabei wird einfach nur die adresse des DNS servers für die gewählte Verbindung geändert.
Es ist simpler als es sich anhört... hier das Script dazu.

Code: Select all

#persistent
#SingleInstance Force
SetWorkingDir, %A_ScriptDir%
Menu, Tray, Icon, pihole-i.ico
if (!A_IsAdmin)
{
	; Changing DNS settings requires admin rights
	Run *RunAs "%A_ScriptFullPath%"
	ExitApp
}

iniFile := A_ScriptDir "\config.ini"
iniSection := "SwitcherConfig"

IniRead, connection, % iniFile, % iniSection, connection
IniRead, default, % iniFile, % iniSection, defaultDNS
IniRead, defaultAlt, % iniFile, % iniSection, defaultAltDNS
IniRead, pihole, % iniFile, % iniSection, piholeDNS
IniRead, piholeAlt, % iniFile, % iniSection, piholeAltDNS

if (connection=="ERROR" || default=="ERROR" || defaultAlt=="ERROR" || pihole=="ERROR" || piholeAlt=="ERROR")
{
	MsgBox, Configuration file "%iniFile%" invalid!
	ExitApp
}

if (A_IsCompiled)
	Menu, Tray, NoStandard
Menu, Tray, Tip, Pi-hole
Menu, Tray, Click, 1
Goto, Activate
return

Activate:
SetTimer, Activate, Off
Menu, Tray, Icon, pihole-a.ico
Menu, Tray, DeleteAll
Menu, Tray, Add, Suspend (10 minutes), Suspend10m
Menu, Tray, Add, Suspend (1 hour), Suspend60m
Menu, Tray, Add, Deactivate, Deactivate
Menu, Tray, Default, Deactivate
setDNS(connection, pihole, piholeAlt)
return

Suspend10m:
SetTimer, Activate, Off
SetTimer, Activate, % (10*60*1000)
Goto, Deactivate
return

Suspend60m:
SetTimer, Activate, Off
SetTimer, Activate, % (60*60*1000)
Goto, Deactivate
return

Deactivate:
SetTimer, Activate, Off
Menu, Tray, Icon, pihole-i.ico
Menu, Tray, DeleteAll
Menu, Tray, Add, Activate, Activate
Menu, Tray, Default, Activate
setDNS(connection, default, defaultAlt)
return

setDNS(connection, dns, altDns)
{
	RunWait, netsh int ipv4 set dns name="%connection%" static %dns% primary validate=no, , Hide
	
	if (altDns)
		RunWait, netsh int ipv4 add dns name="%connection%" %altDns% index=2, , Hide
	DllCall("dnsapi.dll\DnsFlushResolverCache")
}
Die konfigurationsdatei dafür muss für jeden selbst angepasst werden und sieht so aus:

Code: Select all

[SwitcherConfig]

#The name of the connection to change e.g. Local Area Connection
connection = LAN-Verbindung

#The default DNS server
defaultDNS=1.1.1.1

#The default alternate DNS server
defaultAltDNS=8.8.8.8

#The DNS server to use when active
piholeDNS=192.168.178.42

#The alternate DNS server to use when active
piholeAltDNS=1.1.1.1
In die attachments hab ich noch alles zusammen mit Icons in eine Zip gepackt.
Für mich habe ich eine verknüpfung des kompilierten Skripts in den autostart gelegt.
Beachte bitte dass dieses Skript adminrechte benötigt damit es funktioniert, und das Skript versucht diese Rechte zu erlangen. Mit der Standardeinstellung von Windows wird jedes mal beim start des Skripts gefragt ob das Skript als admin laufen darf.
Attachments
pi-hole-switch.zip
(3.35 KiB) Downloaded 25 times
User avatar
jNizM
Posts: 2530
Joined: 30 Sep 2013, 01:33
GitHub: jNizM
Contact:

Re: Pi-hole temporär deaktivieren (DNS ändern)

09 Oct 2019, 01:16

Ach dich gibts ja doch noch. Schön mal wieder was von dir zu hören. ;)

Ja mit Pi-Hole hab ich auch schon ein bisschen rumgespielt (https://github.com/jNizM/ahk_pi-hole). Bisher aber nur eine visuelle Darstellung, was auch via Webseite sichtbar ist.

Du hast übrigens auch die Möglichkeit, dass via API (https://discourse.pi-hole.net/t/pi-hole-api/1863) für eine gewisse Zeit zu deaktivieren.

Ich persönlich benutze übrigens den Quad9 (9.9.9.9) und Cloudflare (1.1.1.1) DNS-Dienst. Von Google's habe ich mir schon lange verabschiedet.
[AHK] 1.1.30.03 x64 Unicode | [WIN] 10 Pro (Version 1909) x64 | [GitHub] Profile
Donations are appreciated if I could help you
User avatar
Frosti
Posts: 265
Joined: 27 Oct 2017, 14:30
GitHub: Ixiko

Re: Pi-hole temporär deaktivieren (DNS ändern)

09 Oct 2019, 01:27

Wenn Du der WinSocket Class Bentschi bist, dann ist mir Deine Arbeit ein Begriff!
Bentschi
Posts: 22
Joined: 02 Oct 2013, 18:45

Re: Pi-hole temporär deaktivieren (DNS ändern)

09 Oct 2019, 09:15

Hallo, ja ich bin der Bentschi der unter anderem auch die WinSocket Class gemacht hat.
Ich war nicht wirklich viel aktiv in diesem neuen Forum, aber vor Jahren im alten Forum kam ich fast wöchentlich bis monatlich mit einem neuen Projekt.
Da ich jetzt eigentlich auch fast nur Linux verwende komme ich kaum dazu mit AHK was zu machen, allerdings programmiere ich immer noch gerne wenn auch nicht AHK (AHK auf Linux ist nicht wirklich brauchbar).

Ich hab auch vor kurzen mal meine Backupplatten aufgeräumt und selbstverständlich finden sich da jede menge alte skripte, teilweise unfertig, teilweise hab ich die nie veröffentlicht, und manche hab ich noch die mit dem alten Forum untergegangen sind.
Ich überlege schon seit Monaten ob ich mir mal die Arbeit machen soll und das alles zu sortieren und eventuell ne Zip fertig machen falls hier Interresse besteht.

Ok, zurück zu dem Projekt:
jNizM dein Pi-hole skript sieht toll aus, mir gefällt dass du dich an das originale layout gehalten hast.
Mit der API hab ich nicht rum gespielt... ich hab deinen Link kurz überflogen und wenn ich mit meiner annahme richtig liege dass die API Funktion das gesamte Pi-hole deaktiviert, dann ist es nicht das was ich haben will.
An meinem Pi-hole hängen 5 Geräte und ich will Pi-hole meist nur kurz für meine Windows VM ausmachen, oder für den Computer meiner Freundin.
Auf meiner Hauptmaschine auf der Manjaro Linux läuft hab ich einfach eine 2. konfiguration für das LAN angelegt, da kann ich ohne skript mit nur 2 klicks an oder aus machen.
Kurz gesagt: ich will das jeder selbst Pi-hole auf den client für sich selbst aus machen kann.

Ob Cloudflare oder Google oder sonst was... bei einem DNS dienst ist mir das ziemlich egal, die wissen nur welche domain ich besuche.
Die können ja gerne ihre Werbung dadurch an mich anpassen, da ich die sowieso mit Pi-hole und ABP blocke.
Allerdings, als ich noch in Österreich gewohnt habe, habe ich gelernt nicht den DNS service vom Provider zu verwenden, weil zum einen ist der langsamer und zum anderen gab es in Österreich Gesetze die es verbieten bestimmte Webseiten anzubieten.

Return to “Skripte und Funktionen”

Who is online

Users browsing this forum: No registered users and 2 guests