VCL-1101 - This closes #2
diff --git a/managementnode/lib/VCL/Module/OS.pm b/managementnode/lib/VCL/Module/OS.pm
index 276a3b7..2b74bf0 100644
--- a/managementnode/lib/VCL/Module/OS.pm
+++ b/managementnode/lib/VCL/Module/OS.pm
@@ -4355,6 +4355,10 @@
 				notify($ERRORS{'DEBUG'}, 0, "ignoring Subversion file: $mn_file_path");
 				next MN_FILE;
 			}
+			elsif ($mn_file_path =~ /\.gitignore/i) {
+				notify($ERRORS{'DEBUG'}, 0, "ignoring .gitignore file: $mn_file_path");
+				next MN_FILE;
+			}
 			elsif ($mn_file_path =~ /\/$other_architecture\//) {
 				notify($ERRORS{'DEBUG'}, 0, "ignoring file intended for different computer architecture: $mn_file_path");
 				next MN_FILE;
diff --git a/managementnode/lib/VCL/Module/OS/Linux/ManagementNode.pm b/managementnode/lib/VCL/Module/OS/Linux/ManagementNode.pm
index 84d3dd0..c3d0b6b 100644
--- a/managementnode/lib/VCL/Module/OS/Linux/ManagementNode.pm
+++ b/managementnode/lib/VCL/Module/OS/Linux/ManagementNode.pm
@@ -509,6 +509,13 @@
 			next;
 		}
 		
+		# Ignore the .gitignore files
+		if ($script_file_path =~ /\.gitignore/i) {
+			my $matching_section = $1;
+			notify($ERRORS{'DEBUG'}, 0, "ignoring gitignore file on management node from script directory '$matching_section': $script_file_path");
+			next;
+		}
+		
 		my $command = "chmod +x $script_file_path && $script_file_path $mn_json_file_path";
 		my ($exit_status, $output) = $self->execute($command);
 		if (!defined($output)) {
diff --git a/managementnode/lib/VCL/Module/OS/Windows.pm b/managementnode/lib/VCL/Module/OS/Windows.pm
index 3de1ad3..f245353 100644
--- a/managementnode/lib/VCL/Module/OS/Windows.pm
+++ b/managementnode/lib/VCL/Module/OS/Windows.pm
@@ -7027,7 +7027,12 @@
 	if (!$self->delete_files_by_pattern($NODE_CONFIGURATION_DIRECTORY, '.*\.svn.*')) {
 		notify($ERRORS{'WARNING'}, 0, "unable to delete Subversion files under: $NODE_CONFIGURATION_DIRECTORY");
 	}
-	
+
+	# Delete any GitIgnore files which may have been copied
+	if (!$self->delete_files_by_pattern($NODE_CONFIGURATION_DIRECTORY, '.*\.gitignore.*')) {
+		notify($ERRORS{'WARNING'}, 0, "unable to delete GitIgnore files under: $NODE_CONFIGURATION_DIRECTORY");
+	}
+
 	$self->set_file_owner($NODE_CONFIGURATION_DIRECTORY, 'root');
 	
 	# Find any files containing a 'WINDOWS_ROOT_PASSWORD' string and replace it with the root password
diff --git a/managementnode/tools/ESXi/Scripts/post_initial_connection/.gitignore b/managementnode/tools/ESXi/Scripts/post_initial_connection/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/ESXi/Scripts/post_initial_connection/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/ESXi/Scripts/post_load/.gitignore b/managementnode/tools/ESXi/Scripts/post_load/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/ESXi/Scripts/post_load/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/ESXi/Scripts/post_reservation/.gitignore b/managementnode/tools/ESXi/Scripts/post_reservation/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/ESXi/Scripts/post_reservation/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/ESXi/Scripts/post_reserve/.gitignore b/managementnode/tools/ESXi/Scripts/post_reserve/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/ESXi/Scripts/post_reserve/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/ESXi/Scripts/pre_capture/.gitignore b/managementnode/tools/ESXi/Scripts/pre_capture/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/ESXi/Scripts/pre_capture/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/ESXi/Scripts/pre_reload/.gitignore b/managementnode/tools/ESXi/Scripts/pre_reload/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/ESXi/Scripts/pre_reload/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Linux/Scripts/post_initial_connection/.gitignore b/managementnode/tools/Linux/Scripts/post_initial_connection/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Linux/Scripts/post_initial_connection/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Linux/Scripts/post_load/.gitignore b/managementnode/tools/Linux/Scripts/post_load/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Linux/Scripts/post_load/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Linux/Scripts/post_reservation/.gitignore b/managementnode/tools/Linux/Scripts/post_reservation/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Linux/Scripts/post_reservation/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Linux/Scripts/post_reserve/.gitignore b/managementnode/tools/Linux/Scripts/post_reserve/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Linux/Scripts/post_reserve/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Linux/Scripts/pre_capture/.gitignore b/managementnode/tools/Linux/Scripts/pre_capture/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Linux/Scripts/pre_capture/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Linux/Scripts/pre_reload/.gitignore b/managementnode/tools/Linux/Scripts/pre_reload/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Linux/Scripts/pre_reload/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/ManagementNode/Scripts/post_capture/.gitignore b/managementnode/tools/ManagementNode/Scripts/post_capture/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/ManagementNode/Scripts/post_capture/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/ManagementNode/Scripts/post_initial_connection/.gitignore b/managementnode/tools/ManagementNode/Scripts/post_initial_connection/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/ManagementNode/Scripts/post_initial_connection/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/ManagementNode/Scripts/post_load/.gitignore b/managementnode/tools/ManagementNode/Scripts/post_load/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/ManagementNode/Scripts/post_load/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/ManagementNode/Scripts/post_reservation/.gitignore b/managementnode/tools/ManagementNode/Scripts/post_reservation/.gitignore
new file mode 100755
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/ManagementNode/Scripts/post_reservation/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/ManagementNode/Scripts/post_reserve/.gitignore b/managementnode/tools/ManagementNode/Scripts/post_reserve/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/ManagementNode/Scripts/post_reserve/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/ManagementNode/Scripts/pre_capture/.gitignore b/managementnode/tools/ManagementNode/Scripts/pre_capture/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/ManagementNode/Scripts/pre_capture/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/ManagementNode/Scripts/pre_reload/.gitignore b/managementnode/tools/ManagementNode/Scripts/pre_reload/.gitignore
new file mode 100755
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/ManagementNode/Scripts/pre_reload/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/OSX/Scripts/post_initial_connection/.gitignore b/managementnode/tools/OSX/Scripts/post_initial_connection/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/OSX/Scripts/post_initial_connection/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/OSX/Scripts/post_load/.gitignore b/managementnode/tools/OSX/Scripts/post_load/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/OSX/Scripts/post_load/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/OSX/Scripts/post_reservation/.gitignore b/managementnode/tools/OSX/Scripts/post_reservation/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/OSX/Scripts/post_reservation/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/OSX/Scripts/post_reserve/.gitignore b/managementnode/tools/OSX/Scripts/post_reserve/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/OSX/Scripts/post_reserve/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/OSX/Scripts/pre_capture/.gitignore b/managementnode/tools/OSX/Scripts/pre_capture/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/OSX/Scripts/pre_capture/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/OSX/Scripts/pre_reload/.gitignore b/managementnode/tools/OSX/Scripts/pre_reload/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/OSX/Scripts/pre_reload/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Ubuntu/Scripts/post_initial_connection/.gitignore b/managementnode/tools/Ubuntu/Scripts/post_initial_connection/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Ubuntu/Scripts/post_initial_connection/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Ubuntu/Scripts/post_load/.gitignore b/managementnode/tools/Ubuntu/Scripts/post_load/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Ubuntu/Scripts/post_load/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Ubuntu/Scripts/post_reservation/.gitignore b/managementnode/tools/Ubuntu/Scripts/post_reservation/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Ubuntu/Scripts/post_reservation/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Ubuntu/Scripts/post_reserve/.gitignore b/managementnode/tools/Ubuntu/Scripts/post_reserve/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Ubuntu/Scripts/post_reserve/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Ubuntu/Scripts/pre_capture/.gitignore b/managementnode/tools/Ubuntu/Scripts/pre_capture/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Ubuntu/Scripts/pre_capture/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Ubuntu/Scripts/pre_reload/.gitignore b/managementnode/tools/Ubuntu/Scripts/pre_reload/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Ubuntu/Scripts/pre_reload/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows/Drivers/.gitignore b/managementnode/tools/Windows/Drivers/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows/Drivers/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows/Logs/.gitignore b/managementnode/tools/Windows/Logs/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows/Logs/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows/Scripts/post_initial_connection/.gitignore b/managementnode/tools/Windows/Scripts/post_initial_connection/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows/Scripts/post_initial_connection/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows/Scripts/post_load/.gitignore b/managementnode/tools/Windows/Scripts/post_load/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows/Scripts/post_load/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows/Scripts/post_reservation/.gitignore b/managementnode/tools/Windows/Scripts/post_reservation/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows/Scripts/post_reservation/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows/Scripts/post_reserve/.gitignore b/managementnode/tools/Windows/Scripts/post_reserve/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows/Scripts/post_reserve/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows/Scripts/pre_capture/.gitignore b/managementnode/tools/Windows/Scripts/pre_capture/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows/Scripts/pre_capture/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows/Scripts/pre_reload/.gitignore b/managementnode/tools/Windows/Scripts/pre_reload/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows/Scripts/pre_reload/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows/Updates/x86/.gitignore b/managementnode/tools/Windows/Updates/x86/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows/Updates/x86/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows/Updates/x86_64/.gitignore b/managementnode/tools/Windows/Updates/x86_64/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows/Updates/x86_64/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows/Utilities/WSName/.gitignore b/managementnode/tools/Windows/Utilities/WSName/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows/Utilities/WSName/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_10/Drivers/.gitignore b/managementnode/tools/Windows_10/Drivers/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_10/Drivers/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_10/Scripts/post_initial_connection/.gitignore b/managementnode/tools/Windows_10/Scripts/post_initial_connection/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_10/Scripts/post_initial_connection/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_10/Scripts/post_load/.gitignore b/managementnode/tools/Windows_10/Scripts/post_load/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_10/Scripts/post_load/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_10/Scripts/post_reservation/.gitignore b/managementnode/tools/Windows_10/Scripts/post_reservation/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_10/Scripts/post_reservation/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_10/Scripts/post_reserve/.gitignore b/managementnode/tools/Windows_10/Scripts/post_reserve/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_10/Scripts/post_reserve/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_10/Scripts/pre_capture/.gitignore b/managementnode/tools/Windows_10/Scripts/pre_capture/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_10/Scripts/pre_capture/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_10/Scripts/pre_reload/.gitignore b/managementnode/tools/Windows_10/Scripts/pre_reload/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_10/Scripts/pre_reload/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_10/Updates/.gitignore b/managementnode/tools/Windows_10/Updates/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_10/Updates/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_10/Utilities/.gitignore b/managementnode/tools/Windows_10/Utilities/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_10/Utilities/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_7/Drivers/.gitignore b/managementnode/tools/Windows_7/Drivers/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_7/Drivers/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_7/Scripts/post_initial_connection/.gitignore b/managementnode/tools/Windows_7/Scripts/post_initial_connection/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_7/Scripts/post_initial_connection/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_7/Scripts/post_load/.gitignore b/managementnode/tools/Windows_7/Scripts/post_load/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_7/Scripts/post_load/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_7/Scripts/post_reservation/.gitignore b/managementnode/tools/Windows_7/Scripts/post_reservation/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_7/Scripts/post_reservation/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_7/Scripts/post_reserve/.gitignore b/managementnode/tools/Windows_7/Scripts/post_reserve/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_7/Scripts/post_reserve/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_7/Scripts/pre_capture/.gitignore b/managementnode/tools/Windows_7/Scripts/pre_capture/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_7/Scripts/pre_capture/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_7/Scripts/pre_reload/.gitignore b/managementnode/tools/Windows_7/Scripts/pre_reload/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_7/Scripts/pre_reload/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_7/Updates/x86/.gitignore b/managementnode/tools/Windows_7/Updates/x86/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_7/Updates/x86/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_7/Updates/x86_64/.gitignore b/managementnode/tools/Windows_7/Updates/x86_64/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_7/Updates/x86_64/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_7/Utilities/.gitignore b/managementnode/tools/Windows_7/Utilities/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_7/Utilities/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_8/Drivers/.gitignore b/managementnode/tools/Windows_8/Drivers/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_8/Drivers/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_8/Scripts/post_initial_connection/.gitignore b/managementnode/tools/Windows_8/Scripts/post_initial_connection/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_8/Scripts/post_initial_connection/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_8/Scripts/post_load/.gitignore b/managementnode/tools/Windows_8/Scripts/post_load/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_8/Scripts/post_load/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_8/Scripts/post_reservation/.gitignore b/managementnode/tools/Windows_8/Scripts/post_reservation/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_8/Scripts/post_reservation/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_8/Scripts/post_reserve/.gitignore b/managementnode/tools/Windows_8/Scripts/post_reserve/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_8/Scripts/post_reserve/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_8/Scripts/pre_capture/.gitignore b/managementnode/tools/Windows_8/Scripts/pre_capture/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_8/Scripts/pre_capture/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_8/Scripts/pre_reload/.gitignore b/managementnode/tools/Windows_8/Scripts/pre_reload/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_8/Scripts/pre_reload/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_8/Updates/.gitignore b/managementnode/tools/Windows_8/Updates/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_8/Updates/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_8/Utilities/.gitignore b/managementnode/tools/Windows_8/Utilities/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_8/Utilities/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Server_2003/Drivers/.gitignore b/managementnode/tools/Windows_Server_2003/Drivers/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Server_2003/Drivers/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Server_2003/Scripts/post_initial_connection/.gitignore b/managementnode/tools/Windows_Server_2003/Scripts/post_initial_connection/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Server_2003/Scripts/post_initial_connection/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Server_2003/Scripts/post_load/.gitignore b/managementnode/tools/Windows_Server_2003/Scripts/post_load/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Server_2003/Scripts/post_load/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Server_2003/Scripts/post_reservation/.gitignore b/managementnode/tools/Windows_Server_2003/Scripts/post_reservation/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Server_2003/Scripts/post_reservation/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Server_2003/Scripts/post_reserve/.gitignore b/managementnode/tools/Windows_Server_2003/Scripts/post_reserve/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Server_2003/Scripts/post_reserve/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Server_2003/Scripts/pre_capture/.gitignore b/managementnode/tools/Windows_Server_2003/Scripts/pre_capture/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Server_2003/Scripts/pre_capture/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Server_2003/Scripts/pre_reload/.gitignore b/managementnode/tools/Windows_Server_2003/Scripts/pre_reload/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Server_2003/Scripts/pre_reload/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Server_2003/Updates/x86/.gitignore b/managementnode/tools/Windows_Server_2003/Updates/x86/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Server_2003/Updates/x86/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Server_2003/Updates/x86_64/.gitignore b/managementnode/tools/Windows_Server_2003/Updates/x86_64/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Server_2003/Updates/x86_64/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Server_2003/Utilities/Sysprep/.gitignore b/managementnode/tools/Windows_Server_2003/Utilities/Sysprep/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Server_2003/Utilities/Sysprep/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Server_2008/Drivers/.gitignore b/managementnode/tools/Windows_Server_2008/Drivers/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Server_2008/Drivers/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Server_2008/Scripts/post_initial_connection/.gitignore b/managementnode/tools/Windows_Server_2008/Scripts/post_initial_connection/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Server_2008/Scripts/post_initial_connection/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Server_2008/Scripts/post_load/.gitignore b/managementnode/tools/Windows_Server_2008/Scripts/post_load/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Server_2008/Scripts/post_load/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Server_2008/Scripts/post_reservation/.gitignore b/managementnode/tools/Windows_Server_2008/Scripts/post_reservation/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Server_2008/Scripts/post_reservation/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Server_2008/Scripts/post_reserve/.gitignore b/managementnode/tools/Windows_Server_2008/Scripts/post_reserve/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Server_2008/Scripts/post_reserve/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Server_2008/Scripts/pre_capture/.gitignore b/managementnode/tools/Windows_Server_2008/Scripts/pre_capture/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Server_2008/Scripts/pre_capture/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Server_2008/Scripts/pre_reload/.gitignore b/managementnode/tools/Windows_Server_2008/Scripts/pre_reload/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Server_2008/Scripts/pre_reload/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Server_2008/Updates/x86/.gitignore b/managementnode/tools/Windows_Server_2008/Updates/x86/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Server_2008/Updates/x86/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Server_2008/Updates/x86_64/.gitignore b/managementnode/tools/Windows_Server_2008/Updates/x86_64/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Server_2008/Updates/x86_64/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Server_2008/Utilities/.gitignore b/managementnode/tools/Windows_Server_2008/Utilities/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Server_2008/Utilities/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Server_2012/Drivers/.gitignore b/managementnode/tools/Windows_Server_2012/Drivers/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Server_2012/Drivers/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Server_2012/Scripts/post_initial_connection/.gitignore b/managementnode/tools/Windows_Server_2012/Scripts/post_initial_connection/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Server_2012/Scripts/post_initial_connection/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Server_2012/Scripts/post_load/.gitignore b/managementnode/tools/Windows_Server_2012/Scripts/post_load/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Server_2012/Scripts/post_load/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Server_2012/Scripts/post_reservation/.gitignore b/managementnode/tools/Windows_Server_2012/Scripts/post_reservation/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Server_2012/Scripts/post_reservation/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Server_2012/Scripts/post_reserve/.gitignore b/managementnode/tools/Windows_Server_2012/Scripts/post_reserve/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Server_2012/Scripts/post_reserve/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Server_2012/Scripts/pre_capture/.gitignore b/managementnode/tools/Windows_Server_2012/Scripts/pre_capture/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Server_2012/Scripts/pre_capture/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Server_2012/Scripts/pre_reload/.gitignore b/managementnode/tools/Windows_Server_2012/Scripts/pre_reload/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Server_2012/Scripts/pre_reload/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Server_2012/Updates/.gitignore b/managementnode/tools/Windows_Server_2012/Updates/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Server_2012/Updates/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Server_2012/Utilities/.gitignore b/managementnode/tools/Windows_Server_2012/Utilities/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Server_2012/Utilities/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Server_2016/Drivers/.gitignore b/managementnode/tools/Windows_Server_2016/Drivers/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Server_2016/Drivers/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Server_2016/Scripts/post_initial_connection/.gitignore b/managementnode/tools/Windows_Server_2016/Scripts/post_initial_connection/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Server_2016/Scripts/post_initial_connection/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Server_2016/Scripts/post_load/.gitignore b/managementnode/tools/Windows_Server_2016/Scripts/post_load/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Server_2016/Scripts/post_load/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Server_2016/Scripts/post_reservation/.gitignore b/managementnode/tools/Windows_Server_2016/Scripts/post_reservation/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Server_2016/Scripts/post_reservation/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Server_2016/Scripts/post_reserve/.gitignore b/managementnode/tools/Windows_Server_2016/Scripts/post_reserve/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Server_2016/Scripts/post_reserve/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Server_2016/Scripts/pre_capture/.gitignore b/managementnode/tools/Windows_Server_2016/Scripts/pre_capture/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Server_2016/Scripts/pre_capture/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Server_2016/Scripts/pre_reload/.gitignore b/managementnode/tools/Windows_Server_2016/Scripts/pre_reload/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Server_2016/Scripts/pre_reload/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Server_2016/Updates/.gitignore b/managementnode/tools/Windows_Server_2016/Updates/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Server_2016/Updates/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Server_2016/Utilities/.gitignore b/managementnode/tools/Windows_Server_2016/Utilities/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Server_2016/Utilities/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Version_5/Drivers/.gitignore b/managementnode/tools/Windows_Version_5/Drivers/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Version_5/Drivers/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Version_5/Scripts/post_initial_connection/.gitignore b/managementnode/tools/Windows_Version_5/Scripts/post_initial_connection/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Version_5/Scripts/post_initial_connection/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Version_5/Scripts/post_load/.gitignore b/managementnode/tools/Windows_Version_5/Scripts/post_load/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Version_5/Scripts/post_load/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Version_5/Scripts/post_reservation/.gitignore b/managementnode/tools/Windows_Version_5/Scripts/post_reservation/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Version_5/Scripts/post_reservation/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Version_5/Scripts/post_reserve/.gitignore b/managementnode/tools/Windows_Version_5/Scripts/post_reserve/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Version_5/Scripts/post_reserve/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Version_5/Scripts/pre_capture/.gitignore b/managementnode/tools/Windows_Version_5/Scripts/pre_capture/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Version_5/Scripts/pre_capture/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Version_5/Scripts/pre_reload/.gitignore b/managementnode/tools/Windows_Version_5/Scripts/pre_reload/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Version_5/Scripts/pre_reload/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Version_5/Updates/x86/.gitignore b/managementnode/tools/Windows_Version_5/Updates/x86/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Version_5/Updates/x86/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Version_5/Updates/x86_64/.gitignore b/managementnode/tools/Windows_Version_5/Updates/x86_64/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Version_5/Updates/x86_64/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Version_6/Drivers/.gitignore b/managementnode/tools/Windows_Version_6/Drivers/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Version_6/Drivers/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Version_6/Scripts/post_initial_connection/.gitignore b/managementnode/tools/Windows_Version_6/Scripts/post_initial_connection/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Version_6/Scripts/post_initial_connection/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Version_6/Scripts/post_load/.gitignore b/managementnode/tools/Windows_Version_6/Scripts/post_load/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Version_6/Scripts/post_load/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Version_6/Scripts/post_reservation/.gitignore b/managementnode/tools/Windows_Version_6/Scripts/post_reservation/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Version_6/Scripts/post_reservation/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Version_6/Scripts/post_reserve/.gitignore b/managementnode/tools/Windows_Version_6/Scripts/post_reserve/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Version_6/Scripts/post_reserve/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Version_6/Scripts/pre_capture/.gitignore b/managementnode/tools/Windows_Version_6/Scripts/pre_capture/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Version_6/Scripts/pre_capture/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Version_6/Scripts/pre_reload/.gitignore b/managementnode/tools/Windows_Version_6/Scripts/pre_reload/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Version_6/Scripts/pre_reload/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Version_6/Updates/x86/.gitignore b/managementnode/tools/Windows_Version_6/Updates/x86/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Version_6/Updates/x86/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Version_6/Updates/x86_64/.gitignore b/managementnode/tools/Windows_Version_6/Updates/x86_64/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Version_6/Updates/x86_64/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Vista/Drivers/.gitignore b/managementnode/tools/Windows_Vista/Drivers/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Vista/Drivers/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Vista/Scripts/post_initial_connection/.gitignore b/managementnode/tools/Windows_Vista/Scripts/post_initial_connection/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Vista/Scripts/post_initial_connection/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Vista/Scripts/post_load/.gitignore b/managementnode/tools/Windows_Vista/Scripts/post_load/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Vista/Scripts/post_load/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Vista/Scripts/post_reservation/.gitignore b/managementnode/tools/Windows_Vista/Scripts/post_reservation/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Vista/Scripts/post_reservation/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Vista/Scripts/post_reserve/.gitignore b/managementnode/tools/Windows_Vista/Scripts/post_reserve/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Vista/Scripts/post_reserve/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Vista/Scripts/pre_capture/.gitignore b/managementnode/tools/Windows_Vista/Scripts/pre_capture/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Vista/Scripts/pre_capture/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Vista/Scripts/pre_reload/.gitignore b/managementnode/tools/Windows_Vista/Scripts/pre_reload/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Vista/Scripts/pre_reload/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Vista/Updates/x86/.gitignore b/managementnode/tools/Windows_Vista/Updates/x86/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Vista/Updates/x86/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_Vista/Updates/x86_64/.gitignore b/managementnode/tools/Windows_Vista/Updates/x86_64/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_Vista/Updates/x86_64/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_XP/Drivers/.gitignore b/managementnode/tools/Windows_XP/Drivers/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_XP/Drivers/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_XP/Scripts/post_initial_connection/.gitignore b/managementnode/tools/Windows_XP/Scripts/post_initial_connection/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_XP/Scripts/post_initial_connection/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_XP/Scripts/post_load/.gitignore b/managementnode/tools/Windows_XP/Scripts/post_load/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_XP/Scripts/post_load/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_XP/Scripts/post_reservation/.gitignore b/managementnode/tools/Windows_XP/Scripts/post_reservation/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_XP/Scripts/post_reservation/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_XP/Scripts/post_reserve/.gitignore b/managementnode/tools/Windows_XP/Scripts/post_reserve/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_XP/Scripts/post_reserve/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_XP/Scripts/pre_capture/.gitignore b/managementnode/tools/Windows_XP/Scripts/pre_capture/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_XP/Scripts/pre_capture/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_XP/Scripts/pre_reload/.gitignore b/managementnode/tools/Windows_XP/Scripts/pre_reload/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_XP/Scripts/pre_reload/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_XP/Updates/x86/.gitignore b/managementnode/tools/Windows_XP/Updates/x86/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_XP/Updates/x86/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_XP/Updates/x86_64/.gitignore b/managementnode/tools/Windows_XP/Updates/x86_64/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_XP/Updates/x86_64/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/managementnode/tools/Windows_XP/Utilities/Sysprep/.gitignore b/managementnode/tools/Windows_XP/Utilities/Sysprep/.gitignore
new file mode 100644
index 0000000..44c6794
--- /dev/null
+++ b/managementnode/tools/Windows_XP/Utilities/Sysprep/.gitignore
@@ -0,0 +1,11 @@
+#
+# The purpose of this file is to keep this directory from being empty so the
+# directory will be retained in the git repository. The directory is used by
+# the backend code for some scripts used during provisioning, and so needs to
+# be retained.
+#
+
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
diff --git a/web/.gitignore b/web/.gitignore
new file mode 100644
index 0000000..54e45b2
--- /dev/null
+++ b/web/.gitignore
@@ -0,0 +1,9 @@
+.ht-inc/conf.php
+.ht-inc/cryptkey/cryptkeyid
+.ht-inc/cryptkey/private.pem
+.ht-inc/keys.pem
+.ht-inc/pubkey.pem
+.ht-inc/secrets.php
+.ht-inc/spyc-0.5.1/
+dojo/
+themes/**/css/dojo
diff --git a/web/.ht-inc/conf-default.php b/web/.ht-inc/conf-default.php
index 255991b..e64ea50 100644
--- a/web/.ht-inc/conf-default.php
+++ b/web/.ht-inc/conf-default.php
@@ -56,11 +56,15 @@
 
 
 #######################   end required modifications ###########################
+$host = $_SERVER['HTTP_HOST'];
+if (strpos($host, ':')) {
+	$host = substr($host, 0, strpos($host, ':'));
+}
 
 define("BASEURL", "https://{$_SERVER['HTTP_HOST']}/vcl");   // no trailing slash - all of the URL except /index.php
 define("SCRIPT", "/index.php");                 // this should only be "/index.php" unless you rename index.php to something else
 define("HOMEURL", "https://{$_SERVER['HTTP_HOST']}/vcl/"); // url to go to when someone clicks HOME or Logout
-define("COOKIEDOMAIN", "{$_SERVER['HTTP_HOST']}");       // domain in which cookies are set
+define("COOKIEDOMAIN", "$host");       // domain in which cookies are set
 
 define("DEFAULTGROUP", "adminUsers"); // if a user is in no groups, use reservation
 										  //   length attriubtes from this group
diff --git a/web/.ht-inc/requests.php b/web/.ht-inc/requests.php
index 9d8d8ce..b163c42 100644
--- a/web/.ht-inc/requests.php
+++ b/web/.ht-inc/requests.php
@@ -380,7 +380,7 @@
 			if(checkUserHasPerm('View Debug Information')) {
 				if(! is_null($requests[$i]['vmhostid'])) {
 					$query = "SELECT c.hostname "
-					       . "FROM computer c, " 
+					       . "FROM computer c, "
 					       .      "vmhost v "
 					       . "WHERE v.id = {$requests[$i]['vmhostid']} AND "
 					       .       "v.computerid = c.id";
@@ -1329,7 +1329,7 @@
 						$subowner = 1;
 				}
 			}
-			if($subowner || 
+			if($subowner ||
 			   (array_key_exists($id, $imagedata) &&
 			   count($imagedata[$id]['imagerevision']) > 1 &&
 			   ($imagedata[$id]['ownerid'] == $user['id'] ||
@@ -1339,7 +1339,7 @@
 			}
 		}
 	}
-	if(in_array('serverCheckOut', $user['privileges']) && 
+	if(in_array('serverCheckOut', $user['privileges']) &&
 	   count($checkout['image'])) {
 		$serveraccess = 1;
 		/*$extraimages = getServerProfileImages($user['id']);
@@ -1369,7 +1369,7 @@
 							$subowner = 1;
 					}
 				}
-				if($subowner || 
+				if($subowner ||
 				   (array_key_exists($id, $imagedata) &&
 				   count($imagedata[$id]['imagerevision']) > 1 &&
 				   ($imagedata[$id]['ownerid'] == $user['id'] ||
@@ -1884,7 +1884,7 @@
 			$start = unixFloor15($now);
 		if($type == 'basic' || $type == 'imaging') {
 			# compute maxstart based on 11:45 pm on start day
-			$tmp = $now + DAYSAHEAD * SECINDAY; 
+			$tmp = $now + DAYSAHEAD * SECINDAY;
 			$maxstart = mktime(23, 45, 0, date('n', $tmp), date('j', $tmp), date('Y', $tmp));
 			if($start > $maxstart)
 				return;
@@ -1986,7 +1986,7 @@
 	$rc = isAvailable($images, $imageid, $imagerevisionid, $start, $end, 0, 0, 0, 0, $imaging, $fixedIP);
 	if($rc < 1) {
 		$cdata = array('now' => 0,
-		               'start' => $start, 
+		               'start' => $start,
 		               'end' => $end,
 		               'server' => 0,
 		               'imageid' => $imageid);
@@ -2488,7 +2488,7 @@
 		}
 	}
 	$qbase = "INSERT INTO configinstance "
-	       .        "(reservationid, " 
+	       .        "(reservationid, "
 	       .        "configid, "
 	       .        "configmapid, "
 	       .        "configinstancestatusid) "
@@ -2706,8 +2706,8 @@
 
 	if($request['currstateid'] == 11 ||
 	   ($request['currstateid'] == 12 && $request['laststateid'] == 11))
-		return "<br><span class=\"rederrormsg\">" . 
-		       i("The selected reservation has timed out and is no longer available.") . 
+		return "<br><span class=\"rederrormsg\">" .
+		       i("The selected reservation has timed out and is no longer available.") .
 		       "</span>";
 
 	if($request['imageid'] == $request['compimageid'])
@@ -2954,7 +2954,7 @@
 	print "  </TR>\n";
 	print "  <TR>\n";
 	print "    <TH align=right>Start&nbsp;Time:</TH>\n";
-	if(datetimeToUnix($request["start"]) < 
+	if(datetimeToUnix($request["start"]) <
 	   datetimeToUnix($request["daterequested"])) {
 		print "    <TD>" . prettyDatetime($request["daterequested"]) . "</TD>\n";
 	}
@@ -3092,7 +3092,7 @@
 	$request = getRequestInfo($requestid, 1);
 	# check to see if reservation exists
 	if(is_null($request) || $request['stateid'] == 11 || $request['stateid'] == 12 ||
-	   ($request['stateid'] == 14 && 
+	   ($request['stateid'] == 14 &&
 	   ($request['laststateid'] == 11 || $request['laststateid'] == 12))) {
 		sendJSON(array('status' => 'resgone'));
 		return;
@@ -3208,14 +3208,14 @@
 	if($unixstart > $now) {
 		$tzunixstart = $unixstart + ($_SESSION['persistdata']['tzoffset'] * 60);
 		$cdata['modifystart'] = 1;
-		$txt  = i("Modify reservation for") . " <b>{$request['reservations'][0]['prettyimage']}</b> "; 
+		$txt  = i("Modify reservation for") . " <b>{$request['reservations'][0]['prettyimage']}</b> ";
 		$txt .= i("starting") . " " . prettyDatetime($request["start"]) . ": <br>";
 		$h .= preg_replace("/(.{1,60}([ \n]|$))/", '\1<br>', $txt);
 		$days = array();
 		$startday = date('l', $tzunixstart);
 		$cur = time() + ($_SESSION['persistdata']['tzoffset'] * 60);
-		for($end = $cur + DAYSAHEAD * SECINDAY; 
-		    $cur < $end; 
+		for($end = $cur + DAYSAHEAD * SECINDAY;
+		    $cur < $end;
 		    $cur += SECINDAY) {
 			$index = date('Ymd', $cur);
 			$days[$index] = date('l', $cur);
@@ -3367,13 +3367,13 @@
 	// if started, only allow end to be modified
 	# check for following reservations
 	$timeToNext = timeToNextReservation($request);
-	# check for 30 minutes because need 15 minute buffer and min can 
+	# check for 30 minutes because need 15 minute buffer and min can
 	# extend by is 15 min
 	if($timeToNext < 30) {
 		$movedall = 1;
 		$lockedall = 1;
 		if(count($request['reservations']) > 1) {
-			# get semaphore on each existing node in cluster so that nothing 
+			# get semaphore on each existing node in cluster so that nothing
 			# can get moved to the nodes during this process
 
 			$semimageid = getImageId('noimage');
@@ -3826,9 +3826,9 @@
 	$rc = isAvailable($images, $imageid, $revisions, $startts,
 	                  $endts, 1, $requestid, 0, 0, 0, $ip, $mac);
 	$data = array();
-	if($rc < 1) { 
+	if($rc < 1) {
 		$cdata = array('now' => 0,
-		               'start' => $startts, 
+		               'start' => $startts,
 		               'end' => $endts,
 		               'server' => $allowindefiniteend,
 		               'imageid' => $imageid,
@@ -3936,7 +3936,7 @@
 		return;
 	}
 	if($request['stateid'] == 11 || $request['stateid'] == 12 ||
-	   ($request['stateid'] == 14 && 
+	   ($request['stateid'] == 14 &&
 	   ($request['laststateid'] == 11 || $request['laststateid'] == 12))) {
 		$data = array('error' => 1,
 		              'refresh' => 1,
@@ -4160,7 +4160,7 @@
 	$requestid = getContinuationVar('requestid');
 	$reqdata = getRequestInfo($requestid, 1);
 	if(is_null($reqdata) || $reqdata['stateid'] == 11 || $reqdata['stateid'] == 12 ||
-	   ($reqdata['stateid'] == 14 && 
+	   ($reqdata['stateid'] == 14 &&
 	   ($reqdata['laststateid'] == 11 || $reqdata['laststateid'] == 12))) {
 		print "resGone('reboot'); ";
 		print "dijit.byId('editResDlg').show();";
@@ -4192,7 +4192,7 @@
 	$requestid = getContinuationVar('requestid');
 	$reqdata = getRequestInfo($requestid, 1);
 	if(is_null($reqdata) || $reqdata['stateid'] == 11 || $reqdata['stateid'] == 12 ||
-	   ($reqdata['stateid'] == 14 && 
+	   ($reqdata['stateid'] == 14 &&
 	   ($reqdata['laststateid'] == 11 || $reqdata['laststateid'] == 12))) {
 		sendJSON(array('status' => 'resgone'));
 		return;
@@ -4301,7 +4301,7 @@
 		return;
 	}
 	if($requestData['stateid'] == 11 || $requestData['stateid'] == 12 ||
-	   ($requestData['stateid'] == 14 && 
+	   ($requestData['stateid'] == 14 &&
 	   ($requestData['laststateid'] == 11 || $requestData['laststateid'] == 12))) {
 		$h = i("This reservation has timed out due to lack of user activity and is no longer available.");
 		sendJSON(array('html' => $h, 'refresh' => 1));
@@ -4374,6 +4374,8 @@
 				$conuser = $user['unityid'];
 			if($requestData['reservations'][0]['domainDNSName'] != '' && ! strlen($passwd))
 				$conuser .= "@" . $requestData['reservations'][0]['domainDNSName'];
+			elseif($requestData['reservations'][0]['OStype'] == 'windows')
+				$conuser = ".\\$conuser";
 			if(! strlen($passwd))
 				$passwd = i('(use your campus password)');
 			if($cluster)
@@ -4400,17 +4402,17 @@
 			$tos = array($conuser,
 			             $passwd,
 			             $res['connectIP']);
-			$msg = preg_replace($froms, $tos, $method['connecttext']); 
+			$msg = preg_replace($froms, $tos, $method['connecttext']);
 			foreach($method['ports'] as $port) {
 				if($usenat && array_key_exists($port['key'], $natports[$cmid]))
-					$msg = preg_replace("/{$port['key']}/", $natports[$cmid][$port['key']]['publicport'], $msg); 
+					$msg = preg_replace("/{$port['key']}/", $natports[$cmid][$port['key']]['publicport'], $msg);
 				else {
 					if((preg_match('/remote desktop/i', $method['description']) ||
-					   preg_match('/RDP/i', $method['description'])) && 
+					   preg_match('/RDP/i', $method['description'])) &&
 					   $port['key'] == '#Port-TCP-3389#')
-						$msg = preg_replace("/{$port['key']}/", $user['rdpport'], $msg); 
+						$msg = preg_replace("/{$port['key']}/", $user['rdpport'], $msg);
 					else
-						$msg = preg_replace("/{$port['key']}/", $port['port'], $msg); 
+						$msg = preg_replace("/{$port['key']}/", $port['port'], $msg);
 				}
 			}
 			#$h .= preg_replace("/(.{1,120}([ ]|$))/", '\1<br>', $msg);
@@ -4421,7 +4423,8 @@
 				#$h .= "<div id=\"connectdiv\">\n";
 				$h .= "<FORM action=\"" . BASEURL . SCRIPT . "\" method=post>\n";
 				$cdata = array('requestid' => $requestid,
-				               'resid' => $res['reservationid']);
+				               'resid' => $res['reservationid'],
+				               'cmid' => $cmid);
 				$expire = datetimeToUnix($requestData['end']) - $now + 1800; # remaining reservation time plus 30 min
 				$cont = addContinuationsEntry('sendRDPfile', $cdata, $expire);
 				$h .= "<INPUT type=hidden name=continuation value=\"$cont\">\n";
@@ -4619,7 +4622,7 @@
 	$images = removeNoCheckout($resources["image"]);
 	#$extraimages = getServerProfileImages($user['id']);
 	if((! array_key_exists($return['imageid'], $images) &&
-	   /*($return['type'] != 'server' || 
+	   /*($return['type'] != 'server' ||
 		! array_key_exists($return['imageid'], $extraimages)) &&*/
 	   ($return['type'] != 'imaging' ||
 	   ! array_key_exists($return['imageid'], $withnocheckout))) ||
@@ -4660,7 +4663,7 @@
 		$return['revisionids'][$return['imageid']][] = $revids[0];
 	else
 		$return['revisionids'][$return['imageid']][] = getProductionRevisionid($return['imageid']);
-	
+
 	# duration
 	if($return['ending'] == 'duration') {
 		$return['duration'] = processInputVar('duration', ARG_NUMERIC, 0);
@@ -4757,7 +4760,7 @@
 				$return['dnsArr'][] = $dnsaddr;
 				$cnt++;
 			}
-	
+
 			# check that a management node can handle the network
 			$mappedmns = getMnsFromImage($return['imageid']);
 			$mnnets = checkAvailableNetworks($return['ipaddr']);
@@ -5008,8 +5011,8 @@
 	$cur = time();
 	if(array_key_exists('tzoffset', $_SESSION['persistdata']))
 		$cur += $_SESSION['persistdata']['tzoffset'] * 60;
-	for($end = $cur + DAYSAHEAD * SECINDAY; 
-	    $cur < $end; 
+	for($end = $cur + DAYSAHEAD * SECINDAY;
+	    $cur < $end;
 	    $cur += SECINDAY) {
 		$tmp = getdate($cur);
 		$index = $cur;
diff --git a/web/.ht-inc/utils.php b/web/.ht-inc/utils.php
index feaabef..d53bb20 100644
--- a/web/.ht-inc/utils.php
+++ b/web/.ht-inc/utils.php
@@ -125,7 +125,12 @@
 	$days = array(i('Sunday'), i('Monday'), i('Tuesday'), i('Wednesday'), i('Thursday'), i('Friday'), i('Saturday'));
 	$phpVerArr = explode('.', phpversion());
 	$phpVer = $phpVerArr[0];
-	$uniqid = uniqid($_SERVER['HTTP_HOST'] . "-" . getmypid() . "-");
+	
+	$host = $_SERVER['HTTP_HOST'];
+	if(strpos($host, ':')) {
+		$host = substr($host, 0, strpos($host, ':'));
+	}
+	$uniqid = uniqid($host . "-" . getmypid() . "-");
 
 	$passwdArray = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K',
 	                     'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V',
@@ -448,7 +453,7 @@
 						exit;
 					}
 					$search = ldap_search($ds,
-					                      $auth['binddn'], 
+					                      $auth['binddn'],
 					                      "{$auth['lookupuserfield']}={$user['unityid']}",
 					                      array('dn'), 0, 3, 15);
 					if($search) {
@@ -498,7 +503,7 @@
 			elseif($authMechs[$authtype]['type'] == 'redirect') {
 				$affilid = $authMechs[$authtype]['affiliationid'];
 				if(!(isset($apiValidateFunc) && is_array($apiValidateFunc) &&
-				   array_key_exists($affilid, $apiValidateFunc) && 
+				   array_key_exists($affilid, $apiValidateFunc) &&
 				   $apiValidateFunc[$affilid]($xmluser, $xmlpass))) {
 					printXMLRPCerror(3);    # access denied
 					dbDisconnect();
@@ -636,7 +641,7 @@
 		$id = fread($fh, 50);
 		fclose($fh);
 		$_id = mysql_real_escape_string($id);
-	
+
 		$query = "SELECT id "
 		       . "FROM cryptkey  "
 		       . "WHERE id = '$_id'";
@@ -745,7 +750,7 @@
 		doQuery($query, 101, 'vcl', 1);
 		dbDisconnect();
 		return;
-	}  
+	}
 	$inmaintenance = 0;
 	$skin = '';
 	foreach($files as $file) {
@@ -1104,7 +1109,7 @@
 	global $affilValFuncArgs, $affilValFunc;
 	if(empty($loginid))
 		return 0;
-	
+
 	$rc = getAffilidAndLogin($loginid, $affilid);
 	if($rc == -1)
 		return 0;
@@ -1122,15 +1127,15 @@
 		return 1;
 
 	if($rc == 0 &&
-	   ALLOWADDSHIBUSERS == 1 && 
+	   ALLOWADDSHIBUSERS == 1 &&
 	   strpos($loginid, '@')) {
 		$query = "SELECT shibonly "
 		       . "FROM affiliation "
 		       . "WHERE id = " . DEFAULT_AFFILID;
-		$qh = doQuery($query); 
+		$qh = doQuery($query);
 		$row = mysql_fetch_assoc($qh);
 		if($row['shibonly'] == 1)
-			return 0;           
+			return 0;
 	}
 
 	$valfunc = $affilValFunc[$affilid];
@@ -1270,7 +1275,7 @@
 function doQuery($query, $errcode=101, $db="vcl", $nolog=0) {
 	global $mysql_link_vcl, $mysql_link_acct, $user, $mode, $ENABLE_ITECSAUTH;
 	if($db == "vcl") {
-		if(QUERYLOGGING != 0 && (! $nolog) && 
+		if(QUERYLOGGING != 0 && (! $nolog) &&
 		   preg_match('/^(UPDATE|INSERT|DELETE)/', $query) &&
 		   strpos($query, 'UPDATE continuations SET expiretime = ') === FALSE) {
 			$logquery = str_replace("'", "\'", $query);
@@ -1373,7 +1378,7 @@
 ///                  checked out\n
 /// \b maxinitialtime - maximum time (in minutes) to be shown when requesting
 ///                     a reservation that the image can reserved for\n
-/// \b imagemetaid - NULL or corresponding id from imagemeta table and the 
+/// \b imagemetaid - NULL or corresponding id from imagemeta table and the
 /// following additional information:\n
 /// \b checkuser - whether or not vcld should check for a logged in user\n
 /// \b sysprep - whether or not to use sysprep on creation of the image\n
@@ -1990,7 +1995,7 @@
 			return '';
 	$query = "SELECT id, "
 	       .        "imageid "
-	       . "FROM imagerevision  " 
+	       . "FROM imagerevision  "
 	       . "WHERE production = 1";
 	$qh = doQuery($query, 101);
 	while($row = mysql_fetch_assoc($qh))
@@ -2190,7 +2195,7 @@
 
 	$resources = array();
 	foreach(array_keys($resourcegroups) as $type) {
-		$resources[$type] = 
+		$resources[$type] =
 		   getResourcesFromGroups($resourcegroups[$type], $type, $includedeleted);
 	}
 	if(! $bygroup)
@@ -2220,7 +2225,7 @@
 /// \brief adds resource privileges to $nodeprivs for the parents of $nodeid
 ///
 ////////////////////////////////////////////////////////////////////////////////
-function getUserResourcesUp(&$nodeprivs, $nodeid, $userid, 
+function getUserResourcesUp(&$nodeprivs, $nodeid, $userid,
                             $resourceprivs, $privdataset) {
 	# build list of parent nodes
 	# starting at top, get images available at that node and user privs there and
@@ -2257,7 +2262,7 @@
 /// of $nodeid
 ///
 ////////////////////////////////////////////////////////////////////////////////
-function getUserResourcesDown(&$nodeprivs, $nodeid, $userid, 
+function getUserResourcesDown(&$nodeprivs, $nodeid, $userid,
                               $resourceprivs, $privdataset) {
 	# FIXME can we check for cascading and if not there, don't descend?
 	$children = getChildNodes($nodeid);
@@ -2283,11 +2288,11 @@
 ///
 /// \return modifies $nodeprivs, but doesn't return anything
 ///
-/// \brief for $id, gets privileges and cascaded privileges the user and any 
+/// \brief for $id, gets privileges and cascaded privileges the user and any
 /// groups the user is and adds them to $nodeprivs
 ///
 ////////////////////////////////////////////////////////////////////////////////
-function addNodeUserResourcePrivs(&$nodeprivs, $id, $lastid, $userid, 
+function addNodeUserResourcePrivs(&$nodeprivs, $id, $lastid, $userid,
                                   $resourceprivs, $privdataset) {
 	$nodeprivs[$id]["user"] = array("cascade" => 0);
 	foreach($resourceprivs as $priv) {
@@ -2358,9 +2363,9 @@
 			if($noprivs)
 				$nodeprivs[$id][$groupid]["cascade"] = 0;
 		}
-		// if group not blocking at this node, and group had cascade at previous 
+		// if group not blocking at this node, and group had cascade at previous
 		# node
-		if($lastid && ! $nodeprivs[$id][$groupid]["block"] && 
+		if($lastid && ! $nodeprivs[$id][$groupid]["block"] &&
 		   isset($nodeprivs[$lastid][$groupid]) &&
 		   $nodeprivs[$lastid][$groupid]["cascade"]) {
 			# set cascade = 1
@@ -2725,7 +2730,7 @@
 	$cryptdata = $iv . $cryptdata;
 	return trim(base64_encode($cryptdata));
 }
- 
+
 ////////////////////////////////////////////////////////////////////////////////
 ///
 /// \fn decryptData($data, $cryptkey, $algo, $option, $keylength)
@@ -3392,7 +3397,7 @@
 		       . "FROM `usergroup` u, "
 		       .      "`usergroupmembers` m "
 		       . "WHERE u.editusergroupid = m.usergroupid AND "
-		       .       "(u.ownerid = $id OR m.userid = $id) AND " 
+		       .       "(u.ownerid = $id OR m.userid = $id) AND "
 		       .       "u.affiliationid = {$user['affiliationid']} "
 		       . "ORDER BY name";
 	}
@@ -3714,7 +3719,7 @@
 		return;
 
 	$query = "INSERT INTO usergroupmembers "
-	       .        "(userid, " 
+	       .        "(userid, "
 	       .        "usergroupid) "
 	       . "VALUES "
 	       .        "($userid, "
@@ -3966,7 +3971,7 @@
 	   strncmp("{$_POST[$vartag]}", "0", 1) == 0 &&
 	   $type == ARG_NUMERIC &&
 		strncmp("{$_POST[$vartag]}", "0x0", 3) != 0) ||
-	   (array_key_exists($vartag, $_GET) && 
+	   (array_key_exists($vartag, $_GET) &&
 	   ! is_array($_GET[$vartag]) &&
 	   strncmp("{$_GET[$vartag]}", "0", 1) == 0 &&
 	   $type == ARG_NUMERIC &&
@@ -4556,7 +4561,7 @@
 ///
 /// \param $userid - an id from the user table
 ///
-/// \return an array of privileges types that the user has somewhere in the 
+/// \return an array of privileges types that the user has somewhere in the
 /// privilege tree
 ///
 /// \brief get the privilege types that the user has somewhere in the
@@ -4761,7 +4766,7 @@
 
 	foreach($requestInfo["images"] as $key => $imageid) {
 		# check for max concurrent usage of image
-		if(! $skipconcurrentcheck && 
+		if(! $skipconcurrentcheck &&
 		   $images[$imageid]['maxconcurrent'] != NULL) {
 			if($userid == 0)
 				$usersgroups = $user['groups'];
@@ -5576,7 +5581,7 @@
 ///
 /// \return an array of resource ids of type $resourcetype2
 ///
-/// \brief gets a list of resources of type $resourcetype2 that $resourcesubid 
+/// \brief gets a list of resources of type $resourcetype2 that $resourcesubid
 /// of type $resourcetype1 maps to based on the resourcemap table
 ///
 ////////////////////////////////////////////////////////////////////////////////
@@ -5894,7 +5899,7 @@
 	       .        "computerid, "
 	       .        "imageid, "
 	       .        "imagerevisionid, "
-	       .        "managementnodeid " 
+	       .        "managementnodeid "
 	       . "FROM semaphore "
 	       . "WHERE expires > NOW() AND "
 	       .       "procid = '$uniqid'";
@@ -6117,7 +6122,7 @@
 		if($returnNULL)
 			return NULL;
 		# FIXME handle XMLRPC cases
-		if(! $printedHTMLheader) 
+		if(! $printedHTMLheader)
 			print $HTMLheader;
 		print "<h1>" . i("OOPS! - Reservation Has Expired") . "</h1>\n";
 		$h = i("The selected reservation is no longer available. Go to <a>Reservations</a> to request a new reservation or select another one that is available.");
@@ -6204,7 +6209,7 @@
 /// \fn updateRequest($requestid, $nowfuture)
 ///
 /// \param $requestid - the id of the request to be updated
-/// \param $nowfuture (optional) - "now" or "future"; whether the 
+/// \param $nowfuture (optional) - "now" or "future"; whether the
 ///
 /// \brief updates an entry to the request and reservation tables
 ///
@@ -6256,7 +6261,7 @@
 		                    # could be updated, which would end up setting both
 		                    # rows to the same computer
 		doQuery($query, 147);
-		addChangeLogEntry($logid, NULL, $endstamp, $startstamp, $computerid, NULL, 
+		addChangeLogEntry($logid, NULL, $endstamp, $startstamp, $computerid, NULL,
 		                  1);
 		$query = "UPDATE sublog "
 		       . "SET computerid = $computerid "
@@ -6430,7 +6435,7 @@
 	# a reservation is reassigned to meets the same restrictions
 	foreach($resInfo as $res) {
 		// pass forimaging = 1 so that isAvailable only looks at one computer
-		$rc = isAvailable($images, $res["imageid"], $res['imagerevisionid'], 
+		$rc = isAvailable($images, $res["imageid"], $res['imagerevisionid'],
 		      datetimeToUnix($res["start"]), datetimeToUnix($res["end"]), 0,
 		      0, $res["userid"], 0, 1);
 		if($rc < 1) {
@@ -6442,7 +6447,7 @@
 		return 0;
 	foreach($resInfo as $res) {
 		$rc = isAvailable($images, $res["imageid"], $res['imagerevisionid'],
-		      datetimeToUnix($res["start"]), datetimeToUnix($res["end"]), 1, 
+		      datetimeToUnix($res["start"]), datetimeToUnix($res["end"]), 1,
 		      0, $res["userid"], 0, 1);
 		if($rc > 0) {
 			$newcompid = array_shift($requestInfo["computers"]);
@@ -6894,7 +6899,7 @@
 			}
 			else {
 				$data[$count]['serverowner'] = 0;
-				if(! empty($row['serveradmingroupid']) && 
+				if(! empty($row['serveradmingroupid']) &&
 				   array_key_exists($row['serveradmingroupid'], $user['groups']))
 					$data[$count]['serveradmin'] = 1;
 				else
@@ -7182,7 +7187,7 @@
 ///
 /// \fn getImageId($image)
 ///
-/// \param $image - name of an image (must match name (not prettyname) in the 
+/// \param $image - name of an image (must match name (not prettyname) in the
 /// image table)
 ///
 /// \return the id of matching $image in the image table or 0 if lookup fails
@@ -7519,7 +7524,7 @@
 			$return[$mn_id]['timeservers'] = $timeservers;
 		}
 	}
-	
+
 	return $return;
 }
 
@@ -7660,7 +7665,7 @@
 /// \return array of free/used timeslotes
 ///
 /// \brief generates an array of availability for computers where index is a
-/// computerid with a value that is an array whose indexes are unix timestamps 
+/// computerid with a value that is an array whose indexes are unix timestamps
 /// that increment by 15 minutes with a value that is an array with 2 indexes:
 /// 'scheduleclosed' and 'available' that tell if the computer's schedule is
 /// closed at that moment and if the computer is available at that moment\n
@@ -7855,7 +7860,7 @@
 				continue;
 			}
 			//if between a start and end time
-			if($current >= $times[$id][$count]["start"] && 
+			if($current >= $times[$id][$count]["start"] &&
 			   $current <  $times[$id][$count]["end"]) {
 				if($first) {
 					# set the previous 15 minute block to show as busy to allow for load time
@@ -7874,7 +7879,7 @@
 				continue;
 			}
 			//if after previous end but before this start
-			if($current >= $times[$id][$count - 1]["end"] && 
+			if($current >= $times[$id][$count - 1]["end"] &&
 			   $current <  $times[$id][$count]["start"]) {
 				$reserveInfo[$id][$current]["available"] = 1;
 				continue;
@@ -8304,7 +8309,7 @@
 /// \param $ip - (optional, default='') desired IP address
 /// \param $mac - (optional, default='') desired MAC address
 ///
-/// \return an array where each key is a unix timestamp for the start time of 
+/// \return an array where each key is a unix timestamp for the start time of
 /// the available slot and each element is an array with these items:\n
 /// \b start - start of slot in datetime format\n
 /// \b startts - start of slot in unix timestamp format\n
@@ -8993,7 +8998,7 @@
 	if(isset($_SESSION['usersessiondata'][$key]))
 		return $_SESSION['usersessiondata'][$key];
 	$computers = getComputers();
-	$resources = getUserResources(array("computerAdmin"), 
+	$resources = getUserResources(array("computerAdmin"),
 	                              array("administer", "manageGroup"), 0, 1);
 	$return = array("platforms" => array(),
 	                "schedules" => array());
@@ -9026,7 +9031,7 @@
 /// they occur\n
 /// \b nextstates - array where each key is a computerloadstate id and its value
 /// is that state's following state; the last state has a NULL value\n
-/// \b totaltime - estimated time (in seconds) it takes for all states to 
+/// \b totaltime - estimated time (in seconds) it takes for all states to
 /// complete\n
 /// \b data - array where each key is is a computerloadstate id and each value
 /// is an array with these elements:\n
@@ -9440,8 +9445,8 @@
 function getNATports($resid) {
 	$ports = array();
 	$query = "SELECT n.publicport, "
-	       .        "n.connectmethodportid, " 
-	       .        "c.port AS privateport, " 
+	       .        "n.connectmethodportid, "
+	       .        "c.port AS privateport, "
 	       .        "c.protocol, "
 	       .        "c.connectmethodid "
 	       . "FROM natport n, "
@@ -9648,7 +9653,7 @@
 /// \param $extra - (optional) any extra attributes that need to be set
 ///
 /// \brief prints out a select input part of a form\n
-/// it is assumed that if $selectedid is left off, we assume $dataArr has no 
+/// it is assumed that if $selectedid is left off, we assume $dataArr has no
 /// index '-1'\n
 /// each OPTION's value is the index of that element of the array
 ///
@@ -9707,7 +9712,7 @@
 /// multiple tag set
 ///
 /// \brief generates HTML for select input
-/// it is assumed that if $selectedid is left off, we assume $dataArr has no 
+/// it is assumed that if $selectedid is left off, we assume $dataArr has no
 /// index '-1'\n
 /// each OPTION's value is the index of that element of the array
 ///
@@ -9941,12 +9946,12 @@
 ///
 /// \fn requestIsReady($request)
 ///
-/// \param $request - a request element from the array returned by 
+/// \param $request - a request element from the array returned by
 /// getUserRequests
 ///
 /// \return 1 if request is ready for a user to connect, 0 if not
 ///
-/// \brief checks to see if a request is 
+/// \brief checks to see if a request is
 ///
 ////////////////////////////////////////////////////////////////////////////////
 function requestIsReady($request) {
@@ -9954,7 +9959,7 @@
 		if($res["computerstateid"] != 3 && $res["computerstateid"] != 8)
 			return 0;
 	}
-	if(($request["currstateid"] == 14 &&      // request current state pending 
+	if(($request["currstateid"] == 14 &&      // request current state pending
 	   $request["laststateid"] == 3 &&        //   and last state reserved and
 	   $request["computerstateid"] == 3) ||   //   computer reserved
 	   ($request["currstateid"] == 8 &&       // request current state inuse
@@ -10171,7 +10176,7 @@
 ///
 /// \return 1 if schedule is closed at $timestamp, 0 if it is open
 ///
-/// \brief checks to see if the computer's schedule is open or closed at 
+/// \brief checks to see if the computer's schedule is open or closed at
 /// $timestamp
 ///
 ////////////////////////////////////////////////////////////////////////////////
@@ -10303,7 +10308,7 @@
 /// \fn getUserGroupName($id, $incAffil)
 ///
 /// \param $id - id of a user group
-/// \param $incAffil - 0 or 1 (optional, defaults to 0); include @ and 
+/// \param $incAffil - 0 or 1 (optional, defaults to 0); include @ and
 /// affiliation at the end
 ///
 /// \return name for $id from usergroup table or 0 if name not found
@@ -10454,7 +10459,7 @@
 ///
 ////////////////////////////////////////////////////////////////////////////////
 function unset_by_val($needle, &$haystack) {
-	while(($gotcha = array_search($needle,$haystack)) > -1) { 
+	while(($gotcha = array_search($needle,$haystack)) > -1) {
 		unset($haystack[$gotcha]);
 	}
 }
@@ -10468,13 +10473,16 @@
 ////////////////////////////////////////////////////////////////////////////////
 function sendRDPfile() {
 	global $user;
-	# for more info on this file, see 
+	# for more info on this file, see
 	# http://dev.remotenetworktechnology.com/ts/rdpfile.htm
 	$requestid = getContinuationVar("requestid");
 	$resid = getContinuationVar("resid");
+
+	$cmid = getContinuationVar('cmid');
+
 	$request = getRequestInfo("$requestid");
 	if($request['stateid'] == 11 || $request['stateid'] == 12 ||
-	   ($request['stateid'] == 14 && 
+	   ($request['stateid'] == 14 &&
 	   ($request['laststateid'] == 11 || $request['laststateid'] == 12))) {
 		$cont = addContinuationsEntry('viewRequests');
 		header("Location: " . BASEURL . SCRIPT . "?continuation=$cont");
@@ -10494,20 +10502,19 @@
 	                                          $res['imagerevisionid']);
 	$natports = getNATports($resid);
 	$port = '';
-	foreach($connectData as $cmid => $method) {
-		if(preg_match('/remote desktop/i', $method['description']) ||
-		   preg_match('/RDP/i', $method['description'])) {
-			# assume index 0 of ports for nat
-			if(! empty($natports) && array_key_exists($method['ports'][0]['key'], $natports[$cmid]))
-				$port = ':' . $natports[$cmid][$method['ports'][0]['key']]['publicport'];
-			else {
-				if($method['ports'][0]['key'] == '#Port-TCP-3389#' &&
-				   $user['rdpport'] != 3389)
-					$port = ':' . $user['rdpport'];
-				else
-					$port = ':' . $method['ports'][0]['port'];
-			}
-			break;
+
+	$method = $connectData[$cmid];
+	if(preg_match('/remote desktop/i', $method['description']) ||
+	   preg_match('/RDP/i', $method['description'])) {
+		# assume index 0 of ports for nat
+		if(! empty($natports) && array_key_exists($method['ports'][0]['key'], $natports[$cmid]))
+			$port = ':' . $natports[$cmid][$method['ports'][0]['key']]['publicport'];
+		else {
+			if($method['ports'][0]['key'] == '#Port-TCP-3389#' &&
+			   $user['rdpport'] != 3389)
+				$port = ':' . $user['rdpport'];
+			else
+				$port = ':' . $method['ports'][0]['port'];
 		}
 	}
 
@@ -10542,15 +10549,15 @@
 	print "desktopwidth:i:$width\r\n";
 	print "desktopheight:i:$height\r\n";
 	print "session bpp:i:$bpp\r\n";
-	
+
 	print "winposstr:s:0,1,0,0,5000,4000\r\n";
-	# 0: 
+	# 0:
 	# 1:    use coordinates for the window position, as opposed to 3 - maximized
 	# 0:    left position in client coordinates
 	# 0:    top position in client coordinates
 	# 5000: width in pixels - set large to avoid scrollbars
 	# 4000: height in pixels - set large to avoid scrollbars
-	
+
 	print "full address:s:$ipaddress$port\r\n";
 	print "compression:i:1\r\n";
 	print "keyboardhook:i:2\r\n";
@@ -10567,6 +10574,8 @@
 		$userid = $user["unityid"];
 	if($request['reservations'][0]['domainDNSName'] != '' && ! strlen($passwd))
 		$userid .= "@" . $request['reservations'][0]['domainDNSName'];
+	elseif($request['reservations'][0]['OStype'] == 'windows')
+		$userid = ".\\$userid";
 	print "username:s:$userid\r\n";
 	print "clear password:s:$passwd\r\n";
 	print "domain:s:\r\n";
@@ -10634,16 +10643,16 @@
 /// available; \b NOTE: pass -1 instead of NULL if you don't want this field
 /// to be updated
 ///
-/// \brief adds an entry to the changelog table and updates information in 
+/// \brief adds an entry to the changelog table and updates information in
 /// the log table
 ///
 ////////////////////////////////////////////////////////////////////////////////
-function addChangeLogEntry($logid, $remoteIP, $end=NULL, $start=NULL, 
+function addChangeLogEntry($logid, $remoteIP, $end=NULL, $start=NULL,
                            $computerid=NULL, $ending=NULL, $wasavailable=-1) {
 	if($logid == 0) {
 		return;
 	}
-	$query = "SELECT computerid, " 
+	$query = "SELECT computerid, "
 	       .        "start, "
 	       .        "initialend, "
 	       .        "remoteIP, "
@@ -10934,8 +10943,8 @@
 ///
 /// \param $max - max allowed length in minutes
 ///
-/// \return array of lengths up to $max starting with 30 minutes, 1 hour, 
-/// 2 hours, then increasing by 2 hours up to 47 hours, then 2 days, then 
+/// \return array of lengths up to $max starting with 30 minutes, 1 hour,
+/// 2 hours, then increasing by 2 hours up to 47 hours, then 2 days, then
 /// increasing by 1 day; indexes are the duration in minutes
 ///
 /// \brief generates an array of reservation lengths
@@ -11240,7 +11249,7 @@
 	       .      "user u, "
 	       .      "affiliation ua, "
 	       .      "configtype ct, "
-	       .      "configmaptype cmt, " 
+	       .      "configmaptype cmt, "
 	       .      "affiliation a, "
 	       .      "configstage cs "
 	       . "WHERE cm.configid = c.id AND "
@@ -11345,7 +11354,7 @@
 	       .      "user u, "
 	       .      "affiliation ua, "
 	       .      "configtype ct, "
-	       .      "configmaptype cmt, " 
+	       .      "configmaptype cmt, "
 	       .      "affiliation a, "
 	       .      "configstage cs "
 	       . "WHERE cm.configid = c.id AND "
@@ -11749,7 +11758,7 @@
 ///
 /// \return -1, 0, 1 if numerical parts of $a <, =, or > $b
 ///
-/// \brief compares $a and $b to determine which one should be ordered first; 
+/// \brief compares $a and $b to determine which one should be ordered first;
 /// has some understand of numerical order in strings
 ///
 ////////////////////////////////////////////////////////////////////////////////
@@ -11809,8 +11818,8 @@
 /// \param $resource2inlist - (optional) comma delimited list of resource groups
 /// to limit query to
 ///
-/// \return an array of $resourcetype1 group to $resourcetype2 group mappings 
-/// where each index is a group id from $resourcetype1 and each value is an 
+/// \return an array of $resourcetype1 group to $resourcetype2 group mappings
+/// where each index is a group id from $resourcetype1 and each value is an
 /// array of $resourcetype2 group ids
 ///
 /// \brief builds an array of $resourcetype2 group ids for each $resourcetype1
@@ -12024,7 +12033,7 @@
 /// \param $id (optional) - a profile id; if specified, only data about this
 /// profile will be returned
 ///
-/// \return an array of profiles where each key is the profile id and each 
+/// \return an array of profiles where each key is the profile id and each
 /// element is an array with these keys:\n
 /// \b profilename - name of profile\n
 /// \b name - name of profile (so array can be passed to printSelectInput)\n
@@ -12117,7 +12126,7 @@
 /// \fn addContinuationsEntry($nextmode, $data, $duration, $deleteFromSelf,
 ///                           $multicall, $repeatProtect)
 ///
-/// \param $nextmode - next mode to go in to 
+/// \param $nextmode - next mode to go in to
 /// \param $data (optional, default=array())- array of data to make available
 /// in $nextmode
 /// \param $duration (optional, default=SECINWEEK)- how long this continuation
@@ -12451,7 +12460,7 @@
 ///
 /// \return array of values from variable table
 ///
-/// \brief gets data from the variable table for $pattern matches 'name' from 
+/// \brief gets data from the variable table for $pattern matches 'name' from
 /// table
 ///
 ////////////////////////////////////////////////////////////////////////////////
@@ -12521,7 +12530,7 @@
 	}
 	if($update)
 		$query = "UPDATE variable "
-		       . "SET value = '$qdata', " 
+		       . "SET value = '$qdata', "
 		       .     "serialization = '$serialization', "
 		       .     "setby = 'webcode', "
 		       .     "timestamp = NOW() "
@@ -12729,13 +12738,13 @@
 		if(! defined('XMLRPCLOGGING') || XMLRPCLOGGING != 0) {
 			$saveargs = mysql_real_escape_string(serialize($args));
 			$query = "INSERT INTO xmlrpcLog "
-			       .        "(xmlrpcKeyid, " 
+			       .        "(xmlrpcKeyid, "
 			       .        "timestamp, "
 			       .        "IPaddress, "
 			       .        "method, "
 			       .        "apiversion, "
 			       .        "comments) "
-			       . "VALUES " 
+			       . "VALUES "
 			       .        "($keyid, "
 			       .        "NOW(), "
 			       .        "'$remoteIP', "
@@ -13022,7 +13031,7 @@
 			 // Always use "." for floats.
 			 return floatval(str_replace(",", ".", strval($a)));
 		}
- 
+
 		if (is_string($a)) {
 			 static $jsonReplaces = array(array("\\", "/", "\n", "\t", "\r", "\b", "\f", '"'), array('\\\\', '\\/', '\\n', '\\t', '\\r', '\\b', '\\f', '\"'));
 			return '"' . str_replace($jsonReplaces[0], $jsonReplaces[1], $a) . '"';
@@ -14363,7 +14372,7 @@
 		setcookie("VCLLOCALE", $_COOKIE['VCLLOCALE'], (time() + (86400 * 31)), "/", COOKIEDOMAIN);
 		$locale = $_COOKIE['VCLLOCALE'];
 	}
-	
+
 	#putenv('LC_ALL=' . $locale);
 	# use UTF8 encoding for any locales other than English (we may just be able
 	#   to always use UTF8)
diff --git a/web/testsetup.php b/web/testsetup.php
index ba3e5ae..8f384d2 100644
--- a/web/testsetup.php
+++ b/web/testsetup.php
@@ -79,14 +79,18 @@
 
 $includesecrets = 1;
 $includeconf = 1;
+$host = $_SERVER['HTTP_HOST'];
+if (strpos($host, ':')) {
+	$host = substr($host, 0, strpos($host, ':'));
+}
 
-if(! ip2long(getHostbyname($_SERVER['HTTP_HOST']))) {
+if(! ip2long(getHostbyname($host))) {
 	print $header;
 	# php version
 	print "PHP version: " . phpversion() . "<br><br>\n";
-	title("Trying to resolve my hostname ({$_SERVER['HTTP_HOST']})");
+	title("Trying to resolve my hostname ($host)");
 	print "<ul>\n";
-	fail("unable to resolve my hostname; ensure {$_SERVER['HTTP_HOST']} is in DNS or create an entry for it in /etc/hosts");
+	fail("unable to resolve my hostname; ensure $host is in DNS or create an entry for it in /etc/hosts");
 	print "</ul>\n";
 	$includesecrets = 0;
 	$includeconf = 0;
@@ -160,8 +164,7 @@
 
 # conf.php tests
 $createcryptkey = 0;
-if($includeconf && include('.ht-inc/conf.php')) {
-	$host = $_SERVER['HTTP_HOST'];
+if($includeconf && include('.ht-inc/conf.php')) {	
 	if(! defined('COOKIEDOMAIN')) {
 		print $header;
 		# php version