//вход в онлайн юзера
 private void MyXmppClient_OnPresence(object sender, PresenceEventArgs e)
 {
     ConnectionModel.Instance.EventList.Add(new OnPresence(e));
     string jid = e.Presence.From.Bare;
     var contact = Contact.FirstOrDefault(c => c.Jid == jid);
     if (contact != null)
         contact.SetOnlineStateFromPresence(e.Presence); //проверяем статус человека вошедшего в сеть.
 }
Esempio n. 2
0
        private Task Client_OnPresenceUnsubscribed(object Sender, PresenceEventArgs e)
        {
            lock (this.subscriptionsByThing)
            {
                if (!this.subscriptionsByJID.TryGetValue(e.From, out Dictionary <string, Subscription> Subscriptions))
                {
                    return(Task.CompletedTask);
                }

                this.subscriptionsByJID.Remove(e.From);

                foreach (Subscription Subscription in Subscriptions.Values)
                {
                    Subscription.Active = false;

                    foreach (IThingReference Ref in Subscription.NodeReferences)
                    {
                        if (!this.subscriptionsByThing.TryGetValue(Ref, out LinkedList <Subscription> Subscriptions2))
                        {
                            continue;
                        }

                        if (!Subscriptions2.Remove(Subscription))
                        {
                            continue;
                        }

                        if (Subscriptions2.First is null)
                        {
                            this.subscriptionsByThing.Remove(Ref);
                        }
                    }
                }
            }

            return(Task.CompletedTask);
        }
Esempio n. 3
0
        private Task XmppClient_OnPresenceSubscribe(object Sender, PresenceEventArgs e)
        {
            StringBuilder Markdown = new StringBuilder();

            Markdown.Append("Presence subscription request received from **");
            Markdown.Append(MarkdownDocument.Encode(e.FromBareJID));
            Markdown.Append("**. You can accept or decline the request from the roster configuration in the Administration portal.");

            Gateway.SendNotification(Markdown.ToString());

            string[] TabIDs = this.GetTabIDs();
            if (TabIDs.Length > 0)
            {
                string Json = JSON.Encode(new KeyValuePair <string, object>[]
                {
                    new KeyValuePair <string, object>("bareJid", e.FromBareJID),
                    new KeyValuePair <string, object>("html", this.RosterItemsHtml(new RosterItem[0], new PresenceEventArgs[] { e }))
                }, false);

                Task _ = ClientEvents.PushEvent(TabIDs, "UpdateRosterItem", Json, true, "User");
            }

            return(Task.CompletedTask);
        }
Esempio n. 4
0
        private Task DeclineRequest(HttpRequest Request, HttpResponse Response)
        {
            Gateway.AssertUserAuthenticated(Request, this.ConfigPrivilege);

            if (!Request.HasData)
            {
                throw new BadRequestException();
            }

            object Obj = Request.DecodeData();

            if (!(Obj is string JID))
            {
                throw new BadRequestException();
            }

            Response.ContentType = "text/plain";

            XmppClient Client = Gateway.XmppClient;

            PresenceEventArgs SubscriptionRequest = Client.GetSubscriptionRequest(JID);

            if (SubscriptionRequest is null)
            {
                return(Response.Write("0"));
            }
            else
            {
                SubscriptionRequest.Decline();
                Log.Informational("Declining presence subscription request.", SubscriptionRequest.FromBareJID);

                this.RosterItemRemoved(JID);

                return(Response.Write("1"));
            }
        }
Esempio n. 5
0
        void XmppClient_OnPresence(object sender, PresenceEventArgs e)
        {
            Console.WriteLine("OnPresence");
            try {
                if (e.Presence.From.User == "testuser2")
                {
                    // hack for purposes of demo
                    this.session = e.Presence.From.Resource;

                    // here we send our presence directly which triggers them asking us for caps
                    Console.WriteLine("Sending presence direct");
                    Matrix.Xmpp.Client.Presence p = new Matrix.Xmpp.Client.Presence();
                    p.From      = "[email protected]/Matrix-for-Android";
                    p.To        = "[email protected]/" + this.session;
                    p.Caps      = new Matrix.Xmpp.Capabilities.Caps();
                    p.Caps.Node = "http://legion.mobi/";
                    p.Caps.SetVersion(new Matrix.Xmpp.Disco.Info(""));
                    xmppClient.Send(p);
                }
            }
            catch (System.Exception ex) {
                Console.WriteLine(ex.ToString());
            }
        }
Esempio n. 6
0
        private void Client_OnPresence(object Sender, PresenceEventArgs e)
        {
            Dictionary <string, Subscription> Subscriptions;

            lock (this.subscriptionsByThing)
            {
                if (!this.subscriptionsByJID.TryGetValue(e.From, out Subscriptions))
                {
                    return;
                }
            }

            foreach (Subscription Subscription in Subscriptions.Values)
            {
                Subscription.Availability = e.Availability;

                if (e.Availability != Availability.Offline && Subscription.SupressedTrigger)
                {
                    Subscription.SupressedTrigger = false;
                    Subscription.LastTrigger      = DateTime.Now;
                    this.TriggerSubscription(Subscription);
                }
            }
        }
Esempio n. 7
0
 private void xmppClient_OnBeforeSendPresence(object sender, PresenceEventArgs e)
 {
     // add custom information to outgoing Presences when desired
     //e.Presence.Add(new XElement("foo"));
     //e.Presence.Muc.History = new Matrix.Xmpp.Muc.History();
     //e.Presence.Muc.History.MaxCharacters = 0;
 }
Esempio n. 8
0
 private void xmppClient_OnPresence(object sender, PresenceEventArgs e)
 {
     DisplayEvent(string.Format("OnPresence\t{0}", e.Presence.From));
 }
Esempio n. 9
0
 public OnPresence(PresenceEventArgs e)
 {
     LogMessage = e.Presence.From + " => вошел в онлайн " + DateTime.Now.ToString("h:mm:ss");
 }
Esempio n. 10
0
        private void PresenceCallback(object sender, PresenceEventArgs e)
        {
            var mucX = e.Presence.MucUser;
            if (mucX == null)
            {
                if (e.Presence.Error.Type == Matrix.Xmpp.Base.ErrorType.Auth)
                {
                    if (e.Presence.Error.FirstAttribute.Value == "407")
                    {
                        MessageBox.Show("Unauthorized!");
                        this.Close();
                        return;
                    }
                }
            }
            // check for status code 201, this means the room is not ready to use yet
            // we request an instant room and accept the and accept the default configuration by the server
            if (mucX.HasStatus(201)) // 201 =  room is awaiting configuration.d
                mm.RequestInstantRoom(_roomJid);

            var lvi = FindListViewItem(e.Presence.From);
            if (lvi != null)
            {
                if (e.Presence.Type == PresenceType.Unavailable)
                {
                    lvi.Remove();
                }
                else
                {
                    int imageIdx = Util.GetRosterImageIndex(e.Presence);
                    lvi.ImageIndex = imageIdx;
                    //lvi.SubItems[1].Text = (e.Presence.Status ?? "");

                    var u = e.Presence.MucUser;
                    if (u != null)
                    {
                        lvi.SubItems[1].Text = u.Item.Affiliation.ToString();
                        lvi.SubItems[2].Text = u.Item.Role.ToString();
                        //string bare = e.Presence.From.Resource + "@" + FrmLogin.Instance.HostName;
                        //listAddress[lvi.SubItems[3].Text] = bare;
                        //lvi.SubItems[3].Text = bare;
                    }
                }
            }
            else
            {
                int imageIdx = Util.GetRosterImageIndex(e.Presence);

                var lv = new ListViewItem(e.Presence.From.Resource) { Tag = e.Presence.From.ToString() };

                //lv.SubItems.Add(e.Presence.Status ?? "");

                var u = e.Presence.MucUser;
                if (u != null)
                {
                    lv.SubItems.Add(u.Item.Affiliation.ToString());
                    lv.SubItems.Add(u.Item.Role.ToString());
                    //string bare = e.Presence.From.Resource + "@" + FrmLogin.Instance.HostName;
                    //lv.SubItems.Add(bare);
                    //if (!listAddress.ContainsKey(bare))
                    //{
                    //    listAddress.Add(bare, bare);
                    //}
                }
                lv.ImageIndex = imageIdx;
                lvwRoster.Items.Add(lv);
            }
        }
