Esempio n. 1
0
        public override bool ValidateInvitation(SLPMessage invite)
        {
            bool ret = base.ValidateInvitation(invite);

            if (ret)
            {
                MSNObject validObject = new MSNObject();
                validObject.SetContext(invite.BodyValues["Context"].Value, true);

                if (validObject.ObjectType == MSNObjectType.UserDisplay ||
                    validObject.ObjectType == MSNObjectType.Unknown)
                {
                    msnObject = Local.DisplayImage;
                    objStream = Local.DisplayImage.OpenStream();
                    ret      |= true;
                }
                else if (validObject.ObjectType == MSNObjectType.Scene)
                {
                    msnObject = Local.SceneImage;
                    objStream = Local.SceneImage.OpenStream();
                    ret      |= true;
                }
                else if (validObject.ObjectType == MSNObjectType.Emoticon &&
                         Local.Emoticons.ContainsKey(validObject.Sha))
                {
                    msnObject = Local.Emoticons[msnObject.Sha];
                    objStream = ((Emoticon)msnObject).OpenStream();

                    ret |= true;
                }
            }

            return(ret);
        }
Esempio n. 2
0
        public override bool ValidateInvitation(SLPMessage invitation)
        {
            bool ret = base.ValidateInvitation(invitation);

            if (ret)
            {
                try
                {
                    byte[]   byts               = Convert.FromBase64String(invitation.BodyValues["Context"].Value);
                    string   activityUrl        = System.Text.Encoding.Unicode.GetString(byts);
                    string[] activityProperties = activityUrl.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);

                    if (activityProperties.Length >= 3)
                    {
                        return(true);
                    }
                }
                catch (Exception ex)
                {
                    Trace.WriteLineIf(Settings.TraceSwitch.TraceError,
                                      "An error occured while parsing activity context, error info: " +
                                      ex.Message, GetType().Name);
                }
            }
            return(ret);
        }
Esempio n. 3
0
        private MultiMimeMessage ParseSDGP2PSignalMessage(MultiMimeMessage multiMimeMessage)
        {
            SLPMessage slpMessage = SLPMessage.Parse(multiMimeMessage.InnerBody);

            slpMessage.CreateFromParentMessage(multiMimeMessage);

            return(multiMimeMessage);
        }
Esempio n. 4
0
        /// <summary>
        /// Checks if the invitation was valid.
        /// </summary>
        /// <param name="invitation"></param>
        /// <returns></returns>
        public virtual bool ValidateInvitation(SLPMessage invitation)
        {
            bool ret = invitation.ToEmailAccount.ToLowerInvariant() == local.Account.ToLowerInvariant();

            if (ret && version == P2PVersion.P2PV2 && invitation.ToEndPoint != Guid.Empty)
            {
                ret = invitation.ToEndPoint == localEP;
            }
            return(ret);
        }
Esempio n. 5
0
        public override bool ValidateInvitation(SLPMessage invite)
        {
            bool ret = base.ValidateInvitation(invite);

            try
            {
                FTContext context = new FTContext(Convert.FromBase64String(invite.BodyValues["Context"].Value));

                Trace.WriteLineIf(Settings.TraceSwitch.TraceVerbose,
                                  String.Format("{0} ({1} bytes) (base validate {2})", context.Filename, context.FileSize, ret), GetType().Name);

                return(ret && (!string.IsNullOrEmpty(context.Filename)) && (context.FileSize > 0));
            }
            catch (Exception)
            {
                // We can't parse the context, so refuse the invite
                Trace.WriteLineIf(Settings.TraceSwitch.TraceError,
                                  String.Format("Unable to parse file transfer invite: {0}", invite.ToDebugString()), GetType().Name);

                return(false);
            }
        }
Esempio n. 6
0
        public override void SetupInviteMessage(SLPMessage slp)
        {
            slp.BodyValues["RequestFlags"] = "16";

            base.SetupInviteMessage(slp);
        }
Esempio n. 7
0
 /// <summary>
 /// Prepares the invite message.
 /// </summary>
 /// <param name="slp"></param>
 public virtual void SetupInviteMessage(SLPMessage slp)
 {
     slp.BodyValues["EUF-GUID"] = ApplicationEufGuid.ToString("B").ToUpperInvariant();
     slp.BodyValues["AppID"]    = ApplicationId.ToString(System.Globalization.CultureInfo.InvariantCulture);
     slp.BodyValues["Context"]  = InvitationContext;
 }