You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by is...@apache.org on 2019/09/28 20:00:31 UTC

[lucene-solr] branch jira/solr-13662 updated: SOLR-13662: Package signing

This is an automated email from the ASF dual-hosted git repository.

ishan pushed a commit to branch jira/solr-13662
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git


The following commit(s) were added to refs/heads/jira/solr-13662 by this push:
     new a429da3  SOLR-13662: Package signing
a429da3 is described below

commit a429da325e3d0df51d24e955e36239e6cd256ff2
Author: Ishan Chattopadhyaya <is...@apache.org>
AuthorDate: Sun Sep 29 01:30:02 2019 +0530

    SOLR-13662: Package signing
---
 solr/core/src/java/org/apache/solr/core/PackageBag.java      |  5 +++--
 .../org/apache/solr/packagemanager/SolrPluginDescriptor.java |  1 -
 .../java/org/apache/solr/packagemanager/SolrPluginInfo.java  |  7 ++-----
 .../org/apache/solr/packagemanager/SolrUpdateManager.java    |  8 ++++----
 solr/core/src/java/org/apache/solr/util/PackageTool.java     | 12 +++++++++++-
 5 files changed, 20 insertions(+), 13 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/core/PackageBag.java b/solr/core/src/java/org/apache/solr/core/PackageBag.java
index 62de475..1e3ee00 100644
--- a/solr/core/src/java/org/apache/solr/core/PackageBag.java
+++ b/solr/core/src/java/org/apache/solr/core/PackageBag.java
@@ -38,6 +38,7 @@ import java.util.Objects;
 import java.util.stream.Collectors;
 
 import org.apache.lucene.analysis.util.ResourceLoader;
+import org.apache.solr.cloud.CloudUtil;
 import org.apache.solr.common.MapWriter;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.cloud.ClusterPropertiesListener;
@@ -116,7 +117,7 @@ public class PackageBag implements ClusterPropertiesListener {
         return errors;
       }
       // nocommit bring back verification
-      /*Map<String, byte[]> keys = CloudUtil.getTrustedKeys(
+      Map<String, byte[]> keys = CloudUtil.getTrustedKeys(
           coreContainer.getZkController().getZkClient(), "exe");
       if (keys.isEmpty()) {
         errors.add("No public keys in ZK : /keys/exe");
@@ -127,7 +128,7 @@ public class PackageBag implements ClusterPropertiesListener {
         if (!blob.verifyJar(cryptoKeys, coreContainer)) {
           errors.add("Invalid signature for blob : " + blob.sha256);
         }
-      }*/
+      }
       return errors;
 
     }
diff --git a/solr/core/src/java/org/apache/solr/packagemanager/SolrPluginDescriptor.java b/solr/core/src/java/org/apache/solr/packagemanager/SolrPluginDescriptor.java
index baaf2d3..2904524 100644
--- a/solr/core/src/java/org/apache/solr/packagemanager/SolrPluginDescriptor.java
+++ b/solr/core/src/java/org/apache/solr/packagemanager/SolrPluginDescriptor.java
@@ -37,5 +37,4 @@ public class SolrPluginDescriptor extends DefaultPluginDescriptor {
 	public List<Plugin> getPlugins() {
     return plugins;
   }
-
 }
