Exemple #1
0
        private static void InstallService(ISLogger logger)
        {
            if (IsInstalled())
            {
                Console.WriteLine("Try to install collection service but, service already installed! ");
                logger.Debug("Try to install collection service but, service already installed! ");
                return;
            }

            logger.Debug("Install collection service... ");

            AssemblyInstaller installer = GetInstaller(logger);
            IDictionary       state     = new Hashtable();

            try
            {
                installer.Install(state);
                installer.Commit(state);
            }
            catch (Exception e)
            {
                Console.WriteLine("Install CollectionService error " + e.Message);
                logger.Error("Install CollectionService error " + e.Message);
                logger.Error(e.ToString());
            }
            finally
            {
                try { installer.Rollback(state); } catch { };
            }
        }
Exemple #2
0
        protected override void OnStop()
        {
            //

            try
            {
                if (WCFHost != null)
                {
                    WCFHost.Close();
                }
            }
            catch (Exception e)
            {
                logger.Error("WCF close error ", e);
            }

            try
            {
                sqlTaskScheduler.Stop();

                logger.Debug("collection service stopped");
            }
            catch (Exception e)
            {
                logger.Error("stop service error ", e);
            }

            //   sqlTaskScheduler.Stop();
        }
Exemple #3
0
        private static void StopService(ISLogger logger)
        {
            if (!IsInstalled())
            {
                logger.Debug("try stop  collection service, but it is not installed! ");
                Console.WriteLine("try stop  collection service, but it is not installed! ");
                return;
            }

            logger.Debug("Stopping  collection service... ");
            Console.WriteLine("Stopping  collection service... ");


            using (ServiceController controller =
                       new ServiceController(name))
            {
                try
                {
                    if (controller.Status != ServiceControllerStatus.Stopped)
                    {
                        controller.Stop();
                        controller.WaitForStatus(ServiceControllerStatus.Stopped,
                                                 TimeSpan.FromSeconds(10));
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine("Stop CollectionService error " + e.Message);
                    logger.Error("Stop CollectionService error " + e.Message);
                    logger.Error(e.ToString());
                }
            }
        }
Exemple #4
0
        private static void StartService(ISLogger logger)
        {
            if (!IsInstalled())
            {
                logger.Debug("CollectionService already started! ");
                Console.WriteLine("CollectionService already started! ");
                return;
            }

            logger.Debug("Starting  collection service.... ");
            Console.WriteLine("Starting  collection service.... ");

            using (ServiceController controller =
                       new ServiceController(name))
            {
                try
                {
                    if (controller.Status != ServiceControllerStatus.Running)
                    {
                        controller.Start();
                        controller.WaitForStatus(ServiceControllerStatus.Running, TimeSpan.FromSeconds(10));
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine("Start CollectionService() error " + e.Message);
                    logger.Error("Start CollectionService() error " + e.Message);
                    logger.Error(e.ToString());
                }
            }
        }
Exemple #5
0
        public async void RemoveInstanceForeverAsync(CollectionResult result, ISLogger logger)
        {
            logger.Debug("Removing forever instance id=" + result.InstanceID);

            try
            {
                MsSqlMonitorEntities context  = new MsSqlMonitorEntities();
                Instance             instance = context.Instances.Find(result.InstanceID);

                instance.Assigns.ToList().ForEach(i => context.Assigns.Remove(i));


                instance.Roles.ToList().ForEach(r => { r.RefuseAllLogins(); context.Entry(r).State = EntityState.Deleted; });
                // Delete all users before update.
                instance.Logins.ToList().ForEach(l => context.Entry(l).State = EntityState.Deleted);
                // Delete all roles from databases
                instance.Databases.ToList().ForEach(db => db.Roles.ToList().ForEach(role => { role.RefuseAllUsers(); context.Entry(role).State = EntityState.Deleted; }));
                instance.Databases.ToList().ForEach(db => db.Users.ToList().ForEach(user => { user.RefuseAllRoles(); context.Entry(user).State = EntityState.Deleted; }));
                // Delete all databases
                instance.Databases.ToList().ForEach(db => context.Entry(db).State = EntityState.Deleted);


                context.Entry(instance).State = EntityState.Deleted;

                await context.SaveChangesAsync().ConfigureAwait(false);
            }
            catch (Exception e)
            {
                logger.Error(e.StackTrace);
            }
        }
Exemple #6
0
        private static void UninstallService(ISLogger logger)
        {
            if (!IsInstalled())
            {
                Console.WriteLine("CollectionService already uninstalled! ");
                logger.Debug("CollectionService already uninstalled! ");
                return;
            }



            try
            {
                using (AssemblyInstaller installer = GetInstaller(logger))
                {
                    IDictionary state = new Hashtable();
                    try
                    {
                        installer.Uninstall(state);
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine("Uninstall CollecionService error " + e.Message);
                        logger.Error("Uninstall CollecionService error " + e.Message);
                        logger.Error(e.ToString());
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("Uninstall CollecionService error " + e.Message);
                logger.Error("Uninstall CollecionService error " + e.Message);
                logger.Error(e.ToString());
            }
        }
        public async Task <SqlConnection> OpenConnection(Instance instance)
        {
            if (instance == null)
            {
                logger.Error("ConnectionManager.OpenConnection: get null instance");
                return(null);
            }

            Impersonation       impersonation = null;
            ImpersonationResult impResult     = null;

            connection = new SqlConnection(BuildConnectionString(instance));


            if (instance.Authentication == AuthenticationType.Windows)
            {
                impersonation = new Impersonation();
                impResult     = impersonation.Impersonate(instance.Login, null, instance.Password);//тут

                if (impResult.HasError)
                {
                    logger.Error("Imperosnation error: ConnectionManager.OpenConnection: Instance id =" + instance.Id);
                }
                else
                {
                    logger.Debug("Impersonation oK instance id =" + instance.Id);
                }

                return(null);
            }


            try
            {
                //ConfigureAwait(true); to return to the same context to do undo imersonation for the same thread
                await connection.OpenAsync().ConfigureAwait(true);
            }
            catch (Exception e)
            {
                logger.Error("ConnectionManager.OpenConnection: Error open connection  instance=" + instance.InstanceName, e);
                return(null);
            }
            finally
            {
                if (impResult != null && impersonation != null)
                {
                    if (!impResult.HasError)
                    {
                        impersonation.UndoImpersonation(impResult.User);
                    }
                }
            }

            return(connection);
        }
Exemple #8
0
        protected override void OnStart(string[] args)
        {
            IUnityContainer unity = DependencyConfig.Initialize();

            logger            = ServiceLocator.Current.GetInstance <ISLogger>();
            resourceManager   = ServiceLocator.Current.GetInstance <IResourceManager>();
            connManager       = ServiceLocator.Current.GetInstance <IConnectionManager>();
            encryptionManager = ServiceLocator.Current.GetInstance <IEncryptionManager>();

            logger.Debug("collection service started");


            unitOfWork = unity.Resolve <IUnitOfWork>(new ParameterOverride("context", new MsSqlMonitorEntities()));


            try
            {
                WCFHost = new ServiceHost(this, new Uri[] { new Uri(WCFADRESS) });
                var behaviour = WCFHost.Description.Behaviors.Find <ServiceBehaviorAttribute>();
                behaviour.InstanceContextMode = InstanceContextMode.Single;

                WCFHost.AddServiceEndpoint(typeof(IWCFContract), new NetTcpBinding(), WCFSERVICE);
                WCFHost.Open();
            }
            catch (Exception e)
            {
                WCFHost = null;
                logger.Error("WCF open error ", e);
            }


            try
            {
                sqlTaskScheduler = new SQLTaskScheduler(logger, resourceManager, unitOfWork, connManager, encryptionManager);
                sqlTaskScheduler.Start();
            }
            catch (Exception e)
            {
                logger.Error("start service error ", e);
            }

            //
        }
Exemple #9
0
        public void InstanceUpdateFinished(int instanceID, JobType.UpdateInfoType jobType)
        {
            KeyValuePair <long, SchedulerWorkItem> pair = nowCollecting.FirstOrDefault(x => x.Value.InstanceId == instanceID && x.Value.JobType == jobType);

            if (pair.Value == null)
            {
                return;
            }

            SchedulerWorkItem value;

            nowCollecting.TryRemove(pair.Key, out value);

            logger.Debug("update finished ID= " + value.InstanceId + " jobType=" + value.JobType);
        }