• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

C# SecurityBindingElement类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C#中SecurityBindingElement的典型用法代码示例。如果您正苦于以下问题:C# SecurityBindingElement类的具体用法?C# SecurityBindingElement怎么用?C# SecurityBindingElement使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



SecurityBindingElement类属于命名空间,在下文中一共展示了SecurityBindingElement类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C#代码示例。

示例1: ApplyMessageSecurity

 protected virtual SecurityBindingElement ApplyMessageSecurity(SecurityBindingElement securityBindingElement)
 {
     if (securityBindingElement == null)
     {
         throw new ArgumentNullException("securityBindingElement");
     }
     
     if (TrustVersion.WSTrustFeb2005 == _trustVersion)
     {
         securityBindingElement.MessageSecurityVersion = MessageSecurityVersion.WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10;
     }
     else
     {
         securityBindingElement.MessageSecurityVersion = MessageSecurityVersion.WSSecurity11WSTrust13WSSecureConversation13WSSecurityPolicy12BasicSecurityProfile10;
     }
     
     if (_enableRsaProofKeys)
     {
         RsaSecurityTokenParameters item = new RsaSecurityTokenParameters
         {
             InclusionMode = SecurityTokenInclusionMode.Never,
             RequireDerivedKeys = false
         };
         securityBindingElement.OptionalEndpointSupportingTokenParameters.Endorsing.Add(item);
     }
     
     return securityBindingElement;
 }
开发者ID:LiyeXu,项目名称:PnP-Sites-Core,代码行数:28,代码来源:WSTrustBindingBase.cs


示例2: TryCreate

 internal static bool TryCreate(SecurityBindingElement sbe, out MessageSecurityOverMsmq messageSecurity)
 {
     MessageCredentialType none;
     messageSecurity = null;
     if (sbe == null)
     {
         return false;
     }
     SymmetricSecurityBindingElement element = sbe as SymmetricSecurityBindingElement;
     if (element == null)
     {
         return false;
     }
     if ((sbe.MessageSecurityVersion != MessageSecurityVersion.WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10) && (sbe.MessageSecurityVersion != MessageSecurityVersion.WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11))
     {
         return false;
     }
     if (element.IncludeTimestamp)
     {
         return false;
     }
     bool flag = false;
     if (SecurityBindingElement.IsAnonymousForCertificateBinding(sbe))
     {
         none = MessageCredentialType.None;
     }
     else if (SecurityBindingElement.IsUserNameForCertificateBinding(sbe))
     {
         none = MessageCredentialType.UserName;
     }
     else if (SecurityBindingElement.IsMutualCertificateBinding(sbe))
     {
         none = MessageCredentialType.Certificate;
     }
     else if (SecurityBindingElement.IsKerberosBinding(sbe))
     {
         none = MessageCredentialType.Windows;
         flag = true;
     }
     else
     {
         IssuedSecurityTokenParameters parameters;
         if (!SecurityBindingElement.IsIssuedTokenForCertificateBinding(sbe, out parameters))
         {
             return false;
         }
         if (!IssuedSecurityTokenParameters.IsInfoCardParameters(parameters, new SecurityStandardsManager(sbe.MessageSecurityVersion, new WSSecurityTokenSerializer(sbe.MessageSecurityVersion.SecurityVersion, sbe.MessageSecurityVersion.TrustVersion, sbe.MessageSecurityVersion.SecureConversationVersion, true, null, null, null))))
         {
             return false;
         }
         none = MessageCredentialType.IssuedToken;
     }
     messageSecurity = new MessageSecurityOverMsmq();
     messageSecurity.ClientCredentialType = none;
     if ((none != MessageCredentialType.IssuedToken) && !flag)
     {
         messageSecurity.AlgorithmSuite = element.DefaultAlgorithmSuite;
     }
     return true;
 }
开发者ID:pritesh-mandowara-sp,项目名称:DecompliedDotNetLibraries,代码行数:60,代码来源:MessageSecurityOverMsmq.cs


示例3: TryCreate

 internal static bool TryCreate(SecurityBindingElement sbe, TransportBindingElement transport, PrivacyNoticeBindingElement privacy, ReliableSessionBindingElement rsbe, TransactionFlowBindingElement tfbe, out Binding binding)
 {
     WSFederationHttpSecurityMode mode;
     WSFederationHttpSecurity security2;
     bool isReliableSession = rsbe != null;
     binding = null;
     HttpTransportSecurity transportSecurity = new HttpTransportSecurity();
     if (!WSFederationHttpBinding.GetSecurityModeFromTransport(transport, transportSecurity, out mode))
     {
         return false;
     }
     HttpsTransportBindingElement element = transport as HttpsTransportBindingElement;
     if (((element != null) && (element.MessageSecurityVersion != null)) && (element.MessageSecurityVersion.SecurityPolicyVersion != WS2007MessageSecurityVersion.SecurityPolicyVersion))
     {
         return false;
     }
     if (TryCreateSecurity(sbe, mode, transportSecurity, isReliableSession, out security2))
     {
         binding = new WS2007FederationHttpBinding(security2, privacy, isReliableSession);
     }
     if ((rsbe != null) && (rsbe.ReliableMessagingVersion != ReliableMessagingVersion.WSReliableMessaging11))
     {
         return false;
     }
     if ((tfbe != null) && (tfbe.TransactionProtocol != TransactionProtocol.WSAtomicTransaction11))
     {
         return false;
     }
     return (binding != null);
 }
开发者ID:pritesh-mandowara-sp,项目名称:DecompliedDotNetLibraries,代码行数:30,代码来源:WS2007FederationHttpBinding.cs


示例4: SpnegoTokenProvider

 public SpnegoTokenProvider(System.IdentityModel.SafeFreeCredentials credentialsHandle, SecurityBindingElement securityBindingElement) : base(securityBindingElement)
 {
     this.allowedImpersonationLevel = TokenImpersonationLevel.Identification;
     this.identityVerifier = System.ServiceModel.Security.IdentityVerifier.CreateDefault();
     this.allowNtlm = true;
     this.authenticateServer = true;
     this.interactiveNegoExLogonEnabled = true;
     this.credentialsHandle = credentialsHandle;
 }
开发者ID:pritesh-mandowara-sp,项目名称:DecompliedDotNetLibraries,代码行数:9,代码来源:SpnegoTokenProvider.cs


示例5: Initialize

        private void Initialize()
        {
            _securityBindingElement = CreateSecurityBindingElement();

            _textEncodingBindingElement = CreateTextEncodingBindingElement();

            //_httpsTransportBindingElement = CreateHttpsTransportBindingElement();
            _httpTransportBindingElement = CreateHttpTransportBindingElement();
        }
开发者ID:gtkrug,项目名称:gfipm-ws-ms.net,代码行数:9,代码来源:IdpStsCustomSecuredBinding.cs


示例6: Initialize

        private void Initialize()
        {
            _securityBindingElement = CreateSecurityBindingElement();

            _reliableSessionBindingElement = CreateReliableSessionBindingElement();

            _mtomEncodingBindingElement = CreateMtomEncodingBindingElement();

            _httpsTransportBindingElement = CreateHttpsTransportBindingElement() as HttpsTransportBindingElement;
        }
开发者ID:gtkrug,项目名称:gfipm-ws-ms.net,代码行数:10,代码来源:WspCustomSecuredBinding.cs


示例7: SecureConversationSecurityTokenParameters

        protected SecureConversationSecurityTokenParameters(SecureConversationSecurityTokenParameters other)
            : base(other)
        {
            _requireCancellation = other._requireCancellation;
            _canRenewSession = other._canRenewSession;
            if (other._bootstrapSecurityBindingElement != null)
                _bootstrapSecurityBindingElement = (SecurityBindingElement)other._bootstrapSecurityBindingElement.Clone();

            if (other._issuerBindingContext != null)
                _issuerBindingContext = other._issuerBindingContext.Clone();
        }
