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 `