Example #1
0
        public EventSaver(SessionInfoProvider sessionInfoProvider, IWorkstationIdProvider workstationIdProvider, string eventsDirectoryPath, ILog log)
            : base(nameof(EventSaver), log)
        {
            EventsDirectoryPath = eventsDirectoryPath;

            if (!Directory.Exists(EventsDirectoryPath))
            {
                Directory.CreateDirectory(EventsDirectoryPath);
            }

            _eventFactory = new EventFactory(sessionInfoProvider, workstationIdProvider, log);
        }
 public EventFactory(SessionInfoProvider sessionInfoProvider, IWorkstationIdProvider workstationIdProvider, ILog log)
 {
     _sessionInfoProvider   = sessionInfoProvider;
     _workstationIdProvider = workstationIdProvider;
 }
Example #3
0
 public WorkstationInfoProvider(IWorkstationIdProvider workstationIdProvider, ILog log)
     : base(nameof(WorkstationInfoProvider), log)
 {
     _workstationIdProvider = workstationIdProvider;
 }
Example #4
0
 public WorkstationInfoProvider(IWorkstationIdProvider workstationIdProvider, ISettingsManager <ServiceSettings> serviceSettingsManager, ILog log)
     : base(nameof(WorkstationInfoProvider), log)
 {
     _workstationIdProvider  = workstationIdProvider;
     _serviceSettingsManager = serviceSettingsManager;
 }
Example #5
0
        void Initialize()
        {
            try
            {
                NLog.LogManager.EnableLogging();

                _sdkLogger = new NLogWrapper();
                _log       = new Logger(nameof(HideezService), _sdkLogger);

                _log.WriteLine($">>>>>> Starting service");

                _log.WriteLine($"Service Version: {Assembly.GetEntryAssembly().GetName().Version}");
                _log.WriteLine($"CLR Version: {Environment.Version}");
                _log.WriteLine($"OS: {Environment.OSVersion}");
                _log.WriteLine($"Command: {Environment.CommandLine}");

                _log.WriteLine($">>>>> Starting messaging hub");
                var pubSubLogger = new MetaPubSubLogger(_sdkLogger);
                _messenger = new MetaPubSub(pubSubLogger);

                _log.WriteLine(">>>>>> Get registry settings key");
                clientRootRegistryKey = HideezClientRegistryRoot.GetRootRegistryKey(true);

                _log.WriteLine(">>>>>> Initialize session monitor");
                _sessionInfoProvider = new SessionInfoProvider(_sdkLogger);

                _log.WriteLine(">>>>>> Initialize workstation id provider");
                _workstationIdProvider = new WorkstationIdProvider(clientRootRegistryKey, _sdkLogger);
                if (string.IsNullOrWhiteSpace(_workstationIdProvider.GetWorkstationId()))
                {
                    _workstationIdProvider.SaveWorkstationId(Guid.NewGuid().ToString());
                }

                _log.WriteLine(">>>>>> Initilize audit");
                var    commonAppData            = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);
                string auditEventsDirectoryPath = $@"{commonAppData}\Hideez\Service\WorkstationEvents\";
                _eventSaver = new EventSaver(_sessionInfoProvider, _workstationIdProvider, auditEventsDirectoryPath, _sdkLogger);

                _log.WriteLine(">>>>>> Initialize session timestamp monitor");
                var sessionTimestampPath = $@"{commonAppData}\Hideez\Service\Timestamp\timestamp.dat";
                _sessionTimestampLogger = new SessionTimestampLogger(sessionTimestampPath, _sessionInfoProvider, _eventSaver, _sdkLogger);

                OnServiceStarted();

                _log.WriteLine(">>>>>> Initialize SDK");
                InitializeSDK().Wait();

                _messenger.StartServer("HideezServicePipe", () =>
                {
                    try
                    {
                        _log.WriteLine("Custom pipe config started");
                        var pipeSecurity = new PipeSecurity();
                        pipeSecurity.AddAccessRule(new PipeAccessRule(
                                                       new SecurityIdentifier(WellKnownSidType.AuthenticatedUserSid, null),
                                                       PipeAccessRights.FullControl,
                                                       AccessControlType.Allow));

                        var pipe = new NamedPipeServerStream("HideezServicePipe", PipeDirection.InOut, 32,
                                                             PipeTransmissionMode.Message, PipeOptions.Asynchronous, 4096, 4096, pipeSecurity);

                        _log.WriteLine("Custom pipe config successful");
                        return(pipe);
                    }
                    catch (Exception ex)
                    {
                        _log.WriteLine("Custom pipe config failed.", ex);
                        return(null);
                    }
                });

                _log.WriteLine(">>>>>> Service started");
            }
            catch (Exception ex)
            {
                _log.WriteLine("Hideez Service has encountered an error during initialization." +
                               Environment.NewLine +
                               "The error must be resolved until service operation can be resumed. " +
                               Environment.NewLine +
                               "The service will not restart automatically.", ex, LogErrorSeverity.Fatal);

                // Exit code 0 prevents automatic service restart trigger on exit
                Environment.Exit(0);
            }
        }