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 2020/01/07 17:49:19 UTC

[lucene-solr] branch jira/solr14158 updated: add-key CLI command

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

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


The following commit(s) were added to refs/heads/jira/solr14158 by this push:
     new 1844cf5  add-key CLI command
1844cf5 is described below

commit 1844cf5f71cd6ad35a885b97c7f5506cd28c5a64
Author: Ishan Chattopadhyaya <is...@apache.org>
AuthorDate: Tue Jan 7 19:48:37 2020 +0200

    add-key CLI command
---
 .../java/org/apache/solr/packagemanager/RepositoryManager.java    | 7 +++++--
 solr/core/src/java/org/apache/solr/util/PackageTool.java          | 8 ++++++++
 2 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/packagemanager/RepositoryManager.java b/solr/core/src/java/org/apache/solr/packagemanager/RepositoryManager.java
index 9f39746..a0cc0e1 100644
--- a/solr/core/src/java/org/apache/solr/packagemanager/RepositoryManager.java
+++ b/solr/core/src/java/org/apache/solr/packagemanager/RepositoryManager.java
@@ -130,14 +130,17 @@ public class RepositoryManager {
       packageManager.zkClient.setData(PackageUtils.REPOSITORIES_ZK_PATH, getMapper().writeValueAsString(repos).getBytes("UTF-8"), true);
     }
 
+    addKey(IOUtils.toByteArray(new URL(uri + "/publickey.der").openStream()), repoName + ".der");
+  }
+
+  public void addKey(byte[] key, String destinationKeyFilename) throws Exception {
     // get solr_home directory from info servlet
     String systemInfoUrl = solrClient.getBaseURL() + "/solr/admin/info/system";
     Map<String,Object> systemInfo = SolrCLI.getJson(solrClient.getHttpClient(), systemInfoUrl, 2, true);
     String solrHome = (String) systemInfo.get("solr_home");
     
     // put the public key into package store's trusted key store and request a sync.
-    byte[] key = IOUtils.toByteArray(new URL(uri + "/publickey.der").openStream());
-    String path = PackageStoreAPI.KEYS_DIR + "/" + repoName + ".der";
+    String path = PackageStoreAPI.KEYS_DIR + "/" + destinationKeyFilename;
     PackageUtils.uploadKey(key, path, Paths.get(solrHome), solrClient);
     PackageUtils.getJsonStringFromUrl(solrClient.getHttpClient(), solrClient.getBaseURL() + "/api/node/files" + path + "?sync=true");
   }
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 f7744c9..be99398 100644
--- a/solr/core/src/java/org/apache/solr/util/PackageTool.java
+++ b/solr/core/src/java/org/apache/solr/util/PackageTool.java
@@ -19,7 +19,9 @@ package org.apache.solr.util;
 import static org.apache.solr.packagemanager.PackageUtils.printGreen;
 import static org.apache.solr.packagemanager.PackageUtils.print;
 
+import java.io.File;
 import java.lang.invoke.MethodHandles;
+import java.nio.file.Paths;
 import java.util.Map;
 
 import org.apache.commons.cli.CommandLine;
@@ -44,6 +46,8 @@ import org.apache.solr.util.SolrCLI.StatusTool;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.drew.tools.FileUtil;
+
 
 public class PackageTool extends SolrCLI.ToolBase {
 
@@ -92,6 +96,10 @@ public class PackageTool extends SolrCLI.ToolBase {
                 repositoryManager.addRepository(repoName, repoUrl);
                 PackageUtils.printGreen("Added repository: " + repoName);
                 break;
+              case "add-key":
+                String keyFilename = cli.getArgs()[1];
+                repositoryManager.addKey(FileUtil.readBytes(new File(keyFilename)), Paths.get(keyFilename).getFileName().toString());
+                break;
               case "list-installed":
                 PackageUtils.printGreen("Installed packages:\n-----");                
                 for (SolrPackageInstance pkg: packageManager.fetchInstalledPackageInstances()) {