Feature: Daemon/server mode equivalent to rsyncd #182

Closed
opened 2026-07-30 18:32:55 +02:00 by TapTap · 0 comments
Owner

Corresponding rsync flags/behavior:

  • rsyncd — standalone daemon mode with a configuration file, modules, and optional authentication

Current FastSync behavior:
FastSync provides only a single-session TCP server (src/server/server.c) that accepts one connection at a time via fork(), or stdio mode for SSH. There is no daemon mode with modules, config files, logging, or access control.

Proposed changes:

  • CLI flag: --daemon (or a separate fastsync-daemon binary)
  • Configuration file (e.g., /etc/fastsyncd.conf or ~/.config/fastsync/daemon.conf):
    • Module definitions with path, read-only flag, allowed hosts, secrets file
    • Global options: bind address, port, TLS cert/key, log file, pid file
  • Protocol changes:
    • Optional auth handshake after version exchange
    • Module selection command from client
  • Server changes:
    • Detach from terminal, write PID file, log to file/syslog
    • Enforce per-module access controls
    • Support chroot or at least path restriction to module root

Priority: low
Rationale: Daemon mode is a large feature needed for always-on deployments. SSH transport already covers most remote use cases.

Acceptance criteria:

  • fastsync-server --daemon --config=fastsyncd.conf starts a background daemon
  • Client can select a module: client src myserver::module/path
  • Daemon enforces read-only modules and host allow/deny lists
  • Daemon logs connections and transfers
  • Config file syntax is documented
**Corresponding rsync flags/behavior:** - `rsyncd` — standalone daemon mode with a configuration file, modules, and optional authentication **Current FastSync behavior:** FastSync provides only a single-session TCP server (`src/server/server.c`) that accepts one connection at a time via `fork()`, or stdio mode for SSH. There is no daemon mode with modules, config files, logging, or access control. **Proposed changes:** - CLI flag: `--daemon` (or a separate `fastsync-daemon` binary) - Configuration file (e.g., `/etc/fastsyncd.conf` or `~/.config/fastsync/daemon.conf`): - Module definitions with path, read-only flag, allowed hosts, secrets file - Global options: bind address, port, TLS cert/key, log file, pid file - Protocol changes: - Optional auth handshake after version exchange - Module selection command from client - Server changes: - Detach from terminal, write PID file, log to file/syslog - Enforce per-module access controls - Support chroot or at least path restriction to module root **Priority:** low **Rationale:** Daemon mode is a large feature needed for always-on deployments. SSH transport already covers most remote use cases. **Acceptance criteria:** - [ ] `fastsync-server --daemon --config=fastsyncd.conf` starts a background daemon - [ ] Client can select a module: `client src myserver::module/path` - [ ] Daemon enforces read-only modules and host allow/deny lists - [ ] Daemon logs connections and transfers - [ ] Config file syntax is documented
TapTap added the enhancementneeds-triage labels 2026-07-30 18:32:55 +02:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: TapTap/FastSync#182