⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 permissionmanager.cs

📁 破解的飞信源代码
💻 CS
📖 第 1 页 / 共 3 页
字号:
                    writer.WriteEndElement();
                });
                req.Message.Body = tw.ToString();
                ErrorHelper.HandleSendRequestErrorAndTimeout(req);
                req.FinalResponseReceived += new EventHandler<SipResponseReceivedEventArgs>(this, (IntPtr) this.SetUserGlobalPermission_FinalResponseReceived);
                this._owner.SendSipMessage(req);
            }
            return true;
        }

        internal void CalcContactFinalPointValue(Imps.Client.Core.Contact contact, PermissionPointValue ppv)
        {
            if ((ppv.Value != null) && (ppv.Value >= 0))
            {
                ppv.FinalValue = ppv.Value.OriginalValue;
            }
            else if (ppv.PermissionPoint.IsGlobal)
            {
                bool flag = (contact.Type == ContactType.Buddy) || (contact.Type == ContactType.MobileBuddy);
                int originalValue = this.UserGlobalPermission[ppv.PermissionPoint.PointName].Value.OriginalValue;
                if (ppv.PermissionPoint.PointName == PermissionPointName.Contact)
                {
                    if ((originalValue == 1) || flag)
                    {
                        ppv.FinalValue = 1;
                    }
                    else
                    {
                        ppv.FinalValue = 2;
                    }
                }
                else if (ppv.PermissionPoint.PointName == PermissionPointName.Ivr)
                {
                    switch (((PermissionValue_Ivr) originalValue))
                    {
                        case PermissionValue_Ivr.Reject:
                            ppv.FinalValue = 0;
                            return;

                        case PermissionValue_Ivr.Allow:
                            ppv.FinalValue = 1;
                            return;

                        case PermissionValue_Ivr.BuddyAllow_ElseApply:
                            ppv.FinalValue = flag ? 1 : 4;
                            return;

                        case PermissionValue_Ivr.BuddyAllow_ElseReject:
                            ppv.FinalValue = flag ? 1 : 0;
                            return;

                        case PermissionValue_Ivr.Apply:
                            ppv.FinalValue = 4;
                            return;

                        case PermissionValue_Ivr.BuddyApply_ElseReject:
                            ppv.FinalValue = flag ? 4 : 0;
                            return;
                    }
                }
                else
                {
                    ppv.FinalValue = originalValue;
                }
            }
            else
            {
                ppv.FinalValue = ppv.PermissionPoint.DefaultValue;
            }
        }

        internal void Clear()
        {
            this.PermissionVersion = string.Empty;
            this._globalPermission = null;
        }

        public bool CommitChanges(AsyncBizOperation op)
        {
            this.AsyncSetUserGlobalPermission(op);
            return true;
        }

        private void getAllContactsPermission_FinalResponseReceived(object sender, SipResponseReceivedEventArgs e)
        {
            SipResponse sipMsg = e.Response;
            AsyncBizOperation op = (AsyncBizOperation) sipMsg.Request.Context;
            if (sipMsg.IsOK)
            {
                XmlDocument document = new XmlDocument();
                document.LoadXml(sipMsg.Message.Body.Trim());
                XmlNode node = document.DocumentElement.SelectSingleNode("permissions");
                if (node == null)
                {
                    LogHelper.LogReceivedSipMessage(sipMsg);
                    this._owner.FireImpsErrorInUiThread(new ImpsErrorEventArgs(StringTable.Permission.Msg_GetContactPermissionFailed), op);
                }
                else
                {
                    this.InnerLoadXmlNode(node);
                    this.SaveLocalStorage();
                    if (op != null)
                    {
                        op.FireSuccessedInUiThread(EventArgs.Empty);
                    }
                    Imps.Client.Core.User.TryCallReceiveMessageOnOp(op);
                }
            }
            else
            {
                LogHelper.LogReceivedSipMessage(sipMsg);
                switch (sipMsg.Message.StatusCode)
                {
                    case 400:
                        this._owner.FireImpsErrorInUiThread(new ImpsErrorEventArgs(StringTable.Permission.Msg_GetContactPermissionFailed_400), op);
                        return;

                    case 0x194:
                        this._owner.FireImpsErrorInUiThread(new ImpsErrorEventArgs(StringTable.Permission.Msg_GetContactPermissionFailed_500), op);
                        return;

                    case 500:
                        this._owner.FireImpsErrorInUiThread(new ImpsErrorEventArgs(StringTable.Permission.Msg_GetContactPermissionFailed_500), op);
                        return;
                }
                this._owner.FireImpsErrorInUiThread(new ImpsErrorEventArgs(StringTable.Permission.Msg_GetContactPermissionFailed), op);
            }
        }

        private void getContactsPermission_FinalResponseReceived(object sender, SipResponseReceivedEventArgs e)
        {
            SipResponse sipMsg = e.Response;
            AsyncBizOperation op = (AsyncBizOperation) sipMsg.Request.Context;
            if (!sipMsg.IsOK)
            {
                LogHelper.LogReceivedSipMessage(sipMsg);
                switch (sipMsg.Message.StatusCode)
                {
                    case 400:
                        this._owner.FireImpsErrorInUiThread(new ImpsErrorEventArgs(StringTable.Permission.Msg_GetContactPermissionFailed_400), op);
                        return;

                    case 0x194:
                        this._owner.FireImpsErrorInUiThread(new ImpsErrorEventArgs(StringTable.Permission.Msg_GetContactPermissionFailed_404), op);
                        return;

                    case 500:
                        this._owner.FireImpsErrorInUiThread(new ImpsErrorEventArgs(StringTable.Permission.Msg_GetContactPermissionFailed_500), op);
                        return;
                }
                this._owner.FireImpsErrorInUiThread(new ImpsErrorEventArgs(StringTable.Permission.Msg_GetContactPermissionFailed), op);
            }
            else
            {
                XmlDocument document = new XmlDocument();
                document.LoadXml(sipMsg.Message.Body.Trim());
                XmlNode node = document.DocumentElement.SelectSingleNode("permissions");
                if (node == null)
                {
                    LogHelper.LogReceivedSipMessage(sipMsg);
                    this._owner.FireImpsErrorInUiThread(new ImpsErrorEventArgs(StringTable.Permission.Msg_GetContactPermissionFailed), op);
                }
                else
                {
                    this.InnerLoadXmlNode(node);
                    this.SaveLocalStorage();
                }
            }
        }

        public ContactPermissionDict GetDefaultContactPermission(Imps.Client.Core.Contact contact)
        {
            ContactPermissionDict dict = new ContactPermissionDict(contact);
            dict.Add(this.InnerGetDefaultPointValue(contact, PermissionPointName.Birthday));
            dict.Add(this.InnerGetDefaultPointValue(contact, PermissionPointName.Business));
            dict.Add(this.InnerGetDefaultPointValue(contact, PermissionPointName.Contact));
            dict.Add(this.InnerGetDefaultPointValue(contact, PermissionPointName.Email));
            dict.Add(this.InnerGetDefaultPointValue(contact, PermissionPointName.Identity));
            dict.Add(this.InnerGetDefaultPointValue(contact, PermissionPointName.Ivr));
            dict.Add(this.InnerGetDefaultPointValue(contact, PermissionPointName.Location));
            dict.Add(this.InnerGetDefaultPointValue(contact, PermissionPointName.Phone));
            dict.Add(this.InnerGetDefaultPointValue(contact, PermissionPointName.Presence));
            dict.Sort();
            return dict;
        }

        private void getUserGlobalPermission_FinalResponseReceived(object sender, SipResponseReceivedEventArgs e)
        {
            SipResponse sipMsg = e.Response;
            AsyncBizOperation op = (AsyncBizOperation) sipMsg.Request.Context;
            try
            {
                if (sipMsg.IsOK)
                {
                    string xml = sipMsg.Message.Body;
                    if (xml.Length <= 0)
                    {
                        if (op != null)
                        {
                            op.FireSuccessedInUiThread(EventArgs.Empty);
                        }
                        Imps.Client.Core.User.TryCallReceiveMessageOnOp(op);
                    }
                    else
                    {
                        XmlDocument document = new XmlDocument();
                        document.LoadXml(xml);
                        XmlNode node = document.DocumentElement.SelectSingleNode("permissions");
                        if (node == null)
                        {
                            LogHelper.LogReceivedSipMessage(sipMsg);
                            this._owner.FireImpsErrorInUiThread(new ImpsErrorEventArgs(StringTable.Permission.Msg_GetGlobalPermissionFailed), op);
                        }
                        else
                        {
                            this.InnerLoadXmlNode(node);
                            this.SaveLocalStorage();
                            if (op != null)
                            {
                                op.FireSuccessedInUiThread(EventArgs.Empty);
                            }
                            Imps.Client.Core.User.TryCallReceiveMessageOnOp(op);
                        }
                    }
                }
                else
                {
                    ErrorHelper.HandleReceivedErrorResponse(sipMsg);
                }
            }
            catch (Exception exception)
            {
                ErrorHelper.HandleException(exception);
            }
        }

        private PermissionPointValue InnerGetDefaultPointValue(Imps.Client.Core.Contact contact, PermissionPointName name)
        {
            PermissionPoint point = this.FixedPermissionSetting[name];
            PermissionPointValue ppv = new PermissionPointValue(point);
            this.CalcContactFinalPointValue(contact, ppv);
            return ppv;
        }

        internal void InnerLoadXmlNode(XmlNode node)
        {
            if (node != null)
            {
                lock (this)
                {
                    XmlAttribute attribute = node.Attributes["version"];
                    if (attribute != null)
                    {
                        this.PermissionVersion = attribute.Value;
                    }
                    string values = XmlHelper.ReadXmlAttributeString(node, "values");
                    this.UserGlobalPermission.UpdateValues(values, this);
                    XmlNodeList list = node.SelectNodes("permission");
                    if ((list != null) || (list.Count == 0))
                    {
                        foreach (XmlNode node2 in list)
                        {
                            string text2 = XmlHelper.ReadXmlAttributeString(node2, "uri");
                            if (text2.Length != 0)
                            {
                                Imps.Client.Core.Contact contact = this._owner.ContactList.Contacts[text2];
                                if (contact != null)
                                {
                                    string text3 = XmlHelper.ReadXmlAttributeString(node2, "values");
                                    if (string.IsNullOrEmpty(text3))

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -