Public/Connect-GlimpsMalware.ps1
function Connect-GlimpsMalware { <# .SYNOPSIS Set internal variables for connexion. .DESCRIPTION Set internal variables for connexion. .PARAMETER ApiKey System.Security.SecureString This is the api key of Glimps Malware service .PARAMETER ApiKeyPlainText string This is the api key of Glimps Malware service in plain-text .EXAMPLE PS>Connect-GlimpsMalware -ApiKey "xxx" .INPUTS System.Security.SecureString .OUTPUTS boolean #> [CmdletBinding(DefaultParameterSetName = 'none')] Param ( [Parameter(Mandatory, HelpMessage = 'ApiKey SecureString', ParameterSetName = 'ApiKey', ValueFromPipeline, Position = 0)] [System.Security.SecureString] $ApiKey, [Parameter(Mandatory, HelpMessage = 'ApiKey in Plain Text', ParameterSetName = 'ApiKeyPlainText', ValueFromPipeline, Position = 0)] [string] $ApiKeyPlainText, [Parameter(Mandatory, HelpMessage = 'Api URL', ValueFromPipeline, Position = 1)] [System.Uri] $ApiURL ) Begin { # Remove any module-scope variables in case the user is reauthenticating Remove-Variable -Scope Script -Name _ApiKey, _ApiURL -Force -ErrorAction SilentlyContinue | Out-Null Set-Variable -Name _ApiURL -Value $ApiURL -Option ReadOnly -Scope Script -Force | Out-Null $keyIsValid = $false } Process { if (-not $ApiKey) { if (-not $ApiKeyPlainText) { $ApiKey = Read-Host -AsSecureString "Please enter your Glimps API Key" } else { $ApiKey = $ApiKeyPlainText | ConvertTo-SecureString -AsPlainText -Force Remove-Variable -Name ApiKeyPlainText -Force } } else { Write-Verbose "Getting $ApiKey" } if ($ApiKey) { Set-Variable -Name _ApiKey -Value $ApiKey -Option ReadOnly -Scope Script -Force | Out-Null $auth = Send-GlimpsMalwareApiRequest -Uri $($_ApiURL.AbsoluteUri + "results") $keyIsValid = $($auth.statusCode -eq "200") } } End { if ($keyIsValid -eq $false) { Remove-Variable -Scope Script -Name _ApiKey, _ApiURL -Force -ErrorAction SilentlyContinue | Out-Null throw "Key appears invalid" } else { Write-Verbose "Authenticated to Glimps Malware" } } } |