Skip to content

Instantly share code, notes, and snippets.

View RichardSlater's full-sized avatar
🏠
Working from home

Richard Slater RichardSlater

🏠
Working from home
View GitHub Profile
@RichardSlater
RichardSlater / X509CertificateRepository.cs
Created March 5, 2014 22:01
X.509 Certificate Repository
public class X509CertificateRepository {
public IEnumerable<X509Certificate2> FindBySubjectName(StoreName storeName, StoreLocation storeLocation, string subject) {
  var store = new X509Store(storeName, storeLocation);
  store.Open(OpenFlags.ReadOnly);
  var certificates = store.Certificates.Find(X509FindType.FindBySubjectName, subject, validOnly: false);
  foreach (var certificate in certificates) {
   yield return certificate;
  }
  store.Close();
}
@RichardSlater
RichardSlater / BulkEditCheckBoxExtensions.cs
Created October 2, 2012 10:49
MVC3 Bulk Edit Checkbox HtmlHelper
public static class BulkEditCheckBoxExtensions
{
public static MvcHtmlString BulkEditCheckBoxFor<TModel, TProperty>(
this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression)
where TModel : IBulkEditViewModel
{
var metadata = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData);
var model = htmlHelper.ViewData.Model as IBulkEditViewModel;
var modelPropertyName = metadata.PropertyName;
@RichardSlater
RichardSlater / FindAndReplaceInAzureBlob.cs
Created November 24, 2012 16:42
Find any string and replace with any other string in an Azure Table Storage Blob
var accountName = Properties.Settings.Default.StorageAccountName;
var accountKey = Properties.Settings.Default.AccessKey;
var containerName = Properties.Settings.Default.ContainerName;
var blobName = Properties.Settings.Default.Blob;
var credentials = new StorageCredentials(accountName, accountKey);
var account = new CloudStorageAccount(credentials, useHttps: true);
var client = account.CreateCloudBlobClient();
var container = client.GetContainerReference(containerName);
@RichardSlater
RichardSlater / Set-AzureMinimumInstanceCount.ps1
Created April 25, 2013 15:27
Set's all Web and Worker roles in a subscription to a single instance.
$deployments = Get-AzureService |
Select-Object ServiceName |
Get-AzureDeployment
$instances = $deployments |
Select-Object ServiceName,Slot -ExpandProperty RoleInstanceList
$instances |
Select-Object ServiceName,Slot,RoleName |
Group-Object RoleName,ServiceName,Slot -NoElement |
Where-Object {$_.Count -gt 1} |
Select-Object Count,@{Name="RoleName"; Expression={$_.Name.Split(',')[0].Trim()}},@{Name="ServiceName";Expression={$_.Name.Split(',')[1].Trim()}},@{Name="Slot";Expression={$_.Name.Split(',')[2].Trim()}} |
@RichardSlater
RichardSlater / Get-AzureRemoteDesktopFileFromSubscription.ps1
Created May 30, 2013 15:28
Download RDP Files from All Instances
Get-AzureService |
Get-AzureRole -Slot Production -InstanceDetails |
ForEach-Object {
Get-AzureRemoteDesktopFile `
-Name $_.InstanceName `
-ServiceName $_.ServiceName `
-LocalPath (Join-Path "C:\RDP" ($_.InstanceName + ".rdp"))
}
@RichardSlater
RichardSlater / Configure-CapacityMetrics.ps1
Created February 11, 2013 11:03
Retrieve the latest storage capacity metrics for multiple storage accounts and display in a range of units.
# *************************************************************************************************
# * Configure-CapacityMetrics *
# *************************************************************************************************
# * Description: Configures Capacity metrics *
# * Author: Richard Slater <richard.slater@amido.co.uk> *
# * Date: 2013.02.02 *
# * Prerequisites: WAPPSCmdlets (https://www.windowsazure.com/en-us/manage/downloads/) *
# *************************************************************************************************
Set-StorageServicePropertiesForAnalytics -ServiceName "Blob" -StorageAccountName "<Storage Account Name>" -StorageAccountKey "<Storage Account Key>" -MetricsEnabled -MetricsRetentionPolicyDays 7 -MetricsRetentionPolicyEnabl
@RichardSlater
RichardSlater / azure-datacenter-ip-ranges.xml
Created January 30, 2014 16:53
All Azure IP address ranges from all regions.
<!-- Azure Region: europewest -->
<add ipAddress="157.55.9.112" subnetMask="255.255.255.240" allowed="true" />
<add ipAddress="157.55.12.0" subnetMask="255.255.255.240" allowed="true" />
<add ipAddress="157.55.10.0" subnetMask="255.255.255.224" allowed="true" />
<add ipAddress="157.55.10.32" subnetMask="255.255.255.224" allowed="true" />
<add ipAddress="157.55.10.64" subnetMask="255.255.255.192" allowed="true" />
<add ipAddress="65.52.128.0" subnetMask="255.255.224.0" allowed="true" />
<add ipAddress="94.245.97.0" subnetMask="255.255.255.0" allowed="true" />
<add ipAddress="137.116.192.0" subnetMask="255.255.224.0" allowed="true" />
<add ipAddress="157.55.8.64" subnetMask="255.255.255.192" allowed="true" />
@RichardSlater
RichardSlater / underwater.js
Created October 9, 2012 18:16
Unity3d Underwater Effect
//This script enables underwater effects. Attach to main camera.
//Define variables
var underwaterLevel = 7;
//The scene's default fog settings
private var defaultFog;
private var defaultFogColor;
private var defaultFogDensity;
private var defaultSkybox;

Keybase proof

I hereby claim:

  • I am richardslater on github.
  • I am richardslater (https://keybase.io/richardslater) on keybase.
  • I have a public key ASB4g0VO17PTCu6I51OBo5Jy2TZh_LksBGxKZlNXndD2UQo

To claim this, I am signing this object:

@RichardSlater
RichardSlater / Test-Redirects.ps1
Created March 16, 2018 15:10
Redirect Testing Script
function Test-Url($Target) {
$result = $null;
try {
$result = Invoke-Webrequest -Uri $Target -MaximumRedirection 0 -UseBasicParsing -ErrorAction SilentlyContinue
} catch {}
return $result | `
Select-Object @{name='Result';expression={$mark}}, `
@{name='Target';expression={$Target}}, `
StatusCode, `
@{name='Redirect';expression={if (($_.StatusCode -gt 300) -And ($_.StatusCode -lt 399)) { $result.Headers["Location"] } else { $null }}}