开发者ID:weshaggard,项目名称:wcf,代码行数:11,代码来源:SecureConversationSecurityTokenParameters.cs


示例8: SecureConversationSecurityTokenParameters

 protected SecureConversationSecurityTokenParameters(SecureConversationSecurityTokenParameters other)
     : base(other)
 {
     this.requireCancellation = other.requireCancellation;
     this.canRenewSession = other.canRenewSession;
     if (other.bootstrapSecurityBindingElement != null)
         this.bootstrapSecurityBindingElement = (SecurityBindingElement)other.bootstrapSecurityBindingElement.Clone();
     if (other.bootstrapProtectionRequirements != null)
         this.bootstrapProtectionRequirements = new ChannelProtectionRequirements(other.bootstrapProtectionRequirements);
     if (other.issuerBindingContext != null)
         this.issuerBindingContext = other.issuerBindingContext.Clone();
 }
开发者ID:iskiselev,项目名称:JSIL.NetFramework,代码行数:12,代码来源:SecureConversationSecurityTokenParameters.cs


示例9: SecureConversationSecurityTokenParameters

		public SecureConversationSecurityTokenParameters (
			SecurityBindingElement element,
			bool requireCancellation,
			ChannelProtectionRequirements requirements)
		{
			this.element = element;
			this.cancellable = requireCancellation;
			if (requirements == null)
				this.requirements = new ChannelProtectionRequirements (default_channel_protection_requirements);
			else
				this.requirements = new ChannelProtectionRequirements (requirements);
		}
开发者ID:calumjiao,项目名称:Mono-Class-Libraries,代码行数:12,代码来源:SecureConversationSecurityTokenParameters.cs


示例10: EnumerateNestedTokenParameters

 static IEnumerable<SecurityTokenParameters> EnumerateNestedTokenParameters(SecurityBindingElement element)
 {
     foreach (SecurityTokenParameters parameters in EnumerateTokenParameters(element))
     {
         if (parameters is SecureConversationSecurityTokenParameters)
         {
             SecurityBindingElement nestedElement = ((SecureConversationSecurityTokenParameters)parameters).BootstrapSecurityBindingElement;
             foreach (SecurityTokenParameters nestedParameters in EnumerateTokenParameters(nestedElement))
             {
                 yield return nestedParameters;
             }
         }
     }
 }
开发者ID:tian1ll1,项目名称:WPF_Examples,代码行数:14,代码来源:InternetClientValidatorBehavior.cs


示例11: TryCreate

        // This is effectively just a copy of WSHttpBinding.TryCreate(), only it news up the 2007 version
        internal new static bool TryCreate(SecurityBindingElement sbe, TransportBindingElement transport, ReliableSessionBindingElement rsbe, TransactionFlowBindingElement tfbe, out Binding binding)
        {
            bool isReliableSession = (rsbe != null);
            binding = null;

            // reverse GetTransport
            HttpTransportSecurity transportSecurity = WSHttpSecurity.GetDefaultHttpTransportSecurity();
            UnifiedSecurityMode mode;
            if (!WSHttpBinding.GetSecurityModeFromTransport(transport, transportSecurity, out mode))
            {
                return false;
            }

            HttpsTransportBindingElement httpsBinding = transport as HttpsTransportBindingElement;
            if (httpsBinding != null && httpsBinding.MessageSecurityVersion != null)
            {
                if (httpsBinding.MessageSecurityVersion.SecurityPolicyVersion != WS2007MessageSecurityVersion.SecurityPolicyVersion)
                {
                    return false;
                }
            }

            WSHttpSecurity security;
            if (WS2007HttpBinding.TryCreateSecurity(sbe, mode, transportSecurity, isReliableSession, out security))
            {
                WS2007HttpBinding ws2007HttpBinding = new WS2007HttpBinding(security, isReliableSession);

                bool allowCookies;
                if (!WSHttpBinding.TryGetAllowCookiesFromTransport(transport, out allowCookies))
                {
                    return false;
                }

                ws2007HttpBinding.AllowCookies = allowCookies;
                binding = ws2007HttpBinding;
            }

            if (rsbe != null && rsbe.ReliableMessagingVersion != ReliableMessagingVersion.WSReliableMessaging11)
            {
                return false;
            }

            if (tfbe != null && tfbe.TransactionProtocol != TransactionProtocol.WSAtomicTransaction11)
            {
                return false;
            }

            return binding != null;
        }
