Featured

Geodesic Dome Greenhouse

Planning

Now that I’ve moved back to the country I’ve got plans for all sorts of projects. The first one is building a Geodesic Dome Greenhouse from timber.

lowpro_3v_L_icon

I’ve spent the past 6 weeks resarching

  • Sizes: settled on 8 meter diameter
  • Build: kit or DIY. Settled on DIY
  • Glazing struts: wood, plastic pipe or tubular metal.
  • Joints and Hubs: DIY hubs, off-the-shelf hubs, no hubs.
  • Glazing: triple-wall poly-carbonate, polyethylene,
  • Raised beds: materials, height, width.
  • Foundations: concrete piers, slab
  • Internal Paths: width, materials.
  • Insulation: north wall insulation types, ground insulation, glazing.
  • Orientation: door will face north.
  • Double doors: keeping drafts out.
  • Vermin control: keeping mice and other beasties out.
  • Passive heating and cooling: GAHT, thermal vents, thermal mass.
  • Direct heating: wood chip composting, wind turbines.
  • Wood preservatives: Leitrim is usually very damp , organic material rots very fast.
  • Wood working tools: table saw, mitre saw, digital protractors, staplers, screws, etc.
  • Wood Type and Sizes: Species, planed, rough, treated, suppliers.
  • Maintenance: Does the build allow to easily repair the structure and individual glazing panels.

I’ve settled on a hub system from Geosota in Russia. Plans have arrived, I’m waiting on the hubs.

To buy: planed 4 x 2, paint, concrete, rebar, post shoes.

Future: Polytunnel plastic, I’d like to get the bubble wrap stuff if possible. Maybe some polycarbonate. Insulation. Soil insulation.

PowerShell: Capture Network Traces

<#
.SYNOPSIS
Capture Traces with Wireshark in PowerShell

.DESCRIPTION

#############################################################
# #
# Capture network traces in PowerShell #
# Circular tracing #
# #
# #
# #
# (C)Citrix EMEA Escalation Team #
# #
# David Cristobal #
# #
#############################################################

Script to automate tracing with Wireshark using PowerShell, when GUI cannot be used

CaptureNetworkTraces.ps1 -FileName <[string]> -WiresharkPath <[string]> -NumberOfFiles <[string]> -FileSize <[string]> -TimeToStart <[string]> -RecheckTime <[string]> -CircularTraces

-FileName <File Name>
Name for the files, If null, will use the computer’s name and the date

-WiresharkPath <Wireshark installation path>
As this script relies in Wireshark binaries, the path is needed. If it’s installed in a different drive, you can specify it with this parameter

-NumberOfFiles <>
Number of files. If none given, will use 5

-FileSize
Size of every file in Kb. If none is given, will use 100Mb

-TimeToStart
Time to start tracing in format HHMM (like 2230 for 23:30 or 0845 for 8:45)

-RecheckTime
In case delayed start set, interval to check if the time has yet reached in seconds

-CircularTraces
Set traces as circular, ring buffer

.EXAMPLE
CaptureNetworkTraces.ps1 -FileName Trace001 -NumberOfFiles 4

Capture 4 files named Trace001.pcapng to Trace004.pcapng, 100Mb each (default value)

.EXAMPLE
CaptureNetworkTraces.ps1 -FileName Trace001 -FileSize 10000 -CircularTraces

Capture 5 files (default value) named named Trace001.pcapng to Trace005.pcapng, 10Mb each, in circualr tracing (until Ctrl+C is pressed)

.EXAMPLE
CaptureNetworkTraces.ps1 -NumberOfFiles 10 -FileSize 10000 -TimeToStart 2230 -RecheckTime 60

Capture 10 files 10Mb each with name ServerDate.pcapng (default), starting the trace at 22:30 and checking it every 60 seconds

#>

##Paramaters for the script
param
(
[Parameter(Mandatory=$false)][string]$FileName,
[Parameter(Mandatory=$false)][string]$WiresharkPath,
[Parameter(Mandatory=$false)][string]$NumberOfFiles,
[Parameter(Mandatory=$false)][string]$FileSize, ## In Kb
[Parameter(Mandatory=$false)][string]$TimeToStart, ## Format HHmm (Hours, minutes)
[Parameter(Mandatory=$false)][string]$RecheckTime, ## In seconds
[Parameter(Mandatory=$false)][switch]$CircularTraces ## Circular tracing
)

