public Proc GetDeferredActionIfApplicable(SessionEventTriggerEvent sessionEventTriggerEvent) { var maintenance = ExtensionContext.Current.GetSettingValue("MaintenanceMode"); if (sessionEventTriggerEvent.SessionEvent.EventType == SessionEventType.Connected && sessionEventTriggerEvent.SessionConnection.ProcessType == ProcessType.Guest && maintenance == "0") { return((Proc) delegate { RunDiagnostics(sessionEventTriggerEvent); }); } else if (sessionEventTriggerEvent.SessionEvent.EventType == SessionEventType.RanCommand) { return((Proc) delegate { var sessionDetails = SessionManagerPool.Demux.GetSessionDetails(sessionEventTriggerEvent.Session.SessionID); string output = sessionEventTriggerEvent.SessionEvent.Data; if (IsDiagnosticContent(output) && IsDiagResult(output)) { var data = output.Split(new string[] { "!---BEGIN JSON---!" }, StringSplitOptions.None); if (data[1] != "") { DiagOutput diag = Deserialize(data[1]); var session = sessionEventTriggerEvent.Session; if (diag.version != null) { session.CustomPropertyValues[6] = diag.version; } if (diag.id != null) { session.CustomPropertyValues[5] = diag.id; } SessionManagerPool.Demux.UpdateSession("AutomateDiagnostics", session.SessionID, session.Name, session.IsPublic, session.Code, session.CustomPropertyValues); } } else if (IsDiagnosticContent(output) && IsRepairResult(output)) { RunDiagnostics(sessionEventTriggerEvent); } }); } return(null); }
public Proc GetDeferredActionIfApplicable(SessionEventTriggerEvent sessionEventTriggerEvent) { var maintenance = ExtensionContext.Current.GetSettingValue("MaintenanceMode"); var usemachinename = ExtensionContext.Current.GetSettingValue("SetUseMachineName"); var agentidproperty = Int32.Parse(ExtensionContext.Current.GetSettingValue("AgentIDCustomProperty")); var agentversionproperty = Int32.Parse(ExtensionContext.Current.GetSettingValue("AgentVersionCustomProperty")); if (sessionEventTriggerEvent.SessionEvent.EventType == SessionEventType.Connected && sessionEventTriggerEvent.SessionConnection.ProcessType == ProcessType.Guest && maintenance == "0" && sessionEventTriggerEvent.Session.ActiveConnections.Where(_ => _.ProcessType == ProcessType.Host).Count() == 0) { return((Proc) delegate { RunDiagnostics(sessionEventTriggerEvent); }); } else if (sessionEventTriggerEvent.SessionEvent.EventType == SessionEventType.RanCommand) { return((Proc) delegate { var sessionDetails = SessionManagerPool.Demux.GetSessionDetails(sessionEventTriggerEvent.Session.SessionID); string output = sessionEventTriggerEvent.SessionEvent.Data; try { if (IsDiagnosticContent(output) && IsDiagResult(output)) { var data = output.Split(new string[] { "!---BEGIN JSON---!" }, StringSplitOptions.None); if (data[1] != "") { //WriteLog(data[1]); string pattern = @"(\{(.|\s)*\})"; Match m = Regex.Match(data[1], pattern); if (m.Success) { string json = m.Groups[1].Value; //WriteLog(json); DiagOutput diag = Deserialize(json); var session = sessionEventTriggerEvent.Session; if (diag.version != null) { session.CustomPropertyValues[agentversionproperty - 1] = diag.version; } if (diag.id != null) { session.CustomPropertyValues[agentidproperty - 1] = diag.id; } var sessionname = session.Name; if (usemachinename == "1") { sessionname = ""; } SessionManagerPool.Demux.UpdateSession("AutomateDiagnostics", session.SessionID, sessionname, session.IsPublic, session.Code, session.CustomPropertyValues); } } } else if (IsDiagnosticContent(output) && IsRepairResult(output)) { RunDiagnostics(sessionEventTriggerEvent); } } catch (Exception e) { WriteLog(e.Message); } }); } return(null); }