Add platform to metrics
This commit is contained in:
		
							parent
							
								
									7f832ad783
								
							
						
					
					
						commit
						6e2ae42dab
					
				| 
						 | 
					@ -106,12 +106,11 @@ public class AccountController {
 | 
				
			||||||
  private final Meter          rateLimitedHostMeter   = metricRegistry.meter(name(AccountController.class, "rate_limited_host"  ));
 | 
					  private final Meter          rateLimitedHostMeter   = metricRegistry.meter(name(AccountController.class, "rate_limited_host"  ));
 | 
				
			||||||
  private final Meter          rateLimitedPrefixMeter = metricRegistry.meter(name(AccountController.class, "rate_limited_prefix"));
 | 
					  private final Meter          rateLimitedPrefixMeter = metricRegistry.meter(name(AccountController.class, "rate_limited_prefix"));
 | 
				
			||||||
  private final Meter          captchaRequiredMeter   = metricRegistry.meter(name(AccountController.class, "captcha_required"   ));
 | 
					  private final Meter          captchaRequiredMeter   = metricRegistry.meter(name(AccountController.class, "captcha_required"   ));
 | 
				
			||||||
  private final Meter          captchaSuccessMeter    = metricRegistry.meter(name(AccountController.class, "captcha_success"    ));
 | 
					 | 
				
			||||||
  private final Meter          captchaFailureMeter    = metricRegistry.meter(name(AccountController.class, "captcha_failure"    ));
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  private static final String PUSH_CHALLENGE_COUNTER_NAME = name(AccountController.class, "pushChallenge");
 | 
					  private static final String PUSH_CHALLENGE_COUNTER_NAME = name(AccountController.class, "pushChallenge");
 | 
				
			||||||
  private static final String ACCOUNT_CREATE_COUNTER_NAME = name(AccountController.class, "create");
 | 
					  private static final String ACCOUNT_CREATE_COUNTER_NAME = name(AccountController.class, "create");
 | 
				
			||||||
  private static final String ACCOUNT_VERIFY_COUNTER_NAME = name(AccountController.class, "verify");
 | 
					  private static final String ACCOUNT_VERIFY_COUNTER_NAME = name(AccountController.class, "verify");
 | 
				
			||||||
 | 
					  private static final String CAPTCHA_ATTEMPT_COUNTER_NAME = name(AccountController.class, "captcha");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  private static final String TWILIO_VERIFY_ERROR_COUNTER_NAME = name(AccountController.class, "twilioVerifyError");
 | 
					  private static final String TWILIO_VERIFY_ERROR_COUNTER_NAME = name(AccountController.class, "twilioVerifyError");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -220,7 +219,8 @@ public class AccountController {
 | 
				
			||||||
    String sourceHost = ForwardedIpUtil.getMostRecentProxy(forwardedFor).orElseThrow();
 | 
					    String sourceHost = ForwardedIpUtil.getMostRecentProxy(forwardedFor).orElseThrow();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Optional<StoredVerificationCode> storedChallenge = pendingAccounts.getCodeForNumber(number);
 | 
					    Optional<StoredVerificationCode> storedChallenge = pendingAccounts.getCodeForNumber(number);
 | 
				
			||||||
    CaptchaRequirement               requirement     = requiresCaptcha(number, transport, forwardedFor, sourceHost, captcha, storedChallenge, pushChallenge);
 | 
					    CaptchaRequirement requirement = requiresCaptcha(number, transport, forwardedFor, sourceHost, captcha,
 | 
				
			||||||
 | 
					        storedChallenge, pushChallenge, userAgent);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (requirement.isCaptchaRequired()) {
 | 
					    if (requirement.isCaptchaRequired()) {
 | 
				
			||||||
      captchaRequiredMeter.mark();
 | 
					      captchaRequiredMeter.mark();
 | 
				
			||||||
| 
						 | 
					@ -677,20 +677,26 @@ public class AccountController {
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  private CaptchaRequirement requiresCaptcha(String number, String transport, String forwardedFor,
 | 
					  private CaptchaRequirement requiresCaptcha(String number, String transport, String forwardedFor,
 | 
				
			||||||
                                             String                           sourceHost,
 | 
					      String sourceHost,
 | 
				
			||||||
                                             Optional<String>                 captchaToken,
 | 
					      Optional<String> captchaToken,
 | 
				
			||||||
                                             Optional<StoredVerificationCode> storedVerificationCode,
 | 
					      Optional<StoredVerificationCode> storedVerificationCode,
 | 
				
			||||||
                                             Optional<String>                 pushChallenge)
 | 
					      Optional<String> pushChallenge,
 | 
				
			||||||
 | 
					      String userAgent)
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (captchaToken.isPresent()) {
 | 
					    if (captchaToken.isPresent()) {
 | 
				
			||||||
      boolean validToken = recaptchaClient.verify(captchaToken.get(), sourceHost);
 | 
					      boolean validToken = recaptchaClient.verify(captchaToken.get(), sourceHost);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        final List<Tag> tags = new ArrayList<>();
 | 
				
			||||||
 | 
					        tags.add(Tag.of("success", String.valueOf(validToken)));
 | 
				
			||||||
 | 
					        tags.add(UserAgentTagUtil.getPlatformTag(userAgent));
 | 
				
			||||||
 | 
					        Metrics.counter(CAPTCHA_ATTEMPT_COUNTER_NAME, tags).increment();
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (validToken) {
 | 
					      if (validToken) {
 | 
				
			||||||
        captchaSuccessMeter.mark();
 | 
					 | 
				
			||||||
        return new CaptchaRequirement(false, false);
 | 
					        return new CaptchaRequirement(false, false);
 | 
				
			||||||
      } else {
 | 
					      } else {
 | 
				
			||||||
        captchaFailureMeter.mark();
 | 
					 | 
				
			||||||
        return new CaptchaRequirement(true, false);
 | 
					        return new CaptchaRequirement(true, false);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue