| # 2017/10/06 AcidVenom v6.1 |
| # COU |
| # : cis, av, av-clean |
| |
| param($1) |
| |
| ####################################################################### |
| #################### ###################### |
| |
| $7z = "C:\Program Files\7-Zip\7z.exe" # 7z.exe |
| $downloadpath = "C:\inetpub\wwwroot" # |
| $serverurl = "https://cdn.download.comodo.com" # Comodo |
| $inis = "5070" # |
| $proto = "10" # |
| $xx = "x32","x64" # ("x32","x64") |
| $cispacked = $True # (*.7z) ($True/$False) |
| $avpacked = $True # (*.cav.z) ($True/$False) |
| $release_notes = $True # Release Notes? ($True/$False) |
| |
| ####################################################################### |
| ################### ########################## |
| |
| $inispath = "$downloadpath\cis\download\updates\release\inis_$inis" |
| $recognizerspath = "$inispath\recognizers\proto_v$proto" |
| $updates58path = "$downloadpath\av\updates58" |
| $updatesurlpath = "$downloadpath\av\updatesurl" |
| $basespath = "$updates58path\sigs\bases" |
| $updatespath = "$updates58path\sigs\updates" |
| $urlpath = "$updatesurlpath\sigs\updates" |
| $tvlpath = "$downloadpath\av\tvl" |
| |
| $inisurl = "$serverurl/cis/download/updates/release/inis_$inis" |
| $recognizersurl = "$inisurl/recognizers/proto_v$proto" |
| $updates58url = "$serverurl/av/updates58" |
| $updatesurlurl = "$serverurl/av/updatesurl" |
| $basesurl = "$updates58url/sigs/bases" |
| $updatesurl = "$updates58url/sigs/updates" |
| $urlurl = "$updatesurlurl/sigs/updates" |
| $tvlurl = "$serverurl/av/tvl" |
| |
| ####################################################################### |
| ############### ################### |
| |
| if ($1 -eq "cis") { |
| |
| if ($cispacked -eq $True) {$packed = ".7z"} else {$packed = ""} |
| |
| # Updates |
| |
| $testinis = Test-Path $inispath |
| $testrecognizers = Test-Path $recognizerspath |
| if ($testinis -eq $False) {New-Item -ItemType Directory -path $inispath} |
| if ($testrecognizers -eq $False) {New-Item -ItemType Directory -path $recognizerspath} |
| |
| foreach ($x in $xx) { |
| Invoke-WebRequest -Uri "$inisurl/cis_update_$x.xml$packed" -OutFile "$inispath/cis_update_$x.xml$packed" |
| if ($cispacked -eq $True) {& $7z x -o"$inispath" $inispath\cis_update_$x.xml.7z -y} |
| $lines = Get-Content $inispath\cis_update_$x.xml | ? {$_ -match "<file name=" -and $_ -notmatch "\\"} |
| |
| foreach ($line in $lines) { |
| $line = $line -split " " |
| $name = $line -match "name=" |
| $name = $name -replace "name=|`"","" |
| $sha = $line -match "sha=" |
| $sha = $sha -replace "sha=|`"","" |
| $sha = $sha.toupper() |
| $src = $line -match "src=" |
| $src = $src -replace "src=|`"|>","" |
| $srcf = $src.substring(0,$src.lastindexof("/")) |
| $srcp = $src -replace "\/","\" |
| |
| $fileexist = Test-Path "$inispath\$srcp$packed" |
| $folderexist = Test-Path "$inispath\$srcf" |
| |
| if ($fileexist -eq $True) { |
| $remove = $False |
| if ($cispacked -eq $True) { |
| try { |
| $remove = $True |
| & $7z x -o"$inispath/$srcf" $inispath/$srcp.7z -y |
| } |
| catch {} |
| } |
| $hash = Get-FileHash "$inispath/$srcp" -Algorithm SHA1 |
| if ($remove -eq $True) {Remove-Item "$inispath\$srcp"} |
| if ($hash.Hash -eq $sha) {Continue} |
| } |
| if ($folderexist -eq $False) {New-Item -ItemType Directory -path "$inispath\$srcf"} |
| try {Invoke-WebRequest -Uri "$inisurl/$src$packed" -OutFile "$inispath/$srcp$packed"} |
| catch {Invoke-WebRequest -Uri "$inisurl/$src" -OutFile "$inispath/$srcp"} |
| |
| } |
| if ($cispacked -eq $True) {Remove-Item "$inispath\cis_update_$x.xml"} |
| |
| # Recognizers |
| |
| Invoke-WebRequest -Uri "$recognizersurl/cmdscope_update_$x.xml$packed" -OutFile "$recognizerspath/cmdscope_update_$x.xml$packed" |
| if ($cispacked -eq $True) {& $7z x -o"$recognizerspath" $recognizerspath\cmdscope_update_$x.xml.7z -y} |
| $lines = Get-Content $recognizerspath\cmdscope_update_$x.xml | ? {$_ -match "<file name=" -and $_ -notmatch "\\"} |
| |
| foreach ($line in $lines) { |
| $line = $line -split " " |
| $name = $line -match "name=" |
| $name = $name -replace "name=|`"","" |
| $sha = $line -match "sha=" |
| $sha = $sha -replace "sha=|`"","" |
| $sha = $sha.toupper() |
| $src = $line -match "src=" |
| $src = $src -replace "src=|`"|>","" |
| $srcf = $src.substring(0,$src.lastindexof("/")) |
| $srcp = $src -replace "\/","\" |
| |
| $fileexist = Test-Path "$recognizerspath\$srcp$packed" |
| $folderexist = Test-Path "$recognizerspath\$srcf" |
| |
| |
| if ($fileexist -eq $True) { |
| $remove = $False |
| if ($cispacked -eq $True) { |
| try { |
| $remove = $True |
| & $7z x -o"$recognizerspath/$srcf" $recognizerspath/$srcp.7z -y |
| } |
| catch {} |
| } |
| $hash = Get-FileHash "$recognizerspath/$srcp" -Algorithm SHA1 |
| if ($remove -eq $True) {Remove-Item "$recognizerspath\$srcp"} |
| if ($hash.Hash -eq $sha) {Continue} |
| } |
| if ($folderexist -eq $False) {New-Item -ItemType Directory -path "$recognizerspath\$srcf"} |
| try {Invoke-WebRequest -Uri "$recognizersurl/$src$packed" -OutFile "$recognizerspath/$srcp$packed"} |
| catch {Invoke-WebRequest -Uri "$recognizersurl/$src" -OutFile "$recognizerspath/$srcp"} |
| |
| } |
| |
| if ($cispacked -eq $True) {Remove-Item "$recognizerspath\cmdscope_update_$x.xml"} |
| } |
| |
| ################################################## |
| #Release Notes |
| |
| if ($release_notes -eq $True) { |
| $rn = "ComodoLogo.png","Fixed.png","Header.png","Improved.png","Logo.png","New.png","Panel_body.png","Panel_footer.png","Panel_header.png","Panel_left_body.png","Panel_left_footer.png","Panel_left_header.png","Panel_left_hr.png" |
| $testrn = Test-Path "$inispath\images" |
| if ($testrn -eq $False) {New-Item -ItemType Directory -Path "$inispath\images"} |
| Invoke-WebRequest -Uri "$inisurl/release_notes.html" -OutFile "$inispath/release_notes.html" |
| foreach ($r in $rn) {Invoke-WebRequest -Uri "$inisurl/images/$r" -OutFile "$inispath/images/$r"} |
| } |
| } |
| |
| ####################################################################### |
| ################### ##################### |
| |
| elseif ($1 -eq "av") { |
| |
| if ($avpacked -eq $True) {$packed = ".z"} else {$packed = ""} |
| |
| #updates58 |
| |
| $folders = "$basespath","$updatespath","$urlpath","$tvlpath" |
| foreach ($folder in $folders) { |
| $testfolder = Test-Path "$folder" |
| if ($testfolder -eq $False) {New-Item -ItemType directory -Path "$folder"} |
| } |
| |
| Invoke-WebRequest -Uri "$tvlurl/delven.txt" -OutFile "$tvlpath\delven.txt" |
| |
| Invoke-WebRequest -Uri "$updates58url/versioninfo.ini" -OutFile "$updates58path\versioninfo.ini" |
| $file = Get-Content "$updates58path\versioninfo.ini" |
| $base = $file | Where {$_ -match "MaxBase="} |
| $base = $base.substring(8)/1 |
| $inc = $file | Where {$_ -match "MaxAvailVersion="} |
| $inc = $inc.substring(16)/1 |
| $diff = $file | Where {$_ -match "MaxDiff="} |
| $diff = $diff.substring(8)/1 |
| $incr = $inc - $diff + 1 |
| if ($incr -gt $base) {$incr = $base + 1} |
| |
| $testbases = Test-Path "$basespath\BASE_END_USER_v$base.cav$packed" |
| if ($testbases -eq $False) {Invoke-WebRequest -Uri "$basesurl/BASE_END_USER_v$base.cav$packed" -OutFile "$basespath\BASE_END_USER_v$base.cav$packed"} |
| |
| do { |
| $testupdates = Test-Path "$updatespath\BASE_UPD_END_USER_v$incr.cav$packed" |
| if ($testupdates -eq $False) {Invoke-WebRequest -Uri "$updatesurl/BASE_UPD_END_USER_v$incr.cav$packed" -OutFile "$updatespath\BASE_UPD_END_USER_v$incr.cav$packed"} |
| $incr++ |
| } |
| while ($incr -le $inc) |
| |
| # updatesurl |
| |
| Invoke-WebRequest -Uri "$updatesurlurl/versioninfo.ini" -OutFile "$updatesurlpath\versioninfo.ini" |
| $file = Get-Content "$updatesurlpath\versioninfo.ini" |
| $base = $file | Where {$_ -match "MaxBase="} |
| $base = $base.substring(8) |
| $inc = $file | Where {$_ -match "MaxAvailVersion="} |
| $inc = $inc.substring(16) |
| $incr = $base/1 + 1 |
| |
| do { |
| $testupdatesurl = Test-Path "$urlpath\BASE_UPD_END_USER_v$incr.cav.z" |
| if ($testupdatesurl -eq $False) {Invoke-WebRequest -Uri "$urlurl/BASE_UPD_END_USER_v$incr.cav.z" -OutFile "$urlpath\BASE_UPD_END_USER_v$incr.cav.z"} |
| $incr++ |
| } |
| while ($incr -le $inc) |
| } |
| |
| ####################################################################### |
| ##################### ##################### |
| |
| elseif ($1 -eq "av-clean") { |
| |
| if ($avpacked -eq $True) {$packed = ".z"} else {$packed = ""} |
| |
| $test58ver = Test-Path "$updates58path\versioninfo.ini" |
| $testurlver = Test-Path "$updatesurlpath\versioninfo.ini" |
| #$message = "" |
| |
| if ($test58ver -eq $True) { |
| $file = Get-Content "$updates58path\versioninfo.ini" |
| $base = $file | Where {$_ -match "MaxBase="} |
| $base = $base.substring(8)/1 |
| $aval = $file | Where {$_ -match "MaxAvailVersion="} |
| $aval = $aval.substring(16)/1 |
| $diff = $file | Where {$_ -match "MaxDiff="} |
| $diff = $diff.substring(8)/1 |
| $del = $aval - $diff + 1 |
| if ($del -gt $base) {$del = $base + 1} |
| |
| $names = (Get-ChildItem -Path "$basespath").basename -replace "BASE_END_USER_v|.cav","" |
| foreach ($name in $names) { |
| $name = $name/1 |
| if ($name -lt $base) {Remove-Item "$basespath\BASE_END_USER_v$name.cav$packed"} |
| } |
| |
| $names = (Get-ChildItem -Path "$updatespath").basename -replace "BASE_UPD_END_USER_v|.cav","" |
| foreach ($name in $names) { |
| $name = $name/1 |
| if ($name -lt $del) {Remove-Item "$updatespath\BASE_UPD_END_USER_v$name.cav$packed"} |
| } |
| } |
| |
| if ($testurlver -eq $true) { |
| $file = Get-Content "$updatesurlpath\versioninfo.ini" |
| $aval = $file | Where {$_ -match "MaxAvailVersion="} |
| $aval = $aval.substring(16)/1 |
| $diff = $file | Where {$_ -match "MaxDiff="} |
| $diff = $diff.substring(8)/1 |
| $del = $aval - $diff |
| |
| $names = (Get-ChildItem -Path "$urlpath").basename -replace "BASE_UPD_END_USER_v|.cav","" |
| foreach ($name in $names) { |
| $name = $name/1 |
| if ($name -lt $del) {Remove-Item "$urlpath\BASE_UPD_END_USER_v$name.cav.z"} |
| } |
| } |
| |
| } |
| |
| ####################################################################### |
| #################### ################### |
| |
| else {exit} |