开发者ID:nlh774,项目名称:DotNetReferenceSource,代码行数:50,代码来源:WS2007HttpBinding.cs


示例12: TryCreate

 internal static bool TryCreate(SecurityBindingElement sbe, NetMsmqSecurityMode mode, out NetMsmqSecurity security)
 {
     MessageSecurityOverMsmq msmq;
     security = null;
     if (!MessageSecurityOverMsmq.TryCreate(sbe, out msmq))
     {
         msmq = null;
     }
     security = new NetMsmqSecurity(mode, null, msmq);
     if (sbe != null)
     {
         return SecurityElementBase.AreBindingsMatching(security.CreateMessageSecurity(), sbe, false);
     }
     return true;
 }
开发者ID:pritesh-mandowara-sp,项目名称:DecompliedDotNetLibraries,代码行数:15,代码来源:NetMsmqSecurity.cs


示例13: HasSupportingTokens

 private static bool HasSupportingTokens(SecurityBindingElement binding)
 {
     if (((binding.EndpointSupportingTokenParameters.Endorsing.Count > 0) || (binding.EndpointSupportingTokenParameters.SignedEndorsing.Count > 0)) || ((binding.EndpointSupportingTokenParameters.SignedEncrypted.Count > 0) || (binding.EndpointSupportingTokenParameters.Signed.Count > 0)))
     {
         return true;
     }
     foreach (SupportingTokenParameters parameters in binding.OperationSupportingTokenParameters.Values)
     {
         if (((parameters.Endorsing.Count > 0) || (parameters.SignedEndorsing.Count > 0)) || ((parameters.SignedEncrypted.Count > 0) || (parameters.Signed.Count > 0)))
         {
             return true;
         }
     }
     return false;
 }
开发者ID:pritesh-mandowara-sp,项目名称:DecompliedDotNetLibraries,代码行数:15,代码来源:SecurityBindingElementImporter.cs


示例14: TryCreate

 internal static bool TryCreate(SecurityBindingElement sbe, out WSDualHttpSecurity security)
 {
     security = null;
     if (sbe == null)
         security = new WSDualHttpSecurity(WSDualHttpSecurityMode.None, null);
     else
     {
         MessageSecurityOverHttp messageSecurity;
         if (!MessageSecurityOverHttp.TryCreate(sbe, false, true, out messageSecurity))
             return false;
         security = new WSDualHttpSecurity(WSDualHttpSecurityMode.Message, messageSecurity);
     }
     // the last check: make sure that security binding element match the incoming security
     return SecurityElement.AreBindingsMatching(security.CreateMessageSecurity(), sbe);
 }
开发者ID:nlh774,项目名称:DotNetReferenceSource,代码行数:15,代码来源:WSDualHttpSecurity.cs


