private static void SetupNLog(RegistryProvider registryProvider) { var configuration = new NLog.Config.LoggingConfiguration(); var jitWorkerLog = new NLog.Targets.FileTarget("access-manager-jitworker") { FileName = Path.Combine(registryProvider.LogPath, "access-manager-jit-worker.log"), ArchiveEvery = NLog.Targets.FileArchivePeriod.Day, ArchiveNumbering = NLog.Targets.ArchiveNumberingMode.Date, MaxArchiveFiles = registryProvider.RetentionDays, Layout = "${longdate}|${level:uppercase=true:padding=5}|${logger}|${message}${onexception:inner=${newline}${exception:format=ToString}}" }; var serviceLog = new NLog.Targets.FileTarget("access-manager-service") { FileName = Path.Combine(registryProvider.LogPath, "access-manager-service.log"), ArchiveEvery = NLog.Targets.FileArchivePeriod.Day, ArchiveNumbering = NLog.Targets.ArchiveNumberingMode.Date, MaxArchiveFiles = registryProvider.RetentionDays, Layout = "${longdate}|${level:uppercase=true:padding=5}|${logger}|${message}${onexception:inner=${newline}${exception:format=ToString}}" }; configuration.AddRule(NLog.LogLevel.Trace, NLog.LogLevel.Fatal, jitWorkerLog, "Lithnet.AccessManager.Server.Workers.JitGroupWorker", true); configuration.AddRule(NLog.LogLevel.Trace, NLog.LogLevel.Fatal, serviceLog); NLog.LogManager.Configuration = configuration; }
public static IHostBuilder CreateHostBuilder(string[] args, RegistryProvider registryProvider) { bool safeStart = args.Any(t => string.Equals(t, "/safeStart", StringComparison.OrdinalIgnoreCase)); if (safeStart || !registryProvider.IsConfigured) { return(Host.CreateDefaultBuilder().ConfigureServices((hostContext, services) => { services.AddHostedService <UnconfiguredHost>(); }) .UseWindowsService() .ConfigureAccessManagerLogging()); } var host = new HostBuilder(); host.UseContentRoot(Directory.GetCurrentDirectory()); host.ConfigureHostConfiguration(config => { config.AddEnvironmentVariables(prefix: "DOTNET_"); if (args != null) { config.AddCommandLine(args); } }); host.UseNLog(); host.ConfigureAppConfiguration((hostingContext, config) => { config.ConfigureAppSettings(); if (args != null) { config.AddCommandLine(args); } }); host.ConfigureAccessManagerLogging(); host.UseDefaultServiceProvider((context, options) => { var isDevelopment = context.HostingEnvironment.IsDevelopment(); options.ValidateScopes = isDevelopment; options.ValidateOnBuild = isDevelopment; }); host.ConfigureWebHostDefaults(webBuilder => { var httpsysConfig = new ConfigurationBuilder().ConfigureAppSettings().Build(); webBuilder.UseHttpSys(httpsysConfig); webBuilder.UseStartup <Startup>(); }); host.UseWindowsService(); return(host); }
private void RegisterDependencies() { DependencyManager.LogWriter = _logWriter; // Providers var configurationReader = new ConfigurationReader(); var credentialsProvider = new CredentialsProvider(); var fileIoProvider = new FileIoProvider(); var registryProvider = new RegistryProvider(); var userProvider = new UserProvider(); var windowsApiProvider = new WindowsApiProvider(); var windowsServiceProviderFactory = new WindowsServiceProviderFactory(); var powerShellProvider = new PowerShellProvider(); // Services var fileManager = new FileManager(fileIoProvider, windowsApiProvider, credentialsProvider); DependencyManager.FileManager = fileManager; DependencyManager.HostsFileEditor = new HostsFileEditor(fileIoProvider, configurationReader); var registryEditor = new RegistryEditor(windowsApiProvider, registryProvider, userProvider); DependencyManager.RegistryEditor = registryEditor; DependencyManager.WindowsServiceManager = new WindowsServiceManager(windowsServiceProviderFactory, registryEditor, fileManager, configurationReader); DependencyManager.WindowsPackageManager = new WindowsPackageManager(powerShellProvider, configurationReader); }
public DeskBandUI(CSDeskBand.CSDeskBandWin w) { InitializeComponent(); RegistryProvider.Init(); SerilogProvider.Initialize(); // var logPath = Settings.AppDirectory + @"\Storage\Logs\activity-.log"; // // Log.Logger = new LoggerConfiguration() .MinimumLevel.Debug() .WriteTo.File(logPath, // rollingInterval: RollingInterval.Day, // flushToDiskInterval: TimeSpan.FromSeconds(1), // shared: true) .CreateLogger(); Log.Information("Starting NetMeter shell.."); SqliteProvider.DbPath = Settings.AppDirectory + @"\Storage\Common\LocalStorage.db"; DownloadLabel = this.LblDownload; UploadLabel = this.LblUpload; UploadIcon = this.pictUpload; DownloadIcon = this.pictDownload; deskUI = this; Log.Information("NetMeter started successfully.."); }
private static void GetMappingsFromRegistry(MapLocation location) { var mappings = new Collection <KeyMapping>(); byte[] map = RegistryProvider.GetScancodeMapFromRegistry(location); if (map != null) { mappings = GetMappingsFromScancodeMap(map); } switch (location) { case MapLocation.LocalMachineKeyboardLayout: MappingsManager.mappings = mappings; break; case MapLocation.KeyMapperLocalMachineKeyboardLayout: savedBootMappings = mappings; break; default: throw new InvalidOperationException("Unknown value for MapLocation: " + location); } }
public static bool VistaMappingsNeedSaving() { // Check whether the current boot mappings and the proposed boot mappings // are the same: if not, they need saving byte[] map = RegistryProvider.GetScancodeMapFromRegistry(MapLocation.KeyMapperVistaMappingsCache); if (map == null) { return(false); } Collection <KeyMapping> maps = GetMappingsFromScancodeMap(map); if (maps.Count != mappings.Count) { return(true); } foreach (KeyMapping km in maps) { if (mappings.Contains(km) == false) { return(true); } } return(false); }
private void RegisterDependencies() { DependencyManager.LogWriter = _logWriter; var appSettings = GetAppSettings(); // Providers var credentialsProvider = new CredentialsProvider(); var fileIoProvider = new FileIoProvider(); var registryProvider = new RegistryProvider(); var userProvider = new UserProvider(); var windowsApiProvider = new WindowsApiProvider(); var windowsServiceProviderFactory = new WindowsServiceProviderFactory(); var powerShellProvider = new PowerShellProvider(); var windowsTaskProvider = new WindowsTaskProvider(); // Services var fileManager = new FileManager(fileIoProvider, windowsApiProvider, credentialsProvider); DependencyManager.FileManager = fileManager; DependencyManager.HostsFileEditor = new HostsFileEditor(fileIoProvider, appSettings.WindowsUpdateUrls); var registryEditor = new RegistryEditor(windowsApiProvider, registryProvider, userProvider); DependencyManager.RegistryEditor = registryEditor; DependencyManager.WindowsServiceManager = new WindowsServiceManager(windowsServiceProviderFactory, registryEditor, fileManager, appSettings.WindowsServices); DependencyManager.WindowsPackageManager = new WindowsPackageManager(powerShellProvider, appSettings.Declutter); DependencyManager.WindowsTaskManager = new WindowsTaskManager(windowsTaskProvider, appSettings.WindowsTasks); }
private IAccessControlEditorDialogProvider ProviderFromResourceType(System.Security.AccessControl.ResourceType resType) { IAccessControlEditorDialogProvider prov = null; switch (resType) { case System.Security.AccessControl.ResourceType.FileObject: prov = new FileProvider(); break; case System.Security.AccessControl.ResourceType.KernelObject: prov = new KernelProvider(); break; case System.Security.AccessControl.ResourceType.RegistryKey: prov = new RegistryProvider(); break; case TaskResourceType: prov = new TaskProvider(); break; default: prov = new GenericProvider(); break; } return(prov); }
public void DeleteRegistrySection(string name) { if (name.Equals(_settingsRegistryKey) || name.Contains(_settingsRegistryKey)) { return; } RegistryProvider.DeleteRegistryUnderCurrentKey(name); _currentSettingsKey = _rootSettingsKey; }
public void GetSystemRootWorks() { // Arrange var rp = new RegistryProvider(null, _output.WriteLine); // Act var result = rp.GetSystemRoot(); // Assert Assert.Equal(result, Environment.ExpandEnvironmentVariables("%SystemRoot%")); }
public void GetMessageFilesForLegacyProviderWorks() { // Arrange var rp = new RegistryProvider(null, _output.WriteLine); // Act var result = rp.GetMessageFilesForLegacyProvider("Application Error").ToList(); // Assert Assert.Single(result); Assert.Equal("C:\\windows\\system32\\wer.dll", result.First(), StringComparer.OrdinalIgnoreCase); }
public static void Main(string[] args) { if (args != null && args.Length > 0 && args[0] == "setup") { Setup.Process(args); } else { RegistryProvider registryProvider = new RegistryProvider(false); SetupNLog(registryProvider); CreateHostBuilder(args, registryProvider).Build().Run(); } }
private static void GetMappingsFromRegistry(MapLocation location) { var mappings = new Collection <KeyMapping>(); MappingType type = MappingType.Null; switch (location) { case MapLocation.LocalMachineKeyboardLayout: case MapLocation.KeyMapperLocalMachineKeyboardLayout: type = MappingType.Boot; break; case MapLocation.CurrentUserKeyboardLayout: case MapLocation.KeyMapperCurrentUserKeyboardLayout: type = MappingType.User; break; } byte[] map = RegistryProvider.GetScancodeMapFromRegistry(location); if (map != null) { mappings = GetMappingsFromScancodeMap(map, type); } switch (location) { case MapLocation.LocalMachineKeyboardLayout: _bootMappings = mappings; break; case MapLocation.CurrentUserKeyboardLayout: _userMappings = mappings; break; case MapLocation.KeyMapperLocalMachineKeyboardLayout: _savedBootMappings = mappings; break; case MapLocation.KeyMapperCurrentUserKeyboardLayout: _savedUserMappings = mappings; break; default: break; } }
public App() { RegistryProvider.Init(); Settings.AppDirectory = Environment.CurrentDirectory; Settings.AppExePath = Assembly.GetExecutingAssembly().Location; SerilogProvider.Initialize(); Log.Information("Starting App.."); SqliteProvider.DbPath = Settings.AppDirectory + @"\Storage\Common\LocalStorage.db"; EvolveProvider.Initialize(); }
/// <summary> /// Initializes a new instance of <see cref="VirtualizationEngine"/>. /// </summary> /// <param name="configurationProvider"> /// The <see cref="IConfigurationProvider"/> to use for loading the required resources. /// </param> /// <returns></returns> public static VirtualizationEngine InitializeEngine(IConfigurationProvider configurationProvider) { var syncBus = new SynchronizationBus(configurationProvider); var engine = new VirtualizationEngine(syncBus); if (!configurationProvider.ConnectionStrings.ContainsKey(ConfigurationDataType.FileSystemRoot)) { throw new ConfigurationDataException(ConfigurationDataType.FileSystemRoot); } var fsProvider = new FileSystemProvider(configurationProvider.ConnectionStrings[ConfigurationDataType.FileSystemRoot], configurationProvider.GetFileSystemEngineRules()); var regProvider = new RegistryProvider(syncBus); engine._hookManager.RegisterHookProvider(new FileSystemHookProvider(fsProvider)); engine._hookManager.RegisterHookProvider(new RegistryHookProvider(regProvider)); return(engine); }
public static void SaveMappings(Mappings whichMappings = Mappings.CurrentBootMappings, MapLocation whereToSave = MapLocation.LocalMachineKeyboardLayout) { Collection <KeyMapping> maps; switch (whichMappings) { case Mappings.CurrentBootMappings: maps = mappings; break; case Mappings.SavedBootMappings: maps = savedBootMappings; break; default: return; } RegistryHive hive = 0; string keyname = "", valuename = ""; RegistryProvider.GetRegistryLocation(whereToSave, ref hive, ref keyname, ref valuename); RegistryKey registry = null; // Need write access so prepare to fail try { if (hive == RegistryHive.LocalMachine) { registry = Registry.LocalMachine.OpenSubKey(keyname, true); } else if (hive == RegistryHive.CurrentUser) { registry = Registry.CurrentUser.OpenSubKey(keyname, true); } } catch (SecurityException ex) { if (hive == RegistryHive.CurrentUser) { // Would expect to be able to write to HKCU Console.WriteLine("Unexpected failure {2} opening {0} on {1} for write access", keyname, Enum.GetNames(typeof(Mappings))[(int)whichMappings], ex.Message); } return; } if (registry == null) { // Key doesn't exist. TODO Shouldn't this be logged? return; } if (maps.Count == 0) { registry.SetValue(valuename, new byte[0]); } else { registry.SetValue(valuename, GetMappingsAsByteArray(maps)); } }
/// <summary> /// Begins running the main Emitter Engine loop on the current thread. /// </summary> /// <param name="bindings">Network binding configuration to use</param> public static void Listen(params IBinding[] bindings) { if (bindings == null || bindings.Length == 0) { throw new ArgumentNullException("bindings"); } // Set the mesh binding Mesh.Binding = bindings .Where(b => b is MeshBinding) .FirstOrDefault(); // Set the registry and set our own identifier fRegistry = new ReplicatedRegistryProvider(Mesh.Identifier); // Register the the mesh handler Service.Mesh.Register(new MessageHandler()); // Tell that we're running fRunning = true; #if !DOTNET // Set the priority Thread.CurrentThread.Priority = ThreadPriority.Highest; // Hook the exceptions and exit AppDomain.CurrentDomain.UnhandledException += OnUnhandledException; AppDomain.CurrentDomain.ProcessExit += CurrentDomain_ProcessExit; #endif // Initialize Thread, Process and Assemblies fThread = Thread.CurrentThread; fProcess = Process.GetCurrentProcess(); fRuntimeAssembly = typeof(Service).GetTypeInfo().Assembly; // Add Primary assemblies MetadataProvider.RegisterAssembly(fRuntimeAssembly); // Name the thread if (fThread != null) { // To avoid an exception in case of relisten, check if the thread is not already named if (fThread.Name != "Emitter Service") { fThread.Name = "Emitter Service"; } } if (BaseDirectory.Length > 0) { Directory.SetCurrentDirectory(BaseDirectory); } // Create a timer thread scheduler if necessary if (fTimerExecutor == null) { fTimerExecutor = new Thread(Timer.Executor.Run); if (fTimerExecutor.Name != "Timer Executor") { fTimerExecutor.Name = "Timer Executor"; } } // Check whether we are running on a multiprocessor hardware fProcessorCount = Environment.ProcessorCount; if (fProcessorCount > 1) { fMultiProcessor = true; } // Registers default providers (if they are not already there) DefaultProviders.RegisterAllDefault(); // Register a new mesh provider if none is available yet if (Mesh.Cluster == null) { Mesh.Cluster = Providers.Resolve <SecurityProvider>().CreateSessionToken(); } var configures = new List <MethodInfo>(); var initializes = new List <MethodInfo>(); MetadataProvider.Types.ForEach((type) => { // Perform InvokeAt configures.AddRange(type.GetInvokeAt(InvokeAtType.Configure)); initializes.AddRange(type.GetInvokeAt(InvokeAtType.Initialize)); fTerminators.AddRange(type.GetInvokeAt(InvokeAtType.Terminate)); }); // Sorts the Configure() by priority and invokes them configures.Sort(new InvokePriorityComparer()); foreach (var configure in configures) { try { configure.Invoke(null, null); } catch (Exception ex) { Logger.Log(ex); } } configures.Clear(); // Create sockeds and bind the socket pump GC.Collect(); // Invoke server startup event InvokeServerStartup(); // Start the timer executor now fTimerExecutor.Start(); // Start listening Transport.Listen(bindings); // Check X509 if (bindings.Where(b => b is TlsBinding).Any() && Tls.Certificate == null) { Logger.Log(LogLevel.Warning, "Unable to detect TLS/SSL certificate."); } // Sorts the Initialize() by priority and invokes them initializes.Sort(new InvokePriorityComparer()); foreach (var initialize in initializes) { try { initialize.Invoke(null, null); } catch (Exception ex) { Logger.Log(ex); } } initializes.Clear(); // Join the cluster through the seed Mesh.ConnectTo(EmitterConfig.Default.Cluster.SeedEndpoint); // Register http handlers Http.Register(new HttpHealthHandler()); Http.Register(new HandleKeyGen()); Http.Register(new DebugHttp()); // Send analytics about this server launch. This is to gather global statistics about the number // of unique machines that use emitter. Providers.Resolve <AnalyticsProvider>().Track("emitter", "launch"); // Timer scheduler slice loop while (IsRunning) { Timer.Scheduler.Slice(); Thread.Sleep(20); } // We're done fRunning = false; }
/// <summary> /// Gets the registry value for the gossip membership. /// </summary> /// <param name="registry">The registry to extend.</param> /// <returns></returns> public static GossipMembership GetMembership(this RegistryProvider registry) { return(registry.Get <GossipMembership>("gossip")); }
public RegistryKey AddRegistrySettingSection(string name) { _currentSettingsKey = RegistryProvider.CreateRegistryUnderCurrentKey(name); return(_currentSettingsKey); }