diff --git a/solr/core/src/java/org/apache/solr/packagemanager/SolrPluginInfo.java b/solr/core/src/java/org/apache/solr/packagemanager/SolrPluginInfo.java
index bc0d1fe..a74faa1 100644
--- a/solr/core/src/java/org/apache/solr/packagemanager/SolrPluginInfo.java
+++ b/solr/core/src/java/org/apache/solr/packagemanager/SolrPluginInfo.java
@@ -16,11 +16,7 @@ public class SolrPluginInfo extends PluginInfo {
 
   public static class SolrPluginRelease extends PluginRelease {
 
-    //    @SerializedName("setup-commands")
-    //    public List<String> setupCommands;
-    //
-    //    @SerializedName("update-commands")
-    //    public List<String> updateCommands;
+    public String sig;
 
     Metadata metadata;
     @Override
@@ -30,6 +26,7 @@ public class SolrPluginInfo extends PluginInfo {
           ", date=" + date +
           ", requires='" + requires + '\'' +
           ", url='" + url + '\'' +
+          ", sig='" + sig + '\'' +
           ", min='" + metadata.minSolrVersion + '\'' +
           ", max='" + metadata.maxSolrVersion + '\'' +
           ", dependencies='" + metadata.dependencies + '\'' +
diff --git a/solr/core/src/java/org/apache/solr/packagemanager/SolrUpdateManager.java b/solr/core/src/java/org/apache/solr/packagemanager/SolrUpdateManager.java
index 0b04aec..878a735 100644
--- a/solr/core/src/java/org/apache/solr/packagemanager/SolrUpdateManager.java
+++ b/solr/core/src/java/org/apache/solr/packagemanager/SolrUpdateManager.java
@@ -110,7 +110,7 @@ public class SolrUpdateManager extends UpdateManager {
       throw new PluginException(e);
     }
 
-    addOrUpdatePackage(op, id, version, sha256, repository, metadataSha256, release.metadata);
+    addOrUpdatePackage(op, id, version, sha256, repository, release.sig, metadataSha256, release.metadata);
     return true;
   }
 
@@ -118,7 +118,7 @@ public class SolrUpdateManager extends UpdateManager {
     INSTALL, UPDATE;
   }
   
-  private boolean addOrUpdatePackage(Operation op, String id, String version, String sha256, String repository,
+  private boolean addOrUpdatePackage(Operation op, String id, String version, String sha256, String repository, String sig,
       String metadataSha256, Metadata packageMetadata) {
     
     String json;
@@ -132,8 +132,8 @@ public class SolrUpdateManager extends UpdateManager {
         + "{name: '"+id+"', "
         + "version: '"+version+"', "
         + "repository: '"+repository+"', "
-        //+ "blob: {sha256: '"+sha256+"', sig: 'abc'}, "
-        + "blob: {sha256: '"+sha256+"'}, "
+        + "blob: {sha256: '"+sha256+"', sig: '"+sig+"'}, "
+        //+ "blob: {sha256: '"+sha256+"'}, "
         + "metadata: '"+metadataSha256+"'"
         + "}}";
 
diff --git a/solr/core/src/java/org/apache/solr/util/PackageTool.java b/solr/core/src/java/org/apache/solr/util/PackageTool.java
index c3c9643..e138fae 100644
--- a/solr/core/src/java/org/apache/solr/util/PackageTool.java
+++ b/solr/core/src/java/org/apache/solr/util/PackageTool.java
@@ -17,13 +17,17 @@
 package org.apache.solr.util;
 
 import java.io.File;
+import java.io.IOException;
 import java.io.UnsupportedEncodingException;
+import java.net.MalformedURLException;
+import java.net.URL;
 import java.util.List;
 import java.util.Map;
 
 import org.apache.commons.cli.CommandLine;
 import org.apache.commons.cli.Option;
 import org.apache.commons.cli.OptionBuilder;
+import org.apache.commons.io.IOUtils;
 import org.apache.http.impl.client.CloseableHttpClient;
 import org.apache.solr.client.solrj.impl.HttpClientUtil;
 import org.apache.solr.common.cloud.SolrZkClient;
@@ -96,7 +100,7 @@ public class PackageTool extends SolrCLI.ToolBase {
     }
   }
 
-  protected void addRepo(SolrPluginManager pluginManager, SolrUpdateManager updateManager, String zkHost, String name, String uri) throws UnsupportedEncodingException, KeeperException, InterruptedException {
+  protected void addRepo(SolrPluginManager pluginManager, SolrUpdateManager updateManager, String zkHost, String name, String uri) throws KeeperException, InterruptedException, MalformedURLException, IOException {
     SolrZkClient zkClient = new SolrZkClient(zkHost, 30000);
 
     String existingRepositoriesJson = getRepositoriesJson(zkClient);
@@ -109,6 +113,12 @@ public class PackageTool extends SolrCLI.ToolBase {
     } else {
       zkClient.setData("/repositories.json", new Gson().toJson(repos).getBytes(), true);
     }
+    
+    if (zkClient.exists("/keys", true)==false) zkClient.create("/keys", new byte[0], CreateMode.PERSISTENT, true);
+    if (zkClient.exists("/keys/exe", true)==false) zkClient.create("/keys/exe", new byte[0], CreateMode.PERSISTENT, true);
+    if (zkClient.exists("/keys/exe/"+"pub_key.der", true)==false) zkClient.create("/keys/exe/"+"pub_key.der", new byte[0], CreateMode.PERSISTENT, true);
+    zkClient.setData("/keys/exe/"+"pub_key.der", IOUtils.toByteArray(new URL(uri+"/publickey.der").openStream()), true);
+    
     System.out.println("Added repository: "+name);
     System.out.println(getRepositoriesJson(zkClient));
   }