#region Variables
$Delay=$False
#endregion

#region Sanity checks

## Check if Filename is provided
if (!$FileName) ## If Filename is not provided, generate one withe date and time
{
$Filename=($env:computername)+”-“+(Get-Date -format yyyyMMdd-HHmmss)
}

$Filename=$Filename+”.pcapng” ## Add the Wireshark extension ot the file

## Check if Number of files is set
if (!$NumberOfFiles) ## If not set, 5 by default
{
$NumberOfFiles=”5″
}

## Check if Size of files is set
if (!$FileSize) ## If not set, 100Mb by default
{
$FileSize=”100000″
}

## Check if time to start is set is set
if (![string]::IsNullOrEmpty($TimeToStart))
{
if ((![string]::IsNullOrEmpty($TimeToStart)) -AND ($TimeToStart.Length -eq 4) -AND ($TimeToStart -match ‘[0-9]{4}’) -AND ([convert]::ToInt32($TimeToStart,10) -lt “2400”))
{
Write-host “Delayed start set for “$TimeToStart.Substring(0,2)”:”$TimeToStart.Substring(2,2)
$Delay=$true
Write-host “`n”

## Check if time to recheck delayed start is set
if ((![string]::IsNullOrEmpty($RecheckTime)) -AND ([Helpers]::IsNumeric($RecheckTime)))
{
Write-host “Timeout to recheck delayed start set to $RecheckTime seconds”
}
else
{
Write-host “Timeout to recheck delayed start not set”
Write-host “Default to 1 minute, 60 seconds”
$RecheckTime=60
}
}
else
{
Write-host “Incorrect time to start the trace” -foregroundcolor red
Write-host “Time needs to be set as HHmm (Hours,Minutes) and less that 2400”
Write-host “`n”
exit
}
}

## Check if Wireshark is installed
if (!$WiresharkPath) {$WiresharkPath = “C:\Program Files\Wireshark”}

if (Test-Path $WiresharkPath)
{
Write-Host “Wireshark found in the machine”
Write-host “`n”
}
else
{
Write-Host “Wireshark is not installed in the machine!!!” -foregroundcolor red -backgroundcolor yellow
Write-Host “If it’s not installed in the default path, use the -WiresharkPath parameter” -foregroundcolor red -backgroundcolor yellow
Write-Host “Stopping script” -foregroundcolor red -backgroundcolor yellow
Write-host “`n”
Write-host “Press Any Key To Exit….”
cmd /c pause | out-null
exit
}

# Verification and creation of the tshark Alias
if(Get-alias -name tshark*)
{
Write-Host “Tshark alias exists”
Write-host “`n”get-help
}
else
{
Write-Host “Tshark alias doesn’t exist. Creating it…”
new-alias tshark $WiresharkPath’\tshark.exe’
Write-host “Tshark alias created”
Write-host “`n”
}

# Verify if Wireshark path in the Path variable and adding it if needed
if($env:Path -like ‘*’+$WiresharkPath+’*’)
{
Write-Host “Wireshark path already in path variable”
Write-host “`n”
}
else
{
Write-Host “Wireshark path not found in Path variable. adding it…”
$env:Path += “;C:\Program Files\Wireshark\”
Write-Host “Wireshark path added”
Write-host “`n”
}

# Check if the trace is circular

if ($CircularTraces)
{
$CircularFlag = “-b”
}

#endregion

#region Wrap up parameters and show them on screen
Write-Host “Parameters for the trace” -foregroundcolor DarkRed
Write-Host “========================” -foregroundcolor DarkRed
Write-Host “Filename that will be used: ” -foregroundcolor green -nonewline
Write-Host $FileName -foregroundcolor gray
Write-Host “Number of files that will be kept: ” -foregroundcolor green -nonewline
Write-Host $NumberOfFiles -foregroundcolor gray
Write-Host “Size of every file: ” -foregroundcolor green -nonewline
Write-Host ($FileSize/1000)”Mb” -foregroundcolor gray
Write-Host “Path for Wireshark: ” -foregroundcolor green -nonewline
Write-Host $WiresharkPath -foregroundcolor gray
Write-host “`n”
Write-host “To stop the trace at any time, press Ctrl + C” -foregroundcolor red
Write-host “`n”
#endregion

#region Capture traces

