/// <summary>
        /// Parse the FSSHTTPB Bytes.
        /// </summary>
        /// <param name="FSSHTTPBbytes">The raw date contains FSSHTTPB message.</param>
        /// <param name="direction">The direction of the traffic.</param>
        /// <returns>The object parsed result</returns>
        public object ParseFSSHTTPBBytes(byte[] FSSHTTPBbytes, TrafficDirection direction)
        {
            object objectOut = null;

            byte[] emptyByte = new byte[0];
            if (FSSHTTPBbytes == null || FSSHTTPBbytes.Length == 0)
            {
                return(null);
            }

            try
            {
                if (direction == TrafficDirection.In)
                {
                    FsshttpbRequest FsshttpbReq = new FsshttpbRequest();
                    MemoryStream    s           = new MemoryStream(FSSHTTPBbytes);
                    FsshttpbReq.Parse(s);
                    objectOut = FsshttpbReq;
                }
                else
                {
                    FsshttpbResponse FsshttpbRes = new FsshttpbResponse();
                    MemoryStream     s           = new MemoryStream(FSSHTTPBbytes);
                    FsshttpbRes.Parse(s);
                    objectOut = FsshttpbRes;
                }
                return(objectOut);
            }
            catch (Exception ex)
            {
                objectOut = ex.ToString();
                return(objectOut);
            }
        }
コード例 #2
0
ファイル: Lane.cs プロジェクト: jorik041/DotNetSamples
        public Lane(Vector2 position, int laneHeight, Rectangle roadRectagle, TrafficDirection direction, float delay, int speed, Texture2D carTexture)
        {
            this.direction    = direction;
            this.delay        = delay;
            this.laneHeight   = laneHeight;
            this.position     = position;
            this.roadRectagle = roadRectagle;
            this.carTexture   = carTexture;
            this.speed        = speed;

            carSize = 2 * laneHeight;
            random  = new Random(DateTime.Now.Millisecond);

            maxCars = roadRectagle.Width / carSize;
            cars    = new List <Car>(maxCars);

            for (int i = 0; i < maxCars; i++)
            {
                Rectangle rect;
                if (direction == TrafficDirection.Right)
                {
                    rect = new Rectangle(-5 * carSize, (int)position.Y + 2, carSize, laneHeight - 4);
                }
                else
                {
                    rect = new Rectangle(roadRectagle.Width + 5 * carSize, (int)position.Y + 2, carSize, laneHeight - 4);
                }
                //initially, the car will be offscreen. It will be positioned correctly at the first Update.
                cars.Add(new Car(rect, roadRectagle.Width, speed, direction, carTexture));
            }

            elapsedTime = 0.0;
        }
コード例 #3
0
 public void Reset(Rectangle rect, int viewWidth, int speed, TrafficDirection direction)
 {
     this.rectangle = rect;
     this.viewWidth = viewWidth;
     this.direction = direction;
     this.speed     = speed;
 }
コード例 #4
0
ファイル: NetGate.cs プロジェクト: dotnetchris/nfx
 /// <summary>
 /// Sets the named variable in the network scope which this specified traffic falls under
 /// </summary>
 public virtual void SetVariable(TrafficDirection direction, string address, string varName, int value)
 {
     if (!m_Enabled)
     {
         return;
     }
     setVariable(false, direction, address, varName, value);
 }
コード例 #5
0
        public Car(Rectangle rect, int viewWidth, int speed, TrafficDirection direction, Texture2D tex)
        {
            this.rectangle = rect;
            this.viewWidth = viewWidth;
            this.texture   = tex;
            this.direction = direction;
            this.speed     = speed;

            color = Color.White;
        }
コード例 #6
0
        private void initLanes()
        {
            lanes.Clear();
            int speed = 11;

            for (int i = 0; i < numLanes; i++)
            {
                //short of hacky way to determine car spawn rate and car speed.
                float delay = 0.1f + 0.3f * i;
                speed -= 1;
                TrafficDirection direction = rand.Next(2) == 0 ? TrafficDirection.Left : TrafficDirection.Right;

                Lane lane = new Lane(new Vector2(0, roadRectagle.Y + i * frogRectangle.Height), frogRectangle.Height, roadRectagle, direction, delay, speed, whiteTile);
                lanes.Add(lane);
            }
        }
コード例 #7
0
ファイル: NetGate.cs プロジェクト: dotnetchris/nfx
        private void setVariable(bool inc, TrafficDirection direction, string address, string varName, int value)
        {
            if (!Running || address.IsNullOrWhiteSpace() || varName.IsNullOrWhiteSpace() || value == 0)
            {
                return;
            }

            var state = this[direction];
            var grp   = state.FindGroupForAddress(address);

            var key = grp == null ? address : grp.Key;

            var nstate = state.NetState.GetOrAdd(key, (k) => grp == null ? new NetSiteState(address) : new NetSiteState(grp));

            lock (nstate)
            {
                if (inc)
                {
                    NetSiteState._value vval;
                    if (!nstate.m_Variables.TryGetValue(varName, out vval))
                    {
                        nstate.m_Variables[varName] = vval = new NetSiteState._value();
                    }
                    vval.Value += value;
                }
                else
                {
                    nstate.m_Variables[varName] = new NetSiteState._value {
                        Value = value
                    }
                };
            }
        }

        #endregion
    }
