PseudoCIFSDiskDriver.java 6.4 KB

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