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));
}