Esempio n. 11
0
 private static void XmppClient_OnPresenceUnsubscribe(object Sender, PresenceEventArgs e)
 {
     e.Accept();
 }
Esempio n. 12
0
        private void PresenceCallback(object sender, PresenceEventArgs e)
        {
            var mucX = e.Presence.MucUser;

            // check for status code 201, this means the room is not ready to use yet
            // we request an instant room and accept the and accept the default configuration by the server
            if (mucX != null && mucX.HasStatus(201)) // 201 =  room is awaiting configuration.
            {
                StaticClass2.muc.RequestInstantRoom(j);
            }



            if (treeView1.Nodes.Count == 0)
            {
                TreeNode node = (new TreeNode(e.Presence.From.ToString()));
                node.Tag = e.Presence.From.ToString();
                treeView1.Nodes.Add(node);
            }

            TreeNode node2 = new TreeNode(e.Presence.MucUser.ToString());

            node2.Tag = e.Presence.MucUser.ToString();
            treeView1.Nodes[0].Nodes.Add(node2);

            /*
             * var lvi = FindListViewItem(e.Presence.From);
             * if (lvi != null)
             * {
             *  if (e.Presence.Type == PresenceType.Unavailable)
             *  {
             *      lvi.Remove();
             *  }
             *  else
             *  {
             *      int imageIdx = Util.GetRosterImageIndex(e.Presence);
             *      lvi.ImageIndex = imageIdx;
             *      lvi.SubItems[1].Text = (e.Presence.Status ?? "");
             *
             *      var u = e.Presence.MucUser;
             *      if (u != null)
             *      {
             *          lvi.SubItems[2].Text = u.Item.Affiliation.ToString();
             *          lvi.SubItems[3].Text = u.Item.Role.ToString();
             *      }
             *  }
             * }
             * else
             * {
             *  int imageIdx = Util.GetRosterImageIndex(e.Presence);
             *
             *  var lv = new ListViewItem(e.Presence.From.Resource) { Tag = e.Presence.From.ToString() };
             *
             *  lv.SubItems.Add(e.Presence.Status ?? "");
             *
             *  var u = e.Presence.MucUser;
             *  if (u != null)
             *  {
             *      lv.SubItems.Add(u.Item.Affiliation.ToString());
             *      lv.SubItems.Add(u.Item.Role.ToString());
             *  }
             *  lv.ImageIndex = imageIdx;
             *  lvwRoster.Items.Add(lv);
             * }*/
        }
Esempio n. 13
0
 private void presenceManager_OnSubscribe(object sender, PresenceEventArgs e)
 {
     presenceManager.ApproveSubscriptionRequest(e.Presence.From);
     //presenceManager.DenySubscriptionRequest(e.Presence.From);
 }
Esempio n. 14
0
 internal void OnContactPresenceChanged(object sender, PresenceEventArgs args)
 {
     ContactPresenceChanged.Raise(sender, args);
 }
Esempio n. 15
0
 void xmppClient_OnBeforeSendPresence(object sender, PresenceEventArgs e)
 {
     DisplayEvent("OnBeforeSendPresence");
 }
Esempio n. 16
0
 private void xmppClient_OnBeforeSendPresence(object sender, PresenceEventArgs e)
 {
     // add custom information to outgoing Presences when desired
     //e.Presence.Add(new XElement("foo"));
 }