示例15: ImportOperationScopeSupportingTokensPolicy

        void ImportOperationScopeSupportingTokensPolicy(MetadataImporter importer, PolicyConversionContext policyContext, SecurityBindingElement binding)
        {
            foreach (OperationDescription operation in policyContext.Contract.Operations)
            {
                string requestAction = null;
                foreach (MessageDescription message in operation.Messages)
                {
                    if (message.Direction == MessageDirection.Input)
                    {
                        requestAction = message.Action;
                        break;
                    }
                }

                SupportingTokenParameters requirements = new SupportingTokenParameters();
                SupportingTokenParameters optionalRequirements = new SupportingTokenParameters();
                ICollection<XmlElement> operationBindingAssertions = policyContext.GetOperationBindingAssertions(operation);
                this.ImportSupportingTokenAssertions(importer, policyContext, operationBindingAssertions, requirements, optionalRequirements);
                if (requirements.Endorsing.Count > 0
                    || requirements.Signed.Count > 0
                    || requirements.SignedEncrypted.Count > 0
                    || requirements.SignedEndorsing.Count > 0)
                {
                    if (requestAction != null)
                    {
                        binding.OperationSupportingTokenParameters[requestAction] = requirements;
                    }
                    else
                    {
                        throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.CannotImportSupportingTokensForOperationWithoutRequestAction)));
                    }
                }
                if (optionalRequirements.Endorsing.Count > 0
                    || optionalRequirements.Signed.Count > 0
                    || optionalRequirements.SignedEncrypted.Count > 0
                    || optionalRequirements.SignedEndorsing.Count > 0)
                {
                    if (requestAction != null)
                    {
                        binding.OptionalOperationSupportingTokenParameters[requestAction] = optionalRequirements;
                    }
                    else
                    {
                        throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.CannotImportSupportingTokensForOperationWithoutRequestAction)));
                    }
                }
            }
        }
开发者ID:iskiselev,项目名称:JSIL.NetFramework,代码行数:48,代码来源:SecurityBindingElementImporter.cs


示例16: TryCreate

 internal static bool TryCreate(SecurityBindingElement sbe, out BasicHttpMessageSecurity security, out bool isSecureTransportMode)
 {
     BasicHttpMessageCredentialType userName;
     security = null;
     isSecureTransportMode = false;
     if (!sbe.DoNotEmitTrust)
     {
         return false;
     }
     if (!sbe.IsSetKeyDerivation(false))
     {
         return false;
     }
     if (sbe.SecurityHeaderLayout != SecurityHeaderLayout.Lax)
     {
         return false;
     }
     if (sbe.MessageSecurityVersion != MessageSecurityVersion.WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10)
     {
         return false;
     }
     if (!SecurityBindingElement.IsMutualCertificateBinding(sbe, true))
     {
         isSecureTransportMode = true;
         if (!SecurityBindingElement.IsCertificateOverTransportBinding(sbe))
         {
             if (!SecurityBindingElement.IsUserNameOverTransportBinding(sbe))
             {
                 return false;
             }
             userName = BasicHttpMessageCredentialType.UserName;
         }
         else
         {
             userName = BasicHttpMessageCredentialType.Certificate;
         }
     }
     else
     {
         userName = BasicHttpMessageCredentialType.Certificate;
     }
     security = new BasicHttpMessageSecurity();
     security.ClientCredentialType = userName;
     security.AlgorithmSuite = sbe.DefaultAlgorithmSuite;
     return true;
 }
开发者ID:pritesh-mandowara-sp,项目名称:DecompliedDotNetLibraries,代码行数:46,代码来源:BasicHttpMessageSecurity.cs


示例17: TryCreate

 internal static bool TryCreate(SecurityBindingElement wsSecurity, SecurityMode mode, bool isReliableSessionEnabled, BindingElement transportSecurity, TcpTransportSecurity tcpTransportSecurity, out NetTcpSecurity security)
 {
     security = null;
     MessageSecurityOverTcp messageSecurity = null;
     if (mode == SecurityMode.Message)
     {
         if (!MessageSecurityOverTcp.TryCreate(wsSecurity, isReliableSessionEnabled, null, out messageSecurity))
         {
             return false;
         }
     }
     else if ((mode == SecurityMode.TransportWithMessageCredential) && !MessageSecurityOverTcp.TryCreate(wsSecurity, isReliableSessionEnabled, transportSecurity, out messageSecurity))
     {
         return false;
     }
     security = new NetTcpSecurity(mode, tcpTransportSecurity, messageSecurity);
     return SecurityElementBase.AreBindingsMatching(security.CreateMessageSecurity(isReliableSessionEnabled), wsSecurity, false);
 }
