DupLESS : README 1. Setting up the KS To start the KS run cd server-auth python server.py The clients and KS interact through three ports, set in the ".ports" file. The rate control mechanism, parameters, root CA files, and other configuration options can be modified by server.py. The KS also provides an option for layering a username password based authentication mechanism on top of certificate based authentication. 2. Client functionalities DupLESS works with Dropbox by default, but can be used with GoogleDrive as well, by running with dupless-gd.py. Here, we describe the setup process with Dropbox, and the process with Google Drive is similar. DupLESS comes with a PKI set up, with a root CA, and certs for the KS and a single client. The certificates were created using OpenSSL. More client certs can be added, or the PKI setup can be modified, following OpenSSL documentation. The client uses the names of the certs provided in ks.py, while the KS uses the names in server-auth/server.py. 1. Setting up the client with Dropbox. To use DupLESS with Dropbox, first set up a dropbox account to use external apps, by following instructions here: https://www.dropbox.com/developers/apps When creating a new app, an app key and an app secret are provided, which should be copied to const.py. 2. Running the client for the first time To start the client run python dupless.py When running the client for the first time, the user will be prompted for authorizing the DupLESS app 3. Using the client To start the client run python dupless.py The client presents the user with a prompt where the user can provide commands and arguments. Pressing lists the available commands. The main commands are upload, download, ls, cd, mkdir, copy, find, and delete. Upload takes two arguments, the name of the local file and the desired name of the file on the server. Example: >upload local_file remote_file Download also takes two arguments, the name of the local file to write the file to, and the name of the file on the server. Example: >download local_file remote_file Copy takes two arguments, the names of the server source and destination files. Example: >copy source_file destination_file Mkdir takes one argument, the relative name of the directory to be created. Example: >mkdir new_directory_folder Find takes the name of a file, and returns the relative path of the location of the file. >find file_name cd takes the relative path of the new location and changes the current working directory in the server to this location. When a new file is uploaded, say, it will be created in this location. Note that this does not affect the local current working directory in any way. >cd path_name Delete takes one argument, the name of the file on the server to be deleted. Example: >delete server_file_name ls takes no arguments and lists the files in the directory. 4. Common issues with the client 1. Sometimes, Dropbox might be slow or have connectivity issues. This is beyond the control of DupLESS, and the only workaround seems to be waiting until the connectivity is better. 2. When using an external KS, make sure that the ports are not on localhost, but use the right network adapter. 3. Python's crypto and OpenSSL support varies between versions. DupLESS has been known to run without issues with Python version 2.7. However, we did encounter issues with versions 2.6 and earlier. Also, Python 3.x is not supported. 4. DupLESS has been tested only on Linux, specifically 64-bit Ubuntu 12.10. We are not aware of potential issues on other systems. ----------------------- Comments/Issues Send an email to sriramkr@cs.ucsd.edu.