コード例 #8
0
        /// <summary>
        /// Parse the HTTP payload to MAPI message.
        /// </summary>
        /// <param name="headers">The HTTP header.</param>
        /// <param name="currentSessionID">the current session ID.</param>
        /// <param name="bytesFromHTTP">The raw data from HTTP layer.</param>
        /// <param name="direction">The direction of the traffic.</param>
        /// <param name="bytes">The bytes provided for MAPI view layer.</param>
        /// <returns>The object parsed result</returns>
        public object ParseHTTPPayload(HTTPHeaders headers, int currentSessionID, byte[] bytesFromHTTP, TrafficDirection direction, out byte[] bytes)
        {
            object objectOut = null;
            byte[] emptyByte = new byte[0];
            bytes = emptyByte;

            if (bytesFromHTTP == null || bytesFromHTTP.Length == 0 || headers == null || !headers.Exists("X-RequestType"))
            {
                return null;
            }

            string requestType = headers["X-RequestType"];

            if (requestType == null)
            {
                return null;
            }
            try
            {
                if (direction == TrafficDirection.Out && headers.Exists("Transfer-Encoding") && headers["Transfer-Encoding"] == "chunked")
                {
                    bytesFromHTTP = Utilities.GetPaylodFromChunkedBody(bytesFromHTTP);
                    bytes = bytesFromHTTP;
                }
                else
                {
                    bytes = bytesFromHTTP;
                }

                Stream stream = new MemoryStream(bytesFromHTTP);
                MAPIInspector.currentSelectedSessionID = this.session.id;
                MAPIInspector.currentParsingSessionID = currentSessionID;
                if (direction == TrafficDirection.In)
                {
                    switch (requestType)
                    {
                        case "Connect":
                            {
                                ConnectRequestBody ConnectRequest = new ConnectRequestBody();
                                ConnectRequest.Parse(stream);
                                objectOut = ConnectRequest;
                                break;
                            }
                        case "Execute":
                            {
                                ExecuteRequestBody ExecuteRequest = new ExecuteRequestBody();
                                ExecuteRequest.Parse(stream);
                                objectOut = ExecuteRequest;
                                break;
                            }
                        case "Disconnect":
                            {
                                DisconnectRequestBody DisconnectRequest = new DisconnectRequestBody();
                                DisconnectRequest.Parse(stream);
                                objectOut = DisconnectRequest;
                                break;
                            }
                        case "NotificationWait":
                            {
                                NotificationWaitRequestBody NotificationWaitRequest = new NotificationWaitRequestBody();
                                NotificationWaitRequest.Parse(stream);
                                objectOut = NotificationWaitRequest;
                                break;
                            }
                        case "Bind":
                            {
                                BindRequest bindRequest = new BindRequest();
                                bindRequest.Parse(stream);
                                objectOut = bindRequest;
                                break;
                            }
                        case "Unbind":
                            {
                                UnbindRequest unbindRequest = new UnbindRequest();
                                unbindRequest.Parse(stream);
                                objectOut = unbindRequest;
                                break;
                            }
                        case "CompareMIds":
                            {
                                CompareMinIdsRequest compareMinIdsRequest = new CompareMinIdsRequest();
                                compareMinIdsRequest.Parse(stream);
                                objectOut = compareMinIdsRequest;
                                break;
                            }
                        case "DNToMId":
                            {
                                DnToMinIdRequest dnToMinIdRequest = new DnToMinIdRequest();
                                dnToMinIdRequest.Parse(stream);
                                objectOut = dnToMinIdRequest;
                                break;
                            }
                        case "GetMatches":
                            {
                                GetMatchesRequest getMatchesRequest = new GetMatchesRequest();
                                getMatchesRequest.Parse(stream);
                                objectOut = getMatchesRequest;
                                break;
                            }
                        case "GetPropList":
                            {
                                GetPropListRequest getPropListRequest = new GetPropListRequest();
                                getPropListRequest.Parse(stream);
                                objectOut = getPropListRequest;
                                break;
                            }
                        case "GetProps":
                            {
                                GetPropsRequest getPropsRequest = new GetPropsRequest();
                                getPropsRequest.Parse(stream);
                                objectOut = getPropsRequest;
                                break;
                            }
                        case "GetSpecialTable":
                            {
                                GetSpecialTableRequest getSpecialTableRequest = new GetSpecialTableRequest();
                                getSpecialTableRequest.Parse(stream);
                                objectOut = getSpecialTableRequest;
                                break;
                            }
                        case "GetTemplateInfo":
                            {
                                GetTemplateInfoRequest getTemplateInfoRequest = new GetTemplateInfoRequest();
                                getTemplateInfoRequest.Parse(stream);
                                objectOut = getTemplateInfoRequest;
                                break;
                            }
                        case "ModLinkAtt":
                            {
                                ModLinkAttRequest modLinkAttRequest = new ModLinkAttRequest();
                                modLinkAttRequest.Parse(stream);
                                objectOut = modLinkAttRequest;
                                break;
                            }
                        case "ModProps":
                            {
                                ModPropsRequest modPropsRequest = new ModPropsRequest();
                                modPropsRequest.Parse(stream);
                                objectOut = modPropsRequest;
                                break;
                            }
                        case "QueryRows":
                            {
                                QueryRowsRequest queryRowsRequest = new QueryRowsRequest();
                                queryRowsRequest.Parse(stream);
                                objectOut = queryRowsRequest;
                                break;
                            }
                        case "QueryColumns":
                            {
                                QueryColumnsRequest queryColumnsRequest = new QueryColumnsRequest();
                                queryColumnsRequest.Parse(stream);
                                objectOut = queryColumnsRequest;
                                break;
                            }
                        case "ResolveNames":
                            {
                                ResolveNamesRequest resolveNamesRequest = new ResolveNamesRequest();
                                resolveNamesRequest.Parse(stream);
                                objectOut = resolveNamesRequest;
                                break;
                            }
                        case "ResortRestriction":
                            {
                                ResortRestrictionRequest resortRestrictionRequest = new ResortRestrictionRequest();
                                resortRestrictionRequest.Parse(stream);
                                objectOut = resortRestrictionRequest;
                                break;
                            }
                        case "SeekEntries":
                            {
                                SeekEntriesRequest seekEntriesRequest = new SeekEntriesRequest();
                                seekEntriesRequest.Parse(stream);
                                objectOut = seekEntriesRequest;
                                break;
                            }
                        case "UpdateStat":
                            {
                                UpdateStatRequest updateStatRequest = new UpdateStatRequest();
                                updateStatRequest.Parse(stream);
                                objectOut = updateStatRequest;
                                break;
                            }
                        case "GetMailboxUrl":
                            {
                                GetMailboxUrlRequest getMailboxUrlRequest = new GetMailboxUrlRequest();
                                getMailboxUrlRequest.Parse(stream);
                                objectOut = getMailboxUrlRequest;
                                break;
                            }
                        case "GetAddressBookUrl":
                            {
                                GetAddressBookUrlRequest getAddressBookUrlRequest = new GetAddressBookUrlRequest();
                                getAddressBookUrlRequest.Parse(stream);
                                objectOut = getAddressBookUrlRequest;
                                break;
                            }
                        default:
                            {
                                objectOut = "Unavailable Response Type";
                                break;
                            }
                    }
                }
                else
                {
                    switch (requestType)
                    {
                        case "Connect":
                            {
                                ConnectResponseBody ConnectResponse = new ConnectResponseBody();
                                ConnectResponse.Parse(stream);
                                objectOut = ConnectResponse;
                                break;
                            }
                        case "Execute":
                            {
                                ExecuteResponseBody ExecuteResponse = new ExecuteResponseBody();
                                ExecuteResponse.Parse(stream);
                                objectOut = ExecuteResponse;
                                break;
                            }
                        case "Disconnect":
                            {

                                DisconnectResponseBody DisconnectResponse = new DisconnectResponseBody();
                                DisconnectResponse.Parse(stream);
                                objectOut = DisconnectResponse;
                                break;
                            }
                        case "NotificationWait":
                            {

                                NotificationWaitResponseBody NotificationWaitResponse = new NotificationWaitResponseBody();
                                NotificationWaitResponse.Parse(stream);
                                objectOut = NotificationWaitResponse;
                                break;
                            }
                        case "Bind":
                            {
                                BindResponse bindResponse = new BindResponse();
                                bindResponse.Parse(stream);
                                objectOut = bindResponse;
                                break;
                            }
                        case "Unbind":
                            {
                                UnbindResponse unbindResponse = new UnbindResponse();
                                unbindResponse.Parse(stream);
                                objectOut = unbindResponse;
                                break;
                            }
                        case "CompareMIds":
                            {
                                CompareMinIdsResponse compareMinIdsResponse = new CompareMinIdsResponse();
                                compareMinIdsResponse.Parse(stream);
                                objectOut = compareMinIdsResponse;
                                break;
                            }
                        case "DNToMId":
                            {
                                DnToMinIdResponse dnToMinIdResponse = new DnToMinIdResponse();
                                dnToMinIdResponse.Parse(stream);
                                objectOut = dnToMinIdResponse;
                                break;
                            }
                        case "GetMatches":
                            {
                                GetMatchesResponse getMatchesResponse = new GetMatchesResponse();
                                getMatchesResponse.Parse(stream);
                                objectOut = getMatchesResponse;
                                break;
                            }
                        case "GetPropList":
                            {
                                GetPropListResponse getPropListResponse = new GetPropListResponse();
                                getPropListResponse.Parse(stream);
                                objectOut = getPropListResponse;
                                break;
                            }
                        case "GetProps":
                            {
                                GetPropsResponse getPropsResponse = new GetPropsResponse();
                                getPropsResponse.Parse(stream);
                                objectOut = getPropsResponse;
                                break;
                            }
                        case "GetSpecialTable":
                            {
                                GetSpecialTableResponse getSpecialTableResponse = new GetSpecialTableResponse();
                                getSpecialTableResponse.Parse(stream);
                                objectOut = getSpecialTableResponse;
                                break;
                            }
                        case "GetTemplateInfo":
                            {
                                GetTemplateInfoResponse getTemplateInfoResponse = new GetTemplateInfoResponse();
                                getTemplateInfoResponse.Parse(stream);
                                objectOut = getTemplateInfoResponse;
                                break;
                            }
                        case "ModLinkAtt":
                            {
                                ModLinkAttResponse modLinkAttResponse = new ModLinkAttResponse();
                                modLinkAttResponse.Parse(stream);
                                objectOut = modLinkAttResponse;
                                break;
                            }
                        case "ModProps":
                            {
                                ModPropsResponse modPropsResponse = new ModPropsResponse();
                                modPropsResponse.Parse(stream);
                                objectOut = modPropsResponse;
                                break;
                            }
                        case "QueryRows":
                            {
                                QueryRowsResponse queryRowsResponse = new QueryRowsResponse();
                                queryRowsResponse.Parse(stream);
                                objectOut = queryRowsResponse;
                                break;
                            }
                        case "QueryColumns":
                            {
                                QueryColumnsResponse queryColumnsResponse = new QueryColumnsResponse();
                                queryColumnsResponse.Parse(stream);
                                objectOut = queryColumnsResponse;
                                break;
                            }
                        case "ResolveNames":
                            {
                                ResolveNamesResponse resolveNamesResponse = new ResolveNamesResponse();
                                resolveNamesResponse.Parse(stream);
                                objectOut = resolveNamesResponse;
                                break;
                            }
                        case "ResortRestriction":
                            {
                                ResortRestrictionResponse resortRestrictionResponse = new ResortRestrictionResponse();
                                resortRestrictionResponse.Parse(stream);
                                objectOut = resortRestrictionResponse;
                                break;
                            }
                        case "SeekEntries":
                            {
                                SeekEntriesResponse seekEntriesResponse = new SeekEntriesResponse();
                                seekEntriesResponse.Parse(stream);
                                objectOut = seekEntriesResponse;
                                break;
                            }
                        case "UpdateStat":
                            {
                                UpdateStatResponse updateStatResponse = new UpdateStatResponse();
                                updateStatResponse.Parse(stream);
                                objectOut = updateStatResponse;
                                break;
                            }
                        case "GetMailboxUrl":
                            {
                                GetMailboxUrlResponse getMailboxUrlResponse = new GetMailboxUrlResponse();
                                getMailboxUrlResponse.Parse(stream);
                                objectOut = getMailboxUrlResponse;
                                break;
                            }
                        case "GetAddressBookUrl":
                            {
                                GetAddressBookUrlResponse getAddressBookUrlResponse = new GetAddressBookUrlResponse();
                                getAddressBookUrlResponse.Parse(stream);
                                objectOut = getAddressBookUrlResponse;
                                break;
                            }
                        default:
                            {
                                objectOut = "Unavailable Response Type";
                                break;
                            }
                    }
                }
                return objectOut;
            }
            catch (MissingInformationException mException)
            {
                DialogResult confirmResult = MessageBox.Show("Do you want to spend more time to parse the related message?", "Confirmation", MessageBoxButtons.YesNo);
                if (confirmResult == DialogResult.Yes)
                {
                    DecodingContext.LogonFlagMapLogId = new Dictionary<byte, LogonFlags>();
                    DecodingContext.SetColumnProTagMap_Index = new Dictionary<uint, PropertyTag[]>();
                    DecodingContext.DestinationConfigure_OutputHandles = new List<uint>();
                    DecodingContext.PutBuffer_sourceOperation = new Dictionary<uint, SourceOperation>();
                    HandleContextInformation(mException.RopID, out objectOut, out bytes, mException.Parameters);

                    return objectOut;
                }
                else
                {
                    return null;
                }
            }
            catch (Exception ex)
            {
                objectOut = ex.ToString();
                return objectOut;
            }
        }