开发者ID:pritesh-mandowara-sp,项目名称:DecompliedDotNetLibraries,代码行数:18,代码来源:NetTcpSecurity.cs


示例18: TryCreate

 internal static bool TryCreate(SecurityBindingElement sbe, out WSDualHttpSecurity security)
 {
     security = null;
     if (sbe == null)
     {
         security = new WSDualHttpSecurity(WSDualHttpSecurityMode.None, null);
     }
     else
     {
         MessageSecurityOverHttp http;
         if (!MessageSecurityOverHttp.TryCreate<MessageSecurityOverHttp>(sbe, false, true, out http))
         {
             return false;
         }
         security = new WSDualHttpSecurity(WSDualHttpSecurityMode.Message, http);
     }
     return SecurityElementBase.AreBindingsMatching(security.CreateMessageSecurity(), sbe);
 }
开发者ID:pritesh-mandowara-sp,项目名称:DecompliedDotNetLibraries,代码行数:18,代码来源:WSDualHttpSecurity.cs


示例19: TryCreate

 internal static bool TryCreate(SecurityBindingElement sbe, WSFederationHttpSecurityMode mode, HttpTransportSecurity transportSecurity, bool isReliableSessionEnabled, MessageSecurityVersion version, out WSFederationHttpSecurity security)
 {
     security = null;
     FederatedMessageSecurityOverHttp messageSecurity = null;
     if (sbe == null)
     {
         mode = WSFederationHttpSecurityMode.None;
     }
     else
     {
         mode &= WSFederationHttpSecurityMode.TransportWithMessageCredential | WSFederationHttpSecurityMode.Message;
         if (!FederatedMessageSecurityOverHttp.TryCreate(sbe, mode == WSFederationHttpSecurityMode.TransportWithMessageCredential, isReliableSessionEnabled, version, out messageSecurity))
         {
             return false;
         }
     }
     security = new WSFederationHttpSecurity(mode, messageSecurity);
     return true;
 }
开发者ID:pritesh-mandowara-sp,项目名称:DecompliedDotNetLibraries,代码行数:19,代码来源:WSFederationHttpSecurity.cs


示例20: ImportEndpointScopeMessageBindingAssertions

 private void ImportEndpointScopeMessageBindingAssertions(MetadataImporter importer, PolicyConversionContext policyContext, SecurityBindingElement binding)
 {
     XmlElement assertion = null;
     WSSecurityPolicy policy;
     this.ImportSupportingTokenAssertions(importer, policyContext, policyContext.GetBindingAssertions(), binding.EndpointSupportingTokenParameters, binding.OptionalEndpointSupportingTokenParameters);
     if (WSSecurityPolicy.TryGetSecurityPolicyDriver(policyContext.GetBindingAssertions(), out policy))
     {
         if (!policy.TryImportWsspWssAssertion(importer, policyContext.GetBindingAssertions(), binding, out assertion) && (assertion != null))
         {
             throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(System.ServiceModel.SR.GetString("UnsupportedSecurityPolicyAssertion", new object[] { assertion.OuterXml })));
         }
         if (!policy.TryImportWsspTrustAssertion(importer, policyContext.GetBindingAssertions(), binding, out assertion) && (assertion != null))
         {
             throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(System.ServiceModel.SR.GetString("UnsupportedSecurityPolicyAssertion", new object[] { assertion.OuterXml })));
         }
     }
     if (assertion == null)
     {
         binding.DoNotEmitTrust = true;
     }
 }
开发者ID:pritesh-mandowara-sp,项目名称:DecompliedDotNetLibraries,代码行数:21,代码来源:SecurityBindingElementImporter.cs



注:本文中的SecurityBindingElement类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C# SecurityBuffer类代码示例发布时间:2022-05-24
下一篇:
C# SecurityAction类代码示例发布时间:2022-05-24
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap