From a4795ed74a85a24b59a0aa81614a1c7c35f214fe Mon Sep 17 00:00:00 2001
From: blavenie <benoit.lavenier@e-is.pro>
Date: Wed, 8 Feb 2017 17:37:48 +0100
Subject: [PATCH] Security: Allow to post on <currency>/block/_search

---
 .../src/main/assembly/config/elasticsearch.yml           | 2 +-
 .../src/test/es-home/config/elasticsearch.yml            | 2 +-
 .../main/java/org/duniter/elasticsearch/PluginInit.java  | 9 ++++++++-
 .../rest/security/RestSecurityController.java            | 4 ++++
 4 files changed, 14 insertions(+), 3 deletions(-)

diff --git a/duniter4j-es-assembly/src/main/assembly/config/elasticsearch.yml b/duniter4j-es-assembly/src/main/assembly/config/elasticsearch.yml
index 743b8bcb..31be3af2 100644
--- a/duniter4j-es-assembly/src/main/assembly/config/elasticsearch.yml
+++ b/duniter4j-es-assembly/src/main/assembly/config/elasticsearch.yml
@@ -151,7 +151,7 @@ duniter.security.enable: true
 # Should synchronize data using P2P
 #
 duniter.data.sync.enable: true
-duniter.data.sync.host: data.duniter.fr
+duniter.data.sync.host: data.gtest.duniter.fr
 duniter.data.sync.port: 80
 
 # ---------------------------------- Duniter4j SMTP server -------------------------
diff --git a/duniter4j-es-assembly/src/test/es-home/config/elasticsearch.yml b/duniter4j-es-assembly/src/test/es-home/config/elasticsearch.yml
index 3b4f087e..850b5ddd 100644
--- a/duniter4j-es-assembly/src/test/es-home/config/elasticsearch.yml
+++ b/duniter4j-es-assembly/src/test/es-home/config/elasticsearch.yml
@@ -127,7 +127,7 @@ duniter.blockchain.sync.enable: true
 # Duniter node to synchronize
 #
 
-duniter.host: gtest.duniter.fr
+duniter.host: gtest.duniter.org
 duniter.port: 10900
 
 #
diff --git a/duniter4j-es-core/src/main/java/org/duniter/elasticsearch/PluginInit.java b/duniter4j-es-core/src/main/java/org/duniter/elasticsearch/PluginInit.java
index a35f55c7..b8d4bde5 100644
--- a/duniter4j-es-core/src/main/java/org/duniter/elasticsearch/PluginInit.java
+++ b/duniter4j-es-core/src/main/java/org/duniter/elasticsearch/PluginInit.java
@@ -116,13 +116,20 @@ public class PluginInit extends AbstractLifecycleComponent<PluginInit> {
             // Index (or refresh) node's currency
             Currency currency = injector.getInstance(CurrencyService.class).indexCurrencyFromPeer(peer, true);
 
-            // Add access to currency index
+            // Add access to currency/block index
             injector.getInstance(RestSecurityController.class).allowIndexType(RestRequest.Method.GET,
                     currency.getCurrency(),
                     BlockchainService.BLOCK_TYPE);
+            injector.getInstance(RestSecurityController.class).allowPostSearchIndexType(
+                    currency.getCurrency(),
+                    BlockchainService.BLOCK_TYPE);
+            // Add access to currency/peer index
             injector.getInstance(RestSecurityController.class).allowIndexType(RestRequest.Method.GET,
                     currency.getCurrency(),
                     BlockchainService.PEER_TYPE);
+            injector.getInstance(RestSecurityController.class).allowPostSearchIndexType(
+                    currency.getCurrency(),
+                    BlockchainService.PEER_TYPE);
 
             // Index blocks (and listen if new block appear)
             injector.getInstance(BlockchainService.class)
diff --git a/duniter4j-es-core/src/main/java/org/duniter/elasticsearch/rest/security/RestSecurityController.java b/duniter4j-es-core/src/main/java/org/duniter/elasticsearch/rest/security/RestSecurityController.java
index 19600410..6da9bb84 100644
--- a/duniter4j-es-core/src/main/java/org/duniter/elasticsearch/rest/security/RestSecurityController.java
+++ b/duniter4j-es-core/src/main/java/org/duniter/elasticsearch/rest/security/RestSecurityController.java
@@ -57,6 +57,10 @@ public class RestSecurityController extends AbstractLifecycleComponent<RestSecur
         return allow(method, String.format("/%s/%s(/.*)?", index, type));
     }
 
+    public RestSecurityController allowPostSearchIndexType(String index, String type) {
+        return allow(RestRequest.Method.POST, String.format("/%s/%s/_search", index, type));
+    }
+
     public RestSecurityController allowImageAttachment(String index, String type, String field) {
         return allow(RestRequest.Method.GET, String.format("/%s/%s/[^/]+/_image/%s.*", index, type, field));
     }
-- 
GitLab