ACC SHELL
###############################################################################
General
+ implement autoloading
+ add ability to override default port
+ get the URI modules in a releasable state
###############################################################################
Net::xAP
-------------------------------------------------------------------------------
B the mechanism that getline uses to stuff the literal payload into
the string passed to parse_line needs to be improved.
currently just tacks it onto the end. maybe it should tack it into
the end as a scalar ref and have parse_line look for '{\d+} SCALAR(.*)'.
that should eliminate the chance of falsely interpreting {\d+} as a
literal tag in instances where it isn't. make sure it derefs the
scalar ref when it stuffs it into the list that is to be returned.
-------------------------------------------------------------------------------
B need to gracefully handle the server closing the connection without a bye
+ add methods for opening and closing a debug file as an alternative to stderr
B there are some things in IMAP that should be moved to xAP, and vice versa
B the addition of ACAP and IMSP might require the quotification to be
revamped, with more direct control being moved into the subclasses
+ in synchronous mode, maybe have command failure synthesize a response
object to alleviate the need to check status of the command method
+ add ability to selectively turn on or off debug for individual
commands and callbacks
+ throw an error message when comment method is passed incorrect
parameter count
+ documentation
+ document how top-level protocols should use xAP
###############################################################################
Net::IMAP
-------------------------------------------------------------------------------
B need to handle modified-utf-7 mailbox names correctly
B make the regex in _extract_resp_code more rigorous
B have callbacks do stronger arg checking in response data, particularly
arg counts.
B clean up and test behavior when connection is terminated due to autologout
-------------------------------------------------------------------------------
+ maybe implement extensions as separate modules
+ force a LOGOUT if IMAP object goes out of scope
+ review various internet drafts to make sure they can be supported when RFCed
+ id ok
+ sort ok
+ thread ok
+ children ok
+ view ?
+ command+ ?
+ annotate ?
B regression tests
+ extensions: namespace, acl, quota, uidplus
+ login and the various authentication extensions
+ lsub
+ more complete testing of quoted strings and literals
+ add more tests for fetched envelopes
+ verify Date option in append method (some servers may not honor it)
+ verify Flags option in append method (some servers may not honor it)
+ tests for imap2addr conversion methods
+ add ability to use non-local imap servers
+ test against cyrus, netscape, microsoft, innosoft
+ documentation
+ make sure the responses for extensions mention the appropriate extension
+ document the valid states for the various extension commands
+ document the response codes that need specific handling
+ add info about how to handle login and mailbox referrals
+ document which responses can be unsolicited
+ also mention what they indicate and when they are likely to be seen
+ add some more examples
-------------------------------------------------------------------------------
+ maybe have resp_codes have their own callbacks
+ write get_response that returns a list with the tag and rest of the
response, instead of Net::IMAP::Envelope->new and Net::IMAP::FetchData->new
+ some response objects can be wired directly into parent Net::IMAP object
+ capability
+ flags
+ namespace
+ others...
B finish implementing authenticate command
+ add support for the security layer
+ figure out a reasonable way to hide auth info from debug command
+ add support for more extensions
+ login referrals
+ don't follow more than 10 referrals
+ mailbox referrals
+ idle
+ tls
+ various authentication extensions
+ otp
+ external
+ digest
+ gssapi
+ kerberos_v4
+ add ability to generate group lists in Net::IMAP::Address
+ maybe figure out a nice way to interface to Mail::Internet and MIME::Entity
+ implement smart EOL <-> crlf processing in append method
check first line of string and adjust accordingly
B add support for X* commands
B implement and document prevention of ambiguous multiple pending requests
+ except for FETCH, STORE, and SEARCH, command must wait for a response
before the following commands can be issued:
FETCH, STORE, COPY, UID?, SEARCH (partially)
+ fetch -> store involving flags
+ select/examine -> select/examine
+ others, no doubt...
B add various items from IMAP Implementation Recommendations
+ look at limiting length of command lines through use of literals
+ don't SELECT a mailbox that has \noselect flag set
+ don't CREATE a submailbox in a mailbox that has \noinferiors flag set
+ don't respond to a failing COPY or APPEND with a CREATE if the
server doesn't respond with a TRYCREATE response code
+ always put a trailing hierarchy delimiter in LIST reference argument
-------------------------------------------------------------------------------
+ write an interface for LWP (ala LWP::Protocol/ldap.pm)
+ decide whether X-NON-HIERARCHICAL-RENAME bug in cyrus imapd needs
special handling
+ is there anything preventing module from being used in an off-line mode?
+ maybe implement the whole thing as two layers - the first layer is
pure IMAP calls with minimal caching - the second layer uses cache
information is it's available, only resorting to real imap calls if
the data isn't cached
- maybe support older version of IMAP
###############################################################################
URI::imap
* need to write code for converting modified-utf7 <-> utf8
* need to do better job of preventing mutually exclusive url components
(last one in wins)
* write regression test
* write documentation
-------------------------------------------------------------------------------
URI::acap
* write regression test
* write documentation
###############################################################################
Net::ACAP
* if it makes it into the release, remove the appropriate lines from
the MANIFEST.SKIP file
* use the PAREN type in more places
* parse untagged condition responses
* response codes of interest to authentication failure:
+ auth-too-weak
+ encrypt-needed
+ transition-needed
* make sure xAP character set for autoquotification is correct for acap
* maybe coerse untagged ACAP response into an Acap object, otherwise
get rid of Net::ACAP::Acap class
* figure out a way to take Return parm in search command into account
when processing entry responses
* have deletedsince method accept an integer for its time parameter
if length(timearg) >= 14 then its an acap time string, else its an integer
* have store method accept an integer for its unchangedsince parameter
if length(timearg) >= 14 then its an acap time string, else its an integer
* UTF-8
+ spec limits size of an atom to 1024
+ NUL octets are only permitted in values of attributes whose names end with
'.bin'. client should send non-binary data as valid utf-8 data
+ context names must not start with '/'
+ need to handle extension responses
+ clients writing to a shared dataset SHOULD use UNCHANGEDSINCE when
modifying an existing entry.
+ make sure any 'server SHOULD' items aren't a problem to the client
if the 'server DOESNT'
+ clients MUST ignore unknown server responses which meet the syntax
of response-extend or resp-code-ext
+ maybe include ability to cancel authentication exchange with a '*' line
+ tons more to do...
###############################################################################
Net::IMSP
* if it makes it into the release, remove the appropriate lines from
the MANIFEST.SKIP file
* convert IMSP to use newer callback design
+ implement core commands
###############################################################################
Net::ICAP Note: this will probably do away
+ implement core commands
###############################################################################
ACC SHELL 2018