## Check delayed start
while (($Delay -eq $True) -AND ((Get-Date -format HHmm) -ne $TimeToStart))
{
Write-Host “Time to start tracing not reached yet.”
Write-host “Actual time”(Get-Date -format HHmmss)
Write-Host “Expected time to start: “$TimeToStart
Start-Sleep -s $RecheckTime
}

## Start tshark with parameters
tshark.exe -w $FileName $CircularFlag filesize:$FileSize -b files:$NumberOfFiles

#endregion

SQL: Find value in all tables

EXEC SearchAllTables ‘value to search’
Go

 

CREATE PROC SearchAllTables
(
@SearchStr nvarchar(100)
)
AS
BEGIN
CREATE TABLE #Results (ColumnName nvarchar(370), ColumnValue nvarchar(3630))
SET NOCOUNT ON
DECLARE @TableName nvarchar(256), @ColumnName nvarchar(128), @SearchStr2 nvarchar(110)
SET @TableName = ”
SET @SearchStr2 = QUOTENAME(‘%’ + @SearchStr + ‘%’,””)
WHILE @TableName IS NOT NULL
BEGIN
SET @ColumnName = ”
SET @TableName =
(
SELECT MIN(QUOTENAME(TABLE_SCHEMA) + ‘.’ + QUOTENAME(TABLE_NAME))
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = ‘BASE TABLE’
AND QUOTENAME(TABLE_SCHEMA) + ‘.’ + QUOTENAME(TABLE_NAME) > @TableName
AND OBJECTPROPERTY(
OBJECT_ID(
QUOTENAME(TABLE_SCHEMA) + ‘.’ + QUOTENAME(TABLE_NAME)
), ‘IsMSShipped’
) = 0
)
WHILE (@TableName IS NOT NULL) AND (@ColumnName IS NOT NULL)
BEGIN
SET @ColumnName =
(
SELECT MIN(QUOTENAME(COLUMN_NAME))
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = PARSENAME(@TableName, 2)
AND TABLE_NAME = PARSENAME(@TableName, 1)
AND DATA_TYPE IN (‘char’, ‘varchar’, ‘nchar’, ‘nvarchar’)
AND QUOTENAME(COLUMN_NAME) > @ColumnName
)

IF @ColumnName IS NOT NULL
BEGIN
INSERT INTO #Results
EXEC
(
‘SELECT ”’ + @TableName + ‘.’ + @ColumnName + ”’, LEFT(‘ + @ColumnName + ‘, 3630)
FROM ‘ + @TableName + ‘ (NOLOCK) ‘ +
‘ WHERE ‘ + @ColumnName + ‘ LIKE ‘ + @SearchStr2
)
END
END
END
SELECT ColumnName, ColumnValue FROM #Results
END

Find and delete all versions of Citrix Receiver manually using batch file

Note: you will need msizap.exe. It not available from Microsoft anymore but if you Google it you’ll find it.

@echo off
taskkill /IM AuthManSvr.exe /F > nul 2>&1
taskkill /IM concentr.exe /F > nul 2>&1
taskkill /IM wfcrun32.exe /F > nul 2>&1
taskkill /IM wfica32.exe /F > nul 2>&1
taskkill /IM redirector.exe /F > nul 2>&1
taskkill /IM Receiver.exe /F > nul 2>&1
taskkill /IM SelfService.exe /F > nul 2>&1
taskkill /IM SelfServicePlugin.exe /F > nul 2>&1
taskkill /IM ssonsvr.exe /F > nul 2>&1
taskkill /IM pnamain.exe /F > nul 2>&1
taskkill /IM updater.exe /F > nul 2>&1
taskkill /IM radeobj.exe /F > nul 2>&1

REM Uninstall Citrix XenApp Plugin for Hosted Apps 11.0.0.5357 and delete reg-keys from HKLM\Software\classes.

MsiExec.exe /I{388C130B-0079-46B4-A0D5-DC2DD7A89A7B} /quiet
REM For Citrix XenApp Plugin for Hosted Apps 11.0.0.5357.
reg delete “HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Products\F3BEEFBEB3E352744A0E731644ECF467” /f
reg delete “HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Products\B031C88397004B640A5DCDD27D8AA9B7” /f
REM removes web-plugin 11.0.0.5357
MsiExec.exe /I{EBFEEB3F-3E3B-4725-A4E0-376144CE4F76} /quiet

REM Uninstall Citrix Online Plug-In 12.3.0.8 and delete reg-keys from HKLM\Software\classes