コード例 #9
0
ファイル: Debug.cs プロジェクト: steinsvik/star
 public TrafficMessage(string trafficType, byte[] rawData, DateTime ?timestamp = null, string sourceInterface = "",
     TrafficDirection direction = TrafficDirection.Unknown, TrafficMsgDecoder decodeMessage = null, string additionalInfo = "")
 {
     timestamp = timestamp ?? DateTime.Now;
     this.timestamp = timestamp.Value;
     this.trafficType = trafficType;
     this.rawData = rawData;
     this.sourceInterface = sourceInterface;
     this.direction = direction;
     this.decodeMessage = decodeMessage;
     this.additionalInformation = additionalInfo;
 }
コード例 #10
0
 public bool IsMapihttpSession(int sessionId, TrafficDirection direction)
 {
     List<Session> AllSessionsList = new List<Session>();
     Session session0 = new Session(new byte[0], new byte[0]);
     AllSessionsList.AddRange(FiddlerApplication.UI.GetAllSessions());
     AllSessionsList.Sort(delegate (Session p1, Session p2)
     {
         return p1.id.CompareTo(p2.id);
     });
     AllSessionsList.Insert(0, session0);
     Session[] allSessions = AllSessionsList.ToArray();
     Session os = allSessions[sessionId];
     if (os != null)
     {
         if (direction == TrafficDirection.In)
         {
             return os.RequestHeaders.ExistsAndContains("Content-Type", "application/mapi-http");
         }
         else if (direction == TrafficDirection.Out && os.ResponseHeaders.Exists("X-ResponseCode"))
         {
             string xResponseCode = os.ResponseHeaders["X-ResponseCode"];
             if (xResponseCode == "0")
             {
                 return os.ResponseHeaders.ExistsAndContains("Content-Type", "application/mapi-http");
             }
             else if (xResponseCode != "")
             {
                 return os.ResponseHeaders.ExistsAndContains("Content-Type", "text/html");
             }
         }
     }
     return false;
 }
        /// <summary>
        /// Parse the HTTP payload to FSSHTTP and WOPI message.
        /// </summary>
        /// <param name="responseHeaders">The HTTP response header.</param>
        /// <param name="bytesFromHTTP">The raw data from HTTP layer.</param>
        /// <param name="direction">The direction of the traffic.</param>
        /// <returns>The object parsed result</returns>
        public object ParseHTTPPayloadForFSSHTTP(HTTPHeaders responseHeaders, byte[] bytesFromHTTP, TrafficDirection direction)
        {
            object objectOut = null;

            byte[] emptyByte = new byte[0];

            if (bytesFromHTTP == null || bytesFromHTTP.Length == 0)
            {
                return(null);
            }

            try
            {
                if (direction == TrafficDirection.Out && responseHeaders.Exists("Transfer-Encoding") && responseHeaders["Transfer-Encoding"] == "chunked")
                {
                    bytesFromHTTP = Utilities.GetPaylodFromChunkedBody(bytesFromHTTP);
                }

                Stream       stream = new MemoryStream(bytesFromHTTP);
                StreamReader reader = new StreamReader(stream);
                string       text   = reader.ReadToEnd();

                Regex SOAPRegex = new Regex(@"\<s:Envelop.*\<\/s:Envelope\>"); // extract envelop from http payload.
                if (SOAPRegex.Match(text).Success)
                {
                    XmlDocument doc      = new XmlDocument();
                    string      soapbody = SOAPRegex.Match(text).Value;

                    if (direction == TrafficDirection.In)
                    {
                        Regex           FSSHTTPRequestRegex = new Regex("xsi:type=\"\\w*\"\\s"); // remove xsi:type in xml message. this xsi:type is used for inherit in xmlSerializer.
                        string          FSSHTTPRequest      = FSSHTTPRequestRegex.Replace(soapbody, string.Empty);
                        MemoryStream    ms             = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(FSSHTTPRequest ?? ""));
                        XmlSerializer   serializer     = new XmlSerializer(typeof(RequestEnvelope));
                        RequestEnvelope requestEnvelop = (RequestEnvelope)serializer.Deserialize(ms);
                        objectOut = requestEnvelop.Body;

                        // if SubRequestData has fsshttpb messages do parser.
                        if (requestEnvelop.Body.RequestCollection != null)
                        {
                            TryParseFSSHTTPBRequestMessage(requestEnvelop.Body.RequestCollection.Request, bytesFromHTTP);
                        }
                    }
                    else
                    {
                        MemoryStream     ms              = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(soapbody ?? ""));
                        XmlSerializer    serializer      = new XmlSerializer(typeof(ResponseEnvelope));
                        ResponseEnvelope responseEnvelop = (ResponseEnvelope)serializer.Deserialize(ms);
                        objectOut = responseEnvelop.Body;

                        // if SubResponseData has fsshttpb messages do parser.
                        if (responseEnvelop.Body.ResponseCollection != null)
                        {
                            TryParseFSSHTTPBResponseMessage(responseEnvelop.Body.ResponseCollection.Response, bytesFromHTTP);
                        }
                    }
                }
                return(objectOut);
            }
            catch (Exception ex)
            {
                objectOut = ex.ToString();
                return(objectOut);
            }
        }
        /// <summary>
        /// Parse the HTTP payload to WOPI message.
        /// </summary>
        /// <param name="requestHeaders">The HTTP request header.</param>
        /// <param name="responseHeaders">The HTTP response header.</param>
        /// <param name="url">url for a HTTP message.</param>
        /// <param name="bytesFromHTTP">The raw data from HTTP layer.</param>
        /// <param name="direction">The direction of the traffic.</param>
        /// <returns>The object parsed result</returns>
        public object ParseHTTPPayloadForWOPI(HTTPHeaders requestHeaders, HTTPHeaders responseHeaders, string url, byte[] bytesFromHTTP, out string binaryStructureRopName, TrafficDirection direction)
        {
            object objectOut = null;
            binaryStructureRopName = string.Empty;
            try
            {
                if (direction == TrafficDirection.Out && responseHeaders.Exists("Transfer-Encoding") && responseHeaders["Transfer-Encoding"] == "chunked")
                {
                    bytesFromHTTP = Utilities.GetPaylodFromChunkedBody(bytesFromHTTP);
                }

                Stream stream = new MemoryStream(bytesFromHTTP);
                StreamReader reader = new StreamReader(stream);
                string text = reader.ReadToEnd();
                WOPIOperations operation = GetWOPIOperationName(requestHeaders, url);
                if (direction == TrafficDirection.In)
                {
                    switch (operation)
                    {
                        case WOPIOperations.PutRelativeFile:
                            objectOut = bytesFromHTTP;
                            binaryStructureRopName = "PutRelativeFile";
                            break;
                        case WOPIOperations.PutFile:
                            objectOut = bytesFromHTTP;
                            binaryStructureRopName = "PutFile";
                            break;
                        case WOPIOperations.ExecuteCellStorageRelativeRequest:
                        case WOPIOperations.ExecuteCellStorageRequest:
                            byte[] cellreq = bytesFromHTTP;
                            MemoryStream ms;
                            if (requestHeaders.Exists("Content-Encoding") && requestHeaders["Content-Encoding"] == "gzip")
                            {
                                cellreq = Fiddler.Utilities.GzipExpand(cellreq);
                                ms = new MemoryStream(cellreq);
                            }
                            else
                            {
                                ms = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(text ?? ""));
                            }
                            XmlSerializer serializer = new XmlSerializer(typeof(RequestEnvelope));
                            RequestEnvelope requestEnvelop = (RequestEnvelope)serializer.Deserialize(ms);
                            objectOut = requestEnvelop.Body;

                            if (requestEnvelop.Body.RequestCollection != null)
                            {
                                TryParseFSSHTTPBRequestMessage(requestEnvelop.Body.RequestCollection.Request, bytesFromHTTP);
                            }
                            break;
                        case WOPIOperations.PutUserInfo:
                            objectOut = text;
                            break;
                        case WOPIOperations.Discovery:
                        case WOPIOperations.CheckFileInfo:
                        case WOPIOperations.Lock:
                        case WOPIOperations.RefreshLock:
                        case WOPIOperations.RevokeRestrictedLink:
                        case WOPIOperations.Unlock:
                        case WOPIOperations.UnlockAndRelock:
                        case WOPIOperations.GetLock:
                        case WOPIOperations.DeleteFile:
                        case WOPIOperations.ReadSecureStore:
                        case WOPIOperations.RenameFile:
                        case WOPIOperations.GetRestrictedLink:
                        case WOPIOperations.CheckFolderInfo:
                        case WOPIOperations.GetFile:
                        case WOPIOperations.EnumerateChildren:
                            objectOut = string.Format("{0} operation's request body is null", operation.ToString());
                            break;
                        default:
                            throw new Exception("The WOPI operations type is not right.");
                    }
                }
                else
                {
                    string status = this.session.ResponseHeaders.HTTPResponseStatus.Replace(" " + this.session.ResponseHeaders.StatusDescription, string.Empty);
                    if (Convert.ToUInt32(status) != 200)// the status is not success
                        return null;

                    ResponseBodyBase responseBody = new ResponseBodyBase();
                    switch (operation)
                    {
                        case WOPIOperations.Discovery:
                            MemoryStream discoveryms = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(text ?? ""));
                            XmlSerializer discoverySerializer = new XmlSerializer(typeof(wopidiscovery));
                            wopidiscovery discoveryres = (wopidiscovery)discoverySerializer.Deserialize(discoveryms);
                            objectOut = discoveryres;
                            break;
                        case WOPIOperations.CheckFileInfo:
                            objectOut = WOPISerilizer.JsonToObject<CheckFileInfo>(text);
                            break;
                        case WOPIOperations.CheckFolderInfo:
                            objectOut = WOPISerilizer.JsonToObject<CheckFolderInfo>(text);
                            break;
                        case WOPIOperations.PutRelativeFile:
                            objectOut = WOPISerilizer.JsonToObject<PutRelativeFile>(text);
                            break;
                        case WOPIOperations.ReadSecureStore:
                            objectOut = WOPISerilizer.JsonToObject<ReadSecureStore>(text);
                            break;
                        case WOPIOperations.EnumerateChildren:
                            objectOut = WOPISerilizer.JsonToObject<EnumerateChildren>(text);
                            break;
                        case WOPIOperations.RenameFile:
                            objectOut = WOPISerilizer.JsonToObject<RenameFile>(text);
                            break;
                        case WOPIOperations.ExecuteCellStorageRelativeRequest:
                        case WOPIOperations.ExecuteCellStorageRequest:
                            {
                                byte[] cellres = bytesFromHTTP;
                                MemoryStream ms;
                                string res;
                                if (responseHeaders.Exists("Content-Encoding") && responseHeaders["Content-Encoding"] == "gzip")
                                {
                                    cellres = Fiddler.Utilities.GzipExpand(cellres);
                                    string res_sub = System.Text.Encoding.UTF8.GetString(cellres);
                                    res = string.Format("{0}{1}{2}", @"<Body>", res_sub, "</Body>");
                                }
                                else
                                {
                                    res = string.Format("{0}{1}{2}", @"<Body>", text, "</Body>");
                                }
                                ms = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(res ?? ""));
                                XmlSerializer serializer = new XmlSerializer(typeof(ResponseEnvelopeBody));
                                ResponseEnvelopeBody body = (ResponseEnvelopeBody)serializer.Deserialize(ms);
                                objectOut = body;

                                // if SubResponseData has fsshttpb messages do parser.
                                if (body.ResponseCollection != null)
                                {
                                    TryParseFSSHTTPBResponseMessage(body.ResponseCollection.Response, bytesFromHTTP);
                                }
                                break;
                            }
                        case WOPIOperations.GetFile:
                            objectOut = bytesFromHTTP;
                            binaryStructureRopName = "GetFile";
                            break;
                        case WOPIOperations.DeleteFile:
                        case WOPIOperations.Lock:
                        case WOPIOperations.GetRestrictedLink:
                        case WOPIOperations.PutFile:
                        case WOPIOperations.RefreshLock:
                        case WOPIOperations.RevokeRestrictedLink:
                        case WOPIOperations.Unlock:
                        case WOPIOperations.UnlockAndRelock:
                        case WOPIOperations.GetLock:
                        case WOPIOperations.PutUserInfo:
                            objectOut = string.Format("{0} operation's response body is null", operation.ToString());
                            break;
                        default:
                            throw new Exception("The WOPI operations type is not right.");
                    }
                }
                return objectOut;
            }
            catch (Exception ex)
            {
                objectOut = ex.ToString();
                return objectOut;
            }
        }
