A P2P File System designed for OpenDHT
In this project, we are going to implement Neat and Brilliant File System (NBFS) for the Peer-to-Peer file sharing system. We will implement the P2P system with OpenDHT. After that, we will provide file system support for the P2P system, so that user could easily look through the files stored in the remote peer by mounting the file system.
You can simply pull the container we have pushed to the Docker hub to access the prepared environment by following command (you can find the Dockerfile in this repository):
docker pull hongbo1001/fuse
before the fuse system was installed in your docker. We should implement the system of opendht
docker run -d -p4222:4222/udp aberaud/opendht dhtnode -b bootstrap.jami.net -p 4222 -s
In order to grant the fuse enough privilege to mount the file system, the following command would be necessary:
docker run -it -e AWSACCESSKEYID=obscured -e AWSSECRETACCESSKEY=obscured --privileged hongbo1001/fuse bash
While after we mount the system, the process will be running in the first terminal. And it is the time to start another terminal to access the mount file. The formal command to accomplish the task above is below:
docker exec -it -e AWSACCESSKEYID=obscured -e AWSSECRETACCESSKEY=obscured --privileged [container-id] bash
Requirements for Testing
- Cmake2.8.8 or higher for google test For ubuntu/Linux not installed cmake will need to running this command
Google Test Command Line
cmake . -DCMAKE_CXX_FLAGS:STRING=-std=c++11 make
if you have this error please edit googletest/CMakeList.txt line 13 edit
if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.1")
if (CMAKE_VERSION VERSION_GREATER "3.0.2")
For any docker cannot strated in macbook we should run this toolbox command.
bash --login '/Applications/Docker/Docker Quickstart Terminal.app/Contents/Resources/Scripts/start.sh'
Add testing for google test in subfolder.
git submodule add https://github.com/google/googletest.git
for second time use
git submodule update --init
- Create the directory support for the current design
- Modify the structure of the path from '/' to ':'
- Design the client-end program to upload the files and directories