Exemple #1
0
        public void DiscoverItems(Jid to, Jid from, string node, IqCB cb, object cbArgs)
        {
            var discoIq = new DiscoItemsIq(IqType.get);

            discoIq.To = to;

            if (from != null)
            {
                discoIq.From = from;
            }

            if (node != null && node.Length > 0)
            {
                discoIq.Query.Node = node;
            }

            xmppConnection.IqGrabber.SendIq(discoIq, cb, cbArgs);
        }
Exemple #2
0
        private void FindParticipants()
        {
            TreeNode node = treeGC.SelectedNode;
            if (node == null && node.Level != 1)
                return;

            DiscoItemsIq discoIq = new DiscoItemsIq(IqType.get);
            discoIq.To = new Jid((string)node.Tag);
            this.XmppCon.IqGrabber.SendIq(discoIq, new IqCB(OnGetParticipants), node);
        }
Exemple #3
0
        /// <summary>
        /// Discover chatromms of a chat server using disco (service discovery)
        /// </summary>
        private void FindChatRooms()
        {
            TreeNode node = treeGC.SelectedNode;
            if (node == null || node.Level != 0)
                return;

            DiscoItemsIq discoIq = new DiscoItemsIq(IqType.get);
            discoIq.To = new Jid(node.Text);
            this.XmppCon.IqGrabber.SendIq(discoIq, new IqCB(OnGetChatRooms), node);
        }
Exemple #4
0
        public void DiscoverItems(Jid to, Jid from, string node, IqCB cb, object cbArgs)
        {
            DiscoItemsIq discoIq = new DiscoItemsIq(IqType.get);
            discoIq.To = to;

            if (from != null)
                discoIq.From = from;

            if (node != null && node.Length > 0)
                discoIq.Query.Node = node;

            xmppConnection.IqGrabber.SendIq(discoIq, cb, cbArgs);
        }
            //RECIEVED:
            //<iq xmlns="jabber:client" id="agsXMPP_5" type="get" to="localhost">
            //    <query xmlns="http://jabber.org/protocol/disco#items" />
            //</iq>

            //RESPONSE:
            //<iq xmlns="jabber:client" from="localhost" to="test@localhost/MF" type="result" id="agsXMPP_5">
            //    <query xmlns="http://jabber.org/protocol/disco#items">
            //        <item name="Coversant XMPP Administractive Gateway" jid="administration.localhost" />
            //        <item jid="administration.localhost" node="http://winfessor.com/protocol/administration/policy" />
            //        <item name="pubsub - Publish Subscribe Gateway" jid="pubsub.localhost" />
            //        <item name="Open S2S Sessions" jid="s2s.localhost" />
            //        <item name="conference - Multi User Chat" jid="conference.localhost" />
            //        <item name="SoapBox User Directory" jid="users.localhost" />
            //        <item name="jabber - Default Jabber Gateway" jid="localhost" />
            //        <item jid="localhost" node="http://jabber.org/protocol/commands" />
            //    </query>
            //</iq>
            private void ProcessDiscoItemsIQ(IQ iq)
            {

                DiscoItemsIq discoItemsIq = new DiscoItemsIq(IqType.result);
                discoItemsIq.Namespace = agsXMPP.Uri.CLIENT;
                discoItemsIq.Id = iq.Id;
                discoItemsIq.From = iq.To;
                discoItemsIq.To = this.m_ClientAccount.JID;

                ///*******此处为配置扩展******************
                ///当前仅实现服务发现
                ///***************************************
                DiscoItem discoItem = null;
                foreach (BaseService service in this.m_Server.ServiceList)
                {

                    discoItem = new DiscoItem();
                    discoItem.Name = service.Name;
                    discoItem.Jid = service.JID;

                    if (iq.To.Bare.ToLower().Contains(service.JID.Bare.ToLower()))
                    {

                        discoItemsIq.Query.RemoveAllChildNodes();

                        if (service.ServiceType == ServiceType.GroupChat)
                        {
                            MucService muc = service as MucService;
                            if (service.JID.Bare.ToLower() == iq.To.Bare.ToLower())
                            {
                                //<iq from='macbeth.shakespeare.lit'
                                //    id='disco2'
                                //    to='[email protected]/pda'
                                //    type='result'>
                                //  <query xmlns='http://jabber.org/protocol/disco#items'>
                                //    <item jid='*****@*****.**'
                                //          name='A Lonely Heath'/>
                                //    <item jid='*****@*****.**'
                                //          name='A Dark Cave'/>
                                //    <item jid='*****@*****.**'
                                //          name='The Palace'/>
                                //    <item jid='*****@*****.**'
                                //          name='Macbeth&apos;s Castle'/>
                                //  </query>
                                //</iq>


                                foreach (KeyValuePair<string, ChatRoom> item in muc.GetRooms())
                                {
                                    discoItem = new DiscoItem();
                                    discoItem.Name = item.Key;
                                    discoItem.Jid = item.Value.JID;

                                    discoItemsIq.Query.AddDiscoItem(discoItem);

                                }


                            }
                            else if (iq.To.Bare.ToLower().EndsWith("@" + service.JID.Bare.ToLower()))
                            {

                            }
                            else
                            {

                            }

                        }
                        else if (service.ServiceType == ServiceType.ContactSearch)
                        {

                        }
                        else if (service.ServiceType == ServiceType.FileTransfer)
                        {

                        }
                        else
                        {

                        }

                        break;
                    }
                    else
                    {
                        discoItemsIq.Query.AddDiscoItem(discoItem);
                    }

                }

                Send(discoItemsIq);

            }
Exemple #6
0
 /// <summary>
 /// Busca los participantes de la sala. Solo los que estan conectados.-
 /// </summary>
 /// <param name="roomName">nombreSala@server</param>
 public void FindParticipants(String roomName)
 {
     DiscoItemsIq discoIq = new DiscoItemsIq(IqType.get);
     //discoIq.To = new Jid((string)roomName);
     //discoIq.To = new Jid("amigos.conference.santana");
     discoIq.To = new Jid("*****@*****.**");
     discoIq.From = xmppCon.MyJID; 
     
     this.XmppCon.IqGrabber.SendIq(discoIq, new IqCB(OnGetParticipants), roomName);
 }
Exemple #7
0
        /// <summary>
        /// Busca las salas de conferencias de alguna sala.-
        /// 
        /// </summary>
        /// <param name="name">Reprecentan Chatservers 
        /// EJ: conference.jabbers.ogr</param>
        public void FindChatRooms(string name)
        {
            //wChatRoomsList = new List<ChatRooms>();
            if (this.XmppCon == null) return;
            DiscoItemsIq discoIq = new DiscoItemsIq(IqType.get);
            discoIq.To = new Jid(name);
            this.XmppCon.IqGrabber.SendIq(discoIq, new IqCB(OnGetChatRooms), name);

        }