X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=TODO;h=75f219f1e16414625d628a6785840c860eda6cc6;hb=refs%2Fheads%2Fsilc.protocol.1.0.branch;hp=448410777d83ea3918aa32fa1847ffb5f4b608ec;hpb=de7a4916e9e7786bd4bf95b9d6722dd0701993fd;p=silc.git diff --git a/TODO b/TODO index 44841077..75f219f1 100644 --- a/TODO +++ b/TODO @@ -1,35 +1,11 @@ TODO/bugs in Irssi SILC client ============================== - o GETKEY server will save the serverkey to the same filename as the - connected server and thus destroys the key. + o Does not show ops and normal users on JOIN correctly, perhaps some + theme issue (Fix this to 0.8.x). - o GETKEY server will show first, "there is no such nickname". - - o Add local command to switch the channel's private key when channel has - several private keys. Currently sending channel messages with many - keys is not possible because changing the key is not possible by the - user. - - o JOINing to +a (requires passphrase to JOIN) does not work on autojoin. - Seems the passwords in the .silc/config has no effect. - - o Add local commands to list the current server and client public keys - that the user has. And a local command to dump the contents of the - public key to the screen. Something like LISTKEYS, SHOWKEY... - - o We should get rid of the clientconfig.[ch] in Irssi SILC and move the - cipher, hash, hmac and pkcs configuration to the Irssi SILC's config - file. - - o Add PERL scripting support from Irssi CVS. - - o Extend the /HELP command to support sub commands or something. So - that user can say /help set mutual_authentication they would get - help of the mutual_authentication setting. - - o Set different kind of settings, like, /set mutual_authentication, - /set key_exchange_timeout, /set conn_auth_timeout etc etc. + o /cumode for unknown nick does not give any error message (Fix this to + 1.0). TODO/bugs In SILC Client Library @@ -38,19 +14,8 @@ TODO/bugs In SILC Client Library o The PRIVATE_MESSAGE_KEY packet is not handled (it is implemented though). This should be added and perhaps new client operation should be added to notify application that it was received and - set the key only if application wishes to set (accept the key) it. - - o should /nick nick and /nick Nick cause the Nick to be Nick@host becase - it used to be nick?? - - o When changing own nickname and there exists a same nickname the library - can give the client now nickname in format nick@host. This is new - behaviour and maybe should be removed. The changer should always - get the one it wants and not have the formatted nickname. - - o Remove the command destructor all together from the client, it is - not needed and its usage is buggy when the context is registered - to multiple pending commands. + set the key only if application wishes to set (accept the key) it + (Do this to 1.0). o Additions to do after protocol version 1.1: @@ -65,9 +30,26 @@ TODO/bugs In SILC Client Library TODO/bugs In SILC Server ======================== - o Topic notifications seem to go double times occasionally to a channel. + o Configuration file additions (Do this to 0.8.x): + + o Add incoming connection frequency, incoming connection frequency + for single IP address, key exchange frequency, key exchange + frequency for single IP. Add also frequency base. + + o If server send CUMODE_CHANGE notify (like setting founder) to router + and router does not have founder on channel (founder is left or there's + no founder on channel at all), the router will accept the server's + founder mode change, even though it perhaps should not do that (Fix + this to 0.9). + + o The router should check for validity of received notify packets from + routers (fix this to 0.9). Following NOTIFYs needs to be verified: - o Backup router related issues + o JOIN (check that joining is allowed) + o SIGNOFF (maybe should check that notifier owns the client) + o KILLED (check that killling is allowed (Protocol TODO #13)) + + o Backup router related issues (Fix this to 1.0): o Channel user mode changes are notified unnecessarely when switching to backup router on router crash. @@ -77,22 +59,9 @@ TODO/bugs In SILC Server seconds. Now it is possible to accept n incoming JOIN commands and process them without any timeouts. THis must be employed because each JOIN command will create and distribute the new channel key - to everybody on the channel. - - o New configuration file format must be added. The new one will be - done using the dotconf config library (lib/dotconf). The following - tasks relates closely to this as well and must be done at the same time - when adding the new config file format: - - o Server says that it is able to listen on multiple ports but - currently that is bogus. It can, but internals are for single - server. - - o Protocol execution timeouts are hard coded, should be - configurable. + to everybody on the channel (Fix this to 1.0). - o IP address fields in configuration file should accept mask - format as well, IP/MASK, and not just plain IP. + o Lots of statistics updating is missing around the server. o If client's public key is saved in the server (and doing public key authentication) then the hostname and the username information could @@ -104,10 +73,36 @@ TODO/bugs In SILC Libraries o WIN32 silc_net_create_connection_async does not work the same way than on Unix. Do it with threads on WIN32. The function works but - is not actually async currently. + is not actually async currently (Fix this to 1.0). - o Rewrite the lib/silcsim/silcsim.h. The SilcSimContext should be - private and silc_sim_alloc should take necessary arguments. + +TODO in Toolkit Documentation +============================= + +Stuff that needs to be done in order to complete the Tooolkit Reference +Manual (Do these to 0.9 and 1.0). + + o ROBOdoc documenting missing from lib/silcutil/silcbuffer.h. + + o ROBOdoc documenting missing from lib/silcutil/silcdlist.h. + + o ROBOdoc documenting missing from lib/silcutil/silcfileutil.h. + + o ROBOdoc documenting missing from lib/silccrypt/silchash.h. + + o ROBOdoc documenting missing from lib/silccrypt/silccipher.h. + + o ROBOdoc documenting missing from lib/silccrypt/silcpkcs.h. + + o Write "Programming with Toolkit" document, describing how to build + Toolkit, how the build system works, where is everything, how + new (external) projects can be glued into Toolkit (use irssi as an + example), and how external projects can use Toolkit without gluing into + it (how to link etc), debugging, architecture, types, etc. + + o Write "Platform Implementations" document to describe what platforms + Toolkit support, what has been implemented, what has not been, what + works differently etc. TODO in SILC Protocol @@ -167,118 +162,35 @@ describe new stuff to be added to protocol versions 1.x. payload MAC and not alone by packet MAC. To be included in protocol version 1.1. + 8. Remove the administrative commands from the protocol all together. + It does not make sense for the protocol to define how a server is + reconnected or shutdown, since they are implementation and + configuration issues. Besides protocol provides only limited set of + administrative commands and cannot define all that one could imagine. + To be included in protocol version 1.1. + + 9. Add SILC_MESAGE_FLAG_REPLY for being other side to the + SILC_MESSAGE_FLAG_REQUEST. Add generic SILC_MESSAGE_FLAG_DATA, which + can include generic payload, which can include generic data. The + payload definition is left out for now. To be included in protocol + version 1.1. + + 10. Check command reply error status types in various commands, + specifically NO_FOPRIV is missing from many commands. To be + included in protocol version 1.1. + + 11. Change the wording in Private Message Key Payload definition to + describe the problems of trusting the payload, and to indicate that + the receiver may not accept the key in the payload, and to describe + other means of distributing a key. + + 13. Add the killer's client ID to the KILLED notify. To be included in + protocol version 1.1. + + 14. The length of Arguments Num field in Notify Payload and Command + Payload enforces that total of 256 arguments can be associated + to a such payload. However, command-xx draft specified much higher + values, and these should be fixed. -TODO After 1.0 -============== - -A rough list of stuff that is going to be done to SILC after 1.0 or at -least could be done. - - o Implement the defined SilcDH API. The definition is in - lib/silccrypt/silcdh.h. - - o X.509 certificate support. SILC protocol supports certificates and - it would be great to have support for them. This is a big task as - support has to be made for ASN.1 as well. I've looked into OpenSSL - package as it has X.509 certificate support (and ASN.1 as well). - The code does not look very good to my eye but it has some potentials. - This should be looked at more closely. - - Naturally own SILC Certificate API has to be defined regardles what - the actual X.509 library is (OpenSSL X.509 or something else). Other - choice is to write own X.509 library but I'm not going to do it - - I can help to migrate the OpenSSL X.509 into SILC and I can help if - someone would like to write the X.509 library - but I'm not going - to start writing one myself. Anyhow, the OpenSSL X.509 lib should - be checked. - - Other package that should be checked is the NSS's X509 library, - which I like more over OpenSSL package. - - o SSH2 public keys support, allowing the use of SSH2 public keys in - SILC. - - o OpenPGP certificate support, allowing the use of PGP public keys - in SILC. - - o Compression routines are missing. The protocol supports packet - compression thus it must be implemented. SILC Zip API must be - defined. - - o Rewrite the lib/silcutil/silcprotocol.[ch] not to have [un]register - functions, but to make it context based all the way. The alloc should - take as argument the protocol type and its callback (not only - final callback). It is not good that we have now global list of - registered protocols. - - o Optimizations in Libraries - - o There is currently three (3) allocations per packet in the - silc_packet_receive_process, which is used to process and - dispatch all packets in the packet queue to the parser callback - function. First allocation is for parse_ctx, second for the - SilcPacketContext, and third for packet->buffer where the actual - data is saved. - - The parse_ctx allocation can be removed by adding it as a - structure to the SilcPacketContext. When the SilcPacketContext - is allocated there is space for the parse context already. - - The silc_packet_context_alloc could have a free list of - packet contexts. If free packet context is found from the list - it is returned instead of allocating a new one. The library - could at first allocate them and save them to the free list - until enough contexts for smooth processing exists in the list. - This would remove a big allocation since the structure is - quite big, and even bigger if it would include the parse_ctx. - - The packet->buffer can be optimized too if the SilcBuffer - interface would support free lists as well. Maybe such could - be done in the same way as for SilcPacketContext. The - silc_buffer_alloc would check free list before actually - allocating new memory. Since the packets in the SILC protocol - usually are about the same size (due to padding) it would be - easy to find suitable size buffer from the free list very - quickly. - - These naturally cause the overal memory consumption to grow - but would take away many allocations that can be done several - times in a second. - - o Move the actual file descriptor task callback (the callback that - handles the incoming data, outgoing data etc, that is implemnted - in server and client separately (silc_server_packet_process and - silc_client_packet_proces)) to the low level socket connection - handling routines, and create an interface where the application - can register a callbacks for incoming data, outoing data and EOF - receiving, which the library will call when necessary. This way - we can move the data handling in one place. - - o Add silc_id_str2id to accept the destination buffer as argument - and thus not require any memory allocation. Same will happen - with silc_id_payload_* functions. - - o Optimizations in Server - - o Remove the big switch statement from the function - silc_server_packet_parse_type and replace it with predefined - table of function pointers where each of the slot in table - represents the packet type value. - - Same could be done with notify packets which has big switch - statement too. Same kind of table of notify callbacks could be - done as well. - - o The parser callback in the server will add a timeout task for - all packets. It will require registering and allocating a - new task to the SilcSchedule. Maybe, at least, for server - and router packets the parser would be called immediately - instead of adding it to the scheduler with 0 timeout. It - should be analyzed too how slow the task registering process - actually is, and find out ways to optimize it. - - o Cipher optimizations (asm, that this) at least for i386 would be nice. - - o Add builtin SOCKS and HTTP Proxy support, well the SOCKS at least. - SILC currently supports SOCKS4 and SOCKS5 but it needs to be compiled - in separately. + 15. The LEAVE command reply should return the Channel ID of the channel + that was parted.