jmuehlner commented on code in PR #1029: URL: https://github.com/apache/guacamole-client/pull/1029#discussion_r1802099167
########## extensions/guacamole-auth-restrict/src/main/java/org/apache/guacamole/auth/restrict/RestrictionVerificationService.java: ########## @@ -54,6 +54,67 @@ public class RestrictionVerificationService { */ private static final Logger LOGGER = LoggerFactory.getLogger(RestrictionVerificationService.class); + /** + * Given the provided strings of an absolute date after which an action is + * valid and before which an action is valid, parse the strings into Date + * objects and determine if the current date and time falls within the + * provided window, returning the appropriate restriction type. + * + * @param afterTimeString + * The string that has the date and time value after which the activity + * is allowed. + * + * @param beforeTimeString + * The string that has the date and time value before which the activity + * is allowed. + * + * @return + * The RestrictionType that represents the allowed or denied state of + * the activity. + */ + private static RestrictionType allowedByDateTimeRestrictions( + String afterTimeString, String beforeTimeString) { + + // Set a default restriction. + RestrictionType dateTimeRestriction = RestrictionType.IMPLICIT_ALLOW; + + // Check the after string and make sure that now is after that date. + if (afterTimeString != null && !afterTimeString.isEmpty()) { + Date now = new Date(); + try { + Date afterTime = DateTimeRestrictionField.parse(afterTimeString); + if (now.before(afterTime)) + return RestrictionType.EXPLICIT_DENY; + } + catch (ParseException e) { + LOGGER.warn("Failed to parse date and time string: {}:", e.getMessage()); + LOGGER.debug("Parse exception while parsing date and time string.", e); + return RestrictionType.IMPLICIT_DENY; + } + dateTimeRestriction = RestrictionType.EXPLICIT_ALLOW; + } + + // Check the before string and make sure that now is prior to that date. + if (beforeTimeString != null && !beforeTimeString.isEmpty()) { + Date now = new Date(); + try { + Date beforeTime = DateTimeRestrictionField.parse(beforeTimeString); + if (now.after(beforeTime)) + return RestrictionType.EXPLICIT_DENY; + } + catch (ParseException e) { + LOGGER.warn("Failed to parse date and time string: {}:", e.getMessage()); + LOGGER.debug("Parse exception while parsing date and time string.", e); + return RestrictionType.IMPLICIT_DENY; + } + dateTimeRestriction = RestrictionType.EXPLICIT_ALLOW; + + } + + // No restrictions present, so we allow the connection. Review Comment: This isn't connection-specific at this level, is it? -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: dev-unsubscr...@guacamole.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org