Esempio n. 17
0
        void xmppClient_OnPresence(object sender, PresenceEventArgs e)
        {
            DisplayEvent("OnPresence");

            string uniqueId = Matrix.Util.Hash.Sha1HashHex(e.Presence.From.Bare);
            Clients.Client(Context.ConnectionId).onPresence(
                    uniqueId,
                    e.Presence.From.Bare,
                    e.Presence.Type == PresenceType.unavailable ? "Offline" : ShowToString(e.Presence.Show),
                    e.Presence.Status ?? ""
                );
        }
Esempio n. 18
0
        private void PresenceCallback(object sender, PresenceEventArgs e)
        {
            var mucX = e.Presence.MucUser;

            if (mucX == null)
            {
                if (e.Presence.Error.Type == Matrix.Xmpp.Base.ErrorType.Auth)
                {
                    if (e.Presence.Error.FirstAttribute.Value == "407")
                    {
                        MessageBox.Show("Unauthorized!");
                        this.Close();
                        return;
                    }
                }
            }
            // check for status code 201, this means the room is not ready to use yet
            // we request an instant room and accept the and accept the default configuration by the server
            if (mucX.HasStatus(201)) // 201 =  room is awaiting configuration.d
            {
                mm.RequestInstantRoom(_roomJid);
            }


            var lvi = FindListViewItem(e.Presence.From);

            if (lvi != null)
            {
                if (e.Presence.Type == PresenceType.Unavailable)
                {
                    lvi.Remove();
                }
                else
                {
                    int imageIdx = Util.GetRosterImageIndex(e.Presence);
                    lvi.ImageIndex = imageIdx;
                    //lvi.SubItems[1].Text = (e.Presence.Status ?? "");

                    var u = e.Presence.MucUser;
                    if (u != null)
                    {
                        lvi.SubItems[1].Text = u.Item.Affiliation.ToString();
                        lvi.SubItems[2].Text = u.Item.Role.ToString();
                        //string bare = e.Presence.From.Resource + "@" + FrmLogin.Instance.HostName;
                        //listAddress[lvi.SubItems[3].Text] = bare;
                        //lvi.SubItems[3].Text = bare;
                    }
                }
            }
            else
            {
                int imageIdx = Util.GetRosterImageIndex(e.Presence);

                var lv = new ListViewItem(e.Presence.From.Resource)
                {
                    Tag = e.Presence.From.ToString()
                };

                //lv.SubItems.Add(e.Presence.Status ?? "");

                var u = e.Presence.MucUser;
                if (u != null)
                {
                    lv.SubItems.Add(u.Item.Affiliation.ToString());
                    lv.SubItems.Add(u.Item.Role.ToString());
                    //string bare = e.Presence.From.Resource + "@" + FrmLogin.Instance.HostName;
                    //lv.SubItems.Add(bare);
                    //if (!listAddress.ContainsKey(bare))
                    //{
                    //    listAddress.Add(bare, bare);
                    //}
                }
                lv.ImageIndex = imageIdx;
                lvwRoster.Items.Add(lv);
            }
        }
