You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by je...@apache.org on 2018/03/08 18:32:16 UTC
[geode] branch develop updated: GEODE-4755: Use a more portable
File permission API (#1573)
This is an automated email from the ASF dual-hosted git repository.
jensdeppe pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git
The following commit(s) were added to refs/heads/develop by this push:
new d62173a GEODE-4755: Use a more portable File permission API (#1573)
d62173a is described below
commit d62173a1b8be41dbe22a79ce4fe9faa6cea30565
Author: Jens Deppe <jd...@pivotal.io>
AuthorDate: Thu Mar 8 10:32:13 2018 -0800
GEODE-4755: Use a more portable File permission API (#1573)
- This lets jar deployment work on Windows
- Unify creation of temporary staging directory
---
.../internal/ClusterConfigurationService.java | 11 ++---------
.../internal/cache/ClusterConfigurationLoader.java | 11 ++---------
.../geode/management/internal/beans/FileUploader.java | 17 +++++++++++------
.../internal/cli/functions/DeployFunction.java | 13 ++-----------
.../web/controllers/AbstractCommandsController.java | 12 ++----------
5 files changed, 19 insertions(+), 45 deletions(-)
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/ClusterConfigurationService.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/ClusterConfigurationService.java
index 8592f49..c81ca54 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/ClusterConfigurationService.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/ClusterConfigurationService.java
@@ -31,8 +31,6 @@ import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
-import java.nio.file.attribute.PosixFilePermission;
-import java.nio.file.attribute.PosixFilePermissions;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
@@ -75,7 +73,6 @@ import org.apache.geode.cache.execute.ResultCollector;
import org.apache.geode.distributed.DistributedLockService;
import org.apache.geode.distributed.DistributedMember;
import org.apache.geode.distributed.DistributedSystem;
-import org.apache.geode.distributed.LockServiceDestroyedException;
import org.apache.geode.distributed.internal.locks.DLockService;
import org.apache.geode.internal.cache.InternalCache;
import org.apache.geode.internal.cache.InternalRegionArguments;
@@ -84,6 +81,7 @@ import org.apache.geode.internal.cache.persistence.PersistentMemberManager;
import org.apache.geode.internal.cache.persistence.PersistentMemberPattern;
import org.apache.geode.internal.cache.xmlcache.CacheXmlGenerator;
import org.apache.geode.internal.logging.LogService;
+import org.apache.geode.management.internal.beans.FileUploader;
import org.apache.geode.management.internal.cli.CliUtil;
import org.apache.geode.management.internal.configuration.callbacks.ConfigurationChangeListener;
import org.apache.geode.management.internal.configuration.domain.Configuration;
@@ -435,12 +433,7 @@ public class ClusterConfigurationService {
List<RemoteInputStream> result = rc.getResult();
RemoteInputStream jarStream = result.get(0);
- Set<PosixFilePermission> perms = new HashSet<>();
- perms.add(PosixFilePermission.OWNER_READ);
- perms.add(PosixFilePermission.OWNER_WRITE);
- perms.add(PosixFilePermission.OWNER_EXECUTE);
- Path tempDir =
- Files.createTempDirectory("deploy-", PosixFilePermissions.asFileAttribute(perms));
+ Path tempDir = FileUploader.createSecuredTempDirectory("deploy-");
Path tempJar = Paths.get(tempDir.toString(), jarName);
FileOutputStream fos = new FileOutputStream(tempJar.toString());
InputStream input = RemoteInputStreamClient.wrap(jarStream);
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/ClusterConfigurationLoader.java b/geode-core/src/main/java/org/apache/geode/internal/cache/ClusterConfigurationLoader.java
index 7ec52aa..95520ad 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/ClusterConfigurationLoader.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/ClusterConfigurationLoader.java
@@ -23,11 +23,8 @@ import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.UnknownHostException;
-import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
-import java.nio.file.attribute.PosixFilePermission;
-import java.nio.file.attribute.PosixFilePermissions;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -63,6 +60,7 @@ import org.apache.geode.internal.DeployedJar;
import org.apache.geode.internal.JarDeployer;
import org.apache.geode.internal.config.ClusterConfigurationNotAvailableException;
import org.apache.geode.internal.logging.LogService;
+import org.apache.geode.management.internal.beans.FileUploader;
import org.apache.geode.management.internal.cli.CliUtil;
import org.apache.geode.management.internal.configuration.domain.Configuration;
import org.apache.geode.management.internal.configuration.functions.DownloadJarFunction;
@@ -141,12 +139,7 @@ public class ClusterConfigurationLoader {
List<RemoteInputStream> result = rc.getResult();
RemoteInputStream jarStream = result.get(0);
- Set<PosixFilePermission> perms = new HashSet<>();
- perms.add(PosixFilePermission.OWNER_READ);
- perms.add(PosixFilePermission.OWNER_WRITE);
- perms.add(PosixFilePermission.OWNER_EXECUTE);
- Path tempDir =
- Files.createTempDirectory("deploy-", PosixFilePermissions.asFileAttribute(perms));
+ Path tempDir = FileUploader.createSecuredTempDirectory("deploy-");
Path tempJar = Paths.get(tempDir.toString(), jarName);
FileOutputStream fos = new FileOutputStream(tempJar.toString());
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/beans/FileUploader.java b/geode-core/src/main/java/org/apache/geode/management/internal/beans/FileUploader.java
index bee1589..e8a9f3d 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/beans/FileUploader.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/beans/FileUploader.java
@@ -20,6 +20,7 @@ import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.Serializable;
+import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
@@ -69,12 +70,7 @@ public class FileUploader implements FileUploaderMBean {
@Override
public RemoteFile uploadFile(String filename) throws IOException {
- Set<PosixFilePermission> perms = new HashSet<>();
- perms.add(PosixFilePermission.OWNER_READ);
- perms.add(PosixFilePermission.OWNER_WRITE);
- perms.add(PosixFilePermission.OWNER_EXECUTE);
- Path tempDir =
- Files.createTempDirectory(STAGED_DIR_PREFIX, PosixFilePermissions.asFileAttribute(perms));
+ Path tempDir = createSecuredTempDirectory(STAGED_DIR_PREFIX);
File stagedFile = new File(tempDir.toString(), filename);
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(stagedFile));
@@ -117,4 +113,13 @@ public class FileUploader implements FileUploaderMBean {
FileUtils.deleteQuietly(parent);
}
}
+
+ public static Path createSecuredTempDirectory(String prefix) throws IOException {
+ Path tempDir = Files.createTempDirectory(prefix);
+ tempDir.toFile().setExecutable(true, true);
+ tempDir.toFile().setWritable(true, true);
+ tempDir.toFile().setReadable(true, true);
+
+ return tempDir;
+ }
}
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/DeployFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/DeployFunction.java
index e169c87..a48ec01 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/DeployFunction.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/DeployFunction.java
@@ -18,17 +18,12 @@ import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
-import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
-import java.nio.file.attribute.PosixFilePermission;
-import java.nio.file.attribute.PosixFilePermissions;
import java.util.ArrayList;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.List;
import java.util.Map;
-import java.util.Set;
import com.healthmarketscience.rmiio.RemoteInputStream;
import com.healthmarketscience.rmiio.RemoteInputStreamClient;
@@ -45,6 +40,7 @@ import org.apache.geode.internal.DeployedJar;
import org.apache.geode.internal.cache.InternalCache;
import org.apache.geode.internal.cache.execute.InternalFunction;
import org.apache.geode.internal.logging.LogService;
+import org.apache.geode.management.internal.beans.FileUploader;
public class DeployFunction implements InternalFunction {
private static final Logger logger = LogService.getLogger();
@@ -154,12 +150,7 @@ public class DeployFunction implements InternalFunction {
Map<String, File> stagedJars = new HashMap<>();
try {
- Set<PosixFilePermission> perms = new HashSet<>();
- perms.add(PosixFilePermission.OWNER_READ);
- perms.add(PosixFilePermission.OWNER_WRITE);
- perms.add(PosixFilePermission.OWNER_EXECUTE);
- Path tempDir =
- Files.createTempDirectory("deploy-", PosixFilePermissions.asFileAttribute(perms));
+ Path tempDir = FileUploader.createSecuredTempDirectory("deploy-");
for (int i = 0; i < jarNames.size(); i++) {
Path tempJar = Paths.get(tempDir.toString(), jarNames.get(i));
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/web/controllers/AbstractCommandsController.java b/geode-core/src/main/java/org/apache/geode/management/internal/web/controllers/AbstractCommandsController.java
index 2959200..bbf85c3 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/web/controllers/AbstractCommandsController.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/web/controllers/AbstractCommandsController.java
@@ -18,16 +18,11 @@ import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
-import java.nio.file.Files;
import java.nio.file.Path;
-import java.nio.file.attribute.PosixFilePermission;
-import java.nio.file.attribute.PosixFilePermissions;
import java.util.ArrayList;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.List;
import java.util.Map;
-import java.util.Set;
import javax.management.InstanceNotFoundException;
import javax.management.JMX;
@@ -54,6 +49,7 @@ import org.apache.geode.management.MemberMXBean;
import org.apache.geode.management.internal.MBeanJMXAdapter;
import org.apache.geode.management.internal.ManagementAgent;
import org.apache.geode.management.internal.SystemManagementService;
+import org.apache.geode.management.internal.beans.FileUploader;
import org.apache.geode.management.internal.cli.shell.Gfsh;
import org.apache.geode.management.internal.web.controllers.support.LoginHandlerInterceptor;
import org.apache.geode.management.internal.web.util.UriUtils;
@@ -246,11 +242,7 @@ public abstract class AbstractCommandsController {
List<String> filePaths = null;
Path tempDir = null;
if (multipartFiles != null) {
- Set<PosixFilePermission> perms = new HashSet<>();
- perms.add(PosixFilePermission.OWNER_READ);
- perms.add(PosixFilePermission.OWNER_WRITE);
- perms.add(PosixFilePermission.OWNER_EXECUTE);
- tempDir = Files.createTempDirectory("uploaded-", PosixFilePermissions.asFileAttribute(perms));
+ tempDir = FileUploader.createSecuredTempDirectory("uploaded-");
// staging the files to local
filePaths = new ArrayList<>();
for (MultipartFile multipartFile : multipartFiles) {
--
To stop receiving notification emails like this one, please contact
jensdeppe@apache.org.