Public/Core.ps1

# fallback bConnect version
$script:_bConnectFallbackVersion = "v1.0"

# overwrite Invoke-RestMethod timout
$script:_ConnectionTimeout = 0

# CAUTION - dirty workaround
# Only to ignore certificates errors (self-signed)
Add-Type @"
using System.Net;
using System.Security.Cryptography.X509Certificates;
 
public class ignoreCertificatePolicy : ICertificatePolicy {
    public ignoreCertificatePolicy() {}
    public bool CheckValidationResult(ServicePoint sPoint, X509Certificate cert, WebRequest wRequest, int certProb) { return true; }
}
"@


# init the connection (uri and credentials)
$script:_connectInitialized = $false

Function Initialize-bConnect() {
    <#
        .Synopsis
            Initialize the connection to bConnect.
        .Parameter Server
            Hostname/FQDN/IP of the baramundi Management Server.
        .Parameter Port
            Port of bConnect (default: 443).
        .Parameter Credentials
            PSCredential-object with permissions in the bMS.
        .Parameter AcceptSelfSignedCertificate
            Switch to ignore untrusted certificates.
    #>


    Param(
        [Parameter(Mandatory=$true)][string]$Server,
        [string]$Port = "443",
        [Parameter(Mandatory=$true)][System.Management.Automation.PSCredential]$Credentials,
        [switch]$AcceptSelfSignedCertifcate
    )

    If($AcceptSelfSignedCertifcate) {
        [System.Net.ServicePointManager]::CertificatePolicy = New-Object ignoreCertificatePolicy
    }

    $_uri = "https://$($Server):$($Port)/bConnect"

    $script:_connectUri = $_uri
    $script:_connectCredentials = $Credentials
    $script:_connectInitialized = $true
}

Function Reset-bConnect() {
    <#
        .Synopsis
            Resets bConnect to uninitialized.
    #>



    If($script:_defaultCertPolicy) {
        # Reset certicate validation
        [System.Net.ServicePointManager]::CertificatePolicy = $script:_defaultCertPolicy
    }

    $_uri = $null

    $script:_bConnectInfo = $null
    $script:_connectUri = $null
    $script:_connectCredentials = $null
    $script:_connectInitialized = $false
}

# fetch bConncet info
Function Get-bConnectInfo() {
    <#
        .Synopsis
            Gets info from bConnect.
    #>


    If(!$script:_bConnectInfo) {
        $script:_bConnectInfo = Invoke-bConnectGet -Controller "info" -noVersion
    }

    return $script:_bConnectInfo
}

Export-ModuleMember Initialize-bConnect
Export-ModuleMember Reset-bConnect
Export-ModuleMember Get-bConnectInfo