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); }
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); }
public Affiliation GetMemeberAffilation(Jid memberJid) { MucRoomMemberInfo info = GetMemberInfo(memberJid); if (info != null) { return(info.Affiliation); } return(MembersOnly ? Affiliation.none : Affiliation.member); }
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(); }
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); }
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); }
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; }
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(); }