PseudoCIFSDiskDriver.java 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  1. package de.tudarmstadt.informatik.hostage.protocol.cifs;
  2. //import org.alfresco.config.ConfigElement;
  3. import org.alfresco.jlan.server.NetworkServer;
  4. import org.alfresco.jlan.server.SrvSession;
  5. import org.alfresco.jlan.server.core.DeviceContext;
  6. import org.alfresco.jlan.server.core.DeviceContextException;
  7. import org.alfresco.jlan.server.filesys.DiskDeviceContext;
  8. import org.alfresco.jlan.server.filesys.DiskInterface;
  9. import org.alfresco.jlan.server.filesys.FileAttribute;
  10. import org.alfresco.jlan.server.filesys.FileExistsException;
  11. import org.alfresco.jlan.server.filesys.FileInfo;
  12. import org.alfresco.jlan.server.filesys.FileName;
  13. import org.alfresco.jlan.server.filesys.FileOpenParams;
  14. import org.alfresco.jlan.server.filesys.FileStatus;
  15. import org.alfresco.jlan.server.filesys.FileSystem;
  16. import org.alfresco.jlan.server.filesys.NetworkFile;
  17. import org.alfresco.jlan.server.filesys.SearchContext;
  18. import org.alfresco.jlan.server.filesys.TreeConnection;
  19. import org.alfresco.jlan.smb.server.disk.JavaNetworkFile;
  20. import org.springframework.extensions.config.ConfigElement;
  21. import java.io.File;
  22. import java.io.FileNotFoundException;
  23. import java.io.IOException;
  24. public class PseudoCIFSDiskDriver implements DiskInterface {
  25. private TreeConnection SMBTree;
  26. private static class PseudoNetworkFile extends NetworkFile {
  27. public PseudoNetworkFile(String name){
  28. super(name);
  29. setFileSize(12);
  30. setModifyDate(System.currentTimeMillis());
  31. setCreationDate(System.currentTimeMillis());
  32. }
  33. @Override
  34. public void openFile(boolean createFlag) throws IOException {
  35. setClosed(false);
  36. }
  37. @Override
  38. public int readFile(byte[] buf, int len, int pos, long fileOff) throws IOException {
  39. return 0;
  40. }
  41. @Override
  42. public void writeFile(byte[] buf, int len, int pos, long fileOff) throws IOException {
  43. }
  44. @Override
  45. public long seekFile(long pos, int typ) throws IOException {
  46. return 0;
  47. }
  48. @Override
  49. public void flushFile() throws IOException {
  50. }
  51. @Override
  52. public void truncateFile(long siz) throws IOException {
  53. }
  54. @Override
  55. public void closeFile() throws IOException {
  56. setClosed(true);
  57. }
  58. }
  59. @Override
  60. public void closeFile(SrvSession srvSession, TreeConnection treeConnection, NetworkFile networkFile) throws IOException {
  61. networkFile.closeFile();
  62. }
  63. @Override
  64. public void createDirectory(SrvSession srvSession, TreeConnection treeConnection, FileOpenParams fileOpenParams) throws IOException {
  65. }
  66. @Override
  67. public NetworkFile createFile(SrvSession srvSession, TreeConnection treeConnection, FileOpenParams fileOpenParams) throws IOException {
  68. throw new FileExistsException();
  69. }
  70. @Override
  71. public void deleteDirectory(SrvSession srvSession, TreeConnection treeConnection, String s) throws IOException {
  72. }
  73. @Override
  74. public void deleteFile(SrvSession srvSession, TreeConnection treeConnection, String s) throws IOException {
  75. }
  76. @Override
  77. public int fileExists(SrvSession srvSession, TreeConnection treeConnection, String s) {
  78. DeviceContext ctx = treeConnection.getContext();
  79. String filename = FileName.buildPath(ctx.getDeviceName(), s, null, File.separatorChar);
  80. File chkFile = new File(filename);
  81. if(chkFile.isFile()){
  82. return FileStatus.FileExists;
  83. }
  84. else {
  85. return FileStatus.DirectoryExists;
  86. }
  87. }
  88. @Override
  89. public void flushFile(SrvSession srvSession, TreeConnection treeConnection, NetworkFile networkFile) throws IOException {
  90. }
  91. @Override
  92. public FileInfo getFileInformation(SrvSession srvSession, TreeConnection treeConnection, String name) throws IOException {
  93. //String path = FileName.buildPath(treeConnection.getContext().getDeviceName(), "/", "jlan", java.io.File.separatorChar);
  94. //File file = new File(treeConnection.getContext().getDeviceName(), "jlan");
  95. //int fattr = FileAttribute.ReadOnly;
  96. String path = FileName.buildPath(treeConnection.getContext().getDeviceName(), name, null, java.io.File.separatorChar);
  97. System.out.println("PATH::::"+path);
  98. int fattr = FileAttribute.Directory;
  99. FileInfo finfo = new FileInfo(path, 0, fattr);
  100. long fdate = System.currentTimeMillis();
  101. finfo.setModifyDateTime(fdate);
  102. finfo.setFileId(path.hashCode());
  103. finfo.setCreationDateTime(fdate - 1000);
  104. finfo.setChangeDateTime(fdate);
  105. return finfo;
  106. }
  107. @Override
  108. public boolean isReadOnly(SrvSession srvSession, DeviceContext deviceContext) throws IOException {
  109. return true;
  110. }
  111. @Override
  112. public NetworkFile openFile(SrvSession srvSession, TreeConnection treeConnection, FileOpenParams fileOpenParams) throws IOException {
  113. System.out.println("openFile method::::"+srvSession + " - " + treeConnection + " - " + fileOpenParams);
  114. String fname = FileName.buildPath(treeConnection.getContext().getDeviceName(), fileOpenParams.getPath(), null, java.io.File.separatorChar);
  115. File file = new File(fname);
  116. File subFile = new File("/test.txt");
  117. NetworkFile netFile = new JavaNetworkFile(file,fname);
  118. netFile.setGrantedAccess(fileOpenParams.getAttributes());
  119. netFile.setAttributes(FileAttribute.Directory);
  120. netFile.setDirectoryId(5);
  121. NetworkFile subNetFile = new JavaNetworkFile(subFile, "/test.txt");
  122. subNetFile.setGrantedAccess(NetworkFile.READONLY);
  123. subNetFile.setAttributes(FileAttribute.ReadOnly);
  124. subNetFile.setDirectoryId(netFile.getDirectoryId());
  125. return netFile;
  126. }
  127. @Override
  128. public int readFile(SrvSession srvSession, TreeConnection treeConnection, NetworkFile networkFile, byte[] bytes, int i, int i2, long l) throws IOException {
  129. System.out.println("readFile method::::"+srvSession + " - " + treeConnection + " - "+networkFile);
  130. return 0;
  131. }
  132. @Override
  133. public void renameFile(SrvSession srvSession, TreeConnection treeConnection, String s, String s2) throws IOException {
  134. }
  135. @Override
  136. public long seekFile(SrvSession srvSession, TreeConnection treeConnection, NetworkFile networkFile, long l, int i) throws IOException {
  137. System.out.println("seekFile method::::"+srvSession + " - " + treeConnection + " - "+networkFile);
  138. return 0;
  139. }
  140. @Override
  141. public void setFileInformation(SrvSession srvSession, TreeConnection treeConnection, String s, FileInfo fileInfo) throws IOException {
  142. }
  143. @Override
  144. public SearchContext startSearch(SrvSession srvSession, TreeConnection treeConnection, String s, int i) throws FileNotFoundException {
  145. throw new FileNotFoundException();
  146. }
  147. @Override
  148. public void truncateFile(SrvSession srvSession, TreeConnection treeConnection, NetworkFile networkFile, long l) throws IOException {
  149. }
  150. @Override
  151. public int writeFile(SrvSession srvSession, TreeConnection treeConnection, NetworkFile networkFile, byte[] bytes, int i, int i2, long l) throws IOException {
  152. return 0;
  153. }
  154. @Override
  155. public DeviceContext createContext(String s, ConfigElement configElement) throws DeviceContextException {
  156. DiskDeviceContext ctx = new DiskDeviceContext("/");
  157. ctx.setFilesystemAttributes(FileSystem.CasePreservedNames + FileSystem.UnicodeOnDisk);
  158. ctx.setAvailable(true);
  159. return ctx;
  160. }
  161. @Override
  162. public void treeOpened(SrvSession srvSession, TreeConnection treeConnection) {
  163. System.out.println("treeOpened method::::"+srvSession + " - " + treeConnection);
  164. System.out.println("treeOpened method::::"+treeConnection.getContext().getDeviceName());
  165. }
  166. @Override
  167. public void treeClosed(SrvSession srvSession, TreeConnection treeConnection) {
  168. }
  169. }