Ejemplo n.º 1
0
        public void Join(BookmarkedConference room)
        {
            var mucPresence = new XMPPPresence(connection.Capabilities)
            {
                To = new JID(string.Format("{0}/{1}", room.JID.BareJid, room.Nick))
            };

            mucPresence.Add(new XElement(XNamespace.Get(Namespaces.MUC) + "x"));
            connection.Send(mucPresence);
        }
Ejemplo n.º 2
0
        public override bool Handle(XmppConnection sender, XMPPIq element)
        {
            var type = element.Attribute("type");

            if (type == null)
            {
                return(false);
            }
            if (type.Equals("get"))
            {
                var query = element.Element("query");
                if (query != null)
                {
                    var ns  = query.Attribute("xmlns");
                    var num = Array.IndexOf(Features, ns);
                    switch (num)
                    {
                    case 0:
                        var from = new JID(element.Attribute("from").Value);
                        _fields = _regHandler.GetCredentials(from);

                        var reply = element.Reply();
                        var instr = new Stanza("instructions")
                        {
                            Value = _regHandler.GetInstructions()
                        };
                        query.Add(instr);
                        foreach (string field in _fields.Keys)
                        {
                            var f = new Stanza(field)
                            {
                                Value = _fields[field]
                            };
                            query.Add(f);
                        }
                        sender.Send(reply);
                        return(true);
                    }
                }
            }
            if (type.Equals("set"))
            {
                var query = element.Element("query");
                if (query != null)
                {
                    var ns  = query.Attribute("xmlns");
                    var num = Array.IndexOf(Features, ns);
                    switch (num)
                    {
                    case 0:
                        var queryFields   = FilterFields((Stanza)query, _fields);
                        var from          = new JID(element.Attribute("from").Value);
                        var requestResult = queryFields.ContainsKey("remove") ? _regHandler.OnRegistrationRemove(from) : _regHandler.OnRegistrationRequest(from, queryFields);

                        if (requestResult)
                        {
                            var reply = element.Reply();
                            sender.Send(reply);
                            var subscribe = new XMPPPresence();
                            subscribe.SetAttributeValue("to", from.BareJid);
                            subscribe.SetAttributeValue("from", sender.Jid.BareJid);
                            if (queryFields.ContainsKey("remove"))
                            {
                                subscribe.SetAttributeValue("type", "unsubscribed");
                                sender.Send(subscribe);
                                subscribe.SetAttributeValue("type", "unsubscribe");
                                sender.Send(subscribe);
                            }
                            else
                            {
                                subscribe.SetAttributeValue("type", "subscribe");
                                sender.Send(subscribe);
                            }
                        }
                        else
                        {
                            sender.Send(element.Error());
                        }
                        return(true);
                    }
                }
            }
            return(false);
        }
Ejemplo n.º 3
0
 protected void OnPresence(XMPPPresence e)
 {
     Presence(this, e);
 }