summaryrefslogtreecommitdiff
path: root/app/services/spam
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2021-05-07 21:10:34 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2021-05-07 21:10:34 +0000
commit96135034f442825a54cea2812192133d376fbc4b (patch)
tree3cef559fb406d6ea1dda2dc0d315c9e4c71c23d6 /app/services/spam
parent1572e2a376c0315a0b910bb06e2f2d08cae43adb (diff)
downloadgitlab-ce-96135034f442825a54cea2812192133d376fbc4b.tar.gz
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/services/spam')
-rw-r--r--app/services/spam/spam_verdict_service.rb23
1 files changed, 16 insertions, 7 deletions
diff --git a/app/services/spam/spam_verdict_service.rb b/app/services/spam/spam_verdict_service.rb
index 8dbc590314c..32e58fcc06b 100644
--- a/app/services/spam/spam_verdict_service.rb
+++ b/app/services/spam/spam_verdict_service.rb
@@ -15,11 +15,17 @@ module Spam
def execute
spamcheck_result = nil
+ spamcheck_attribs = {}
external_spam_check_round_trip_time = Benchmark.realtime do
- spamcheck_result = spamcheck_verdict
+ spamcheck_result, spamcheck_attribs = spamcheck_verdict
end
+ # assign result to a var and log it before reassigning to nil when monitorMode is true
+ original_spamcheck_result = spamcheck_result
+
+ spamcheck_result = nil if spamcheck_attribs&.fetch("monitorMode", "false") == "true"
+
akismet_result = akismet_verdict
# filter out anything we don't recognise, including nils.
@@ -33,7 +39,8 @@ module Spam
logger.info(class: self.class.name,
akismet_verdict: akismet_verdict,
- spam_check_verdict: spamcheck_result,
+ spam_check_verdict: original_spamcheck_result,
+ extra_attributes: spamcheck_attribs,
spam_check_rtt: external_spam_check_round_trip_time.real,
final_verdict: final_verdict,
username: user.username,
@@ -61,21 +68,23 @@ module Spam
return unless Gitlab::CurrentSettings.spam_check_endpoint_enabled
begin
- result, _error = spamcheck_client.issue_spam?(spam_issue: target, user: user, context: context)
- return unless result
+ result, attribs, _error = spamcheck_client.issue_spam?(spam_issue: target, user: user, context: context)
+ return [nil, attribs] unless result
# @TODO log if error is not nil https://gitlab.com/gitlab-org/gitlab/-/issues/329545
+ return [result, attribs] if result == NOOP || attribs["monitorMode"] == "true"
+
# Duplicate logic with Akismet logic in #akismet_verdict
if Gitlab::Recaptcha.enabled? && result != ALLOW
- CONDITIONAL_ALLOW
+ [CONDITIONAL_ALLOW, attribs]
else
- result
+ [result, attribs]
end
rescue StandardError => e
Gitlab::ErrorTracking.log_exception(e)
# Default to ALLOW if any errors occur
- ALLOW
+ [ALLOW, attribs]
end
end