github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/cloudconfig/winuserdatawrapper.go (about)

     1  // Copyright 2016 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package cloudconfig
     5  
     6  // Generated code - do not edit.
     7  
     8  const UserDataScript = `#ps1_sysnative
     9  $ErrorActionPreference = "Stop"
    10  $userdata=@"
    11  %s
    12  "@
    13  
    14  Function Decode-Base64 {
    15  	Param(
    16  		$inFile,
    17  		$outFile
    18  	)
    19  	$bufferSize = 9000 # should be a multiplier of 4
    20  	$buffer = New-Object char[] $bufferSize
    21  
    22  	$reader = [System.IO.File]::OpenText($inFile)
    23  	$writer = [System.IO.File]::OpenWrite($outFile)
    24  
    25  	$bytesRead = 0
    26  	do
    27  	{
    28  		$bytesRead = $reader.Read($buffer, 0, $bufferSize);
    29  		$bytes = [Convert]::FromBase64CharArray($buffer, 0, $bytesRead);
    30  		$writer.Write($bytes, 0, $bytes.Length);
    31  	} while ($bytesRead -eq $bufferSize);
    32  
    33  	$reader.Dispose()
    34  	$writer.Dispose()
    35  }
    36  
    37  Function GUnZip-File {
    38  	Param(
    39  		$inFile,
    40  		$outFile
    41  	)
    42  	$in = New-Object System.IO.FileStream $inFile, ([IO.FileMode]::Open), ([IO.FileAccess]::Read), ([IO.FileShare]::Read)
    43  	$out = New-Object System.IO.FileStream $outFile, ([IO.FileMode]::Create), ([IO.FileAccess]::Write), ([IO.FileShare]::None)
    44  	$gzipStream = New-Object System.IO.Compression.GZipStream $in, ([IO.Compression.CompressionMode]::Decompress)
    45  	$buffer = New-Object byte[](1024)
    46  	while($true){
    47  		$read = $gzipstream.Read($buffer, 0, 1024)
    48  		if ($read -le 0){break}
    49  		$out.Write($buffer, 0, $read)
    50  	}
    51  	$gzipStream.Close()
    52  	$out.Close()
    53  	$in.Close()
    54  }
    55  
    56  $b64File = "$env:TEMP\juju\udata.b64"
    57  $gzFile = "$env:TEMP\juju\udata.gz"
    58  $udataScript = "$env:TEMP\juju\udata.ps1"
    59  mkdir "$env:TEMP\juju"
    60  
    61  Set-Content $b64File $userdata
    62  Decode-Base64 -inFile $b64File -outFile $gzFile
    63  GUnZip-File -inFile $gzFile -outFile $udataScript
    64  
    65  & $udataScript
    66  
    67  rm -Recurse "$env:TEMP\juju"
    68  
    69  `