Пример #1
0
        /// <summary>
        /// Sets the request context for the thread.
        /// </summary>
        /// <param name="encoding">The encoding.</param>
        protected void SetRequestContext(RequestEncoding encoding)
        {
            // fetch the current operation context.
            OperationContext context = OperationContext.Current;

            if (context != null)
            {
                int firstRequestReceived = Interlocked.CompareExchange(ref m_firstRequestReceived, 1, 0);

                if (firstRequestReceived == 0 && context.Channel != null &&
                    !String.IsNullOrEmpty(context.Channel.SessionId))
                {
                    Opc.Ua.Security.Audit.SecureChannelCreated(
                        g_ImplementationString,
                        context.Channel.LocalAddress.Uri.ToString(),
                        context.Channel.SessionId,
                        m_endpointDescription,
                        context.Host.Credentials.ClientCertificate.Certificate,
                        context.Host.Credentials.ServiceCertificate.Certificate,
                        (encoding == RequestEncoding.Binary)
                            ? BinaryEncodingSupport.Required
                            : BinaryEncodingSupport.None);
                }

                SecureChannelContext requestContext = new SecureChannelContext(
                    context.Channel.SessionId,
                    m_endpointDescription,
                    encoding);

                SecureChannelContext.Current = requestContext;
            }
        }
Пример #2
0
 public TestCase(string name, string description, string httpRequest, string queryParams = "", RequestEncoding encoding = RequestEncoding.ASCII, bool https = true)
 {
     Name        = name;
     Description = description;
     HttpRequest = httpRequest;
     QueryParams = queryParams;
     Encoding    = encoding;
     Https       = https;
 }
Пример #3
0
 /// <summary>
 /// Initializes a new instance with the specified property values.
 /// </summary>
 /// <param name="secureChannelId">The secure channel identifier.</param>
 /// <param name="endpointDescription">The endpoint description.</param>
 /// <param name="messageEncoding">The message encoding.</param>
 public SecureChannelContext(
     string              secureChannelId,
     EndpointDescription endpointDescription,
     RequestEncoding     messageEncoding)
 {        
     m_secureChannelId     = secureChannelId;
     m_endpointDescription = endpointDescription;
     m_messageEncoding     = messageEncoding;
 }
Пример #4
0
 /// <summary>
 /// Initializes a new instance with the specified property values.
 /// </summary>
 /// <param name="secureChannelId">The secure channel identifier.</param>
 /// <param name="endpointDescription">The endpoint description.</param>
 /// <param name="messageEncoding">The message encoding.</param>
 public SecureChannelContext(
     string secureChannelId,
     EndpointDescription endpointDescription,
     RequestEncoding messageEncoding)
 {
     m_secureChannelId     = secureChannelId;
     m_endpointDescription = endpointDescription;
     m_messageEncoding     = messageEncoding;
 }
Пример #5
0
        public void TestRequestEncodingNoRepsonseSet()
        {
            var tag = new RequestEncoding();

            tag.Value = new MockAttribute(new Constant("UTF-8"));
            var model = new TagModel(this);

            Assert.That(tag.Evaluate(model), Is.EqualTo(String.Empty));
            Assert.That(model.Encoding, Is.EqualTo(Encoding.UTF8));
        }
Пример #6
0
        public void TestResponseOnMock()
        {
            var tag      = new RequestEncoding();
            var response = new MockResponse();
            var model    = new TagModel(this, new MockSessionState(), null, response);

            tag.Value = new MockAttribute(new Constant("UTF-7"));
            Assert.IsNull(response.ResponseEncoding);
            tag.Evaluate(model);
            Assert.That(response.ResponseEncoding, Is.EqualTo(Encoding.UTF7));
        }
Пример #7
0
        //WebSMS Servisi, HASH Olusturma prosedürü
        private string HashWithHmac(string message, string key)
        {
            //HMAC-SHA1 Hashlemesi kullaniyoruz.
            var keyBytes     = RequestEncoding.GetBytes(key);
            var algorithm    = new HMACSHA1(keyBytes);
            var messageBytes = RequestEncoding.GetBytes(message);

            algorithm.ComputeHash(messageBytes);

            return(ByteToString(algorithm.Hash));
        }
Пример #8
0
        public string GetRequestBodyAsString()
        {
            if (RequestLocked)
            {
                throw new Exception("You cannot call this function after request is made to server.");
            }


            ReadRequestBody();

            return(RequestBodyString ?? (RequestBodyString = RequestEncoding.GetString(RequestBody)));
        }
