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
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
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Corresponding rsync flags/behavior:
rsyncd— standalone daemon mode with a configuration file, modules, and optional authenticationCurrent FastSync behavior:
FastSync provides only a single-session TCP server (
src/server/server.c) that accepts one connection at a time viafork(), or stdio mode for SSH. There is no daemon mode with modules, config files, logging, or access control.Proposed changes:
--daemon(or a separatefastsync-daemonbinary)/etc/fastsyncd.confor~/.config/fastsync/daemon.conf):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.confstarts a background daemonclient src myserver::module/path