예제 #1
0
        private async Task answerPresenceProbeAsync(string from, string to, ChatTable chat, XMPPClient client, PresenceMessage msg)
        {
            XMPPAccount     account = client.getXMPPAccount();
            PresenceMessage answer  = null;

            if (chat is null)
            {
                answer = new PresenceErrorMessage(account.getFullJid(), from, PresenceErrorType.FORBIDDEN);
                Logger.Warn("Received a presence probe message for an unknown chat from: " + from + ", to: " + to);
                return;
            }
            else
            {
                switch (chat.subscription)
                {
                case "both":
                case "from":
                    answer = new PresenceMessage(account.getBareJid(), from, account.presence, account.status, account.presencePriorety);
                    Logger.Debug("Answered presence probe from: " + from);
                    break;

                case "none" when chat.inRoster:
                case "to" when chat.inRoster:
                    answer = new PresenceErrorMessage(account.getFullJid(), from, PresenceErrorType.FORBIDDEN);
                    Logger.Warn("Received a presence probe but chat has no subscription: " + from + ", to: " + to + " subscription: " + chat.subscription);
                    break;

                default:
                    answer = new PresenceErrorMessage(account.getFullJid(), from, PresenceErrorType.NOT_AUTHORIZED);
                    Logger.Warn("Received a presence probe but chat has no subscription: " + from + ", to: " + to + " subscription: " + chat.subscription);
                    break;
                }
            }
            await client.sendAsync(answer);
        }
예제 #2
0
        private async Task AnswerPresenceProbeAsync(string from, string to, ChatModel chat, PresenceMessage msg)
        {
            PresenceMessage answer;

            if (chat is null)
            {
                Logger.Warn("Received a presence probe message for an unknown chat from: " + from + ", to: " + to);
                return;
            }
            else
            {
                switch (chat.subscription)
                {
                case "both":
                case "from":
                    answer = new PresenceMessage(client.dbAccount.fullJid.FullJid(), from, client.dbAccount.presence, client.dbAccount.status, client.dbAccount.presencePriorety);
                    Logger.Debug("Answered presence probe from: " + from);
                    break;

                case "none" when chat.inRoster:
                case "to" when chat.inRoster:
                    answer = new PresenceErrorMessage(client.dbAccount.fullJid.FullJid(), from, PresenceErrorType.FORBIDDEN);
                    Logger.Warn("Received a presence probe but chat has no subscription: " + from + ", to: " + to + " subscription: " + chat.subscription);
                    break;

                default:
                    answer = new PresenceErrorMessage(client.dbAccount.fullJid.FullJid(), from, PresenceErrorType.NOT_AUTHORIZED);
                    Logger.Warn("Received a presence probe but chat has no subscription: " + from + ", to: " + to + " subscription: " + chat.subscription);
                    break;
                }
            }
            await client.xmppClient.SendAsync(answer);
        }