コード例 #13
0
ファイル: Intfs.cs プロジェクト: vlapchenko/nfx
 public void IncreaseVariable(TrafficDirection direction, string address, string varName, int value)
 {
 }
        /// <summary>
        /// Parse the HTTP payload to WOPI message.
        /// </summary>
        /// <param name="requestHeaders">The HTTP request header.</param>
        /// <param name="responseHeaders">The HTTP response header.</param>
        /// <param name="url">url for a HTTP message.</param>
        /// <param name="bytesFromHTTP">The raw data from HTTP layer.</param>
        /// <param name="direction">The direction of the traffic.</param>
        /// <returns>The object parsed result</returns>
        public object ParseHTTPPayloadForWOPI(HTTPHeaders requestHeaders, HTTPHeaders responseHeaders, string url, byte[] bytesFromHTTP, out string binaryStructureRopName, TrafficDirection direction)
        {
            object objectOut = null;

            binaryStructureRopName = string.Empty;
            try
            {
                if (direction == TrafficDirection.Out && responseHeaders.Exists("Transfer-Encoding") && responseHeaders["Transfer-Encoding"] == "chunked")
                {
                    bytesFromHTTP = Utilities.GetPaylodFromChunkedBody(bytesFromHTTP);
                }

                Stream         stream    = new MemoryStream(bytesFromHTTP);
                StreamReader   reader    = new StreamReader(stream);
                string         text      = reader.ReadToEnd();
                WOPIOperations operation = GetWOPIOperationName(requestHeaders, url);
                if (direction == TrafficDirection.In)
                {
                    switch (operation)
                    {
                    case WOPIOperations.PutRelativeFile:
                        objectOut = bytesFromHTTP;
                        binaryStructureRopName = "PutRelativeFile";
                        break;

                    case WOPIOperations.PutFile:
                        objectOut = bytesFromHTTP;
                        binaryStructureRopName = "PutFile";
                        break;

                    case WOPIOperations.ExecuteCellStorageRelativeRequest:
                    case WOPIOperations.ExecuteCellStorageRequest:
                        byte[]       cellreq = bytesFromHTTP;
                        MemoryStream ms;
                        if (requestHeaders.Exists("Content-Encoding") && requestHeaders["Content-Encoding"] == "gzip")
                        {
                            cellreq = Fiddler.Utilities.GzipExpand(cellreq);
                            ms      = new MemoryStream(cellreq);
                        }
                        else
                        {
                            ms = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(text ?? ""));
                        }
                        XmlSerializer   serializer     = new XmlSerializer(typeof(RequestEnvelope));
                        RequestEnvelope requestEnvelop = (RequestEnvelope)serializer.Deserialize(ms);
                        objectOut = requestEnvelop.Body;

                        if (requestEnvelop.Body.RequestCollection != null)
                        {
                            TryParseFSSHTTPBRequestMessage(requestEnvelop.Body.RequestCollection.Request, bytesFromHTTP);
                        }
                        break;

                    case WOPIOperations.PutUserInfo:
                        objectOut = text;
                        break;

                    case WOPIOperations.Discovery:
                    case WOPIOperations.CheckFileInfo:
                    case WOPIOperations.Lock:
                    case WOPIOperations.RefreshLock:
                    case WOPIOperations.RevokeRestrictedLink:
                    case WOPIOperations.Unlock:
                    case WOPIOperations.UnlockAndRelock:
                    case WOPIOperations.GetLock:
                    case WOPIOperations.DeleteFile:
                    case WOPIOperations.ReadSecureStore:
                    case WOPIOperations.RenameFile:
                    case WOPIOperations.GetRestrictedLink:
                    case WOPIOperations.CheckFolderInfo:
                    case WOPIOperations.GetFile:
                    case WOPIOperations.EnumerateChildren:
                        objectOut = string.Format("{0} operation's request body is null", operation.ToString());
                        break;

                    default:
                        throw new Exception("The WOPI operations type is not right.");
                    }
                }
                else
                {
                    string status = this.session.ResponseHeaders.HTTPResponseStatus.Replace(" " + this.session.ResponseHeaders.StatusDescription, string.Empty);
                    if (Convert.ToUInt32(status) != 200)// the status is not success
                    {
                        return(null);
                    }

                    ResponseBodyBase responseBody = new ResponseBodyBase();
                    switch (operation)
                    {
                    case WOPIOperations.Discovery:
                        MemoryStream  discoveryms         = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(text ?? ""));
                        XmlSerializer discoverySerializer = new XmlSerializer(typeof(wopidiscovery));
                        wopidiscovery discoveryres        = (wopidiscovery)discoverySerializer.Deserialize(discoveryms);
                        objectOut = discoveryres;
                        break;

                    case WOPIOperations.CheckFileInfo:
                        objectOut = WOPISerilizer.JsonToObject <CheckFileInfo>(text);
                        break;

                    case WOPIOperations.CheckFolderInfo:
                        objectOut = WOPISerilizer.JsonToObject <CheckFolderInfo>(text);
                        break;

                    case WOPIOperations.PutRelativeFile:
                        objectOut = WOPISerilizer.JsonToObject <PutRelativeFile>(text);
                        break;

                    case WOPIOperations.ReadSecureStore:
                        objectOut = WOPISerilizer.JsonToObject <ReadSecureStore>(text);
                        break;

                    case WOPIOperations.EnumerateChildren:
                        objectOut = WOPISerilizer.JsonToObject <EnumerateChildren>(text);
                        break;

                    case WOPIOperations.RenameFile:
                        objectOut = WOPISerilizer.JsonToObject <RenameFile>(text);
                        break;

                    case WOPIOperations.ExecuteCellStorageRelativeRequest:
                    case WOPIOperations.ExecuteCellStorageRequest:
                    {
                        byte[]       cellres = bytesFromHTTP;
                        MemoryStream ms;
                        string       res;
                        if (responseHeaders.Exists("Content-Encoding") && responseHeaders["Content-Encoding"] == "gzip")
                        {
                            cellres = Fiddler.Utilities.GzipExpand(cellres);
                            string res_sub = System.Text.Encoding.UTF8.GetString(cellres);
                            res = string.Format("{0}{1}{2}", @"<Body>", res_sub, "</Body>");
                        }
                        else
                        {
                            res = string.Format("{0}{1}{2}", @"<Body>", text, "</Body>");
                        }
                        ms = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(res ?? ""));
                        XmlSerializer        serializer = new XmlSerializer(typeof(ResponseEnvelopeBody));
                        ResponseEnvelopeBody body       = (ResponseEnvelopeBody)serializer.Deserialize(ms);
                        objectOut = body;

                        // if SubResponseData has fsshttpb messages do parser.
                        if (body.ResponseCollection != null)
                        {
                            TryParseFSSHTTPBResponseMessage(body.ResponseCollection.Response, bytesFromHTTP);
                        }
                        break;
                    }

                    case WOPIOperations.GetFile:
                        objectOut = bytesFromHTTP;
                        binaryStructureRopName = "GetFile";
                        break;

                    case WOPIOperations.DeleteFile:
                    case WOPIOperations.Lock:
                    case WOPIOperations.GetRestrictedLink:
                    case WOPIOperations.PutFile:
                    case WOPIOperations.RefreshLock:
                    case WOPIOperations.RevokeRestrictedLink:
                    case WOPIOperations.Unlock:
                    case WOPIOperations.UnlockAndRelock:
                    case WOPIOperations.GetLock:
                    case WOPIOperations.PutUserInfo:
                        objectOut = string.Format("{0} operation's response body is null", operation.ToString());
                        break;

                    default:
                        throw new Exception("The WOPI operations type is not right.");
                    }
                }
                return(objectOut);
            }
            catch (Exception ex)
            {
                objectOut = ex.ToString();
                return(objectOut);
            }
        }
        /// <summary>
        /// Parse the HTTP payload to FSSHTTP and WOPI message.
        /// </summary>
        /// <param name="responseHeaders">The HTTP response header.</param>
        /// <param name="bytesFromHTTP">The raw data from HTTP layer.</param>
        /// <param name="direction">The direction of the traffic.</param>
        /// <returns>The object parsed result</returns>
        public object ParseHTTPPayloadForFSSHTTP(HTTPHeaders responseHeaders, byte[] bytesFromHTTP, TrafficDirection direction)
        {
            object objectOut = null;
            byte[] emptyByte = new byte[0];

            if (bytesFromHTTP == null || bytesFromHTTP.Length == 0)
            {
                return null;
            }

            try
            {
                if (direction == TrafficDirection.Out && responseHeaders.Exists("Transfer-Encoding") && responseHeaders["Transfer-Encoding"] == "chunked")
                {
                    bytesFromHTTP = Utilities.GetPaylodFromChunkedBody(bytesFromHTTP);
                }

                Stream stream = new MemoryStream(bytesFromHTTP);
                StreamReader reader = new StreamReader(stream);
                string text = reader.ReadToEnd();

                Regex SOAPRegex = new Regex(@"\<s:Envelop.*\<\/s:Envelope\>"); // extract envelop from http payload.
                if (SOAPRegex.Match(text).Success)
                {
                    XmlDocument doc = new XmlDocument();
                    string soapbody = SOAPRegex.Match(text).Value;

                    if (direction == TrafficDirection.In)
                    {
                        Regex FSSHTTPRequestRegex = new Regex("xsi:type=\"\\w*\"\\s"); // remove xsi:type in xml message. this xsi:type is used for inherit in xmlSerializer.
                        string FSSHTTPRequest = FSSHTTPRequestRegex.Replace(soapbody, string.Empty);
                        MemoryStream ms = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(FSSHTTPRequest ?? ""));
                        XmlSerializer serializer = new XmlSerializer(typeof(RequestEnvelope));
                        RequestEnvelope requestEnvelop = (RequestEnvelope)serializer.Deserialize(ms);
                        objectOut = requestEnvelop.Body;

                        // if SubRequestData has fsshttpb messages do parser.
                        if (requestEnvelop.Body.RequestCollection != null)
                        {
                            TryParseFSSHTTPBRequestMessage(requestEnvelop.Body.RequestCollection.Request, bytesFromHTTP);
                        }
                    }
                    else
                    {
                        MemoryStream ms = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(soapbody ?? ""));
                        XmlSerializer serializer = new XmlSerializer(typeof(ResponseEnvelope));
                        ResponseEnvelope responseEnvelop = (ResponseEnvelope)serializer.Deserialize(ms);
                        objectOut = responseEnvelop.Body;

                        // if SubResponseData has fsshttpb messages do parser.
                        if (responseEnvelop.Body.ResponseCollection != null)
                        {
                            TryParseFSSHTTPBResponseMessage(responseEnvelop.Body.ResponseCollection.Response, bytesFromHTTP);
                        }
                    }
                }
                return objectOut;
            }
            catch (Exception ex)
            {
                objectOut = ex.ToString();
                return objectOut;
            }
        }
