Chookspace Files
A file management server over HTTP. Currently supports:
- Accounts with username and password
- Use a token to authenticate yourself
- Upload and download files
- You cannot access other people's files
Setup (Server)
- Install Go
- cd to the server directory and run
go build - Run the
filesbinary
Setup (Client)
Client coming soon!
Usage
The files server binary takes three arguments:
--storage-path: Tells Files where to keep files that the user has uploaded. Default is/opt/chookspace-files--db-path: Tells Files where to keep the database that tracks user information. Default is/opt/chookspace-files/files.db--port: Tells Files which port to start the server on. Default is5001
HTTPS
To reduce the attack surface, Files does not directly support HTTP. We recommend using a reverse proxy such as Caddy or a tunnel system like Cloudflare to allow secure access to the server.
API
/api/create_user
Creates a user in the database. Accepts JSON-formatted data.
Format:
{
"username": "YOUR_USERNAME",
"password": "YOUR_PASSWORD"
}
May return the following status codes:
- 200: Everything went fine
- 400: Either:
- Bad JSON
- A user with this username already exists
- 500: Either:
- Error with BCrypt for password hashing
- SQL error
/api/create_session
Creates a token which can be used to authenticate yourself when uploading and downloading files. Accepts JSON-formatted data.
Format:
{
"username": "YOUR_USERNAME",
"password": "YOUR_PASSWORD"
}
May return the following status codes:
- 200: Everything went fine. Check the JSON field "token" for your token.
- 400: Bad JSON
- 401: Either:
- User not found
- Incorrect password
- 500: SQL error
/api/send_file
Sends a file to the server. Uses a token for authentication. Accepts a file and form data (files and JSON don't mix)
Format:
Form Data:
token: YOUR_TOKEN
path: WHERE_TO_STORE_FILE
May return the following status codes:
- 200: Everything went fine. Should return JSON with the SHA256 file hash and file size in bytes.
- 400: Either:
- Bad form data
- No file provided
- 401: Unknown token
- 500: Either:
- Failed to read file
- Failed to create storage directory
- Failed to save file
- Failed to save file metadata to database
/api/get_file
Recieves a file from the server. Uses a token for authentication. Accepts JSON-formatted data.
Format:
{
"token": "YOUR_TOKEN",
"path": "FILE_STORAGE_PATH"
}
May return the following status codes:
- 200: Everything went fine. The content recieved should be the content of your file.
- 400: Bad JSON
- 401: Unknown token
- 404: File not found
- 500: Either:
- SQL error
- File found in DB but not on disk