/// <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; } }