“C:\ProgramData\Citrix\Citrix online plug-in – web\TrolleyExpress.exe” /uninstall /cleanup
rmdir “C:\ProgramData\Citrix\Citrix online plug-in – web” /Q /S

reg delete “HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Products\1C0AEE1BC1B655A48839E41CC028712D” /f
reg delete “HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Products\58674D61A657DF64890833ADB6A496AE” /f

REM Remove folder from c: drive
rmdir “C:\Program Files (x86)\Citrix\ICA Client” /Q /S

REM Citrix online plug-in (SSON) 12.3.0.8
MsiExec.exe /I{0F7319A9-083D-40B3-8256-00A6F3C2AAA2} /quiet

REM USB 12.3.0.8
MsiExec.exe /I{133236FE-E2F7-4313-8BF8-A10ACAAA7CB9} /quiet

REM web 12.3.0.8
MsiExec.exe /I{2FC7287D-39DD-4A84-9806-D27D3CCDC51B} /quiet

REM hdx 12.3.0.8
MsiExec.exe /I{57287FDF-27E6-45BC-9DD2-A33545C46C1A} /quiet

REM dv 12.3.0.8
MsiExec.exe /X{6F2FDD50-E0F3-4117-B575-78E77F8D11EF} /quiet

REM Delete regkeys.
REM DV
reg delete “HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Products\05DDF2F63F0E71145B57877EF7D811FE” /f
REM hdx
reg delete “HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Products\FDF782756E72CB54D92D3A53544CC6A1” /f
REM pna
reg delete “HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Products\3D8773198D1E55B4296433805CD41326” /f
REM sson
reg delete “HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Products\9A9137F0D3803B042865006A3F2CAA2A” /f
REM usb
reg delete “HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Products\EF6323317F2E3134B88F1AA0ACAAC79B” /f
REM web
reg delete “HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Products\D7827CF2DD9348A489602DD7C3DC5CB1” /f

REM In version 12.3.0.8 there is a %programdata%-folder so run:
“C:\ProgramData\Citrix\Citrix online plug-in\TrolleyExpress.exe” /uninstall /cleanup
rmdir “C:\ProgramData\Citrix\Citrix online plug-in” /Q /S

REM Uninstall Citrix Receiver 14.4. The ReceiverCleanupUtility.exe removes a lot but we manually remove these reg keys.

REM aero
reg delete “HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\39209FA8EAE95134699BB68CB81B2D64” /f
REM authentication
reg delete “HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\C32044992FE99DC4BBE6CD0198F542B6” /f
REM Citrix inside
reg delete “HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\2E00671D2CFD34240A5726B1CAEE20C5” /f
REM webhelper
reg delete “HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\DDF5F12BD35BE384B9BE4B9AB77F49F2” /f
REM dv
reg delete “HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\FCD2A818A53A67148AE4601FB9F05F71” /f
REM hdx-flash
reg delete “HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\30CA808B063E4CF46AA66C4166225CB5” /f
REM selfservice
reg delete “HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\277BF9E19A51770439C4119C7219D9D7” /f
REM SSON
reg delete “HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\C4B86096242698648B5E511A8E62DB1A” /f
REM USB
reg delete “HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\14355E4666DF3804F94F374E1FA99AEC” /f

REM Online Plug-in 14.4.0.8014.
MsiExec.exe /I{3D6AA3F8-2977-474E-95EB-4058983C4C0F} /quiet
REM online plug-in
reg delete “HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\8F3AA6D37792E47459BE048589C3C4F0” /f

REM If there are any other Citrix-versions this loop will find it and uninstall it. Msizap.exe is already locally stored on our machines in C:\Windows.

del guids.txt
:: Find the text-file. If not – create a new one.

FOR /F “skip=2 tokens=2,*” %%A IN (‘reg.exe query “HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Citrix\PluginPackages\XenAppSuite” /s /v “ProductCode”‘) DO echo %%B>>guids.txt

for /f %%a in (guids.txt) do msiexec.exe /X %%a /quiet

for /f %%a in (guids.txt) do C:\Windows\msizap.exe TWA! %%a

Seach Registry Using Batch File

Example for searching Citrix Receiver install GUIDs and outputting to a text file.

del guids.txt

:: If txt file exists. We want a fresh one to hold the guids.

FOR /F “skip=2 tokens=2,*” %%A IN (‘reg.exe query “HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Citrix\PluginPackages\XenAppSuite” /s /v “ProductCode”‘) DO echo %%B>>guids.txt