goflux-lite

module
v0.1.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 22, 2025 License: MIT

README

GoFlux Lite

Go Version Release License Go Report Card

Simple file transfer tools - Three lightweight binaries for basic file operations.

Components

Server (gfl-server.exe) - Minimal file server without web UI
Client (gfl.exe) - Command-line file operations
Admin (gfl-admin.exe) - Token management

Features

Minimal - Basic functionality only, no web UI or extras
Secure - Path traversal protection and token authentication
Fast - Lightweight binaries with progress tracking
Simple - Each tool does one thing well
Resume - Resumable uploads for large files
Auto-discovery - Find servers automatically on local network Progress tracking - Visual progress bars with speed display Auto-firewall - Automatic Windows Firewall configuration

Behavior Notes

  • gfl.exe creates and reads goflux.json from the directory where the executable lives. Running commands from other working directories no longer leaves additional config files behind.
  • Client commands accept paths that contain spaces without additional quoting (for example gfl put My Files\archive.zip remote/archive.zip).

Quick Start

The easiest way to get started is using auto-discovery:

# Start server
gfl-server

# On another machine, discover servers
gfl discover

# Configure client for discovered server
gfl config 192.168.1.100:8080

# Start transferring files
gfl put document.pdf files/document.pdf
gfl get files/document.pdf downloaded.pdf
gfl ls files/
2. Manual Configuration
1. Build
# Windows
.\build.ps1

# Linux/Mac
chmod +x build.sh
./build.sh
2. Start Server
.\gfl-server.exe -port 8080
# or
.\gfl-server.exe -config goflux.json
3. Create Token
.\gfl-admin.exe create -user admin -permissions * -days 365
# Copy the token output
4. Configure Client

Edit goflux.json and add your token:

{
  "client": {
    "server_url": "http://localhost:8080",
    "token": "your-token-here"
  }
}

Alternative: Set environment variable (takes precedence over config file):

# Windows
$env:GOFLUX_TOKEN_LITE = "your-token-here"

# Linux/Mac
export GOFLUX_TOKEN_LITE="your-token-here"
5. Use Client
# Upload file
.\gfl.exe put document.pdf files/document.pdf

# Download file  
.\gfl.exe get files/document.pdf downloaded.pdf

# List files
.\gfl.exe ls files/

Commands

Server (gfl-server.exe)
gfl-server.exe [-config goflux.json] [-port 8080] [-version]
Client (gfl.exe)
gfl.exe [-config goflux.json] <command> [args...]

Commands:
  discover              Discover GoFlux servers on local network
  config <server:port>  Configure client for discovered server
  get <remote> <local>  Download a file
  put <local> <remote>  Upload a file
  ls [path]            List files/directories  

By default the client reads `goflux.json` from the directory where `gfl.exe` resides. Use `-config` to point at an alternate configuration file.
Admin (gfl-admin.exe)
gfl-admin.exe <command> [options]

Commands:
  create -user <name> [-permissions <perms>] [-days <days>] [-file <tokens.json>]
  list [-file <tokens.json>]
  revoke <token_id> [-file <tokens.json>]

Configuration

Create goflux.json:

{
  "server": {
    "address": "localhost:8080",
    "storage_dir": "./data",
    "meta_dir": "./.goflux-meta", 
    "tokens_file": "tokens.json"
  },
  "client": {
    "server_url": "http://localhost:8080",
    "chunk_size": 1048576,
    "token": ""
  }
}

Examples

# Auto-discovery workflow
.\gfl.exe discover
.\gfl.exe config 192.168.1.100:8080

# Start server on custom port
.\gfl-server.exe -port 9000

# Create admin token  
.\gfl-admin.exe create -user alice -permissions * -days 90

# Create limited user
.\gfl-admin.exe create -user bob -permissions upload,download -days 30

# List all tokens
.\gfl-admin.exe list

# Upload with progress
.\gfl.exe put largefile.zip backups/largefile.zip

# Upload using environment token (no config needed)
$env:GOFLUX_TOKEN_LITE = "your-token-here"
.\gfl.exe put document.pdf files/document.pdf

# Download to current directory
.\gfl.exe get backups/largefile.zip ./largefile.zip

# Browse directories
.\gfl.exe ls
.\gfl.exe ls backups/
.\gfl.exe ls backups/2024/

Security

  • Path Traversal Protection - Prevents ../ attacks
  • Token Authentication - Secure API access
  • Permission System - Granular access controls

Differences from Full GoFlux

Removed:

  • Advanced progress bars
  • Complex configuration options

Kept:

  • Core file operations (put/get/ls)
  • Token authentication
  • Resume functionality for large files
  • Multi-chunk uploads with session persistence

Version

GoFlux Lite v0.1.0 - First stable release

Directories

Path Synopsis
cmd
admin command
client command
server command
pkg

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL