V1.5 beta2 (build 405)

- All this changes below were made by Md5Chap...
- Fixed the license dialog which was stalling for a few seconds when opened..
- Minor cosmetic gui changes

V1.5 beta1 (build 394)

- All this changes below were made by Md5Chap...
- Added nick coloring in the chat.
- Added a more generic and configurable logging facility.
  Added a class that knows levels of logging. you decide what to log.
- I have completely converted the code to C++, including the RSA sources.
  I have also made it compatible for some other source editors.
- I have introduced RSA blinding to prevent RSA timing attacks.
- I have put my own blowfish implementation c++ class to waste.
  It's easier to use because it's a template class.
- I have introduced "stealth mode". This mode should make it harder to passively detect a waste client. It makes it invisible to p2pwatchdog.com. It also significantly increases security and DOS-attack resistance.
  Handshake packets have random length in this mode.
  The connection sequence code was partially recoded to have a better handling of the current state of the handshake.
  you could call it pre shared key mode although this one is even more.
- If not in "stealth mode" a warning is printed to the logfile if someone tries to connect to you with valid private key but wrong network password.
  In "stealth mode" this is not possible, because using wrong passwords leads to random data. You will see unknown pubkey messages in the log with changing pubkey hashes for every connect you might assume someone with bad password or simply someone connecting to you not using waste.
- Protocol is sligtly modified when using network hashes to prevent offline cracking of network password.
- I have fixed several exploitable holes.
- I have introduced limiting of incoming connections.
  You can choose between limiting all incoming connections regardless of the clients or
  you can choose to limit the connections each client can open(each client is identified by its public key). Shortly said if two waste clients share one private key, you must set the incoming connection limit per host to two in order to have both clients connected.
  You can also have both limits active.
- At logging level of 5 the public key hash of a client is also logged when there are connection problems. You will see the hashes of clients that try to connect to you and were not allowed to.
- I have spent lots of time cleaning out bad coded crap from waste.
  I have made it more unified.. You can compile for linux as server, which code is nearly the same now as for windows except some small part in the startup code.
  Unfortunately some parts of the waste protocol depends on the gui.(really stupid problem). The linux server has a command line do make it daemon. (run in background without a logged on user).
- You can also compile a Windows waste command line server which is functionally equal to the linux version. Mainly for testing!
  But you could also make it windows service with the SrvAny tool from the Windows resource kit.
  Small modification would make it native windows service capable....
- I have made a special chat room $$broadcast to send messages to all users.
- You can now send chat to either clientid or public key hash or username. This is a commandline only fearure from the chat window. Don't bog me making this gui.
  You can also use /whois [pubkeyhash] for example.
- Now waste honors hidden file attributes and on linux ".filename".(dotted filenames)
- Uploads and Downloads to clients are optionally "unique". An option download only once forces a file being unique in a directory. Up and download feature! This should prevent you to upload a file to a user several thousand times ;)
- You may have problems using the download list from the alpha2+ clients. It may happen that they are not fully imported. Simply re-download them and they will be resumed!
- Usernames are persisted on downloads as they were when the download started.
- Usernames with beginning dot is now handles correctly as "invisible client". This is no new function. It is bug fixed. It is nearly the same as if you have no nick, but you may chat with this dotted name. Such users are not seen on the userlist. On the browse such user is shown as the clientid.
- Linux server now knows signals HUP and USR1 and INT.
  HUP does dynamic reload of keys and config. USR1 flushes logs. INT shuts down.
  I have put my batch scripts to the distribution.
- I have introduced dynamic Ip support (called auto-mode) and fixed the other option dyn dns support to resolve addresses on reconnect when completely disconnected.
  Now Waste is able to keep a dynamic network up if you have auto reconnect activated on your dialup connection.
- The dyn dns is resolved every time a waste client switches from "network down" to active state(connecting)
- I have made chat rooms pop up on incoming messages when you have sent it to tray. This is a configurable option.
- I have added sounds to incoming chats. This is a configurable option.
- I have added chat logging. You can select what kind of chats you want to log.
  You can select private, room or broadcast.
  Every context(chat room) is saved to a single file with timestamp.
- Changing pass phrase of private key now works. Did someone notice that it hasn't worked????
- I have made access lists work. That code behind was completely buggy. I have made several functions that handles IP better.
- Waste now also enumerates the local subnets from adapters to determine if an address on local subets may be reachable. This should avoid connecting to unreachable clients and sending private IPs to the internet.
- well tons of that old code was modified by me. I have introduced templates, rewritten the Blowfish engine(it's now a c++ template class with automatic termination of keys when the object is being unreferenced). I have also made it a bit faster...
- I have fixed the Random number generation which was very very buggy and could have been determined on older waste versions easier than intended.
- Although the inner protocol is compatible to older clients, I have made them incompatible by forcing another sync sequence. Because older clients have security issues this step is really needed.
- I have fixed the connection list, so that clients die after more that 100 tries and when connected clients die 8 times faster. That was intended but did not work.
- I have made all configuration parameters declared in one c++ header file. All network parameters in another file.
- I have changed some configuration defaults. (maintain connections is default 0 in my version, coz I don't like auto-connecting clients, although the value is still persisted as before). Another one was the stupid upload 160 files at once crap(now 16). I have also fixed the bug in that limiter.
- I have cleaned up the whole source code and made it better readable.
- I have closed several buffer overflow conditions.
- The hashing of files is now only done when a client initially starts a download. This should prevent lockups of waste when users resume downloads.
  The hashing should be either asynchronous or pre-calculated, but it's difficult to implement. When you experience stalled waste for several seconds, this is due to hashing uploads. Deactivate hashing on send preferences to avoid waste consuming much resources.
- The handling of IP's has been improved. The private 172.16.0.0/12 network has also been added to be known.
- A small bug that may happen on slow connections sporadically refusing to connect has been solved.
- Several parts in the handshake sequence were non-random looking. Now everything is optionally padded with random crap.
- Tons of bugs in the chat have been fixed. Lines can now be up to one 1024 chars.
- The time before a nick starves has been doubled to prevent messages of stalled or slow clients.
- The database has scanned the drive on startup whatever you have configured in the preferences. That has been fixed. Only cached data is read on startup.
- Several memory leaks have been fixed through all parts of waste.
- Many parts in the source code have been revised and duplicate code parts merged and optimized.
- When you have your download path and parts of your shared uploads in one directory, the other waste clients won't see that file unless it's complete. Shortly said a file that has a ".wastestate" file belonging to it is not seen to other clients. This should prevent others reading incomplete files. This is necessary because waste is currently unable to handle partial downloads like emule or gnutella does. For that reason you should use a tool like winrar to split files, like those people in the ftp scene do.
- Closed a bug in the memory management of chat functions that could have crashed waste.
- Optimized the code to make it easier to debug.
- Now clients try to maintain direct connections on transfers if configured. You can choose if your client permits this and if your client actively tries to open a direct connection. It is now done regardless if you are uploader or downloader. This should fix many problems in the waste network because of routing traffic.
- Your local Ip is only sent to other clients if it was correctly resolved. This should prevent bad ip's on the network lists. Please remember that it is still your responsibility to make the waste port connectable. If you use a router you must set a rule that the TCP-port is forwarded to you. Otherwise other clients cannot connect. Same as for every other application...
- The title bar of network connection should now be updated correctly to show the active connections.
- The preferences have got a big rework. It's slightly bigger in size and where appropriate I have split the options to more tabs to make it easier to read. Too much information on one tab might confuse users.
- I have fixed so many bugs in file transfers and in other parts, that I simply forgot most of them....