Exemple #1
0
        private static string GetTagValue(string text, string tag, int offset)
        {
            string funcName = "GetTagValue";
            int    num      = text.IndexOf("<" + tag, offset);

            if (num > 0)
            {
                int num2 = num + tag.Length + 1;
                num2 = text.IndexOf(">", num);
                if (num2 > 0)
                {
                    num2++;
                    int num3 = text.IndexOf("</" + tag, num2);
                    if (num3 > num2)
                    {
                        return(text.Substring(num2, num3 - num2));
                    }
                    WinRMHelper.TraceDebugTagNotFound(funcName, text, "</" + tag, num2);
                }
                else
                {
                    WinRMHelper.TraceDebugTagNotFound(funcName, text, ">", num);
                }
            }
            else
            {
                WinRMHelper.TraceDebugTagNotFound(funcName, text, "<" + tag, offset);
            }
            return(string.Empty);
        }
Exemple #2
0
        internal static bool TryInsertDiagnosticsInfo(ArraySegment <byte> buffer, Func <string> getDiagnosticInfo, out byte[] updatedBuffer, out string failureHint, Action <string> logging = null)
        {
            failureHint   = null;
            updatedBuffer = null;
            if (buffer.Count == 0)
            {
                ExTraceGlobals.VerboseTracer.TraceDebug(0L, "[WinRMHelper::TryInsertDiagnosticsInfo] buffer == null || buffer.Count = 0.");
                failureHint = "buffer Null/Empty";
                return(false);
            }
            string @string = Encoding.UTF8.GetString(buffer.Array, 0, 15);

            if (string.IsNullOrEmpty(@string))
            {
                ExTraceGlobals.VerboseTracer.TraceDebug <string>(0L, "[WinRMHelper::TryInsertDiagnosticsInfo] EnvelopString is null/empty.", @string);
                failureHint = "EnvelopString Null/Empty";
                return(false);
            }
            if ([email protected]("<s:Envelope", StringComparison.OrdinalIgnoreCase))
            {
                ExTraceGlobals.VerboseTracer.TraceDebug <string>(0L, "[WinRMHelper::TryInsertDiagnosticsInfo] EnvelopString = {0}, Not start with <s:Envelop.", @string);
                failureHint = "No s:Envelop";
                return(false);
            }
            string text = Encoding.UTF8.GetString(buffer.Array, 0, buffer.Count);

            if (string.IsNullOrEmpty(text))
            {
                ExTraceGlobals.VerboseTracer.TraceDebug <string>(0L, "[WinRMHelper::TryInsertDiagnosticsInfo] Output is null/empty.", text);
                failureHint = "Output Null/Empty";
                return(false);
            }
            int num = text.IndexOf("<f:Message>");

            if (num < 0)
            {
                ExTraceGlobals.VerboseTracer.TraceDebug <string>(0L, "[WinRMHelper::TryInsertDiagnosticsInfo] Output = {0}, faultMsgIndex < 0.", text);
                failureHint = "No f:Message";
                return(false);
            }
            int length = text.Length;

            ExTraceGlobals.VerboseTracer.TraceDebug <string, int>(0L, "[WinRMHelper::TryInsertDiagnosticsInfo] Output(faultMsgIndex + 100) = {0}, faultMsgIndex = {1}.", text.Substring(num, (num + 100 < length) ? 100 : (length - num)), num);
            string text2 = "f:Message";
            int    num2  = num + "<f:Message>".Length;

            if (text.IndexOf("<f:ProviderFault", num2, "<f:ProviderFault".Length) >= 0)
            {
                text2 = "<f:ProviderFault";
                text2 = text2.TrimStart(new char[]
                {
                    '<'
                });
                num2 = text.IndexOf('>', num2) + 1;
                ExTraceGlobals.VerboseTracer.TraceDebug <string, int>(0L, "[WinRMHelper::TryInsertDiagnosticsInfo] Output(positionToInsert + 100) = {0}, positionToInsert = {1}.", text.Substring(num, (num2 + 100 < length) ? 100 : (length - num2)), num2);
            }
            if (logging != null)
            {
                int num3 = text.IndexOf("<s:Fault");
                if (num3 > 0)
                {
                    int num4 = text.IndexOf("<s:Code", num3);
                    if (num4 > 0)
                    {
                        string tagValue = WinRMHelper.GetTagValue(text, "s:Value", num4);
                        string text3    = string.Empty;
                        int    num5     = text.IndexOf("<s:Subcode", num4);
                        if (num5 > 0)
                        {
                            text3 = WinRMHelper.GetTagValue(text, "s:Value", num5);
                        }
                        else
                        {
                            WinRMHelper.TraceDebugTagNotFound("TryInsertDiagnosticsInfo", text, "<s:Subcode", 0);
                        }
                        string tagValue2 = WinRMHelper.GetTagValue(text, text2, num4);
                        logging(string.Concat(new string[]
                        {
                            tagValue,
                            "/",
                            text3,
                            "/",
                            tagValue2
                        }));
                    }
                    else
                    {
                        WinRMHelper.TraceDebugTagNotFound("TryInsertDiagnosticsInf", text, "<s:Code", 0);
                    }
                }
                else
                {
                    WinRMHelper.TraceDebugTagNotFound("TryInsertDiagnosticsInfo", text, "<s:Fault", 0);
                }
            }
            string value = getDiagnosticInfo();

            text          = text.Insert(num2, value);
            updatedBuffer = Encoding.UTF8.GetBytes(text);
            return(true);
        }