vagrant-ie 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/assets/vagrant-ie/Configure.ps1 +49 -0
- data/assets/vagrant-ie/DisableAutomaticUpdates.ps1 +7 -0
- data/assets/vagrant-ie/HostsModule.psm1 +51 -0
- data/assets/vagrant-ie/IE.task.xml +42 -0
- data/assets/vagrant-ie/NLMtool_staticlib.exe +0 -0
- data/assets/vagrant-ie/RunIE.ps1 +5 -0
- data/assets/vagrant-ie/TaskModule.psm1 +30 -0
- data/lib/vagrant-ie.rb +39 -0
- data/lib/vagrant-ie/config.rb +5 -0
- data/lib/vagrant-ie/power_shell.rb +68 -0
- data/lib/vagrant-ie/provisioner.rb +24 -0
- data/lib/vagrant-ie/run_ie_command.rb +66 -0
- metadata +59 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: e6ea7d5ca11402c041e4651ed95737518b55a7f9
|
4
|
+
data.tar.gz: 6cd734ae25444630942b7c8a52f7a378df00d9c0
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 59f691ce2397d23876ae07ec60fbec7d1818fd6c4f9824af9970bbde54c7e6fe5104e128a8e64b807491fd3cd0f2c476cf01008458ae1b3f228a89af6dc785dd
|
7
|
+
data.tar.gz: 87c715866eec28783b91e56888e4978c9793a1315052c443624122049c947b9a3eecbea7ea6ffdb8c6e9abdfc64f1f3c6c8a3a1098a42dc3b68fad7ddecd5736
|
@@ -0,0 +1,49 @@
|
|
1
|
+
param ([string]$upstreamHost)
|
2
|
+
|
3
|
+
Set-StrictMode -Version Latest
|
4
|
+
|
5
|
+
Import-Module "C:\Users\IEUser\vagrant-ie\HostsModule.psm1" -DisableNameChecking
|
6
|
+
Import-Module "C:\Users\IEUser\vagrant-ie\TaskModule.psm1" -DisableNameChecking
|
7
|
+
|
8
|
+
function Exec {
|
9
|
+
[CmdletBinding()]
|
10
|
+
|
11
|
+
param (
|
12
|
+
[Parameter(Position=0, Mandatory=1)]
|
13
|
+
[scriptblock]$Command,
|
14
|
+
[Parameter(Position=1, Mandatory=0)]
|
15
|
+
[string]$ErrorMessage = "Execution of command failed.`n$Command"
|
16
|
+
)
|
17
|
+
|
18
|
+
& $Command
|
19
|
+
|
20
|
+
if ($LastExitCode -ne 0) {
|
21
|
+
throw "Exec: $ErrorMessage"
|
22
|
+
}
|
23
|
+
}
|
24
|
+
|
25
|
+
Exec {
|
26
|
+
Write-Output "Disabling firewall..."
|
27
|
+
NetSh Advfirewall set allprofiles state off
|
28
|
+
}
|
29
|
+
|
30
|
+
Exec {
|
31
|
+
Write-Output "Setting network category to PRIVATE..."
|
32
|
+
C:\Users\IEUser\vagrant-ie\NLMtool_staticlib.exe -setcategory private | out-null
|
33
|
+
}
|
34
|
+
|
35
|
+
Exec {
|
36
|
+
Write-Output "Turning off User Account Control..."
|
37
|
+
cmd /C "reg add HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /d 0 /t REG_DWORD /f /reg:64" | out-null
|
38
|
+
}
|
39
|
+
|
40
|
+
Write-Output "Turning off Automatic Updates..."
|
41
|
+
C:\Users\IEUser\vagrant-ie\DisableAutomaticUpdates.ps1 | out-null
|
42
|
+
|
43
|
+
Write-Output "Setting up host entry for host $upstreamHost"
|
44
|
+
Add-Host $upstreamHost 'upstream'
|
45
|
+
|
46
|
+
Write-Output "Setting up the IE task..."
|
47
|
+
Upsert-Task 'IE' 'C:\Users\IEUser\vagrant-ie\IE.task.xml'
|
48
|
+
|
49
|
+
Write-Output "Ok."
|
@@ -0,0 +1,7 @@
|
|
1
|
+
sc stop wuauserv
|
2
|
+
|
3
|
+
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update" /v AUOptions /t REG_DWORD /d 1 /f
|
4
|
+
|
5
|
+
New-Item HKLM:\SOFTWARE\Policies\Microsoft\Windows -Name WindowsUpdate -Force
|
6
|
+
New-Item HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate -Name AU -Force
|
7
|
+
New-ItemProperty HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU -Name NoAutoUpdate -Value 1 -Force
|
@@ -0,0 +1,51 @@
|
|
1
|
+
#
|
2
|
+
# Powershell script for adding/removing/showing entries to the hosts file.
|
3
|
+
#
|
4
|
+
# Known limitations:
|
5
|
+
# - does not handle entries with comments afterwards ("<ip> <host> # comment")
|
6
|
+
#
|
7
|
+
# Source: https://gist.github.com/markembling/173887
|
8
|
+
|
9
|
+
$filename = "$env:windir\System32\drivers\etc\hosts"
|
10
|
+
|
11
|
+
function Add-Host([string]$ip, [string]$hostname) {
|
12
|
+
Remove-Host $filename $hostname
|
13
|
+
$ip + "`t`t" + $hostname | Out-File -encoding ASCII -append $filename
|
14
|
+
}
|
15
|
+
|
16
|
+
function Remove-Host([string]$hostname) {
|
17
|
+
$c = Get-Content $filename
|
18
|
+
$newLines = @()
|
19
|
+
|
20
|
+
foreach ($line in $c) {
|
21
|
+
$bits = [regex]::Split($line, "\t+")
|
22
|
+
if ($bits.count -eq 2) {
|
23
|
+
if ($bits[1] -ne $hostname) {
|
24
|
+
$newLines += $line
|
25
|
+
}
|
26
|
+
} else {
|
27
|
+
$newLines += $line
|
28
|
+
}
|
29
|
+
}
|
30
|
+
|
31
|
+
# Write file
|
32
|
+
Clear-Content $filename
|
33
|
+
foreach ($line in $newLines) {
|
34
|
+
$line | Out-File -encoding ASCII -append $filename
|
35
|
+
}
|
36
|
+
}
|
37
|
+
|
38
|
+
function Print-Hosts() {
|
39
|
+
$c = Get-Content $filename
|
40
|
+
|
41
|
+
foreach ($line in $c) {
|
42
|
+
$bits = [regex]::Split($line, "\t+")
|
43
|
+
if ($bits.count -eq 2) {
|
44
|
+
Write-Host $bits[0] `t`t $bits[1]
|
45
|
+
}
|
46
|
+
}
|
47
|
+
}
|
48
|
+
|
49
|
+
Export-ModuleMember -Function 'Add-Host'
|
50
|
+
Export-ModuleMember -Function 'Remove-Host'
|
51
|
+
Export-ModuleMember -Function 'Print-Hosts'
|
@@ -0,0 +1,42 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-16"?>
|
2
|
+
<Task version="1.3" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
|
3
|
+
<RegistrationInfo>
|
4
|
+
<Date>2017-05-05T12:39:09.3130223</Date>
|
5
|
+
<Author>IE11WIN7\IEUser</Author>
|
6
|
+
</RegistrationInfo>
|
7
|
+
<Triggers />
|
8
|
+
<Principals>
|
9
|
+
<Principal id="Author">
|
10
|
+
<RunLevel>LeastPrivilege</RunLevel>
|
11
|
+
<UserId>IE11WIN7\IEUser</UserId>
|
12
|
+
<LogonType>InteractiveToken</LogonType>
|
13
|
+
</Principal>
|
14
|
+
</Principals>
|
15
|
+
<Settings>
|
16
|
+
<MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
|
17
|
+
<DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries>
|
18
|
+
<StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
|
19
|
+
<AllowHardTerminate>true</AllowHardTerminate>
|
20
|
+
<StartWhenAvailable>false</StartWhenAvailable>
|
21
|
+
<RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
|
22
|
+
<IdleSettings>
|
23
|
+
<StopOnIdleEnd>true</StopOnIdleEnd>
|
24
|
+
<RestartOnIdle>false</RestartOnIdle>
|
25
|
+
</IdleSettings>
|
26
|
+
<AllowStartOnDemand>true</AllowStartOnDemand>
|
27
|
+
<Enabled>true</Enabled>
|
28
|
+
<Hidden>false</Hidden>
|
29
|
+
<RunOnlyIfIdle>false</RunOnlyIfIdle>
|
30
|
+
<DisallowStartOnRemoteAppSession>false</DisallowStartOnRemoteAppSession>
|
31
|
+
<UseUnifiedSchedulingEngine>false</UseUnifiedSchedulingEngine>
|
32
|
+
<WakeToRun>false</WakeToRun>
|
33
|
+
<ExecutionTimeLimit>P3D</ExecutionTimeLimit>
|
34
|
+
<Priority>7</Priority>
|
35
|
+
</Settings>
|
36
|
+
<Actions Context="Author">
|
37
|
+
<Exec>
|
38
|
+
<Command>powershell</Command>
|
39
|
+
<Arguments>-File "C:\Users\IEUser\vagrant-ie\.task.ps1"</Arguments>
|
40
|
+
</Exec>
|
41
|
+
</Actions>
|
42
|
+
</Task>
|
Binary file
|
@@ -0,0 +1,30 @@
|
|
1
|
+
function Upsert-Task([string]$taskName, [string]$template) {
|
2
|
+
Remove-Task $taskName
|
3
|
+
Add-Task $taskName $template
|
4
|
+
}
|
5
|
+
|
6
|
+
function Add-Task([string]$taskName, [string]$template) {
|
7
|
+
schtasks.exe /Create /XML $template /TN $taskName
|
8
|
+
}
|
9
|
+
|
10
|
+
function Remove-Task([string]$taskName) {
|
11
|
+
if (Task-Exists $taskName) {
|
12
|
+
schtasks.exe /End /TN $taskName | out-null
|
13
|
+
schtasks.exe /Delete /F /TN $taskName
|
14
|
+
}
|
15
|
+
}
|
16
|
+
|
17
|
+
function Start-Task([string]$taskName) {
|
18
|
+
schtasks.exe /Run /TN $taskName
|
19
|
+
}
|
20
|
+
|
21
|
+
function Task-Exists([string]$taskName) {
|
22
|
+
schtasks.exe /Query /TN $taskName 2>&1 | out-null
|
23
|
+
|
24
|
+
return $LastExitCode -eq 0
|
25
|
+
}
|
26
|
+
|
27
|
+
Export-ModuleMember -Function 'Upsert-Task'
|
28
|
+
Export-ModuleMember -Function 'Add-Task'
|
29
|
+
Export-ModuleMember -Function 'Remove-Task'
|
30
|
+
Export-ModuleMember -Function 'Start-Task'
|
data/lib/vagrant-ie.rb
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
# -*- mode: ruby -*-
|
2
|
+
# vi: set ft=ruby :
|
3
|
+
|
4
|
+
##
|
5
|
+
# If you copy this file, dont't delete this comment.
|
6
|
+
# This Vagrantfile was created by Daniel Menezes:
|
7
|
+
# https://github.com/danielmenezesbr/modernie-winrm
|
8
|
+
# E-mail: danielmenezes at gmail dot com
|
9
|
+
#
|
10
|
+
# Source: https://github.com/danielmenezesbr/modernie-winrm
|
11
|
+
##
|
12
|
+
|
13
|
+
module VagrantIE
|
14
|
+
def self.assets
|
15
|
+
File.join(File.expand_path(File.dirname(__FILE__)), '..', 'assets', 'vagrant-ie')
|
16
|
+
end
|
17
|
+
|
18
|
+
class Plugin < Vagrant.plugin(2)
|
19
|
+
name "vagrant-ie"
|
20
|
+
|
21
|
+
config('vagrant-ie', :provisioner) do
|
22
|
+
require_relative './vagrant-ie/config'
|
23
|
+
|
24
|
+
VagrantIE::Config
|
25
|
+
end
|
26
|
+
|
27
|
+
command 'run-ie' do
|
28
|
+
require_relative './vagrant-ie/run_ie_command'
|
29
|
+
|
30
|
+
VagrantIE::RunIECommand
|
31
|
+
end
|
32
|
+
|
33
|
+
provisioner 'vagrant-ie' do
|
34
|
+
require_relative './vagrant-ie/provisioner'
|
35
|
+
|
36
|
+
VagrantIE::Provisioner
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
require 'net/ssh'
|
2
|
+
|
3
|
+
module VagrantIE
|
4
|
+
class PowerShell
|
5
|
+
def self.open(&block)
|
6
|
+
shell = new
|
7
|
+
shell.connect
|
8
|
+
|
9
|
+
begin
|
10
|
+
yield shell
|
11
|
+
ensure
|
12
|
+
shell.disconnect
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def connect
|
17
|
+
@ssh = Net::SSH.start("localhost", "IEUser", :password => "Passw0rd!", :port => 2222)
|
18
|
+
end
|
19
|
+
|
20
|
+
def invoke_file(file:, args: [])
|
21
|
+
ssh_exec! <<-SHELL
|
22
|
+
PowerShell
|
23
|
+
-InputFormat none
|
24
|
+
-Sta
|
25
|
+
-NonInteractive
|
26
|
+
-File "#{file}"
|
27
|
+
#{args.join("\n")}
|
28
|
+
SHELL
|
29
|
+
end
|
30
|
+
|
31
|
+
def disconnect
|
32
|
+
@ssh.close
|
33
|
+
@ssh = nil
|
34
|
+
end
|
35
|
+
|
36
|
+
private
|
37
|
+
|
38
|
+
def strip(string)
|
39
|
+
string.gsub(/\n/, ' ').gsub(/[ ]+/, ' ').strip
|
40
|
+
end
|
41
|
+
|
42
|
+
def ssh_exec!(command)
|
43
|
+
exit_code = nil
|
44
|
+
|
45
|
+
@ssh.open_channel do |channel|
|
46
|
+
channel.exec(strip(command)) do |ch, success|
|
47
|
+
return false unless success
|
48
|
+
|
49
|
+
channel.on_data do |ch,data|
|
50
|
+
STDOUT.puts data
|
51
|
+
end
|
52
|
+
|
53
|
+
channel.on_extended_data do |ch,type,data|
|
54
|
+
STDERR.puts data
|
55
|
+
end
|
56
|
+
|
57
|
+
channel.on_request("exit-status") do |ch,data|
|
58
|
+
exit_code = data.read_long
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
@ssh.loop
|
64
|
+
|
65
|
+
exit_code == 0
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'socket'
|
2
|
+
require_relative './power_shell'
|
3
|
+
|
4
|
+
module VagrantIE
|
5
|
+
class Provisioner < Vagrant.plugin(2, :provisioner)
|
6
|
+
def configure(_)
|
7
|
+
@config.public_ip_addr ||= Socket.ip_address_list
|
8
|
+
.reject(&:unix?)
|
9
|
+
.reject(&:ipv4_loopback?)
|
10
|
+
.reject(&:ipv6_loopback?)
|
11
|
+
.first
|
12
|
+
.ip_address
|
13
|
+
end
|
14
|
+
|
15
|
+
def provision
|
16
|
+
PowerShell.open do |shell|
|
17
|
+
shell.invoke_file({
|
18
|
+
file: 'C:\Users\IEUser\vagrant-ie\Configure.ps1',
|
19
|
+
args: [ @config.public_ip_addr ]
|
20
|
+
})
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
require_relative './power_shell'
|
2
|
+
|
3
|
+
module VagrantIE
|
4
|
+
class RunIECommand < Vagrant.plugin(2, :command)
|
5
|
+
def execute
|
6
|
+
options = {
|
7
|
+
'kiosk' => true
|
8
|
+
}
|
9
|
+
|
10
|
+
opts = OptionParser.new do |o|
|
11
|
+
o.banner = "Usage: vagrant run-ie [options] URL"
|
12
|
+
|
13
|
+
o.on('--embedding') { |v| options['embedding'] = v }
|
14
|
+
o.on('--extoff') { |v| options['extoff'] = v }
|
15
|
+
o.on('--[no-]frame-merging') { |v| options['frame-merging'] = v }
|
16
|
+
o.on('--[no-]session-merging') { |v| options['session-merging'] = v }
|
17
|
+
o.on('--no-hang-recovery') { |v| options['hang-recovery'] = v }
|
18
|
+
o.on('--private') { |v| options['private'] = v }
|
19
|
+
o.on('-k', '--[no-]kiosk') { |v| options['kiosk'] = v }
|
20
|
+
end
|
21
|
+
|
22
|
+
argv = parse_options(opts)
|
23
|
+
|
24
|
+
return unless argv
|
25
|
+
|
26
|
+
PowerShell.open do |shell|
|
27
|
+
shell.invoke_file({
|
28
|
+
file: 'C:\Users\IEUser\vagrant-ie\RunIE.ps1',
|
29
|
+
args: map_arguments(options).concat([
|
30
|
+
argv[0]
|
31
|
+
])
|
32
|
+
})
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
protected
|
37
|
+
|
38
|
+
def map_arguments(options)
|
39
|
+
args = []
|
40
|
+
|
41
|
+
%w[ embedding extoff private ].each do |literal|
|
42
|
+
if options[literal] == true
|
43
|
+
args << "-#{literal}"
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
if options['kiosk']
|
48
|
+
args << '-k'
|
49
|
+
end
|
50
|
+
|
51
|
+
if options['session-merging'] == true
|
52
|
+
args << '-sessionmerging'
|
53
|
+
else
|
54
|
+
args << '-nosessionmerging'
|
55
|
+
end
|
56
|
+
|
57
|
+
if options['frame-merging'] == true
|
58
|
+
args << '-framemerging'
|
59
|
+
else
|
60
|
+
args << '-noframemerging'
|
61
|
+
end
|
62
|
+
|
63
|
+
args
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
metadata
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: vagrant-ie
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Ahmad Amireh
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-05-06 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: |
|
14
|
+
vagrant-ie is a plugin for vagrant that automates provisioning a Windows 7
|
15
|
+
box for IE testing. The plugin works in both headless and GUI provider modes.
|
16
|
+
email:
|
17
|
+
- ahmad@amireh.net
|
18
|
+
executables: []
|
19
|
+
extensions: []
|
20
|
+
extra_rdoc_files: []
|
21
|
+
files:
|
22
|
+
- assets/vagrant-ie/Configure.ps1
|
23
|
+
- assets/vagrant-ie/DisableAutomaticUpdates.ps1
|
24
|
+
- assets/vagrant-ie/HostsModule.psm1
|
25
|
+
- assets/vagrant-ie/IE.task.xml
|
26
|
+
- assets/vagrant-ie/NLMtool_staticlib.exe
|
27
|
+
- assets/vagrant-ie/RunIE.ps1
|
28
|
+
- assets/vagrant-ie/TaskModule.psm1
|
29
|
+
- lib/vagrant-ie.rb
|
30
|
+
- lib/vagrant-ie/config.rb
|
31
|
+
- lib/vagrant-ie/power_shell.rb
|
32
|
+
- lib/vagrant-ie/provisioner.rb
|
33
|
+
- lib/vagrant-ie/run_ie_command.rb
|
34
|
+
homepage: https://github.com/amireh/vagrant-ie
|
35
|
+
licenses:
|
36
|
+
- BSD-3
|
37
|
+
metadata: {}
|
38
|
+
post_install_message:
|
39
|
+
rdoc_options: []
|
40
|
+
require_paths:
|
41
|
+
- lib
|
42
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - ">="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '0'
|
47
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
48
|
+
requirements:
|
49
|
+
- - ">="
|
50
|
+
- !ruby/object:Gem::Version
|
51
|
+
version: '0'
|
52
|
+
requirements: []
|
53
|
+
rubyforge_project:
|
54
|
+
rubygems_version: 2.4.5.1
|
55
|
+
signing_key:
|
56
|
+
specification_version: 4
|
57
|
+
summary: Vagrant plugin for IE automation.
|
58
|
+
test_files: []
|
59
|
+
has_rdoc:
|