Skip to content
This repository has been archived by the owner on Jun 26, 2023. It is now read-only.

Commit

Permalink
Unique Id generator for computer based
Browse files Browse the repository at this point in the history
  • Loading branch information
osoykan committed Aug 18, 2016
1 parent 685d6f3 commit 4e5b6b9
Show file tree
Hide file tree
Showing 6 changed files with 96 additions and 3 deletions.
@@ -0,0 +1,25 @@
using System.Management;

using Abp.Extensions;

namespace DynamicTranslator.Configuration.UniqueIdentifier
{
public class CpuBasedIdentifierProvider : IUniqueIdentifierProvider
{
public string Get()
{
var cpuInfo = string.Empty;
var mc = new ManagementClass("win32_processor");
var moc = mc.GetInstances();

foreach (var o in moc)
{
var mo = o.As<ManagementObject>();
cpuInfo = mo.Properties["processorID"].Value.ToString();
break;
}

return cpuInfo;
}
}
}
@@ -0,0 +1,17 @@
using System.Management;

namespace DynamicTranslator.Configuration.UniqueIdentifier
{
public class HddBasedIdentifierProvider : IUniqueIdentifierProvider
{
public string Get()
{
const string Drive = "C";
var dsk = new ManagementObject(@"win32_logicaldisk.deviceid=""" + Drive + @":""");
dsk.Get();
var volumeSerial = dsk["VolumeSerialNumber"].ToString();

return volumeSerial;
}
}
}
@@ -0,0 +1,7 @@
namespace DynamicTranslator.Configuration.UniqueIdentifier
{
public interface IUniqueIdentifierProvider
{
string Get();
}
}
5 changes: 5 additions & 0 deletions src/DynamicTranslator/DynamicTranslator.csproj
Expand Up @@ -84,6 +84,7 @@
<Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System.Configuration" />
<Reference Include="System.Core" />
<Reference Include="System.Management" />
<Reference Include="System.Runtime.Caching" />
<Reference Include="System.Runtime.Serialization" />
<Reference Include="System.Transactions" />
Expand Down Expand Up @@ -113,8 +114,12 @@
<Compile Include="Configuration\Startup\ITranslatorConfiguration.cs" />
<Compile Include="Configuration\Startup\ITranslatorModuleConfigurations.cs" />
<Compile Include="Configuration\Startup\TranslatorModuleConfigurations.cs" />
<Compile Include="Configuration\UniqueIdentifier\CpuBasedIdentifierProvider.cs" />
<Compile Include="Configuration\UniqueIdentifier\HddBasedIdentifierProvider.cs" />
<Compile Include="Configuration\UniqueIdentifier\IUniqueIdentifierProvider.cs" />
<Compile Include="DynamicTranslatorModule.cs" />
<Compile Include="Configuration\IClientConfiguration.cs" />
<Compile Include="Extensions\UniqueIdProviderExtensions.cs" />
<Compile Include="GoogleAnalyticsTracker.cs" />
<Compile Include="ITranslator.cs" />
<Compile Include="Configuration\Startup\LocalPersistenceConfiguration.cs" />
Expand Down
25 changes: 22 additions & 3 deletions src/DynamicTranslator/DynamicTranslatorCoreModule.cs
Expand Up @@ -5,6 +5,8 @@

using DynamicTranslator.Configuration;
using DynamicTranslator.Configuration.Startup;
using DynamicTranslator.Configuration.UniqueIdentifier;
using DynamicTranslator.Extensions;
using DynamicTranslator.LanguageManagement;

namespace DynamicTranslator
Expand All @@ -13,9 +15,10 @@ public class DynamicTranslatorCoreModule : DynamicTranslatorModule
{
public override void PreInitialize()
{
IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly());
IocManager.IocContainer.AddFacility<TypedFactoryFacility>();

IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly());
IocManager.Register<IUniqueIdentifierProvider, HddBasedIdentifierProvider>();
IocManager.Register<IUniqueIdentifierProvider, CpuBasedIdentifierProvider>();
IocManager.Resolve<DynamicTranslatorConfiguration>().Initialize();

var existingToLanguage = AppConfigManager.Get("ToLanguage");
Expand All @@ -34,7 +37,7 @@ public override void PreInitialize()
Configurations.ApplicationConfiguration.ClientConfiguration.CreateOrConsolidate(client =>
{
client.AppVersion = ApplicationVersion.GetCurrentVersion();
client.Id = string.IsNullOrEmpty(AppConfigManager.Get("ClientId")) ? Guid.NewGuid().ToString() : AppConfigManager.Get("ClientId");
client.Id = string.IsNullOrEmpty(AppConfigManager.Get("ClientId")) ? GenerateUniqueClientId() : AppConfigManager.Get("ClientId");
client.MachineName = Environment.MachineName.Normalize();
});

Expand All @@ -43,5 +46,21 @@ public override void PreInitialize()

Configuration.BackgroundJobs.IsJobExecutionEnabled = false;
}

private string GenerateUniqueClientId()
{
string uniqueId;
try
{
uniqueId = IocManager.ResolveAll<IUniqueIdentifierProvider>()
.BuildForAll();
}
catch (Exception)
{
uniqueId = Guid.NewGuid().ToString();
}

return uniqueId;
}
}
}
20 changes: 20 additions & 0 deletions src/DynamicTranslator/Extensions/UniqueIdProviderExtensions.cs
@@ -0,0 +1,20 @@
using System.Collections.Generic;

using Castle.Core.Internal;

using DynamicTranslator.Configuration.UniqueIdentifier;

namespace DynamicTranslator.Extensions
{
public static class UniqueIdProviderExtensions
{
public static string BuildForAll(this IEnumerable<IUniqueIdentifierProvider> providers)
{
var uniqueId = string.Empty;

providers.ForEach(provider => { uniqueId += provider.Get(); });

return uniqueId;
}
}
}

0 comments on commit 4e5b6b9

Please sign in to comment.