docs: Add READMEs
Signed-off-by: Julien Riou <julien@riou.xyz>
This commit is contained in:
parent
e22105049a
commit
7c00b364d1
5 changed files with 143 additions and 2 deletions
52
README.md
52
README.md
|
@ -1,3 +1,53 @@
|
||||||
# Coller
|
# Coller
|
||||||
|
|
||||||
Simple self-contained pastebin solution.
|
Simple self-contained pastebin solution written in Go.
|
||||||
|
|
||||||
|
# Description
|
||||||
|
|
||||||
|
Coller is a set a binaries:
|
||||||
|
- **collerd**: HTTP server to handle note management
|
||||||
|
- **coller**: CLI to create notes
|
||||||
|
- **copier**: CLI to download and decrypt notes (client-side decryption)
|
||||||
|
|
||||||
|
# Installation
|
||||||
|
|
||||||
|
## From source code
|
||||||
|
|
||||||
|
Requires [Go](https://go.dev/dl/).
|
||||||
|
|
||||||
|
```
|
||||||
|
git clone https://git.riou.xyz/jriou/coller.git
|
||||||
|
cd coller
|
||||||
|
make
|
||||||
|
sudo cp -p bin/* /usr/local/bin/
|
||||||
|
```
|
||||||
|
|
||||||
|
## Docker
|
||||||
|
|
||||||
|
```
|
||||||
|
git clone https://git.riou.xyz/jriou/coller.git
|
||||||
|
cd coller
|
||||||
|
docker build -t coller:latest .
|
||||||
|
docker run --network host --rm --name collerd -p 8080:8080 coller:latest
|
||||||
|
```
|
||||||
|
|
||||||
|
Then go to http://localhost:8080 (website).
|
||||||
|
|
||||||
|
## Ansible
|
||||||
|
|
||||||
|
See [ansible-role-coller](https://git.riou.xyz/jriou/ansible-role-coller).
|
||||||
|
|
||||||
|
|
||||||
|
# Usage and configuration
|
||||||
|
|
||||||
|
* [collerd](src/cmd/collerd/README.md)
|
||||||
|
* [coller](src/cmd/coller/README.md)
|
||||||
|
* [copier](src/cmd/copier/README.md)
|
||||||
|
|
||||||
|
# Contributions
|
||||||
|
|
||||||
|
Contributions are welcomed! Feel free to provide unit tests when possible. Lint your code with `go fmt`. If you don't feel confident enough to contribute, feel free to open an issue to describe the feature you would like to see implemented or the problem you are facing.
|
||||||
|
|
||||||
|
# License
|
||||||
|
|
||||||
|
See [LICENSE](LICENSE).
|
42
src/cmd/coller/README.md
Normal file
42
src/cmd/coller/README.md
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
# coller
|
||||||
|
|
||||||
|
CLI to create notes.
|
||||||
|
|
||||||
|
# Usage
|
||||||
|
|
||||||
|
```
|
||||||
|
coller -help
|
||||||
|
```
|
||||||
|
|
||||||
|
# Examples
|
||||||
|
|
||||||
|
Create from clipboard:
|
||||||
|
|
||||||
|
```
|
||||||
|
coller
|
||||||
|
```
|
||||||
|
|
||||||
|
Create from file:
|
||||||
|
|
||||||
|
```
|
||||||
|
coller -file filename.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
Provide password for encryption:
|
||||||
|
|
||||||
|
```
|
||||||
|
coller -ask-password
|
||||||
|
coller -password PASSWORD
|
||||||
|
```
|
||||||
|
|
||||||
|
Create public note:
|
||||||
|
|
||||||
|
```
|
||||||
|
coller -no-password
|
||||||
|
```
|
||||||
|
|
||||||
|
Return the copier command to use client-side decryption instead of the URL:
|
||||||
|
|
||||||
|
```
|
||||||
|
coller -copier
|
||||||
|
```
|
31
src/cmd/collerd/README.md
Normal file
31
src/cmd/collerd/README.md
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
# collerd
|
||||||
|
|
||||||
|
Server to manage notes:
|
||||||
|
* Website
|
||||||
|
* API
|
||||||
|
* Database management
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```
|
||||||
|
collerd -help
|
||||||
|
```
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
The file format is **JSON**:
|
||||||
|
|
||||||
|
* **title** (string): Title of the website
|
||||||
|
* **database_type** (string): Type of the database (default "sqlite", "postgres" also supported)
|
||||||
|
* **database_dsn** (string): Connection string for the database (default "collerd.db")
|
||||||
|
* **id_length** (int): Number of characters for note identifiers (default 5)
|
||||||
|
* **password_length** (int): Number of characters for generated passwords (default 16)
|
||||||
|
* **expiration_interval** (int): Number of seconds to wait between two expiration runs
|
||||||
|
* **listen_address** (string): Address to listen for the web server (default "127.0.0.1")
|
||||||
|
* **listen_port** (int): Port to listen for the web server (default 8080)
|
||||||
|
* **expirations** ([]int): List of supported expiration times in seconds (default 300, 86400, 604800, 18144000)
|
||||||
|
* **expiration** (int): Default expiration time in seconds
|
||||||
|
* **max_upload_size** (int): Maximum number of bytes received by the server for notes (the base64 encoding may use more space than the real size of the note)
|
||||||
|
* **show_version** (bool): Show version on the website
|
||||||
|
|
||||||
|
The configuration file is not required but the service might not be exposed to the public.
|
16
src/cmd/copier/README.md
Normal file
16
src/cmd/copier/README.md
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
# copier
|
||||||
|
|
||||||
|
CLI to download and decrypt notes from the client.
|
||||||
|
|
||||||
|
# Usage
|
||||||
|
|
||||||
|
```
|
||||||
|
copier -help
|
||||||
|
```
|
||||||
|
|
||||||
|
# Examples
|
||||||
|
|
||||||
|
```
|
||||||
|
copier -password PASSWORD URL
|
||||||
|
copier -w URL
|
||||||
|
```
|
|
@ -35,8 +35,10 @@ func NewDatabase(logger *slog.Logger, config *Config) (d *Database, err error) {
|
||||||
switch config.DatabaseType {
|
switch config.DatabaseType {
|
||||||
case "postgres":
|
case "postgres":
|
||||||
db, err = gorm.Open(postgres.New(postgres.Config{DSN: config.DatabaseDsn}), gconfig)
|
db, err = gorm.Open(postgres.New(postgres.Config{DSN: config.DatabaseDsn}), gconfig)
|
||||||
default:
|
case "sqlite":
|
||||||
db, err = gorm.Open(sqlite.Open(config.DatabaseDsn), gconfig)
|
db, err = gorm.Open(sqlite.Open(config.DatabaseDsn), gconfig)
|
||||||
|
default:
|
||||||
|
return nil, fmt.Errorf("database type '%s' not supported", config.DatabaseType)
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue