You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Adrien Kara 16a29c9928
Move itemOrigin logic and usage to a function
2 months ago
benchmark Bench number to string and Add a human readable size function 2 months ago
internal Move itemOrigin logic and usage to a function 2 months ago
.gitignore Fix vcode line 3 months ago
LICENSE Update License 3 months ago
README.md Add force download and move/rewrite explo 2 months ago
go.mod Init the explore function 3 months ago
go.sum Init the explore function 3 months ago
main.go Add database initialisation at startup 2 months ago

README.md

[WIP] goCloudyFile

Go Report Card License: GPL 3.0

Description

GoCloudyFile is a free software project under development,
which aims to provide a simple and easy to use online file manager.
Designed to be Self-Hosted, efficient, optimized, eco-designed, sober and secure.

For the benefit of individuals, associations and small businesses.
He is perfect in replacement of heavy and consuming project like OwnCloud, especially when you don't need all of their useless features.

Eco-Design rules

  • Simple HTML and CSS in front-end
  • Flat file database (no db like MySQL, MongoDB, PostgreSQL, etc.)
  • No server side scripting (no NodeJS, no PHP, no Python, no Ruby, no Perl, etc.)
  • LOW client side scripting (no AngularJS, no ReactJS, no VueJS, no WebAssembly, etc.)
  • No external services required or used (except for Let's Encrypt certificate)
  • No complex operations, listings, sync

Functions

File manager

  • Add (Drag & Drop, Selection, Folder)
  • Open
  • Remove
  • Explore
  • Download
  • Touch/Mkdir
  • Move file and folder

Collaboration

  • File Sharin (Expiration, Password)
  • User Management (DualAuth, Read/Write restriction, Disable)
  • Access/Usage Log

Server

  • Port redirection
  • Manual cert
  • Auto cert with Let’s Encrypt
  • Compression level
  • "Database" in flat file

Configuration

Definitions

Configuration file cli:"conf" or env:"GOCLOUDYFILE_CONFIG"
Determines the path of the config file.

Default: /etc/gocf.conf

# Server

Port cli:"port" or env:"GOCLOUDYFILE_PORT" or json:"port"
The port exposed by the server.

Default: 2179

Host cli:"host" or env:"GOCLOUDYFILE_HOST" or json:"host"
The host addr where the server will listen.

Default: 127.0.0.1

Domain json:"domain"
A valid domain name, where the server will be accessible from internet.
It used for the auto certification by Let’s Encrypt.

Default: <nil>

Compression json:"compression"
Determines the compression algoritm user for the server responses.

Default: LevelDefault

LevelDisabled: -1
LevelDefault: 0
LevelBestSpeed: 1
LevelBestCompression: 2

Max body sizejson:"max_body_size"
The maximum size of a request body.
Given in bytes.

Default: 12582912

# Cert

Auto cert json:"auto"
If true, the server will be automatically certified by Let’s Encrypt.
Require te Domain name to be set and valid.

Default: false

Cert file json:"crt"
The path to the certificate file.
This option is ignored if the auto cert option is set to true.

Default: <nil>

Key file json:"key"
The path to the certificate key file.
This option is ignored if the auto cert option is set to true.

Default: <nil>

# App

Name json:"name"
The name of the application.
Is used to define the title of the application.

Default: GoCloudyFile

Data dir cli:"data" or env:"GOCLOUDYFILE_DATA_DIR" or json:"data_dir"
The path to the data directory.
This is where exposed files are stored.

Default: /var/lib/gocloudyfile/data

Work dir cli:"work" or env:"GOCLOUDYFILE_WORK_DIR" or json:"work_dir"
The path to the working directory.
This is where the application variables are stored like the database.

Default: /var/lib/gocloudyfile

Debug cli:"debug" or env:"GOCLOUDYFILE_DEBUG" or json:"debug"
If true, the application will be in debug mode.

Default: false

# Meta

Author json:"author"
The name of the company or person who created the application or hosting the service.

Default: Iglou.eu

Description json:"description"
A short description of the application or hosting service.
It is used in the meta tags of the application and in the header of the application.

Default: GoCloudyFile is a web application for managing your content

Title prefix json:"title_prefix"
The prefix of the page title in the navigation bar.

Default: MyCloudy -

By CLI

override all other defined configuration values

Usage of :
  -conf string
     Set the path to the configuration file
  -data string
     The path to the data directory
     This is where exposed files are stored
  -debug
     If set, the application will be in debug mode
  -host string
     The host addr where the server will listen
  -port string
     The port exposed by the server
  -work string
     The path to the working directory
     This is where the application variables are stored like the database

By Environment variable

Overrides by the json config file

GOCLOUDYFILE_PORT="2179"
GOCLOUDYFILE_HOST="127.0.0.1"
GOCLOUDYFILE_DATA_DIR="/tmp/data"
GOCLOUDYFILE_WORK_DIR="/tmp"
GOCLOUDYFILE_CONFIG="/tmp/config.json"
GOCLOUDYFILE_DEBUG="true"

By JSON

{
  "server": {
    "port": "2179",
    "host": "127.0.0.1",
    "domain": "",
    "compression": 1,
    "max_body_size": 12582912,
    "cert": {
      "crt": "",
      "key": "",
      "auto": false
    }
  },
  "app": {
    "name": "GoCloudyFile",
    "debug": true,
    "data_dir": "/tmp/data",
    "work_dir": "/tmp"
  },
  "ui": {
    "meta": {
      "author": "GoCloudyFile",
      "description": "GoCloudyFile is a web application for managing your content",
      "title_prefix": "MyCloudy - "
    }
  }
}