
Module: Communications
Purpose: To facilitate communications between server and client.  To mask the
details of communicating over TCP/IP.

Private Data:

Active Command Socket
Active Data Socket


Methods:

GetCommand
SendResponse
IsConnectionActive
SetDataSocket

Module: FileSystem (NYP = Not Yet Prototyped)
Purpose: To facilitate manipulation of local files and directories.

Private Data: None

Methods:

GetFileList
WriteFile
ReadFile
DeleteFile
DoesFileExist
RenameFile
MoveFile
MoveDir
GetDirList
DoesDirExist
RenameDir
CreateDir
RemoveDir
ListEAs
ReadEA
WriteEA
CompressFile
GetFileCompressionType
FindFile
FindTextInFile



Module: Connection
Purpose: To maintain information about a given FTP client connection

Private Data:

A Communication Object
A Command Object
CurrentDir
A User Object
Current stats
Valid Logon?


Module: Authentication
Purpose: To provide access authentication

Private Data:

A User Object

Methods:

CanSee
CanRead
CanWrite
CanDelete
CanRename
CanMove
CanRun
ValidLogon


Module: User
Purpose: To provide access to persistant data about a given user.

Private Data:

UserID
Password
Stats
UserType
An Access Object
IP Address

Methods:

IsLogonValid
RecordFileTransfer


Module: FtpCommand
Purpose: To implement RFC959 using the other modules described here.

Private Data:
A Connection Object
Command
Args
ResultCode
ResultMsg

Methods:
run to start interaction
SetCommandStr
One for each RFC 959 command


Module: ServerCommunication
Purpose: To provide Serverside abstraction of Sockets

Private Data:
Port
ServerSocket


Methods:

GetClientConnection
Shutdown

Module: FtpLog
Purpose: To provide general usage and debug logging

Data:
        Loglevel
        DebugLevel

Methods:

SetLogLevel
SetDebugLevel
LogTransfer
LogAction
LogMessage
DebugMsg

Module: FtpServer
Purpose to provide startup loop for server
Data:

A ServerCommunication Object

Methods:
Java main()
