-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathUpdateLists.ps1
171 lines (144 loc) · 6.35 KB
/
UpdateLists.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
<#
.NAME
AdGuardList Updatelist
.SYNOPSIS
Updatet die zusammen gefasten Listen
.DESCRIPTION
Diese Script läd sich aus div. Listen die zu Blockierenden Domains herrunter und Speichert diese in einer gorßen Liste je Kategorie.
.FUNCTIONALITY
Nach dem Herrunterladen der Daten, werden diese in eine Datei geladen und anschliesend auf Dubletten überprüft, so kommt am ende eine große Liste die Möglichst optimiert ist raus.
.NOTES
Author: nox309
Email: [email protected]
Git: https://github.com/nox309
Version: 1.0
DateCreated: 202/05/01
.EXAMPLE
.\UpdateLists.ps1 -Autoupdate $true -debug $true
.LINK
https://github.com/nox309/AdGuardList
#>
#---------------------------------------------------------[Initialisations]--------------------------------------------------------
# Definition der Parameter
Param(
[bool]$Autoupdate = $False,
[bool]$debug = $False
)
$ErrorActionPreference = "SilentlyContinue"
$paths = @{
"Tracking" = ".\Listen\Tracking.txt"
"Shops" = ".\Listen\FakeshopsAboFallen.txt"
"Jugendschutz" = ".\Listen\Jugendschutz.txt"
"Sonstiges" = ".\Listen\Sonstiges.txt"
"Werbung" = ".\Listen\Werbung.txt"
"Malware" = ".\Listen\Malware.txt"
"PuDS" = ".\Listen\Phishing_Domain-Squatting.txt"
}
$qPaths = @{
"Shops" = ".\Quellen\Fakeshops_AboFallen.txt"
"Tracking" = ".\Quellen\Tracking.txt"
"Jugendschutz" = ".\Quellen\Jugendschutz.txt"
"Sonstiges" = ".\Quellen\Sonstiges.txt"
"Werbung" = ".\Quellen\Werbung.txt"
"Malware" = ".\Quellen\Malware.txt"
"PuDS" = ".\Quellen\Fakeshops_AboFallen.txt"
}
$disclaimer = "
#
# Alle Listen des Projekts AdGuardList (https://github.com/nox309/AdGuardList) dienen nur einer besseren Übersicht.
# Die Domains in diesen Listen werden nicht überprüft, sie fassen nur div. Listen aus Internet Themenbasiert zusammen
# und stammen aus verschiedenen Quellen. Die Quell Listen die die Basis für dieses Projekt dienen finden sie unter:
# https://github.com/nox309/AdGuardList/tree/main/Quellen
# oder
# https://github.com/nox309/AdGuardList/blob/main/Quellen/Listenuebersicht.md
#
"
$logpath = ".\Update.log"
New-Variable -Name sum -Option AllScope -Value 0
function Write-Log {
[CmdletBinding()]
param(
[Parameter()]
[ValidateNotNullOrEmpty()]
[string]$Message,
[parameter(Mandatory=$false)]
[bool]$console,
[Parameter()]
[ValidateNotNullOrEmpty()]
[ValidateSet('Information','Warning','Error','Debug')]
[string]$Severity = 'Information'
)
$time = (get-date -Format yyyyMMdd-HH:mm:ss)
if (!(Test-Path $logpath)) {
"Timestamp | Severity | Message" | Out-File -FilePath $logpath -Append -Encoding utf8
"$Time | Information | Log started" | Out-File -FilePath $logpath -Append -Encoding utf8
}
if ($console) {
if ($Severity -eq "Information") {
$color = "Gray"
}
if ($Severity -eq "Warning") {
$color = "Yellow"
}
if ($Severity -eq "Error") {
$color = "Red"
}
if ($Severity -eq "Debug") {
$color = "Green"
}
Write-Host -ForegroundColor $color "$Time | $Severity | $Message"
}
"$Time | $Severity | $Message" | Out-File -FilePath $logpath -Append -Encoding utf8
}
Write-Log -Message "Listen Update wird gestatet mit Git Auto Update = $Autoupdate" -Severity Information -console $true
Write-Log -Message "Löschen aller Listen" -Severity Information -console $debug
Remove-Item ".\Listen\*"
Write-Log -Message "Abrufen der URLs beginnt" -Severity Information -console $debug
# Abrufen der URLs jeder Kategorie
foreach ($category in $paths.Keys) {
Write-Log -Message "Beginne mit dem Update von $category" -Severity Information -console $true
# Laden der URLs aus der Textdatei
$urls = Get-Content $qPaths[$category]
# Abrufen der Sperrlisten
foreach ($url in $urls) {
# Herunterladen des Inhalts der URL
Write-Log -Message "Abrufen der URL: $url" -Severity Information -console $debug
$content = Invoke-WebRequest -Uri $url -UseBasicParsing
# Speichern des Inhalts in einer Datei
$content.Content | Out-File -FilePath $paths[$category] -Append -Encoding utf8
Write-Log -Message "Inhalte von $url in $($paths[$category]) geschrieben" -Severity Information -console $debug
}
}
foreach ($sourcepath in $paths.Values) {
Write-Log -Message "Starte Optimierung von $sourcepath " -Severity Information -console $true
# Lesen der URLs aus der Datei in eine Liste
$urls = (Get-Content $sourcepath) -replace '^#.*',""
# Entfernen der doppelte URLs und speichern der Ergebnisse in einer neuen Liste
$uniqueUrls = $urls | Sort-Object -Unique
# Überschreiben Sie die ursprüngliche Datei mit den eindeutigen URLs
$disclaimer | Out-File -FilePath $sourcepath -Encoding utf8
Write-Log -Message "Disclamer zu $sourcepath hinzugefügt" -Severity Information -console $debug
Write-Log -Message "Schreibe die Optimirten URLs in $sourcepath " -Severity Information -console $debug
$uniqueUrls | Out-File -FilePath $sourcepath -Append -Encoding utf8
# Berechnen der Anzahl der gelöschten URLs
$deletedUrlsCount = $urls.Count - $uniqueUrls.Count
$count = $uniqueUrls.Count
$sum = $sum + $count
# Rückgabe der Anzahl der gelöschten URLs
Write-Log -Message "Die Liste $sourcepath enthält $($uniqueUrls.Count) URLs" -Severity Information -console $debug
Write-Log -Message "Optimisirung abgeschlossen, in $sourcepath es wurden $deletedUrlsCount Doppelte URLs gefunden" -Severity Information -console $true
}
Write-Log -Message "Download der Listen abgeschlossen" -Severity Information -console $true
Write-Log -Message "Alle Listen haben zusammen $sum URLs" -Severity Information -console $true
$AUT = (get-date -Format yyyyMMdd)
"| $AUT | Auto Update - Anzahl der URLs $sum|" | Out-File -FilePath ".\README.md" -Append -Encoding utf8
if ($Autoupdate) {
Write-Log -Message "Git Autoupdate wird ausgeführt" -Severity Information -console $true
git add .
git commit -m "Auto Update"
git push
Write-Log -Message "Git Autoupdate abgeschlossen alles auf dem aktuellen Stand" -Severity Information -console $true
}
else {
Write-Log -Message "Autoupdate übersprungen" -Severity Warning -console $debug
}