From 26aaf558ccac7ff26d6b070f1e199aaebb1a3ddc Mon Sep 17 00:00:00 2001 From: Wei Wang Date: Tue, 17 Jun 2014 16:31:53 -0700 Subject: [PATCH 1/3] Add proxy support in kvm - Add proxy option to "kvm upgrade" - "kvm upgrade" uses global proxy (http_proxy env var) by default - Support authenticated proxies --- kvm.ps1 | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/kvm.ps1 b/kvm.ps1 index e33493736afd..b0309f4f5afa 100644 --- a/kvm.ps1 +++ b/kvm.ps1 @@ -1,6 +1,7 @@ param( [parameter(Position=0)] [string] $command, + [string] $proxy = "", [switch] $verbosity = $false, [alias("g")][switch] $global = $false, [alias("p")][switch] $persistent = $false, @@ -26,12 +27,13 @@ K Runtime Environment Version Manager - Build 509 USAGE: kvm [options] -kvm upgrade [-x86][-x64] [-svr50][-svrc50] [-g|-global] +kvm upgrade [-x86][-x64] [-svr50][-svrc50] [-g|-global] [-proxy
] install latest KRE from feed set 'default' alias to installed version add KRE bin to user PATH environment variable -g|-global install to machine-wide location -f|-force upgrade even if latest is already installed + -proxy
use given address as proxy when accessing remote server kvm install || [-x86][-x64] [-svr50][-svrc50] [-g|-global] install requested KRE from feed @@ -124,6 +126,25 @@ function Kvm-Upgrade { Kvm-Alias-Set "default" $version } +function Add-Proxy-If-Specified { +param( + [System.Net.WebClient] $wc +) + if ([string]::IsNullOrEmpty($proxy)) { + $proxy = [Environment]::GetEnvironmentVariable("http_proxy") + } + if (-NOT [string]::IsNullOrEmpty($proxy)) { + $wp = New-Object System.Net.WebProxy($proxy) + $pb = New-Object UriBuilder($proxy) + if ([string]::IsNullOrEmpty($pb.UserName)) { + $wp.Credentials = [System.Net.CredentialCache]::DefaultCredentials + } else { + $wp.Credentials = New-Object System.Net.NetworkCredential($pb.UserName, $pb.Password) + } + $wc.Proxy = $wp + } +} + function Kvm-Find-Latest { param( [string] $platform, @@ -135,6 +156,7 @@ param( $wc = New-Object System.Net.WebClient $wc.Credentials = new-object System.Net.NetworkCredential("aspnetreadonly", "4d8a2d9c-7b80-4162-9978-47e918c9658c") + Add-Proxy-If-Specified([ref]$wc) [xml]$xml = $wc.DownloadString($url) $version = Select-Xml "//d:Version" -Namespace @{d='http://schemas.microsoft.com/ado/2007/08/dataservices'} $xml @@ -181,6 +203,7 @@ param( $wc = New-Object System.Net.WebClient $wc.Credentials = new-object System.Net.NetworkCredential("aspnetreadonly", "4d8a2d9c-7b80-4162-9978-47e918c9658c") + Add-Proxy-If-Specified([ref]$wc) $wc.DownloadFile($url, $tempKreFile) Do-Kvm-Unpack $tempKreFile $kreTempDownload From ac022deb79f7e693dedbfa35a17774d1a42e1856 Mon Sep 17 00:00:00 2001 From: Wei Wang Date: Tue, 17 Jun 2014 17:02:03 -0700 Subject: [PATCH 2/3] Code review changes --- kvm.ps1 | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/kvm.ps1 b/kvm.ps1 index b0309f4f5afa..d3aebc498dd7 100644 --- a/kvm.ps1 +++ b/kvm.ps1 @@ -1,7 +1,7 @@ param( [parameter(Position=0)] [string] $command, - [string] $proxy = "", + [string] $proxy, [switch] $verbosity = $false, [alias("g")][switch] $global = $false, [alias("p")][switch] $persistent = $false, @@ -130,13 +130,13 @@ function Add-Proxy-If-Specified { param( [System.Net.WebClient] $wc ) - if ([string]::IsNullOrEmpty($proxy)) { - $proxy = [Environment]::GetEnvironmentVariable("http_proxy") + if (!$proxy) { + $proxy = $env:http_proxy } - if (-NOT [string]::IsNullOrEmpty($proxy)) { + if ($proxy) { $wp = New-Object System.Net.WebProxy($proxy) $pb = New-Object UriBuilder($proxy) - if ([string]::IsNullOrEmpty($pb.UserName)) { + if (!$pb.UserName) { $wp.Credentials = [System.Net.CredentialCache]::DefaultCredentials } else { $wp.Credentials = New-Object System.Net.NetworkCredential($pb.UserName, $pb.Password) From 4da4581091f81cfa58aaacfe053f4824083981a3 Mon Sep 17 00:00:00 2001 From: Wei Wang Date: Tue, 17 Jun 2014 18:35:34 -0700 Subject: [PATCH 3/3] Code review changes --- kvm.ps1 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kvm.ps1 b/kvm.ps1 index d3aebc498dd7..6b9e8a12e86e 100644 --- a/kvm.ps1 +++ b/kvm.ps1 @@ -156,7 +156,7 @@ param( $wc = New-Object System.Net.WebClient $wc.Credentials = new-object System.Net.NetworkCredential("aspnetreadonly", "4d8a2d9c-7b80-4162-9978-47e918c9658c") - Add-Proxy-If-Specified([ref]$wc) + Add-Proxy-If-Specified($wc) [xml]$xml = $wc.DownloadString($url) $version = Select-Xml "//d:Version" -Namespace @{d='http://schemas.microsoft.com/ado/2007/08/dataservices'} $xml @@ -203,7 +203,7 @@ param( $wc = New-Object System.Net.WebClient $wc.Credentials = new-object System.Net.NetworkCredential("aspnetreadonly", "4d8a2d9c-7b80-4162-9978-47e918c9658c") - Add-Proxy-If-Specified([ref]$wc) + Add-Proxy-If-Specified($wc) $wc.DownloadFile($url, $tempKreFile) Do-Kvm-Unpack $tempKreFile $kreTempDownload