Example #1
0
    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);
    }
Example #2
0
    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);
    }