From 7425299af916a5a6ab1ac2b244e2e0e4d0e99693 Mon Sep 17 00:00:00 2001 From: Maxim Valyanskiy Date: Sat, 17 Aug 2024 10:17:50 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BF=D0=BE=D1=84=D0=B8=D0=BA=D1=81=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=BF=D0=BE=D1=81=D1=82=D0=BE=D1=8F=D0=BD=D0=BD=D1=83?= =?UTF-8?q?=D1=8E=20=D0=B1=D0=BB=D0=BE=D0=BA=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D1=83=20IP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ru/org/linux/auth/BanIPController.java | 7 ++--- .../java/ru/org/linux/auth/IPBlockDao.java | 4 +-- .../ru/org/linux/spring/DelIPController.java | 26 +++++++++---------- .../ru/org/linux/auth/TorBlockUpdater.scala | 8 +++--- 4 files changed, 20 insertions(+), 25 deletions(-) diff --git a/src/main/java/ru/org/linux/auth/BanIPController.java b/src/main/java/ru/org/linux/auth/BanIPController.java index f43b44d5bc..66bc675a53 100644 --- a/src/main/java/ru/org/linux/auth/BanIPController.java +++ b/src/main/java/ru/org/linux/auth/BanIPController.java @@ -29,9 +29,7 @@ import javax.servlet.http.HttpServletRequest; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; -import java.sql.Timestamp; import java.time.OffsetDateTime; -import java.time.temporal.ChronoUnit; import java.util.Optional; @Controller @@ -42,7 +40,7 @@ public BanIPController(IPBlockDao ipBlockDao) { this.ipBlockDao = ipBlockDao; } - @RequestMapping(value="/banip.jsp", method= RequestMethod.POST) + @RequestMapping(value="/banip.jsp", method=RequestMethod.POST) public ModelAndView banIP( HttpServletRequest request, @RequestParam("ip") String ip, @@ -79,8 +77,7 @@ public ModelAndView banIP( User moderator = AuthUtil.getCurrentUser(); - ipBlockDao.blockIP(ip, moderator.getId(), reason, banTo.map(v -> new Timestamp(v.toInstant().toEpochMilli())).orElse(null), - allowPosting, captchaRequired); + ipBlockDao.blockIP(ip, moderator.getId(), reason, banTo.orElse(null), allowPosting, captchaRequired); return new ModelAndView(new RedirectView("sameip.jsp?ip=" + URLEncoder.encode(ip, StandardCharsets.UTF_8))); } diff --git a/src/main/java/ru/org/linux/auth/IPBlockDao.java b/src/main/java/ru/org/linux/auth/IPBlockDao.java index 71d8b6dbfa..7df7db2fd5 100644 --- a/src/main/java/ru/org/linux/auth/IPBlockDao.java +++ b/src/main/java/ru/org/linux/auth/IPBlockDao.java @@ -22,7 +22,7 @@ import javax.annotation.Nullable; import javax.sql.DataSource; -import java.sql.Timestamp; +import java.time.OffsetDateTime; import java.util.List; @Repository @@ -57,7 +57,7 @@ public static void checkBlockIP(IPBlockInfo block, Errors errors, @Nullable User } } - public void blockIP(String ip, int moderatorId, String reason, @Nullable Timestamp banUntil, + public void blockIP(String ip, int moderatorId, String reason, @Nullable OffsetDateTime banUntil, boolean allowPosting, boolean captchaRequired) { IPBlockInfo blockInfo = getBlockInfo(ip); diff --git a/src/main/java/ru/org/linux/spring/DelIPController.java b/src/main/java/ru/org/linux/spring/DelIPController.java index 6c6eb97f37..9a3fad8291 100644 --- a/src/main/java/ru/org/linux/spring/DelIPController.java +++ b/src/main/java/ru/org/linux/spring/DelIPController.java @@ -78,15 +78,6 @@ public ModelAndView delIp(@RequestParam("reason") String reason, default -> throw new UserErrorException("Invalid count"); }; - Optional banTo = switch (banTime) { - case "hour" -> Optional.of(OffsetDateTime.now().plusHours(1)); - case "day" -> Optional.of(OffsetDateTime.now().plusDays(1)); - case "month" -> Optional.of(OffsetDateTime.now().plusMonths(1)); - case "3month" -> Optional.of(OffsetDateTime.now().plusMonths(3)); - case "6month" -> Optional.of(OffsetDateTime.now().plusMonths(6)); - case null, default -> Optional.empty(); - }; - Timestamp ts = new Timestamp(delFrom.toEpochMilli()); params.put("message", "Удаляем темы и сообщения после "+ ts +" с IP "+ip+"
"); @@ -97,10 +88,20 @@ public ModelAndView delIp(@RequestParam("reason") String reason, params.put("topics", deleteResult.getDeletedTopicIds().size()); // кол-во удаленных топиков params.put("deleted", deleteResult.getDeleteInfo()); - if (banTo.isPresent()) { + if (banTime != null) { + Optional banTo = switch (banTime) { + case "hour" -> Optional.of(OffsetDateTime.now().plusHours(1)); + case "day" -> Optional.of(OffsetDateTime.now().plusDays(1)); + case "month" -> Optional.of(OffsetDateTime.now().plusMonths(1)); + case "3month" -> Optional.of(OffsetDateTime.now().plusMonths(3)); + case "6month" -> Optional.of(OffsetDateTime.now().plusMonths(6)); + case "unlim" -> Optional.empty(); + default -> throw new UserErrorException("Invalid count"); + }; + boolean allowPosting, captchaRequired; - switch(banMode) { + switch (banMode) { case "anonymous_and_captcha" -> { allowPosting = true; captchaRequired = true; @@ -115,8 +116,7 @@ public ModelAndView delIp(@RequestParam("reason") String reason, } } - ipBlockDao.blockIP(ip, moderator.getId(), reason, - banTo.map(v -> new Timestamp(v.toInstant().toEpochMilli())).get(), allowPosting, captchaRequired); + ipBlockDao.blockIP(ip, moderator.getId(), reason, banTo.orElse(null), allowPosting, captchaRequired); } for (int topicId : deleteResult.getDeletedTopicIds()) { diff --git a/src/main/scala/ru/org/linux/auth/TorBlockUpdater.scala b/src/main/scala/ru/org/linux/auth/TorBlockUpdater.scala index 9560fc7d33..30e8731b54 100644 --- a/src/main/scala/ru/org/linux/auth/TorBlockUpdater.scala +++ b/src/main/scala/ru/org/linux/auth/TorBlockUpdater.scala @@ -1,5 +1,5 @@ /* - * Copyright 1998-2022 Linux.org.ru + * Copyright 1998-2024 Linux.org.ru * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -15,12 +15,11 @@ package ru.org.linux.auth import com.typesafe.scalalogging.StrictLogging -import org.joda.time.DateTime import org.springframework.scheduling.annotation.Scheduled import org.springframework.stereotype.Component import sttp.client3.* -import java.sql.Timestamp +import java.time.OffsetDateTime @Component class TorBlockUpdater(httpClient: SttpBackend[Identity, Any], dao: IPBlockDao) extends StrictLogging { @@ -35,8 +34,7 @@ class TorBlockUpdater(httpClient: SttpBackend[Identity, Any], dao: IPBlockDao) e logger.debug("Updating TOR exit node list") body.linesIterator.foreach { ip => - dao.blockIP(ip, 0, "TOR Exit Node", new Timestamp(DateTime.now().plusMonths(1).getMillis), - true, false) + dao.blockIP(ip, 0, "TOR Exit Node", OffsetDateTime.now().plusMonths(1), true, false) } case Left(error) => logger.warn(s"Can't update TOR exit node list: $error")