Skip to content

Commit 4b665e0

Browse files
committed
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
1 parent 2dcbe54 commit 4b665e0

File tree

1 file changed

+25
-2
lines changed

1 file changed

+25
-2
lines changed

kvm.ps1

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
param(
22
[parameter(Position=0)]
33
[string] $command,
4+
[string] $proxy,
45
[switch] $verbosity = $false,
56
[alias("g")][switch] $global = $false,
67
[alias("p")][switch] $persistent = $false,
@@ -22,16 +23,17 @@ $scriptPath = $myInvocation.MyCommand.Definition
2223

2324
function Kvm-Help {
2425
@"
25-
K Runtime Environment Version Manager - Build 509
26+
K Runtime Environment Version Manager - Build 538
2627
2728
USAGE: kvm <command> [options]
2829
29-
kvm upgrade [-x86][-x64] [-svr50][-svrc50] [-g|-global]
30+
kvm upgrade [-x86][-x64] [-svr50][-svrc50] [-g|-global] [-proxy <ADDRESS>]
3031
install latest KRE from feed
3132
set 'default' alias to installed version
3233
add KRE bin to user PATH environment variable
3334
-g|-global install to machine-wide location
3435
-f|-force upgrade even if latest is already installed
36+
-proxy <ADDRESS> use given address as proxy when accessing remote server
3537
3638
kvm install <semver>|<alias>|<nupkg> [-x86][-x64] [-svr50][-svrc50] [-g|-global]
3739
install requested KRE from feed
@@ -124,6 +126,25 @@ function Kvm-Upgrade {
124126
Kvm-Alias-Set "default" $version
125127
}
126128

129+
function Add-Proxy-If-Specified {
130+
param(
131+
[System.Net.WebClient] $wc
132+
)
133+
if (!$proxy) {
134+
$proxy = $env:http_proxy
135+
}
136+
if ($proxy) {
137+
$wp = New-Object System.Net.WebProxy($proxy)
138+
$pb = New-Object UriBuilder($proxy)
139+
if (!$pb.UserName) {
140+
$wp.Credentials = [System.Net.CredentialCache]::DefaultCredentials
141+
} else {
142+
$wp.Credentials = New-Object System.Net.NetworkCredential($pb.UserName, $pb.Password)
143+
}
144+
$wc.Proxy = $wp
145+
}
146+
}
147+
127148
function Kvm-Find-Latest {
128149
param(
129150
[string] $platform,
@@ -135,6 +156,7 @@ param(
135156

136157
$wc = New-Object System.Net.WebClient
137158
$wc.Credentials = new-object System.Net.NetworkCredential("aspnetreadonly", "4d8a2d9c-7b80-4162-9978-47e918c9658c")
159+
Add-Proxy-If-Specified($wc)
138160
[xml]$xml = $wc.DownloadString($url)
139161

140162
$version = Select-Xml "//d:Version" -Namespace @{d='http://schemas.microsoft.com/ado/2007/08/dataservices'} $xml
@@ -181,6 +203,7 @@ param(
181203

182204
$wc = New-Object System.Net.WebClient
183205
$wc.Credentials = new-object System.Net.NetworkCredential("aspnetreadonly", "4d8a2d9c-7b80-4162-9978-47e918c9658c")
206+
Add-Proxy-If-Specified($wc)
184207
$wc.DownloadFile($url, $tempKreFile)
185208

186209
Do-Kvm-Unpack $tempKreFile $kreTempDownload

0 commit comments

Comments
 (0)