コード例 #1
0
        public IActionResult Show(string data)
        {
            if (string.IsNullOrWhiteSpace(data))
            {
                return(BadRequest());
            }

            var decryptedModel = _captchaProtectionProvider.Decrypt(data);

            if (decryptedModel == null)
            {
                return(BadRequest());
            }

            var model = _serializationProvider.Deserialize <CaptchaImageParams>(decryptedModel);

            if (model == null)
            {
                return(BadRequest());
            }

            var decryptedText = _captchaProtectionProvider.Decrypt(model.Text);

            if (decryptedText == null)
            {
                return(BadRequest());
            }

            var image = model.UseNoise ?
                        _captchaImageProvider.DrawCaptcha(decryptedText, model.ForeColor, model.FontSize, model.FontName) :
                        _captchaImageProvider.DrawCaptcha(decryptedText, model.ForeColor, model.BackColor, model.FontSize, model.FontName);

            return(new FileContentResult(image, "image/png"));
        }
コード例 #2
0
        public IActionResult Show(string text, string rndDate, string foreColor = "#1B0172",
                                  string backColor = "", float fontSize = 12, string fontName = "Tahoma")
        {
            if (string.IsNullOrWhiteSpace(text))
            {
                return(BadRequest());
            }

            if (isImageHotlinking())
            {
                return(BadRequest());
            }

            var decryptedText = _captchaProtectionProvider.Decrypt(text);

            if (decryptedText == null)
            {
                return(BadRequest());
            }

            byte[] image;
            try
            {
                image = _captchaImageProvider.DrawCaptcha(decryptedText, foreColor, backColor, fontSize, fontName);
            }
            catch (Exception ex)
            {
                _logger.LogCritical(1001, ex, "DrawCaptcha error.");
                return(BadRequest(ex.Message));
            }
            return(new FileContentResult(_captchaImageProvider.DrawCaptcha(decryptedText, foreColor, backColor, fontSize, fontName), "image/png"));
        }
コード例 #3
0
        public IActionResult Show(string data)
        {
            if (string.IsNullOrWhiteSpace(data))
            {
                return(BadRequest());
            }

            var decryptedModel = _captchaProtectionProvider.Decrypt(data);

            if (decryptedModel == null)
            {
                return(BadRequest());
            }

            var model = _serializationProvider.Deserialize <CaptchaImageParams>(decryptedModel);

            if (model == null)
            {
                return(BadRequest());
            }

            var decryptedText = _captchaProtectionProvider.Decrypt(model.Text);

            if (decryptedText == null)
            {
                return(BadRequest());
            }

            byte[] image;
            try
            {
                if (model.UseNoise)
                {
                    image = _captchaImageProvider.DrawCaptcha(decryptedText, model.ForeColor, model.FontSize, model.FontName);
                }
                else
                {
                    image = _captchaImageProvider.DrawCaptcha(decryptedText, model.ForeColor, model.BackColor, model.FontSize, model.FontName);
                }
            }
            catch (Exception ex)
            {
                _logger.LogCritical(1001, ex, "DrawCaptcha error.");
                return(BadRequest(ex.Message));
            }
            return(new FileContentResult(image, "image/png"));
        }
コード例 #4
0
        public IActionResult Show(string data)
        {
            try
            {
                if (string.IsNullOrWhiteSpace(data))
                {
                    return(BadRequest());
                }

                var decryptedModel = _captchaProtectionProvider.Decrypt(data);
                if (decryptedModel == null)
                {
                    return(BadRequest());
                }

                var model = _serializationProvider.Deserialize <CaptchaImageParams>(decryptedModel);
                if (model == null)
                {
                    return(BadRequest());
                }

                var decryptedText = _captchaProtectionProvider.Decrypt(model.Text);
                if (decryptedText == null)
                {
                    return(BadRequest());
                }

                var image = model.UseNoise ?
                            _captchaImageProvider.DrawCaptcha(decryptedText, model.ForeColor, model.FontSize, model.FontName) :
                            _captchaImageProvider.DrawCaptcha(decryptedText, model.ForeColor, model.BackColor, model.FontSize, model.FontName);
                return(new FileContentResult(image, "image/png"));
            }
#pragma warning disable CA1031 // Do not catch general exception types
            catch (Exception ex)
#pragma warning restore CA1031 // Do not catch general exception types
            {
                return(BadRequest(ex));
            }
        }
