THIS LIST IS NOT NECESSARILY CURRENT

Sat Jul 27 23:59:08 EDT 2002

Todo

Switch to Eric's build.xml and enhance as necessary.

Switch to NT status codes.

Cleanup SmbException and places that use it such as permit holding an inner exception like the Servlet API. See SmbRandomAccessFile.writeUTF.

Add RAP status 59 "An unexpected network error occurred."

Change the NTLM HTTP code, NtlmPasswordAuthentication and SmbTransport so that closing a transport invalidates any challenges. When this happends, trying to use the NPA will throw an SmbAuthException. An NPA with an invalid challenge should NEVER be used to access SMB resources (as it does now). This is also key to getting DFS to work with NetworkExplorer and Davenport.

Update the documentation (e.g. list* operations that do not return hidden shares and files).

The listFiles(SmbFileFilter filter) should return hidden files that are accepted by the filter. The behavor of all other list* methods will remain the same.

Replace UCS2-LE encoding/decoding with custom fast methods. Implement the changes in a way such that the language functions are not necessary. Test the client with j2me (although after 5 minutes on java.sun.com I was not able to find it).

Normalize encoding and decoding routines.

Remove NetBIOS socket layer and integrate NetBIOS header directly into SmbTransport.

Add support for jcifs.netbios.wins2 property to specifiy secondary WINS server. Also explore the failover of errant domain controllers if that is related to the mechanism used for triggering the switch to the secondary WINS server.

Simplify jcifs.util.Log and all logging throughout all classes.

Remove PropertiesTree and replace with vanilla java.util.Properties. Change all properties to be initialized statically when the class is loaded. Are there exceptions to this?

Test jcifs.smb.client.useUnicode=false with all servers.


Switch to using "Buffer.java" style (provided there is no copying) like much of Eric's code.

Add more SMB URL support such as QUERY_STRING parameters.

Interesting note: If you run examples/TransactNamedPipe.java against the IPC$/srvsvc it successfully echos the data (README.txt). Odd.

Create ResourceBundle with internationalized error messages.

DONE(but it doesn't necessarily look more efficient) Perhaps it would be more efficient to use a LinkedList to build large lists of SmbFile objects in listFiles?

Add a default workgroup for finding LMB/DMB in the absence of a master browser.

DONE Do we need to tree connect every share when listing?

DONE Update SmbShell to support NtlmAuthenticator

DONE Re-write NTLM HTTP Authentication document

DONE(added SmbFile constructors. NetworkExplorer can use the
NtlmPasswordAuthentication object provided by IE clients if the
NtlmHttpFilter is used). Allow NtlmPasswordAuthentication objects to be
used when accessing arbitrary SMB resources.

DONE 64 bit offsets for SMB_COM_READ/WRITE_ANDX

DONE(but not supported by NT) Specify last modified time in SMB_COM_CLOSE

DONE Implement DFS access.

NO(already fast enough) Speed up delete()?

Implement these other methods?

  getParentFile()
  isAbsolute()
  getAbsolutePath()
  getAbsoluteFile()
  getCanonicalFile()
DONE createNewFile()
  deleteOnExit()
DONE list( FilenameFilter )
DONE listFiles( FilenameFilter )
DONE setLastModified()
DONE setCreateTime()
DONE setReadOnly()
DONE setReadWrite()
DONE setAttributes()
DONE mkdirs()
  listRoots() - doesn't apply really
  createTempFile()

Use pcap from SamOemChangePassword to implement SmbSession.changePassword().

Check Time/Date handling for shares in Hong Kong and Australia. I believe
they are in different timezones/daylight savings.

Remove PropertiesTree and replace with regular Properties?
Replace jcifs.util.Log with something a little simpler?

Unicode, j9, and CodePage Support - Allow Unicode to be *completely*
turned off for use with micro VMs(also check to see if Unicode can be enabled
with j9). Allow an arbitrary encoding to be specified such that a CodePage
may be used to read strings. See Internationalization documents here:
http://java.sun.com/products/jdk/1.2/docs/guide/internat/index.html.

Create an XFileAccessor by extending SmbFile and looking at Thierry's code
(although we both agreed it was not correct, SmbFile should implement
XFile directly).

DONE Add SmbRandomAccessFile; requires writing equivalent Win32 program
to compare. See code from savaJe.

Improve SmbShell. Better yet, create an SmbShell api for writing efficient
browsers that for example return file names as they are returned by the
server rather than storing them in memory and returning them all at once.

Or just add functions that permit returning records records in stages:

int findFirst( SmbFile[] dst );
void findNext( int resumeKey, SmbFile dst );

or maybe

interface SmbFileLister {
    void list( SmbFile[] files, int count ) throws IOException;
}
void list( SmbFileLister lister );

Switch to NT status codes.

Write DCE/RPC transactions for opererations such as NETLOGON
authentication for checking arbitrary domain\user and password
creadentials from perhaps a servlet or jsp etc. Netlogon and share
names longer than 13 characters are the two most compelling reasons to
implement this.

Alter canRead to try and open the file for reading and return false if
ERRbadshare is received? Err, as much as I hate to do this I think it
might be the right thing to do.

Correct for Unicode alignment in Trans2FindFirst2Response from NT with
useUnicode=no bug? This incongruentcey between MS servers and their
support for Unicode is the source of problems (e.g. the way short names
are returned in SMB_COM_TRANS2_FIND_FIRST2 responses from NT with Unicode
on/off. Is this still true?

Ensure that setting a property in a PropertiesTree file without a value
will represent a null or empty string properly. Update: As it is, a
property without a value will be null. But this does not provide for a
method to specify an empty string. Perhaps quotes need to be addressed so
that "" can be used to symbolize an emtpy string. Update: I have not seen
a single bug in PropertiesTree so I don't think I should mess with it. If
anything it should be pulled out and replaced with simple Properties; the
client is just not that demanding to warrent the PropertiesTree mechanism.

Provide for testing to see if a file is "locked". Just try to send an
SMB_COM_NT_CREATE_ANDX with share access as FILE_NO_SHARE. This would
be trivial to add a boolen isLocked() method.

Write a CIFS server profileing/testing program or suite of programs that
can determine true capabilities of a server. Low priority and we don't
have enough functionality to really be usefull yet and it's a BIG job.
