Factorize Digest
authorMathieu Baudier <mbaudier@argeo.org>
Sun, 19 Feb 2012 15:05:02 +0000 (15:05 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Sun, 19 Feb 2012 15:05:02 +0000 (15:05 +0000)
git-svn-id: https://svn.argeo.org/slc/trunk@5104 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

demo/log4j.properties
modules/server/org.argeo.slc.server.repo/META-INF/spring/jcr.xml
runtime/org.argeo.slc.core/pom.xml
runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/DigestCheck.java

index 26304cc11f3e114f02495041aed86cbf724f884f..f1f38c20d7ec92d8e40eddbfeb24f2fc0cc418bf 100644 (file)
@@ -14,6 +14,8 @@ log4j.logger.org.argeo.slc.client.ui.dist=TRACE
 #log4j.logger.org.apache.jackrabbit.webdav=DEBUG
 #log4j.logger.org.apache.jackrabbit.jcr2spi=DEBUG
 
+log4j.logger.org.springframework.security=DEBUG
+
 log4j.logger.org.apache.catalina=INFO
 log4j.logger.org.apache.coyote=INFO
 log4j.logger.org.apache.directory.server=ERROR
index 25ad02fa6001a4a837fdae55e86c568cef0adab5..428dab3f020353c1849eefe74d2013e5ad49e6f6 100644 (file)
                <property name="bundleContext" ref="bundleContext" />\r
        </bean>\r
 \r
+       <!-- Security -->\r
+       <bean class="org.argeo.jackrabbit.JackrabbitAuthorizations"\r
+               init-method="run">\r
+               <property name="groupPrivileges">\r
+                       <map>\r
+                               <entry key="jcr:read" value="anonymous,ROLE_USER" />\r
+                               <entry key="jcr:all" value="ROLE_ARGEO_COMMITTER" />\r
+                       </map>\r
+               </property>\r
+               <property name="repository" ref="jcrRepository" />\r
+       </bean>\r
+\r
 </beans>
\ No newline at end of file
index d77f8bc3eae307a5cad675982ad0f30116e3a381..d14cb4c0c94171e55d7f35b2c61a4b94d8b31aff 100644 (file)
                        <version>0.13.1-SNAPSHOT</version>
                </dependency>
 
+               <dependency>
+                       <groupId>org.argeo.commons.basic</groupId>
+                       <artifactId>org.argeo.basic.nodeps</artifactId>
+                       <version>${version.argeo-commons}</version>
+               </dependency>
+
                <dependency>
                        <groupId>org.aspectj</groupId>
                        <artifactId>com.springsource.org.aspectj.runtime</artifactId>
index f94599e1619596e9378a53e98ab2899b40237837..4567f273db16861f1324e72b48e49d744f54e8a4 100644 (file)
 package org.argeo.slc.core.deploy;
 
 import java.io.File;
-import java.io.FileInputStream;
 import java.io.IOException;
-import java.io.InputStream;
-import java.nio.ByteBuffer;
-import java.nio.channels.FileChannel;
-import java.security.MessageDigest;
-import java.security.NoSuchAlgorithmException;
 
-import org.apache.commons.codec.binary.Hex;
-import org.apache.commons.io.IOUtils;
 import org.argeo.slc.SlcException;
+import org.argeo.util.security.DigestUtils;
 import org.springframework.core.io.Resource;
 
-public class DigestCheck {
-       private static Boolean debug = true;
-       // TODO: make it writable
-       private final static Integer byteBufferCapacity = 100 * 1024;// 100 KB
-
+/** Add Spring capabilities to {@link DigestUtils} */
+public class DigestCheck extends DigestUtils {
        public static String digest(String algorithm, Resource resource) {
                try {
                        File file = resource.getFile();
@@ -48,98 +38,4 @@ public class DigestCheck {
                        }
                }
        }
-
-       public static String digest(String algorithm, InputStream in) {
-               try {
-                       MessageDigest digest = MessageDigest.getInstance(algorithm);
-                       // ReadableByteChannel channel = Channels.newChannel(in);
-                       // ByteBuffer bb = ByteBuffer.allocateDirect(byteBufferCapacity);
-                       // while (channel.read(bb) > 0)
-                       // digest.update(bb);
-                       byte[] buffer = new byte[byteBufferCapacity];
-                       int read = 0;
-                       while ((read = in.read(buffer)) > 0) {
-                               digest.update(buffer, 0, read);
-                       }
-
-                       byte[] checksum = digest.digest();
-                       String res = Hex.encodeHexString(checksum);
-                       return res;
-               } catch (Exception e) {
-                       throw new SlcException("Cannot digest with algorithm " + algorithm,
-                                       e);
-               } finally {
-                       IOUtils.closeQuietly(in);
-               }
-       }
-
-       public static String digest(String algorithm, File file) {
-               FileInputStream fis = null;
-               FileChannel fc = null;
-               try {
-                       fis = new FileInputStream(file);
-                       fc = fis.getChannel();
-
-                       // Get the file's size and then map it into memory
-                       int sz = (int) fc.size();
-                       ByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, sz);
-                       return digest(algorithm, bb);
-               } catch (IOException e) {
-                       throw new SlcException("Cannot digest " + file + " with algorithm "
-                                       + algorithm, e);
-               } finally {
-                       IOUtils.closeQuietly(fis);
-                       if (fc.isOpen())
-                               try {
-                                       fc.close();
-                               } catch (IOException e) {
-                                       // silent
-                               }
-               }
-       }
-
-       protected static String digest(String algorithm, ByteBuffer bb) {
-               long begin = System.currentTimeMillis();
-               try {
-                       MessageDigest digest = MessageDigest.getInstance(algorithm);
-                       digest.update(bb);
-                       byte[] checksum = digest.digest();
-                       String res = Hex.encodeHexString(checksum);
-                       long end = System.currentTimeMillis();
-                       if (debug)
-                               System.out.println((end - begin) + " ms / "
-                                               + ((end - begin) / 1000) + " s");
-                       return res;
-               } catch (NoSuchAlgorithmException e) {
-                       throw new SlcException("Cannot digest with algorithm " + algorithm,
-                                       e);
-               }
-       }
-
-       public static void main(String[] args) {
-               File file;
-               if (args.length > 0)
-                       file = new File(args[0]);
-               else {
-                       System.err.println("Usage: <file> [<algorithm>]"
-                                       + " (see http://java.sun.com/j2se/1.5.0/"
-                                       + "docs/guide/security/CryptoSpec.html#AppA)");
-                       return;
-               }
-
-               if (args.length > 1) {
-                       String algorithm = args[1];
-                       System.out.println(digest(algorithm, file));
-               } else {
-                       String algorithm = "MD5";
-                       System.out.println(algorithm + ": " + digest(algorithm, file));
-                       algorithm = "SHA";
-                       System.out.println(algorithm + ": " + digest(algorithm, file));
-                       algorithm = "SHA-256";
-                       System.out.println(algorithm + ": " + digest(algorithm, file));
-                       algorithm = "SHA-512";
-                       System.out.println(algorithm + ": " + digest(algorithm, file));
-               }
-       }
-
 }