65 lines
1.6 KiB
PowerShell
65 lines
1.6 KiB
PowerShell
try {
|
|
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
|
|
} catch {
|
|
Write-Error "Outdated operating systems are not supported."
|
|
Exit 1
|
|
}
|
|
|
|
$file = 'aria2c.exe'
|
|
$url = 'https://uupdump.net/misc/aria2c.exe';
|
|
$hash = 'b9cd71b275af11b63c33457b0f43f2f2675937070c563e195f223efd7fa4c74b';
|
|
|
|
function Test-Existence {
|
|
param (
|
|
[String]$File
|
|
)
|
|
|
|
return Test-Path -PathType Leaf -Path "files\$File"
|
|
}
|
|
|
|
function Retrieve-File {
|
|
param (
|
|
[String]$File,
|
|
[String]$Url
|
|
)
|
|
|
|
Write-Host -BackgroundColor Black -ForegroundColor Yellow "Downloading ${File}..."
|
|
Invoke-WebRequest -UseBasicParsing -Uri $Url -OutFile "files\$File" -ErrorAction Stop
|
|
}
|
|
|
|
function Test-Hash {
|
|
param (
|
|
[String]$File,
|
|
[String]$Hash
|
|
)
|
|
|
|
Write-Host -BackgroundColor Black -ForegroundColor Cyan "Verifying ${File}..."
|
|
|
|
$fileHash = (Get-FileHash -Path "files\$File" -Algorithm SHA256 -ErrorAction Stop).Hash
|
|
return ($fileHash.ToLower() -eq $Hash)
|
|
}
|
|
|
|
if((Test-Existence -File $file) -and (Test-Hash -File $file -Hash $hash)) {
|
|
Write-Host -BackgroundColor Black -ForegroundColor Green "Ready."
|
|
Exit 0
|
|
}
|
|
|
|
if(-not (Test-Path -PathType Container -Path "files")) {
|
|
$null = New-Item -Path "files" -ItemType Directory
|
|
}
|
|
|
|
try {
|
|
Retrieve-File -File $file -Url $url
|
|
} catch {
|
|
Write-Host "Failed to download $file"
|
|
Write-Host $_
|
|
Exit 1
|
|
}
|
|
|
|
if(-not (Test-Hash -File $file -Hash $hash)) {
|
|
Write-Error "$file appears to be tampered with"
|
|
Exit 1
|
|
}
|
|
|
|
Write-Host -BackgroundColor Black -ForegroundColor Green "Ready."
|