コード例 #5
0
        public IActionResult Show(string data)
        {
            try
            {
                if (string.IsNullOrWhiteSpace(data))
                {
                    return(BadRequest("The data is null or empty."));
                }

                var decryptedModel = _captchaProtectionProvider.Decrypt(data);
                if (decryptedModel == null)
                {
                    return(BadRequest("Couldn't decrypt the data."));
                }

                var model = _serializationProvider.Deserialize <CaptchaImageParams>(decryptedModel);
                if (model == null)
                {
                    return(BadRequest("Couldn't deserialize the model."));
                }

                var decryptedText = _captchaProtectionProvider.Decrypt(model.Text);
                if (decryptedText == null)
                {
                    return(BadRequest("Couldn't decrypt the text."));
                }

                var image = model.UseNoise ?
                            _captchaImageProvider.DrawCaptcha(decryptedText, model.ForeColor, model.FontSize, model.FontName) :
                            _captchaImageProvider.DrawCaptcha(decryptedText, model.ForeColor, model.BackColor, model.FontSize, model.FontName);
                return(new FileContentResult(image, "image/png"));
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "Failed to show the captcha image.");
                return(BadRequest(ex.ToString()));
            }
        }
コード例 #6
0
        private Task DrawImageAsync(HttpContext httpContext, string text, string rndDate, string foreColor = "#1B0172", string backColor = "", float fontSize = 12, string fontName = "Tahoma")
        {
            if (string.IsNullOrWhiteSpace(text))
            {
                httpContext.Response.StatusCode = 400;
                return(Task.CompletedTask);
            }

            var decryptedText = _captchaProtectionProvider.Decrypt(text);

            if (decryptedText == null)
            {
                httpContext.Response.StatusCode = 400;
                return(Task.CompletedTask);
            }

            byte[] image;
            try
            {
                image = _captchaImageProvider.DrawCaptcha(decryptedText, foreColor, backColor, fontSize, fontName);
            }
            catch (Exception ex)
            {
                _logger.LogCritical(1001, ex, "DrawCaptcha error.");
                httpContext.Response.StatusCode = 400;
                return(Task.CompletedTask);
            }
            FileContentResult result   = new FileContentResult(_captchaImageProvider.DrawCaptcha(decryptedText, foreColor, backColor, fontSize, fontName), "image/png");
            HttpResponse      response = httpContext.Response;

            response.ContentType = result.ContentType;
            int length = result.FileContents.Length;

            response.ContentLength = length;
            response.StatusCode    = 200;
            return(response.Body.WriteAsync(result.FileContents, 0, length));
        }
コード例 #7
0
        public byte[] GeneratorCaptcha(string name, int captchaLength, bool hasNumber, bool haslower, bool hasUpper, int imageWidth, int imageHeight, float fontSize)
        {
            var text = _captchaCodeGenerator.OutputText(haslower, hasUpper, hasNumber, captchaLength);

            if (_captchaOptions.Enable)
            {
                _captchaStorageProvider.Add(_httpContextAccessor.HttpContext, name, text);
            }
            byte[] image = null;
            try
            {
                image = _captchaImageProvider.DrawCaptcha(text, fontSize, imageWidth, imageHeight);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(image);
        }
コード例 #8
0
        public IActionResult Show(string text, string rndDate, string foreColor = "#1B0172",
                                  string backColor = "", float fontSize = 12, string fontName = "Tahoma")
        {
            if (string.IsNullOrWhiteSpace(text))
            {
                return(BadRequest());
            }

            if (isImageHotlinking())
            {
                return(BadRequest());
            }

            var decryptedText = _captchaProtectionProvider.Decrypt(text);

            if (decryptedText == null)
            {
                return(BadRequest());
            }

            return(new FileContentResult(
                       _captchaImageProvider.DrawCaptcha(decryptedText, foreColor, backColor, fontSize, fontName),
                       "image/png"));
        }