Exemple #1
0
        public async Task <AkismetResponse> IsSpam(HttpRequest req, Comment comment, FormContents formContents)
        {
            var userAgent = req.Headers["User-Agent"];
            var blog      = new Uri(_settings.AkismetBlogUrl);

            using (var akismetClient = new AkismetClient(_settings.AkismetApiKey, blog, userAgent))
            {
                var akismetResult = await akismetClient.IsSpam2(new AkismetComment
                {
                    Blog               = blog,
                    CommentAuthor      = comment.Name,
                    CommentAuthorEmail = formContents.Fields.Email,
                    CommentContent     = comment.Body,
                    CommentType        = "comment", // https://akismet.com/development/api/#comment-check
                    Permalink          = formContents.Options.Origin,
                    Referrer           = req.Headers["Referer"],
                    UserAgent          = userAgent,
                    UserIp             = req.HttpContext.Connection.RemoteIpAddress.ToString()
                });

                var response = new AkismetResponse
                {
                    IsSpam    = akismetResult.IsSpam,
                    Text      = akismetResult.Text,
                    ProTip    = akismetResult.ProTip,
                    DebugHelp = akismetResult.DebugHelp
                };

                _log.LogDebug("Akismet result: {0}", response);

                return(response);
            }
        }
Exemple #2
0
        private void CheckAkismet(AkismetResponse akismetResponse, StringBuilder reasonForModeration)
        {
            if (akismetResponse.IsSpam)
            {
                reasonForModeration.AppendLine("Akismet says it's spam");
            }

            if (string.Compare(akismetResponse.ProTip, "discard", StringComparison.InvariantCultureIgnoreCase) == 0)
            {
                reasonForModeration.AppendLine("Akismet pro-tip is 'discard'");
            }
        }
Exemple #3
0
        public ModerationAnalysisReport NeedsModeration(Comment comment, RecaptchaResponse recaptchaResponse, AkismetResponse akismetResponse, KnownCommenterResponse knownCommenterResponse)
        {
            var reasonForModeration = new StringBuilder();

            CheckReCaptcha(recaptchaResponse, reasonForModeration);
            CheckAkismet(akismetResponse, reasonForModeration);
            CheckKnownCommenter(knownCommenterResponse, reasonForModeration);

            if (reasonForModeration.Length > 0)
            {
                _log.LogInformation("Comment needs moderation because: {0}", reasonForModeration.ToString());
            }
            else
            {
                _log.LogInformation("Comment does not need moderation");
            }

            return(new ModerationAnalysisReport
            {
                NeedsModeration = reasonForModeration.Length > 0,
                ReasonForModeration = reasonForModeration.ToString()
            });
        }