public void TryEnterRoom(MucRoomMember member, Presence presence) { if (MucHelpers.IsJoinRequest(presence)) { if (CanEnterRoom(member, presence)) { if (RoomSettings.IsNew) { member.Affiliation = Affiliation.owner; member.Role = Role.moderator; } //enter members.Add(member); RoomSettings.UpdateMemberInfo(member.RealJid, member.Affiliation, member.Role); //Update settings on enter //subscribe to events SetMemberEvents(member); MemberEnter(member); } } else { ErrorPresence(presence, ErrorCondition.BadRequest); member.Send(presence); } }
public override void HandlePresence(XmppStream stream, Presence presence, XmppHandlerContext context) { //Presence to open new room if (MucHelpers.IsJoinRequest(presence)) { //Register Service.CreateRoom(new Jid(presence.To.Bare), null); Service.HandlerManager.ProcessStreamElement(presence, stream);//Forward to room } else { //Return error presence.Type = PresenceType.error; presence.Error = new Error(ErrorType.cancel, ErrorCondition.NotAllowed); presence.SwitchDirection(); context.Sender.SendTo(stream, presence); } }