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); }
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); }
private MultiMimeMessage ParseSDGP2PSignalMessage(MultiMimeMessage multiMimeMessage) { SLPMessage slpMessage = SLPMessage.Parse(multiMimeMessage.InnerBody); slpMessage.CreateFromParentMessage(multiMimeMessage); return(multiMimeMessage); }
/// <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); }
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); } }
public override void SetupInviteMessage(SLPMessage slp) { slp.BodyValues["RequestFlags"] = "16"; base.SetupInviteMessage(slp); }
/// <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; }