コード例 #16
0
ファイル: NetGate.cs プロジェクト: itadapter/nfx
 /// <summary>
 /// Returns gate state
 /// </summary>
 public State this[TrafficDirection direction]
 {
     get{ return direction==TrafficDirection.Incoming ? m_IncomingState : m_OutgoingState; }
 }
コード例 #17
0
ファイル: Intfs.cs プロジェクト: erxdkh/azos
 public void SetVariable(TrafficDirection direction, string address, string varName, int value)
 {
 }
コード例 #18
0
ファイル: NetGate.cs プロジェクト: itadapter/nfx
        private void setVariable(bool inc, TrafficDirection direction, string address, string varName, int value)
        {
            if (!Running || address.IsNullOrWhiteSpace() || varName.IsNullOrWhiteSpace() || value==0) return;

            var state = this[direction];
            var grp = state.FindGroupForAddress(address);

            var key = grp==null ? address : grp.Key;

            var nstate = state.NetState.GetOrAdd(key, (k) => grp==null ? new NetSiteState(address) : new NetSiteState(grp));

            lock(nstate)
            {
              if (inc)
              {
               NetSiteState._value vval;
               if (!nstate.m_Variables.TryGetValue(varName, out vval))
               {
             nstate.m_Variables[varName] = vval = new NetSiteState._value();
               }
               vval.Value += value;
              }
              else
               nstate.m_Variables[varName] = new NetSiteState._value{Value = value};
            }
        }
コード例 #19
0
ファイル: NetGate.cs プロジェクト: itadapter/nfx
 /// <summary>
 /// Sets the named variable in the network scope which this specified traffic falls under
 /// </summary>
 public virtual void SetVariable(TrafficDirection direction, string address, string varName, int value)
 {
     if (!m_Enabled) return;
     setVariable(false, direction, address, varName, value);
 }
コード例 #20
0
ファイル: NetGate.cs プロジェクト: dotnetchris/nfx
 /// <summary>
 /// Returns gate state
 /// </summary>
 public State this[TrafficDirection direction] {
     get{ return(direction == TrafficDirection.Incoming ? m_IncomingState : m_OutgoingState); }
 }
コード例 #21
0
ファイル: MAPIInspector.cs プロジェクト: SaraDong/TEST
        /// <summary>
        /// Parse the HTTP payload to MAPI message.
        /// </summary>
        /// <param name="headers">The HTTP header.</param>
        /// <param name="bytesFromHTTP">The raw data from HTTP layer.</param>
        /// <param name="direction">The direction of the traffic.</param>
        public void ParseHTTPPayload(HTTPHeaders headers, byte[] bytesFromHTTP, TrafficDirection direction)
        {
            if (bytesFromHTTP.Length == 0 || headers == null || !headers.Exists("X-RequestType"))
            {
                return;
            }

            string requestType = headers["X-RequestType"];

            if (requestType == null)
            {
                return;
            }
            try
            {
                if (direction == TrafficDirection.Out && headers.Exists("Transfer-Encoding") && headers["Transfer-Encoding"] == "chunked")
                {
                    bytesFromHTTP = Utilities.GetPaylodFromChunkedBody(bytesFromHTTP);
                    this.oMAPIControl.MAPIHexBox.ByteProvider = new StaticByteProvider(bytesFromHTTP);
                }
                else
                {
                    this.oMAPIControl.MAPIHexBox.ByteProvider = new StaticByteProvider(bytesFromHTTP);
                }

                this.oMAPIControl.MAPIHexBox.ByteProvider.ApplyChanges();
                Stream stream = new MemoryStream(bytesFromHTTP);
                int result = 0;
                if (direction == TrafficDirection.In)
                {
                    this.oMAPIViewControl.BeginUpdate();
                    TreeNode topNode = new TreeNode(requestType + "Request:");

                switch (requestType)
                {
                    case "Connect":
                        {
                            ConnectRequestBody ConnectRequest = new ConnectRequestBody();
                            ConnectRequest.Parse(stream);
                            topNode = ConnectRequest.AddNodesForTree(ConnectRequest, 0, out result);
                            break;
                        }
                    case "Execute":
                        {
                            ExecuteRequestBody ExecuteRequest = new ExecuteRequestBody();
                            ExecuteRequest.Parse(stream);
                            topNode = ExecuteRequest.AddNodesForTree(ExecuteRequest, 0, out result);
                            break;
                        }
                    case "Disconnect":
                        {
                            DisconnectRequestBody DisconnectRequest = new DisconnectRequestBody();
                            DisconnectRequest.Parse(stream);
                            topNode = DisconnectRequest.AddNodesForTree(DisconnectRequest, 0, out result);
                            break;
                        }
                    case "NotificationWait":
                        {
                            NotificationWaitRequestBody NotificationWaitRequest = new NotificationWaitRequestBody();
                            NotificationWaitRequest.Parse(stream);
                            topNode = NotificationWaitRequest.AddNodesForTree(NotificationWaitRequest, 0, out result);
                            break;
                        }
                    case "Bind":
                        {
                            BindRequest bindRequest = new BindRequest();
                            bindRequest.Parse(stream);
                            topNode = bindRequest.AddNodesForTree(bindRequest, 0, out result);
                            break;
                        }
                    default:
                        {
                            this.oMAPIControl.MAPIRichTextBox.Visible = true;
                            this.oMAPIControl.MAPIRichTextBox.Text = "Unavailable Request Type.";
                            break;
                        }
                }

                this.oMAPIViewControl.Nodes.Add(topNode);
                topNode.Expand();
                this.oMAPIViewControl.EndUpdate();

            }
            else
            {
                this.oMAPIViewControl.BeginUpdate();
                TreeNode topNode = new TreeNode(requestType + "Response:");

                switch (requestType)
                {
                    case "Connect":
                        {
                            ConnectResponseBody ConnectResponse = new ConnectResponseBody();
                            ConnectResponse.Parse(stream);
                            topNode = ConnectResponse.AddNodesForTree(ConnectResponse, 0, out result);
                            if (ConnectResponse.StatusCode == 0)
                            {
                                string text = topNode.Text.Replace("Response", "SuccessResponse");
                                topNode.Text = text;
                            }
                            else
                            {
                                string text = topNode.Text.Replace("Response", "FailureResponse");
                                topNode.Text = text;
                            }
                            break;
                        }
                    case "Execute":
                        {
                            ExecuteResponseBody ExecuteResponse = new ExecuteResponseBody();
                            ExecuteResponse.Parse(stream);
                            topNode = ExecuteResponse.AddNodesForTree(ExecuteResponse, 0, out result);
                            if (ExecuteResponse.StatusCode == 0)
                            {
                                string text = topNode.Text.Replace("Response", "SuccessResponse");
                                topNode.Text = text;
                            }
                            else
                            {
                                string text = topNode.Text.Replace("Response", "FailureResponse");
                                topNode.Text = text;
                            }
                            break;
                        }
                    case "Disconnect":
                        {

                            DisconnectResponseBody DisconnectResponse = new DisconnectResponseBody();
                            DisconnectResponse.Parse(stream);
                            topNode = DisconnectResponse.AddNodesForTree(DisconnectResponse, 0, out result);
                            if (DisconnectResponse.StatusCode == 0)
                            {
                                string text = topNode.Text.Replace("Response", "SuccessResponse");
                                topNode.Text = text;
                            }
                            else
                            {
                                string text = topNode.Text.Replace("Response", "FailureResponse");
                                topNode.Text = text;
                            }
                            break;
                        }
                    case "NotificationWait":
                        {

                            NotificationWaitResponseBody NotificationWaitResponse = new NotificationWaitResponseBody();
                            NotificationWaitResponse.Parse(stream);
                            topNode = NotificationWaitResponse.AddNodesForTree(NotificationWaitResponse, 0, out result);
                            if (NotificationWaitResponse.StatusCode == 0)
                            {
                                string text = topNode.Text.Replace("Response", "SuccessResponse");
                                topNode.Text = text;
                            }
                            else
                            {
                                string text = topNode.Text.Replace("Response", "FailureResponse");
                                topNode.Text = text;
                            }
                            break;
                        }
                    case "Bind":
                        {
                            BindResponse bindResponse = new BindResponse();
                            bindResponse.Parse(stream);
                            topNode = bindResponse.AddNodesForTree(bindResponse, 0, out result);
                            if (bindResponse.StatusCode == 0)
                            {
                                string text = topNode.Text.Replace("Response", "SuccessResponse");
                                topNode.Text = text;
                            }
                            else
                            {
                                string text = topNode.Text.Replace("Response", "FailureResponse");
                                topNode.Text = text;
                            }
                            break;
                        }
                    default:
                        {
                            this.oMAPIControl.MAPIRichTextBox.Visible = true;
                            this.oMAPIControl.MAPIRichTextBox.Text = "Unavailable Response Type.";
                            break;
                        }
                }

                    this.oMAPIViewControl.Nodes.Add(topNode);
                    topNode.Expand();
                    this.oMAPIViewControl.EndUpdate();
                }
            }
            catch (Exception ex)
            {
                this.oMAPIControl.MAPIRichTextBox.Visible = true;
                this.oMAPIControl.MAPIRichTextBox.Text = ex.ToString();
                this.oMAPIViewControl.EndUpdate();
            }
        }
コード例 #22
0
 private void DataTraffic(string port_name, DateTime event_time, TrafficDirection direction, byte[] data)
 {
     event_handler.Invoke(port_name, event_time, direction, data);
 }
        /// <summary>
        /// Parse the FSSHTTPB Bytes.
        /// </summary>
        /// <param name="FSSHTTPBbytes">The raw date contains FSSHTTPB message.</param>
        /// <param name="direction">The direction of the traffic.</param>
        /// <returns>The object parsed result</returns>
        public object ParseFSSHTTPBBytes(byte[] FSSHTTPBbytes, TrafficDirection direction)
        {
            object objectOut = null;
            byte[] emptyByte = new byte[0];
            if (FSSHTTPBbytes == null || FSSHTTPBbytes.Length == 0)
            {
                return null;
            }

            try
            {
                if (direction == TrafficDirection.In)
                {
                    FsshttpbRequest FsshttpbReq = new FsshttpbRequest();
                    MemoryStream s = new MemoryStream(FSSHTTPBbytes);
                    FsshttpbReq.Parse(s);
                    objectOut = FsshttpbReq;
                }
                else
                {
                    FsshttpbResponse FsshttpbRes = new FsshttpbResponse();
                    MemoryStream s = new MemoryStream(FSSHTTPBbytes);
                    FsshttpbRes.Parse(s);
                    objectOut = FsshttpbRes;
                }
                return objectOut;

            }
            catch (Exception ex)
            {
                objectOut = ex.ToString();
                return objectOut;
            }
        }