Пример #9
0
 public byte[] BuildSegment(string httpRequest, RequestEncoding encoding = RequestEncoding.ASCII)
 {
     return(encoding switch
     {
         RequestEncoding.ASCII => Encoding.ASCII.GetBytes(httpRequest),
         RequestEncoding.Unicode => Encoding.Unicode.GetBytes(httpRequest),
         RequestEncoding.UTF7 => Encoding.UTF7.GetBytes(httpRequest),
         RequestEncoding.UTF8 => Encoding.UTF8.GetBytes(httpRequest),
         RequestEncoding.UTF32 => Encoding.UTF32.GetBytes(httpRequest),
         RequestEncoding.BigEndianUnicode => Encoding.BigEndianUnicode.GetBytes(httpRequest),
         _ => Encoding.ASCII.GetBytes(httpRequest),
     });
Пример #10
0
 /// <summary>
 /// Initializes a new instance with the specified property values.
 /// </summary>
 /// <param name="secureChannelId">The secure channel identifier.</param>
 /// <param name="endpointDescription">The endpoint description.</param>
 /// <param name="messageEncoding">The message encoding.</param>
 public SecureChannelContext(
     string secureChannelId,
     EndpointDescription endpointDescription,
     RequestEncoding messageEncoding,
     IPAddress remoteIP,                 // HONEYPOT
     int remotePort)                     // HONEYPOT
 {
     m_secureChannelId     = secureChannelId;
     m_endpointDescription = endpointDescription;
     m_messageEncoding     = messageEncoding;
     m_remoteIP            = remoteIP;   // HONEYPOT
     m_remotePort          = remotePort; // HONEYPOT
 }
Пример #11
0
        public void SetRequestBodyString(string body)
        {
            if (RequestLocked)
            {
                throw new Exception("Youcannot call this function after request is made to server.");
            }

            if (!RequestBodyRead)
            {
                ReadRequestBody();
            }

            RequestBody     = RequestEncoding.GetBytes(body);
            RequestBodyRead = true;
        }
Пример #12
0
        public static Entry For(RequestEncoding encoding)
        {
            String encodingText = null;

            switch (encoding)
            {
            case RequestEncoding.Binary:
                encodingText = "Binary";
                break;

            case RequestEncoding.Xml:
                encodingText = "XML";
                break;
            }
            return(new StringEntry(encodingText));
        }
Пример #13
0
        public void CheckUrlRequired()
        {
            var tag = new RequestEncoding();

            try
            {
                RequiredAttribute.Check(tag);
                Assert.Fail("Expected exception");
            }
            catch (TagException Te)
            {
                Assert.That(Te.Message,
                            Is.EqualTo(TagException.MissingRequiredAttribute(typeof(RequestEncoding), "Value").Message));
            }
            tag.Value = new MockAttribute(new Constant(Encoding.ASCII.ToString()));
            RequiredAttribute.Check(tag);
        }
Пример #14
0
        /// <summary>
        /// Sets the request context for the thread.
        /// </summary>
        /// <param name="encoding">The encoding.</param>
        protected void SetRequestContext(RequestEncoding encoding)
        {
            // fetch the current operation context.
            OperationContext context = OperationContext.Current;

            if (context != null)
            {
                int firstRequestReceived = Interlocked.CompareExchange(ref m_firstRequestReceived, 1, 0);

                if (firstRequestReceived == 0 && context.Channel != null && !String.IsNullOrEmpty(context.Channel.SessionId))
                {
                    Opc.Ua.Security.Audit.SecureChannelCreated(
                        g_ImplementationString,
                        context.Channel.LocalAddress.Uri.ToString(),
                        context.Channel.SessionId,
                        m_endpointDescription,
                        context.Host.Credentials.ClientCertificate.Certificate,
                        context.Host.Credentials.ServiceCertificate.Certificate,
                        (encoding == RequestEncoding.Binary)?BinaryEncodingSupport.Required:BinaryEncodingSupport.None);
                }

                SecureChannelContext requestContext = new SecureChannelContext(
                    context.Channel.SessionId,
                    m_endpointDescription,
                    encoding);                             
                
                SecureChannelContext.Current = requestContext;
            }
        }
Пример #15
0
        public async void SendAsync(Stream stream, string httpRequest, string requestBody, RequestEncoding encoding = RequestEncoding.ASCII)
        {
            var headerBytes = BuildSegment(httpRequest, encoding);
            await stream.WriteAsync(headerBytes, 0, headerBytes.Length);

            var bodyBytes = BuildSegment(requestBody);
            await stream.WriteAsync(bodyBytes, 0, bodyBytes.Length);
        }
 /// <summary>${mapping_GetWMTSCapabilities_constructor_string_D}</summary>
 public GetWMTSCapabilities(string url, RequestEncoding encoding)
     : this()
 {
     this.Url = url;
     this.RequestEncoding = encoding;
 }
Пример #17
0
 /// <summary>
 /// Sets the request context for the thread.
 /// </summary>
 /// <param name="encoding">The encoding.</param>
 protected void SetRequestContext(RequestEncoding encoding)
 {
     // fetch the current operation context.
     OperationContext context = OperationContext.Current;
 }
Пример #18
0
 public async Task SendAsync(Stream stream, string httpRequest, RequestEncoding encoding = RequestEncoding.ASCII)
 {
     var headerBytes = BuildSegment(httpRequest, encoding);
     await stream.WriteAsync(headerBytes, 0, headerBytes.Length);
 }
Пример #19
0
 /// <summary>
 /// Sets the request context for the thread.
 /// </summary>
 /// <param name="encoding">The encoding.</param>
 protected void SetRequestContext(RequestEncoding encoding)
 {
 }
 /// <summary>
 /// Sets the request context for the thread.
 /// </summary>
 /// <param name="encoding">The encoding.</param>
 protected void SetRequestContext(RequestEncoding encoding)
 {
     // fetch the current operation context.
     OperationContext context = OperationContext.Current;
 }
Пример #21
0
        public async Task <string> HttpRequestAsync(string httpRequest, string host, bool https = true, RequestEncoding encoding = RequestEncoding.ASCII)
        {
            using var tcpClient = new System.Net.Sockets.TcpClient(host, https ? 443 : 80);

            if (https)
            {
                using SslStream stream   = new SslStream(tcpClient.GetStream());
                tcpClient.SendTimeout    = 500;
                tcpClient.ReceiveTimeout = 1000;
                await stream.AuthenticateAsClientAsync(host);
                await SendAsync(stream, httpRequest, encoding);

                var result = await ResponseAsync(stream, host);

                return(result);
            }
            else
            {
                using NetworkStream stream = tcpClient.GetStream();
                tcpClient.SendTimeout      = 500;
                tcpClient.ReceiveTimeout   = 1000;
                await SendAsync(stream, httpRequest);

                var result = await ResponseAsync(stream, host);

                return(result);
            }
        }