// Token: 0x0600000A RID: 10 RVA: 0x00002AC8 File Offset: 0x00000CC8 private void TimeSliceThreadMain() { int num = 0; AntispamUpdates antispamUpdates = new AntispamUpdates(); string microsoftUpdateCabPath = AntispamUpdateSvc.GetMicrosoftUpdateCabPath(); while (!this.timeSliceThreadShutdown.WaitOne(num, false)) { try { antispamUpdates.LoadConfiguration(string.Empty); OptInStatus optInStatus = this.hygieneUpdate.SetMicrosoftUpdateOptinStatus(antispamUpdates.MicrosoftUpdate, microsoftUpdateCabPath); if (optInStatus != antispamUpdates.MicrosoftUpdate) { antispamUpdates.MicrosoftUpdate = optInStatus; antispamUpdates.SaveConfiguration(string.Empty); } } catch (SecurityException ex) { UpdateSvcEventLogger.LogEvent(AntispamUpdateServiceEventLogConstants.Tuple_MuOptFail, null, new string[] { ex.Message }); } catch (IOException ex2) { UpdateSvcEventLogger.LogEvent(AntispamUpdateServiceEventLogConstants.Tuple_MuOptFail, null, new string[] { ex2.Message }); } catch (UnauthorizedAccessException ex3) { UpdateSvcEventLogger.LogEvent(AntispamUpdateServiceEventLogConstants.Tuple_MuOptFail, null, new string[] { ex3.Message }); } if (antispamUpdates.MicrosoftUpdate == OptInStatus.Configured && antispamUpdates.UpdateMode == AntispamUpdateMode.Automatic) { this.hygieneUpdate.DoUpdate(); } num = AntispamUpdateSvc.pollInterval * 1000; if (this.hygieneUpdate.ConsoleDiagnostics) { Console.WriteLine("Sleeping {0} Seconds", num / 1000); } } }
// Token: 0x0600000C RID: 12 RVA: 0x00002C28 File Offset: 0x00000E28 protected override void OnStopInternal() { bool flag = false; try { this.timeSliceThreadShutdown.Set(); this.timeSliceThread.Join(); UpdateSvcEventLogger.LogEvent(AntispamUpdateServiceEventLogConstants.Tuple_ServiceStopSuccess, null, new string[0]); flag = true; } finally { if (!flag) { UpdateSvcEventLogger.LogEvent(AntispamUpdateServiceEventLogConstants.Tuple_ServiceStopFailure, null, new string[0]); } } }
// Token: 0x06000008 RID: 8 RVA: 0x000029C0 File Offset: 0x00000BC0 protected override void OnStartInternal(string[] args) { bool flag = false; try { this.hygieneUpdate = new HygieneUpdate(!AntispamUpdateSvc.runningAsService); this.timeSliceThread = new Thread(new ThreadStart(this.TimeSliceThreadMain)); this.timeSliceThread.Start(); UpdateSvcEventLogger.LogEvent(AntispamUpdateServiceEventLogConstants.Tuple_ServiceStartSuccess, null, new string[0]); flag = true; } finally { if (!flag) { UpdateSvcEventLogger.LogEvent(AntispamUpdateServiceEventLogConstants.Tuple_ServiceStartFailure, null, new string[0]); } } }
// Token: 0x06000003 RID: 3 RVA: 0x000020E8 File Offset: 0x000002E8 public void DoUpdate() { if (this.ConsoleDiagnostics) { Console.WriteLine("Checking for Updates."); } try { UpdateSvcEventLogger.LogEvent(AntispamUpdateServiceEventLogConstants.Tuple_StartScan, null, new string[0]); IUpdateSession updateSession = new UpdateSessionClass(); updateSession.ClientApplicationID = "Exchange12"; IUpdateSearcher updateSearcher = updateSession.CreateUpdateSearcher(); ISearchResult searchResult = updateSearcher.Search("IsInstalled=0 and CategoryIDs contains 'ab62c5bd-5539-49f6-8aea-5a114dd42314'"); UpdateSvcEventLogger.LogEvent(AntispamUpdateServiceEventLogConstants.Tuple_StopScan, null, new string[0]); if (searchResult.Updates.Count == 0) { if (this.ConsoleDiagnostics) { Console.WriteLine("No Updates."); } } else { foreach (object obj in searchResult.Updates) { IUpdate update = (IUpdate)obj; UpdateSvcEventLogger.LogEvent(AntispamUpdateServiceEventLogConstants.Tuple_PatchAvailable, null, new string[] { update.Title }); if (this.ConsoleDiagnostics) { Console.WriteLine("Title: {0}", update.Title); } } UpdateSvcEventLogger.LogEvent(AntispamUpdateServiceEventLogConstants.Tuple_StartDownload, null, new string[0]); UpdateDownloader updateDownloader = updateSession.CreateUpdateDownloader(); updateDownloader.Priority = 3; updateDownloader.Updates = searchResult.Updates; IDownloadResult downloadResult = updateDownloader.Download(); UpdateSvcEventLogger.LogEvent(AntispamUpdateServiceEventLogConstants.Tuple_StopDownload, null, new string[0]); for (int i = 0; i < updateDownloader.Updates.Count; i++) { if (downloadResult.GetUpdateResult(i).ResultCode == 4 || downloadResult.GetUpdateResult(i).ResultCode == 5) { UpdateSvcEventLogger.LogEvent(AntispamUpdateServiceEventLogConstants.Tuple_DownloadFailure, null, new string[] { updateDownloader.Updates[i].Title, downloadResult.GetUpdateResult(i).HResult.ToString() }); if (this.ConsoleDiagnostics) { Console.WriteLine("Errors: {0}: {1}", updateDownloader.Updates[i].Title, downloadResult.GetUpdateResult(i).HResult); } } } bool flag = false; foreach (object obj2 in updateDownloader.Updates) { IUpdate update2 = (IUpdate)obj2; if (update2.IsDownloaded) { flag = true; } } if (!flag) { if (this.ConsoleDiagnostics) { Console.WriteLine("Nothing to Install."); } } else { if (this.ConsoleDiagnostics) { Console.WriteLine("Starting Installation."); } UpdateSvcEventLogger.LogEvent(AntispamUpdateServiceEventLogConstants.Tuple_StartInstall, null, new string[0]); IUpdateInstaller updateInstaller = updateSession.CreateUpdateInstaller(); updateInstaller.Updates = updateDownloader.Updates; IInstallationResult installationResult = updateInstaller.Install(); UpdateSvcEventLogger.LogEvent(AntispamUpdateServiceEventLogConstants.Tuple_StopInstall, null, new string[0]); for (int j = 0; j < updateInstaller.Updates.Count; j++) { IUpdate update3 = updateInstaller.Updates[j]; if (installationResult.GetUpdateResult(j).ResultCode == 4 || installationResult.GetUpdateResult(j).ResultCode == 3) { UpdateSvcEventLogger.LogEvent(AntispamUpdateServiceEventLogConstants.Tuple_InstallFailure, null, new string[] { updateInstaller.Updates[j].Title, installationResult.GetUpdateResult(j).HResult.ToString() }); if (this.ConsoleDiagnostics) { Console.WriteLine("Errors: {0}: {1}", updateInstaller.Updates[j].Title, installationResult.GetUpdateResult(j).HResult); } } } if (this.ConsoleDiagnostics) { Console.WriteLine("Finished."); } } } } catch (COMException ex) { UpdateSvcEventLogger.LogEvent(AntispamUpdateServiceEventLogConstants.Tuple_WuaFail, null, new string[] { ex.Message }); if (this.ConsoleDiagnostics) { Console.WriteLine("Failed: {0}", ex.Message); } } }
// Token: 0x06000004 RID: 4 RVA: 0x00002528 File Offset: 0x00000728 public OptInStatus SetMicrosoftUpdateOptinStatus(OptInStatus optIn, string cabLocation) { bool flag = optIn == OptInStatus.RequestDisabled || optIn == OptInStatus.RequestNotifyDownload || optIn == OptInStatus.RequestNotifyInstall || optIn == OptInStatus.RequestScheduled; try { IWindowsUpdateAgentInfo windowsUpdateAgentInfo = new WindowsUpdateAgentInfoClass(); string text = windowsUpdateAgentInfo.GetInfo("ProductVersionString") as string; if (string.IsNullOrEmpty(text)) { if (flag) { UpdateSvcEventLogger.LogEvent(AntispamUpdateServiceEventLogConstants.Tuple_MuOpt, null, new string[0]); } if (this.ConsoleDiagnostics) { Console.WriteLine("Unable to determine WUA Version"); } return(OptInStatus.NotConfigured); } Version v = new Version(text); if (v < HygieneUpdate.AgentMinVersion) { if (flag) { UpdateSvcEventLogger.LogEvent(AntispamUpdateServiceEventLogConstants.Tuple_MuOpt, null, new string[0]); } if (this.ConsoleDiagnostics) { Console.WriteLine("Out of date client"); } return(OptInStatus.NotConfigured); } } catch (COMException) { if (flag) { UpdateSvcEventLogger.LogEvent(AntispamUpdateServiceEventLogConstants.Tuple_MuOpt, null, new string[0]); } if (this.ConsoleDiagnostics) { Console.WriteLine("Unable to determine Windows Update Agent version"); } return(OptInStatus.NotConfigured); } try { IUpdateServiceManager updateServiceManager = new UpdateServiceManagerClass(); foreach (object obj in updateServiceManager.Services) { IUpdateService updateService = (IUpdateService)obj; if (this.ConsoleDiagnostics) { Console.WriteLine("Service {0}: {1} {2}", updateService.ServiceID, updateService.IsRegisteredWithAU, updateService.IsManaged); } if ((string.Compare("7971f918-a847-4430-9279-4a52d1efe18d", updateService.ServiceID, StringComparison.OrdinalIgnoreCase) == 0 && updateService.IsRegisteredWithAU) || updateService.IsManaged) { if (this.ConsoleDiagnostics) { Console.WriteLine("Microsoft Update already registered."); } return(OptInStatus.Configured); } } if (!flag) { return(OptInStatus.NotConfigured); } if (string.IsNullOrEmpty(cabLocation)) { UpdateSvcEventLogger.LogEvent(AntispamUpdateServiceEventLogConstants.Tuple_MuOpt, null, new string[0]); if (this.ConsoleDiagnostics) { Console.WriteLine("Invalid CAB location"); } } updateServiceManager.AddService("7971f918-a847-4430-9279-4a52d1efe18d", cabLocation); updateServiceManager.RegisterServiceWithAU("7971f918-a847-4430-9279-4a52d1efe18d"); IAutomaticUpdates automaticUpdates = new AutomaticUpdatesClass(); if (!automaticUpdates.Settings.ReadOnly && automaticUpdates.Settings.NotificationLevel == null) { automaticUpdates.Settings.NotificationLevel = optIn; automaticUpdates.Settings.ScheduledInstallationDay = 0; automaticUpdates.Settings.Save(); } } catch (COMException ex) { if (flag) { UpdateSvcEventLogger.LogEvent(AntispamUpdateServiceEventLogConstants.Tuple_MuOptFail, null, new string[] { ex.Message }); } if (this.ConsoleDiagnostics) { Console.WriteLine("Failed: {0}", ex.Message); } return(OptInStatus.NotConfigured); } catch (InvalidCastException ex2) { UpdateSvcEventLogger.LogEvent(AntispamUpdateServiceEventLogConstants.Tuple_MuGetFail, null, new string[] { ex2.Message }); if (this.ConsoleDiagnostics) { Console.WriteLine("Failed: {0}", ex2.Message); } return(OptInStatus.NotConfigured); } return(OptInStatus.Configured); }