From 59454f87bedb0b19b772ea93eabbb2bec910a150 Mon Sep 17 00:00:00 2001
From: Leonardo Vannucci <leonardo.vannucci@grupposistematica.it>
Date: Mon, 01 Oct 2018 11:40:07 +0200
Subject: [PATCH] Fix permessi

---
 dg1cloud-core/src/main/java/it/digione/dg1cloud/service/CloudService.java |   42 ++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 40 insertions(+), 2 deletions(-)

diff --git a/dg1cloud-core/src/main/java/it/digione/dg1cloud/service/CloudService.java b/dg1cloud-core/src/main/java/it/digione/dg1cloud/service/CloudService.java
index ec91710..1ff8032 100644
--- a/dg1cloud-core/src/main/java/it/digione/dg1cloud/service/CloudService.java
+++ b/dg1cloud-core/src/main/java/it/digione/dg1cloud/service/CloudService.java
@@ -7,9 +7,19 @@
 import java.io.InputStream;
 import java.net.URL;
 import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.LinkOption;
+import java.nio.file.attribute.GroupPrincipal;
+import java.nio.file.attribute.PosixFileAttributeView;
+import java.nio.file.attribute.PosixFileAttributes;
+import java.nio.file.attribute.PosixFilePermission;
+import java.nio.file.attribute.UserPrincipal;
+import java.nio.file.attribute.UserPrincipalLookupService;
 import java.security.NoSuchAlgorithmException;
 import java.time.LocalDate;
 import java.time.ZoneId;
+import java.util.HashSet;
+import java.util.Set;
 
 import org.apache.commons.codec.digest.DigestUtils;
 import org.apache.commons.io.FileUtils;
@@ -68,7 +78,7 @@
 					try {
 						storeFile(descriptor.getAbsolutePath());
 					} catch (Exception e) {
-						writeKoFile(descriptor.getAbsolutePath(), "Errore duranto la memorizzazione del file nello store\n" + e.getMessage());
+						writeKoFile(descriptor.getAbsolutePath(), "Errore durante la memorizzazione del file nello store\n" + e.getMessage());
 					}
 				} else {
 					logger.debug("Il file non ha passato le verifiche");
@@ -260,6 +270,7 @@
 			String json = mapper.writeValueAsString(uploadedFileDescriptorOk);
 			logger.debug("Scrittura json di ok:\n{}", json);
 			FileUtils.writeStringToFile(okFile, json, StandardCharsets.UTF_8);
+			set777(okFile);
 		} catch (IOException e) {
 			throw new RuntimeException("Errore nella scrittura del file di OK", e);
 		}
@@ -275,7 +286,7 @@
 		}
 	}
 	
-	public void writeKoFile( String cloudFileDescriptorPath, String errorMessage )  {
+	public void writeKoFile( String cloudFileDescriptorPath, String errorMessage ) {
 		logger.debug("Si e' verificato il seguente errore nella verifica tramite {}: {}", cloudFileDescriptorPath, errorMessage);
 		
 		File fileDescriptor = new File(cloudFileDescriptorPath);
@@ -283,6 +294,7 @@
 		
 		try {
 			FileUtils.writeStringToFile(koFile, errorMessage, StandardCharsets.UTF_8);
+			set777(koFile);
 		} catch (IOException e) {
 			throw new RuntimeException("Errore nella scrittura del file di KO", e);
 		}
@@ -330,4 +342,30 @@
 		
 		return sb.toString();
 	}
+	
+	private void set777( File file ) throws IOException {
+		logger.debug("Setto il permessi a 777");
+		try {
+			Set<PosixFilePermission> perms = new HashSet<PosixFilePermission>();
+			
+			//add owners permission
+			perms.add(PosixFilePermission.OWNER_READ);
+			perms.add(PosixFilePermission.OWNER_WRITE);
+			perms.add(PosixFilePermission.OWNER_EXECUTE);
+			//add group permissions
+			perms.add(PosixFilePermission.GROUP_READ);
+			perms.add(PosixFilePermission.GROUP_WRITE);
+			perms.add(PosixFilePermission.GROUP_EXECUTE);
+			//add others permissions
+			perms.add(PosixFilePermission.OTHERS_READ);
+			perms.add(PosixFilePermission.OTHERS_WRITE);
+			perms.add(PosixFilePermission.OTHERS_EXECUTE);
+			
+			Files.setPosixFilePermissions(file.toPath(), perms);
+			logger.debug("Permessi settati");
+		} catch (IOException ioe) {
+			logger.error("Errore nel settaggio dei permessi", ioe);
+			throw new IOException("Errore nel settaggio dei permessi", ioe);
+		}
+	}
 }

--
Gitblit v1.6.2