Beacons
Beacons is a distributed file sharing system with distributed authorization. What this means is that it is a command line system that allows users to swap files securely based on time-limited tokens stored by the server. It is coded in Java and uses multi-threading and serialization. The client, servers, and key servers can run on any system that suports Java allowing members of a business, for example, to use this system as a secure way to connect to their web server to swap files without having to use ftp.
Each BeaconClient contacts the server to let it know that it is alive and receives a list of current users on the system. As users enter and exit the system the client receives messages to update its users list, which the user can search to get to the files that he or she needs. Users can list files that each user is serving and can also search for files by name. The system checks for search loops and works to keep network bandwidth down during searches.
You can see the system in action with this screenshot.
Code
BeaconClient.java
BeaconKeyServer.java
BeaconMessage.java
BeaconServer.java
BeaconState.java
InvalidRequestException.java
StreamCopier.java
Token.java