From 6d4ebe90f3f59f0fb43de7135bed7841afc9b18e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bern=C3=A1t=20G=C3=A1bor?= Date: Tue, 14 Oct 2025 17:42:41 -0700 Subject: [PATCH 1/2] Allow to query to index time endpoint without token MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Bernát Gábor --- .../java/org/opengrok/web/api/v1/filter/IncomingFilter.java | 2 +- .../org/opengrok/web/api/v1/filter/IncomingFilterTest.java | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/opengrok-web/src/main/java/org/opengrok/web/api/v1/filter/IncomingFilter.java b/opengrok-web/src/main/java/org/opengrok/web/api/v1/filter/IncomingFilter.java index 326d72ba3fa..d698869293f 100644 --- a/opengrok-web/src/main/java/org/opengrok/web/api/v1/filter/IncomingFilter.java +++ b/opengrok-web/src/main/java/org/opengrok/web/api/v1/filter/IncomingFilter.java @@ -73,7 +73,7 @@ public class IncomingFilter implements ContainerRequestFilter, ConfigurationChan private static final Set allowedPaths = new HashSet<>(Arrays.asList( SearchController.PATH, SuggesterController.PATH, SuggesterController.PATH + "/config", HistoryController.PATH, FileController.PATH, AnnotationController.PATH, - SystemController.PATH + "/ping")); + SystemController.PATH + "/ping", SystemController.PATH + "/indextime" )); @Context private HttpServletRequest request; diff --git a/opengrok-web/src/test/java/org/opengrok/web/api/v1/filter/IncomingFilterTest.java b/opengrok-web/src/test/java/org/opengrok/web/api/v1/filter/IncomingFilterTest.java index 56bc780fa8d..5ca21a359c7 100644 --- a/opengrok-web/src/test/java/org/opengrok/web/api/v1/filter/IncomingFilterTest.java +++ b/opengrok-web/src/test/java/org/opengrok/web/api/v1/filter/IncomingFilterTest.java @@ -243,4 +243,9 @@ void systemPathDescWithoutTokenTest() throws Exception { assertEquals(Response.Status.UNAUTHORIZED.getStatusCode(), captor.getValue().getStatus()); } + + @Test + void systemIndexTimeRemoteWithoutTokenTest() throws Exception { + assertFilterDoesNotBlockAddress("10.0.0.1", "system/indextime"); + } } From 525363b0a65b2f5856986504a368b4a71075d47a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bern=C3=A1t=20G=C3=A1bor?= Date: Wed, 15 Oct 2025 18:02:21 -0700 Subject: [PATCH 2/2] PR Feedback MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Bernát Gábor --- .../org/opengrok/web/api/v1/controller/SystemController.java | 3 ++- .../java/org/opengrok/web/api/v1/filter/IncomingFilter.java | 2 +- .../opengrok/web/api/v1/controller/SystemControllerTest.java | 2 +- .../org/opengrok/web/api/v1/filter/IncomingFilterTest.java | 3 ++- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/opengrok-web/src/main/java/org/opengrok/web/api/v1/controller/SystemController.java b/opengrok-web/src/main/java/org/opengrok/web/api/v1/controller/SystemController.java index 8a6d394fd58..f2563e49cd8 100644 --- a/opengrok-web/src/main/java/org/opengrok/web/api/v1/controller/SystemController.java +++ b/opengrok-web/src/main/java/org/opengrok/web/api/v1/controller/SystemController.java @@ -49,6 +49,7 @@ public class SystemController { public static final String PATH = "system"; + public static final String INDEX_TIME = "indextime"; private final RuntimeEnvironment env = RuntimeEnvironment.getInstance(); @@ -70,7 +71,7 @@ public void loadPathDescriptions(@Valid final PathDescription[] descriptions) th } @GET - @Path("/indextime") + @Path("/" + INDEX_TIME) @Produces(MediaType.APPLICATION_JSON) public String getIndexTime() throws JsonProcessingException { Date date = new IndexTimestamp().getDateForLastIndexRun(); diff --git a/opengrok-web/src/main/java/org/opengrok/web/api/v1/filter/IncomingFilter.java b/opengrok-web/src/main/java/org/opengrok/web/api/v1/filter/IncomingFilter.java index d698869293f..20848148acb 100644 --- a/opengrok-web/src/main/java/org/opengrok/web/api/v1/filter/IncomingFilter.java +++ b/opengrok-web/src/main/java/org/opengrok/web/api/v1/filter/IncomingFilter.java @@ -73,7 +73,7 @@ public class IncomingFilter implements ContainerRequestFilter, ConfigurationChan private static final Set allowedPaths = new HashSet<>(Arrays.asList( SearchController.PATH, SuggesterController.PATH, SuggesterController.PATH + "/config", HistoryController.PATH, FileController.PATH, AnnotationController.PATH, - SystemController.PATH + "/ping", SystemController.PATH + "/indextime" )); + SystemController.PATH + "/ping", SystemController.PATH + "/" + SystemController.INDEX_TIME )); @Context private HttpServletRequest request; diff --git a/opengrok-web/src/test/java/org/opengrok/web/api/v1/controller/SystemControllerTest.java b/opengrok-web/src/test/java/org/opengrok/web/api/v1/controller/SystemControllerTest.java index 5691dc075c8..43edf012f95 100644 --- a/opengrok-web/src/test/java/org/opengrok/web/api/v1/controller/SystemControllerTest.java +++ b/opengrok-web/src/test/java/org/opengrok/web/api/v1/controller/SystemControllerTest.java @@ -159,7 +159,7 @@ void testIndexTime() throws IOException, ParseException { Files.setLastModifiedTime(indexTimeFile, FileTime.fromMillis(date.getTime())); Response r = target("system") - .path("indextime") + .path(SystemController.INDEX_TIME) .request().get(); String result = r.readEntity(String.class); diff --git a/opengrok-web/src/test/java/org/opengrok/web/api/v1/filter/IncomingFilterTest.java b/opengrok-web/src/test/java/org/opengrok/web/api/v1/filter/IncomingFilterTest.java index 5ca21a359c7..9fe367e05b3 100644 --- a/opengrok-web/src/test/java/org/opengrok/web/api/v1/filter/IncomingFilterTest.java +++ b/opengrok-web/src/test/java/org/opengrok/web/api/v1/filter/IncomingFilterTest.java @@ -32,6 +32,7 @@ import org.mockito.ArgumentCaptor; import org.opengrok.indexer.configuration.CommandTimeoutType; import org.opengrok.indexer.configuration.RuntimeEnvironment; +import org.opengrok.web.api.v1.controller.SystemController; import java.lang.reflect.Field; import java.util.HashSet; @@ -246,6 +247,6 @@ void systemPathDescWithoutTokenTest() throws Exception { @Test void systemIndexTimeRemoteWithoutTokenTest() throws Exception { - assertFilterDoesNotBlockAddress("10.0.0.1", "system/indextime"); + assertFilterDoesNotBlockAddress("10.0.0.1", SystemController.PATH + "/" + SystemController.INDEX_TIME); } }