A block based filesystem microservice written in go
##Features
- Files are stored in blocks
- Immutable blocks (Append Only)
- Blocks are hashed
- Blocks are encrypted with own unique Symmetric Key (Symmetric Keys are Encrypted with RSA Master Key)
- Blocks are compressed using Snappy Compression
- Reduces data duplication
- Files where blocks have not changed reference old blocks
- A REST interface for manipulating blocks
- Uses couchbase for BlockedFiles repository
- Possible to specify mulitple Storage Providers.
- nfs - Local mount disk storage
- couchbase - Couchbase Raw Binary storage
- azure - Azure Simple Storage
- s3 - Planned s3 storage
##REST API
The REST API interface can be used to perform operations against the Filesystem. Default location is localhost:8010.
HTTP Method | URI path | Description |
---|---|---|
GET | /api/blocker | Retrieves a hello. |
GET | /api/blocker/{itemID} | Retrieves a BlockedFile based on the passed ID |
DELETE | /api/blocker/{itemID} | Delete a BlockedFile based on the passed ID |
COPY | /api/blocker/{itemID} | Creates a copy of a BlockedFile based on the passed ID |
POST | /api/blocker | Uploads a file and returns a newly created BlockedFile |
PUT | /api/blocker | Uploads a file and returns a newly created BlockedFile |
##Example code Example test scenario
##TODO
- Move encryption from TOY format to be a bit more secure
- The store should not use the hash as the ID as this would then be a predictable location for a file. A problem?
- Permissions
- Authentication