Exemple #1
0
        /// <summary>
        /// Executa o JOB que chama os scripts que executam os agentes FIM.
        /// </summary>
        public static void ExecJobExecucaoScriptsFIM()
        {
            SYS_Servico servico = GetEntity(new SYS_Servico()
            {
                ser_id = (short)eChaveServico.ExecucaoScriptsFIM
            });

            if (servico.ser_ativo)
            {
                string nomeRunProfile      = CFG_ConfiguracaoBO.SelecionaValorPorChave("AppNomeRunProfileFIM");
                string nomeAgenteAdma      = CFG_ConfiguracaoBO.SelecionaValorPorChave("AppNomeAgenteAdma");
                string nomeAgenteSql       = CFG_ConfiguracaoBO.SelecionaValorPorChave("AppNomeAgenteSql");
                string IPMaquinaAgentesFIM = CFG_ConfiguracaoBO.SelecionaValorPorChave("AppIPMaquinaAgentesFIM");

                ManagementScope scope = new ManagementScope(String.Format(@"\\{0}\root\MicrosoftIdentityIntegrationServer", IPMaquinaAgentesFIM));
                scope.Options.Authentication = AuthenticationLevel.PacketPrivacy;
                scope.Connect();

                ObjectQuery query = new ObjectQuery(String.Format("select * from MIIS_ManagementAgent where Name = '{0}'", nomeAgenteAdma));

                ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);

                foreach (ManagementObject ma in searcher.Get())
                {
                    ma.InvokeMethod("Execute", new object[] { nomeRunProfile });
                }

                query = new ObjectQuery(String.Format("select * from MIIS_ManagementAgent where Name = '{0}'", nomeAgenteSql));

                searcher = new ManagementObjectSearcher(scope, query);

                foreach (ManagementObject ma in searcher.Get())
                {
                    ma.InvokeMethod("Execute", new object[] { nomeRunProfile });
                }
            }
        }
        /// <summary>
        /// Processa os hist�ricos de altera��o de senha e realiza a sincroniza��o entre o Autenticador e AD.
        /// </summary>
        /// <param name="ltLogUsuarioAD">Lista de hist�rico de altera��o de senha.</param>
        /// <returns></returns>
        public static bool ProcessaLogUsuarioAD(List <sLOG_UsuarioAD> ltLogUsuarioAD)
        {
            try
            {
                string dominio = CFG_ConfiguracaoBO.SelecionaValorPorChave("AppDominioAD");
                string organizationalUnitPath = CFG_ConfiguracaoBO.SelecionaValorPorChave("AppOrganizationalUnitPath");
                string descricao = CFG_ConfiguracaoBO.SelecionaValorPorChave("AppUserDescriptionAD");

                LdapUsers userAD = new LdapUsers(LdapUtil.CheckPath(dominio));

                foreach (sLOG_UsuarioAD log in ltLogUsuarioAD)
                {
                    try
                    {
                        bool processou = false;

                        if (log.usuarioAD.usa_origemAcao == (short)LOG_UsuarioAD.eOrigem.Autenticador)
                        {
                            processou = SincronizaSenhaAlteradaAutenticador(userAD, dominio, organizationalUnitPath, log, descricao);
                        }
                        else
                        {
                            processou = SincronizaSenhaAlteradaAD(log);
                        }

                        if (processou)
                        {
                            LOG_UsuarioAD usuarioAD = log.usuarioAD;
                            usuarioAD.usa_status         = (short)LOG_UsuarioAD.eStatus.Processado;
                            usuarioAD.usa_dataProcessado = DateTime.Now;
                            LOG_UsuarioADBO.Save(usuarioAD);
                        }
                        else
                        {
                            LOG_UsuarioAD usuarioAD = log.usuarioAD;
                            usuarioAD.usa_status         = (short)LOG_UsuarioAD.eStatus.Falha;
                            usuarioAD.usa_dataProcessado = DateTime.Now;
                            LOG_UsuarioADBO.Save(usuarioAD);

                            LOG_UsuarioADErro erro = new LOG_UsuarioADErro
                            {
                                usa_id = log.usuarioAD.usa_id
                                ,
                                use_descricaoErro = "O log de altera��o de senha n�o foi processado."
                            };
                            LOG_UsuarioADErroBO.Save(erro);
                        }
                    }
                    catch (Exception ex)
                    {
                        LOG_UsuarioAD usuarioAD = log.usuarioAD;
                        usuarioAD.usa_status         = (byte)LOG_UsuarioAD.eStatus.Falha;
                        usuarioAD.usa_dataProcessado = DateTime.Now;
                        LOG_UsuarioADBO.Save(usuarioAD);

                        LOG_UsuarioADErro erro = new LOG_UsuarioADErro
                        {
                            usa_id = log.usuarioAD.usa_id
                            ,
                            use_descricaoErro = ex.Message
                        };
                        LOG_UsuarioADErroBO.Save(erro);

                        UtilBO.GravarErro(ex);
                    }
                }

                return(true);
            }
            catch (Exception ex)
            {
                ltLogUsuarioAD.ForEach(p =>
                {
                    LOG_UsuarioAD entityUsuarioAD = p.usuarioAD;
                    entityUsuarioAD.usa_status    = (short)LOG_UsuarioAD.eStatus.Pendente;
                    LOG_UsuarioADBO.Save(entityUsuarioAD);
                });

                throw ex;
            }
        }