Exemplo n.º 1
0
        void XmppClient_OnMessage(object sender, Matrix.Xmpp.Client.MessageEventArgs e)
        {
            //System.Threading.ThreadPool.QueueUserWorkItem(delegate
            //{
            if (e.Message.Body != null && e.Message.Body.Length > 0 && e.Message.Type != MessageType.Error)
            {
                string messageBody            = "";
                System.Xml.Linq.XNamespace ns = "urn:xmpp:openpgp:0";
                string pgpData = (string)
                                 (
                    from el in e.Message.Descendants(ns + "openpgp")
                    select el
                                 ).FirstOrDefault();
                if (pgpData != null)
                {
                    messageBody = this.openPGP.Decrypt(pgpData);
                    Log.Info("encrypted message " + e.Message.From + " " + messageBody);
                }
                else
                {
                    messageBody = e.Message.Body;
                    Log.Info("unencrypted message " + e.Message.From + " " + messageBody);
                }

                if (e.Message.XMucUser != null && this.OnInvit != null)
                {
                    this.OnInvit(this, new MessageEventArgs(e.Message.From, e.Message.XMucUser.FirstElement.FirstAttribute.Value));
                }
                else if (this.OnMessage != null && e.Message.Body != null)
                {
                    var from = e.Message.From.ToString().Split('/');
                    if (from[1] != null && from[1].Equals(_username))
                    {
                        return;
                    }
                    else
                    {
                        this.OnMessage(this, new MessageEventArgs(e.Message.From.ToString().Split('@')[0], e.Message.Body));
                    }
                }
            }
            else if (e.Message.Type == MessageType.GroupChat && e.Message.Subject != null && this.OnSubjectGroup != null)
            {
                this.OnSubjectGroup(this, new MessageEventArgs(e.Message.From, e.Message.Subject));
            }
            else if (e.Message.Type == MessageType.Error)
            {
                Log.Error("OnMessage error " + e.Message.From + " " + e.Message.Body);
                Log.Error(e.Message.ToString());
            }

            //}, null);
        }
Exemplo n.º 2
0
        public void MucManager_OnInvite(object sender, Matrix.Xmpp.Client.MessageEventArgs e)
        {
            Log.Info("Received an invite!!! " + e.Message.ToString() + " subject: " + e.Message.Subject);
            string jid = e.Message.From;

            this.mucManager.EnterRoom(e.Message.From, this._jid);

            if (this.OnInvit != null)
            {
                this.OnInvit(sender, new MessageEventArgs(e.Message.From, e.Message.XMucUser.FirstElement.FirstAttribute.Value));
            }
            //if (this.OnJoinGroup != null)
            //{
            //	this.OnJoinGroup(this, jid.Split('@')[0]);
            //}
            // set up public event
        }
Exemplo n.º 3
0
        private void PubsubManager_OnEvent(object sender, Matrix.Xmpp.Client.MessageEventArgs e)
        {
            Log.Info("pep_onevent " + e.Message.From + " " + e.Message.Value);

            if (e.Message.Value != "")
            {
                string jid = e.Message.From;
                System.Xml.Linq.XNamespace ns = "urn:xmpp:openpgp:0";
                try
                {
                    string pubkey = (string)
                                    (
                        from el in e.Message.Descendants(ns + "pubkey")
                        select el
                                    ).First();
                    this.openPGP.AddPublicKey(jid, pubkey);
                }
                catch (Exception ex)
                {
                    Log.Error(e.Message.Value + " resulted in " + ex.Message);
                }
            }
        }