Esempio n. 1
0
        public void MucRoomSettingsTest()
        {
            var room1 = new Jid("a.conf@s/R");
            store.RemoveMuc(room1);
            var s = store.GetMucRoomSettings(room1);
            Assert.IsNull(s);

            s = new MucRoomSettings();
            store.SetMucRoomSettings(room1, s);

            s = store.GetMucRoomSettings(room1);
            Assert.IsNotNull(s);

            s.Members = new List<MucRoomMemberInfo>();
            var m1 = new MucRoomMemberInfo("1:1:1");
            var m2 = new MucRoomMemberInfo("2:1:1");
            s.Members.Add(m1);
            s.Members.Add(m2);
            store.SetMucRoomSettings(room1, s);

            s = store.GetMucRoomSettings(room1);
            Assert.AreEqual(2, s.Members.Count);

            store.RemoveMuc(room1);
            s = store.GetMucRoomSettings(room1);
            Assert.IsNull(s);
        }
Esempio n. 2
0
        public void MucRoomSettingsTest()
        {
            var room1 = new Jid("a.conf@s/R");

            store.RemoveMuc(room1);
            var s = store.GetMucRoomSettings(room1);

            Assert.IsNull(s);

            s = new MucRoomSettings();
            store.SetMucRoomSettings(room1, s);

            s = store.GetMucRoomSettings(room1);
            Assert.IsNotNull(s);

            s.Members = new List <MucRoomMemberInfo>();
            var m1 = new MucRoomMemberInfo("1:1:1");
            var m2 = new MucRoomMemberInfo("2:1:1");

            s.Members.Add(m1);
            s.Members.Add(m2);
            store.SetMucRoomSettings(room1, s);

            s = store.GetMucRoomSettings(room1);
            Assert.AreEqual(2, s.Members.Count);

            store.RemoveMuc(room1);
            s = store.GetMucRoomSettings(room1);
            Assert.IsNull(s);
        }
Esempio n. 3
0
        public Affiliation GetMemeberAffilation(Jid memberJid)
        {
            MucRoomMemberInfo info = GetMemberInfo(memberJid);

            if (info != null)
            {
                return(info.Affiliation);
            }
            return(MembersOnly ? Affiliation.none : Affiliation.member);
        }
Esempio n. 4
0
        internal void UpdateMemberInfo(Jid jid, Affiliation affiliation, Role role)
        {
            MucRoomMemberInfo info = GetMemberInfo(jid);

            if (info == null)
            {
                info = new MucRoomMemberInfo();
                Members.Add(info);
            }
            info.Jid         = new Jid(jid.Bare);
            info.Affiliation = affiliation;
            info.Role        = role;
            Room.SettingsSave();
        }
Esempio n. 5
0
        private MucRoomMemberInfo GetMemberinfo(Jid jid)
        {
            MucRoomMemberInfo memberToModify = RoomSettings.GetMemberInfo(jid);

            if (memberToModify == null)
            {
                //Add
                memberToModify             = new MucRoomMemberInfo();
                memberToModify.Jid         = new Jid(jid.Bare);
                memberToModify.Affiliation = Affiliation.member;
                memberToModify.Role        = Role.participant;
                RoomSettings.Members.Add(memberToModify);
            }
            return(memberToModify);
        }
Esempio n. 6
0
        private MucRoomMemberInfo FindMemberInfo(Core.protocol.x.muc.iq.admin.Item item)
        {
            MucRoomMemberInfo memberToModify = null;

            if (item.Jid != null)
            {
                memberToModify = GetMemberinfo(item.Jid);
            }
            else if (item.Nickname != null)
            {
                MucRoomMember roomMember = members.FindByNick(item.Nickname);
                if (roomMember != null && roomMember.RealJid != null)
                {
                    memberToModify = GetMemberinfo(roomMember.RealJid);
                }
            }
            return(memberToModify);
        }
Esempio n. 7
0
		private MucRoomMemberInfo GetMemberinfo(Jid jid)
		{
			MucRoomMemberInfo memberToModify = RoomSettings.GetMemberInfo(jid);
			if (memberToModify == null)
			{
				//Add
				memberToModify = new MucRoomMemberInfo();
				memberToModify.Jid = new Jid(jid.Bare);
				memberToModify.Affiliation = Affiliation.member;
				memberToModify.Role = Role.participant;
				RoomSettings.Members.Add(memberToModify);
			}
			return memberToModify;
		}
Esempio n. 8
0
        public void AdminCommand(IQ iq, MucRoomMember member)
        {
            Admin admin       = iq.Query as Admin;
            Admin returnAdmin = new Admin();

            if (admin != null)
            {
                if (iq.Type == IqType.get)
                {
                    foreach (Core.protocol.x.muc.iq.admin.Item item in admin.GetItems())
                    {
                        if (item.Actor == null && item.Affiliation != Affiliation.none)
                        {
                            foreach (MucRoomMemberInfo mucRoomMember in RoomSettings.Members)
                            {
                                if (mucRoomMember.Affiliation == item.Affiliation)
                                {
                                    returnAdmin.AddItem(
                                        new Core.protocol.x.muc.iq.admin.Item(mucRoomMember.Affiliation,
                                                                              mucRoomMember.Role,
                                                                              mucRoomMember.Jid));
                                }
                            }
                        }
                    }
                    iq.Query = returnAdmin;
                    iq.Type  = IqType.result;
                }
                else if (iq.Type == IqType.set)
                {
                    // Change affilation
                    foreach (Core.protocol.x.muc.iq.admin.Item item in admin.GetItems())
                    {
                        if (item.Actor == null)
                        {
                            Actor actor = new Actor()
                            {
                                Jid = iq.From
                            };
                            MucRoomMemberInfo memberToModify = FindMemberInfo(item);
                            if (memberToModify != null)
                            {
                                //Get member
                                if ((int)item.Affiliation != -1)
                                {
                                    if (RoomSettings.CanChangeAffilation(memberToModify.Affiliation,
                                                                         item.Affiliation,
                                                                         member.Affiliation))
                                    {
                                        memberToModify.Affiliation = item.Affiliation;
                                        //Try notify online
                                        MucRoomMember onlineMember = members.FindByBareJid(memberToModify.Jid);
                                        if (onlineMember != null)
                                        {
                                            onlineMember.Affiliation = item.Affiliation;
                                        }
                                    }
                                    else
                                    {
                                        // Error!
                                        XmppStanzaError.ToErrorStanza(iq, new Error(ErrorCondition.NotAllowed));
                                        return;
                                    }
                                }

                                if ((int)item.Role != -1)
                                {
                                    if (RoomSettings.CanChangeRole(memberToModify.Role,
                                                                   item.Role,
                                                                   member.Role,
                                                                   member.Affiliation))
                                    {
                                        memberToModify.Role = item.Role;
                                        MucRoomMember onlineMember = members.FindByBareJid(memberToModify.Jid);
                                        if (onlineMember != null)
                                        {
                                            if (item.Role != Role.none)
                                            {
                                                onlineMember.Role = item.Role;
                                            }
                                            else
                                            {
                                                //Role == none it's a kick
                                                onlineMember.Kick(actor, item.Reason);
                                            }
                                        }
                                    }
                                    else
                                    {
                                        // Error!
                                        XmppStanzaError.ToErrorStanza(iq, new Error(ErrorCondition.NotAllowed));
                                        return;
                                    }
                                }
                            }
                        }
                    }
                    SettingsSave();
                    iq.RemoveAllChildNodes();
                    iq.Type = IqType.result;
                }
            }
        }
 internal void UpdateMemberInfo(Jid jid, Affiliation affiliation, Role role)
 {
     MucRoomMemberInfo info = GetMemberInfo(jid);
     if (info == null)
     {
         info = new MucRoomMemberInfo();
         Members.Add(info);
     }
     info.Jid = new Jid(jid.Bare);
     info.Affiliation = affiliation;
     info.Role = role;
     Room.SettingsSave();
 }