Esempio n. 19
0
        private void xmppClient_OnPresence(object sender, PresenceEventArgs e)
        {
            DisplayEvent(string.Format("OnPresence\t{0}", e.Presence.From));

            if (e.Presence.Type == PresenceType.Subscribe)
            {
                //presenceManager.ApproveSubscriptionRequest(e.Presence.From);
                var item = listContacts.Items[e.Presence.From.Bare] as RosterListViewItem;
                if (item != null)
                {
                    var pm = new PresenceManager(xmppClient);
                    pm.ApproveSubscriptionRequest(e.Presence.From);
                }
                else
                {
                    var input = new FrmAddUser(_dictContactGroups, true, xmppClient);
                    input.Address = e.Presence.From;
                    if (input.ShowDialog() == DialogResult.OK)
                    {
                        _dictContactGroups = input.DictContactGroups;
                        var rm = new RosterManager(xmppClient);
                        Jid jid = input.Address;
                        rm.Add(jid, input.Name, input.Group);

                        var pm = new PresenceManager(xmppClient);
                        pm.ApproveSubscriptionRequest(e.Presence.From);
                        //string reason = input.Message;
                        //pm.Subscribe(jid, reason, input.Name);
                    }
                }
            }
            else if (e.Presence.Type == PresenceType.Subscribed)
            {
                var pm = new PresenceManager(xmppClient);
                pm.ApproveSubscriptionRequest(e.Presence.From);
            }
            else if (e.Presence.Type == PresenceType.Unsubscribe)
            {
                var pm = new PresenceManager(xmppClient);
                pm.ApproveSubscriptionRequest(e.Presence.From);
                var rm = new RosterManager(xmppClient);
                Jid jid = e.Presence.From;
                rm.Remove(jid);
            }
            else if (e.Presence.Type == PresenceType.Unsubscribed)
            {
                var pm = new PresenceManager(xmppClient);
                pm.ApproveSubscriptionRequest(e.Presence.From);
                var rm = new RosterManager(xmppClient);
                Jid jid = e.Presence.From;
                rm.Remove(jid);
            }
            else
            {
                var item = listContacts.Items[e.Presence.From.Bare] as RosterListViewItem;
                if (item != null)
                {
                    item.ImageIndex = Util.GetRosterImageIndex(e.Presence);
                    string resource = e.Presence.From.Resource;
                    if (e.Presence.Type != PresenceType.Unavailable)
                    {
                        if (!item.Resources.Contains(resource))
                            item.Resources.Add(resource);
                    }
                    else
                    {
                        if (item.Resources.Contains(resource))
                            item.Resources.Remove(resource);
                    }
                }
            }
        }
Esempio n. 20
0
 /// <summary>
 /// Event arguments for Availability events.
 /// </summary>
 /// <param name="e">Presence event arguments.</param>
 /// <param name="HasE2E">If End-to-End encryption information was found in presence stanza.</param>
 /// <param name="HasP2P">If Peer-to-peer address information was found in presence stanza.</param>
 public AvailableEventArgs(PresenceEventArgs e, bool HasE2E, bool HasP2P)
 {
     this.presence = e;
     this.hasE2E   = HasE2E;
     this.hasP2P   = HasP2P;
 }
Esempio n. 21
0
        private void xmppClient_OnPresence(object sender, PresenceEventArgs e)
        {
            DisplayEvent(string.Format("OnPresence\t{0}", e.Presence.From));

            if (e.Presence.Type == PresenceType.Subscribe)
            {
                //presenceManager.ApproveSubscriptionRequest(e.Presence.From);
                var item = listContacts.Items[e.Presence.From.Bare] as RosterListViewItem;
                if (item != null)
                {
                    var pm = new PresenceManager(xmppClient);
                    pm.ApproveSubscriptionRequest(e.Presence.From);
                }
                else
                {
                    var input = new FrmAddUser(_dictContactGroups, true, xmppClient);
                    input.Address = e.Presence.From;
                    if (input.ShowDialog() == DialogResult.OK)
                    {
                        _dictContactGroups = input.DictContactGroups;
                        var rm  = new RosterManager(xmppClient);
                        Jid jid = input.Address;
                        rm.Add(jid, input.Name, input.Group);

                        var pm = new PresenceManager(xmppClient);
                        pm.ApproveSubscriptionRequest(e.Presence.From);
                        //string reason = input.Message;
                        //pm.Subscribe(jid, reason, input.Name);
                    }
                }
            }
            else if (e.Presence.Type == PresenceType.Subscribed)
            {
                var pm = new PresenceManager(xmppClient);
                pm.ApproveSubscriptionRequest(e.Presence.From);
            }
            else if (e.Presence.Type == PresenceType.Unsubscribe)
            {
                var pm = new PresenceManager(xmppClient);
                pm.ApproveSubscriptionRequest(e.Presence.From);
                var rm  = new RosterManager(xmppClient);
                Jid jid = e.Presence.From;
                rm.Remove(jid);
            }
            else if (e.Presence.Type == PresenceType.Unsubscribed)
            {
                var pm = new PresenceManager(xmppClient);
                pm.ApproveSubscriptionRequest(e.Presence.From);
                var rm  = new RosterManager(xmppClient);
                Jid jid = e.Presence.From;
                rm.Remove(jid);
            }
            else
            {
                var item = listContacts.Items[e.Presence.From.Bare] as RosterListViewItem;
                if (item != null)
                {
                    item.ImageIndex = Util.GetRosterImageIndex(e.Presence);
                    string resource = e.Presence.From.Resource;
                    if (e.Presence.Type != PresenceType.Unavailable)
                    {
                        if (!item.Resources.Contains(resource))
                        {
                            item.Resources.Add(resource);
                        }
                    }
                    else
                    {
                        if (item.Resources.Contains(resource))
                        {
                            item.Resources.Remove(resource);
                        }
                    }
                }
            }
        }
Esempio n. 22
0
 private void Client_OnPresenceSubscribe(object Sender, PresenceEventArgs e)
 {
     this.connections.Owner.Dispatcher.BeginInvoke(new ParameterizedThreadStart(this.PresenceSubscribe), e);
 }
Esempio n. 23
0
 private void presenceManager_OnSubscribe(object sender, PresenceEventArgs e)
 {
     presenceManager.ApproveSubscriptionRequest(e.Presence.From);
     //presenceManager.DenySubscriptionRequest(e.Presence.From);
 }
Esempio n. 24
0
 void xmppClient_OnBeforeSendPresence(object sender, PresenceEventArgs e)
 {
     DisplayEvent("OnBeforeSendPresence");
 }
Esempio n. 25
0
 void xmppClient_OnPresence(object sender, PresenceEventArgs e)
 {
     DisplayEvent("OnPresence");
     DisplayEvent(String.Format("   ==> From:{0} Show:{1} Status:{2}", e.Presence.From, e.Presence.Show.ToString(), e.Presence.Status));
 }
 void EndpointIdentityManager_PresenceNotificationReceived(object sender, PresenceEventArgs e)
 {
     BuildEndpointTree();
 }
Esempio n. 27
0
        private void PresenceCallback(object sender, PresenceEventArgs e)
        {
            var mucX = e.Presence.MucUser;

            // check for status code 201, this means the room is not ready to use yet
            // we request an instant room and accept the and accept the default configuration by the server
            if (mucX.HasStatus(201)) // 201 =  room is awaiting configuration.
                mm.RequestInstantRoom(_roomJid);

            var lvi = FindListViewItem(e.Presence.From);
            if (lvi != null)
            {
                if (e.Presence.Type == PresenceType.unavailable)
                {
                    lvi.Remove();
                }
                else
                {
                    int imageIdx = Util.GetRosterImageIndex(e.Presence);
                    lvi.ImageIndex = imageIdx;
                    lvi.SubItems[1].Text = (e.Presence.Status ?? "");

                    var u = e.Presence.MucUser;
                    if (u != null)
                    {
                        lvi.SubItems[2].Text = u.Item.Affiliation.ToString();
                        lvi.SubItems[3].Text = u.Item.Role.ToString();
                    }
                }
            }
            else
            {
                int imageIdx = Util.GetRosterImageIndex(e.Presence);

                var lv = new ListViewItem(e.Presence.From.Resource) {Tag = e.Presence.From.ToString()};

                lv.SubItems.Add(e.Presence.Status ?? "");

                var u = e.Presence.MucUser;
                if (u != null)
                {
                    lv.SubItems.Add(u.Item.Affiliation.ToString());
                    lv.SubItems.Add(u.Item.Role.ToString());
                }
                lv.ImageIndex = imageIdx;
                lvwRoster.Items.Add(lv);
            }
        }