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")
}
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
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.