|
@@ -1,111 +0,0 @@
|
|
-package de.tudarmstadt.informatik.hostage.protocol.cifs;
|
|
|
|
-
|
|
|
|
-import org.alfresco.jlan.server.SrvSession;
|
|
|
|
-import org.alfresco.jlan.server.core.DeviceContext;
|
|
|
|
-import org.alfresco.jlan.server.filesys.FileExistsException;
|
|
|
|
-import org.alfresco.jlan.server.filesys.FileName;
|
|
|
|
-import org.alfresco.jlan.server.filesys.FileOpenParams;
|
|
|
|
-import org.alfresco.jlan.server.filesys.NetworkFile;
|
|
|
|
-import org.alfresco.jlan.server.filesys.TreeConnection;
|
|
|
|
-import org.alfresco.jlan.smb.server.disk.JavaFileDiskDriver;
|
|
|
|
-import org.alfresco.jlan.smb.server.disk.JavaNetworkFile;
|
|
|
|
-
|
|
|
|
-import java.io.File;
|
|
|
|
-import java.io.FileInputStream;
|
|
|
|
-import java.io.FileWriter;
|
|
|
|
-import java.math.BigInteger;
|
|
|
|
-import java.security.MessageDigest;
|
|
|
|
-import java.security.NoSuchAlgorithmException;
|
|
|
|
-
|
|
|
|
-import de.tudarmstadt.informatik.hostage.logging.MessageRecord;
|
|
|
|
-import de.tudarmstadt.informatik.hostage.protocol.CIFS;
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- * Created by Daniel on 26.03.2015.
|
|
|
|
- */
|
|
|
|
-public class PseudoJavaFileDiskDriver extends JavaFileDiskDriver {
|
|
|
|
- private static class PseudoJavaNetworkFile extends JavaNetworkFile {
|
|
|
|
- protected final CIFS cifs;
|
|
|
|
- private final SrvSession sess;
|
|
|
|
- boolean wasWrittenTo = false;
|
|
|
|
-
|
|
|
|
- public PseudoJavaNetworkFile(File file, String netPath, CIFS cifs, SrvSession sess) {
|
|
|
|
- super(file, netPath);
|
|
|
|
- this.cifs = cifs;
|
|
|
|
- this.sess = sess;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- public void closeFile() throws java.io.IOException {
|
|
|
|
- super.closeFile();
|
|
|
|
- if(wasWrittenTo){
|
|
|
|
- try {
|
|
|
|
- MessageDigest digest = MessageDigest.getInstance("MD5");
|
|
|
|
- FileInputStream fis = new FileInputStream(m_file);
|
|
|
|
-
|
|
|
|
- byte[] buffer = new byte[8192];
|
|
|
|
- int numOfBytesRead;
|
|
|
|
- while( (numOfBytesRead = fis.read(buffer)) > 0){
|
|
|
|
- digest.update(buffer, 0, numOfBytesRead);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- byte[] hash = digest.digest();
|
|
|
|
- String checksum = new BigInteger(1, hash).toString(16);
|
|
|
|
-
|
|
|
|
- String message = "File received: " + m_file.getName() + "\n\nCHECKSUM:\n" + checksum;
|
|
|
|
-
|
|
|
|
- cifs.log(MessageRecord.TYPE.RECEIVE, message, 445, sess.getRemoteAddress(), 445);
|
|
|
|
- } catch (NoSuchAlgorithmException e) {
|
|
|
|
- e.printStackTrace();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- m_file.delete();
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- public void writeFile(byte[] buf, int len, int pos)
|
|
|
|
- throws java.io.IOException {
|
|
|
|
- super.writeFile(buf, len, pos);
|
|
|
|
- wasWrittenTo = true;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- public void writeFile(byte[] buf, int len, int pos, long offset)
|
|
|
|
- throws java.io.IOException {
|
|
|
|
- super.writeFile(buf, len, pos, offset);
|
|
|
|
- wasWrittenTo = true;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- private final CIFS cifs;
|
|
|
|
-
|
|
|
|
- public PseudoJavaFileDiskDriver(CIFS cifs) {
|
|
|
|
- this.cifs = cifs;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- public NetworkFile createFile(SrvSession sess, TreeConnection tree, FileOpenParams params)
|
|
|
|
- throws java.io.IOException {
|
|
|
|
- DeviceContext ctx = tree.getContext();
|
|
|
|
- String fname = FileName.buildPath(ctx.getDeviceName(), params.getPath(), null, java.io.File.separatorChar);
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- File file = new File(fname);
|
|
|
|
- if (file.exists())
|
|
|
|
- throw new FileExistsException();
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- FileWriter newFile = new FileWriter(fname, false);
|
|
|
|
- newFile.close();
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- file = new File(fname);
|
|
|
|
- PseudoJavaNetworkFile netFile = new PseudoJavaNetworkFile(file, params.getPath(), cifs, sess);
|
|
|
|
- netFile.setGrantedAccess(NetworkFile.READWRITE);
|
|
|
|
- netFile.setFullName(params.getPath());
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- return netFile;
|
|
|
|
- }
|
|
|
|
-}
|
|
|