|
|
|
|
@@ -1795,7 +1795,7 @@ skew issues) and simpler than UUIDs (integer comparison vs. string comparison).
|
|
|
|
|
- **Channels**: Deleted when the last member leaves (ephemeral).
|
|
|
|
|
- **Users/sessions**: Deleted on `QUIT` or `POST /api/v1/logout`. Idle
|
|
|
|
|
sessions are automatically expired after `SESSION_IDLE_TIMEOUT` (default
|
|
|
|
|
30 days) — the server runs a background cleanup loop that parts idle users
|
|
|
|
|
24h) — the server runs a background cleanup loop that parts idle users
|
|
|
|
|
from all channels, broadcasts QUIT, and releases their nicks.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
@@ -1813,7 +1813,7 @@ directory is also loaded automatically via
|
|
|
|
|
| `DBURL` | string | `file:///var/lib/neoirc/state.db?_journal_mode=WAL` | SQLite connection string. For file-based: `file:///path/to/db.db?_journal_mode=WAL`. For in-memory (testing): `file::memory:?cache=shared`. |
|
|
|
|
|
| `DEBUG` | bool | `false` | Enable debug logging (verbose request/response logging) |
|
|
|
|
|
| `MESSAGE_MAX_AGE` | int | `2592000` | Maximum age of messages in seconds (30 days). Messages older than this are pruned. |
|
|
|
|
|
| `SESSION_IDLE_TIMEOUT` | string | `720h` | Session idle timeout as a Go duration string (e.g. `720h`, `24h`). Sessions with no activity for this long are expired and the nick is released. Default is 30 days. |
|
|
|
|
|
| `SESSION_IDLE_TIMEOUT` | string | `24h` | Session idle timeout as a Go duration string (e.g. `24h`, `30m`). Sessions with no activity for this long are expired and the nick is released. |
|
|
|
|
|
| `QUEUE_MAX_AGE` | int | `2592000` | Maximum age of client queue entries in seconds (30 days). Entries older than this are pruned. |
|
|
|
|
|
| `MAX_MESSAGE_SIZE` | int | `4096` | Maximum message body size in bytes (planned enforcement) |
|
|
|
|
|
| `LONG_POLL_TIMEOUT`| int | `15` | Default long-poll timeout in seconds (client can override via query param, server caps at 30) |
|
|
|
|
|
@@ -1833,7 +1833,7 @@ SERVER_NAME=My NeoIRC Server
|
|
|
|
|
MOTD=Welcome! Be excellent to each other.
|
|
|
|
|
DEBUG=false
|
|
|
|
|
DBURL=file:///var/lib/neoirc/state.db?_journal_mode=WAL
|
|
|
|
|
SESSION_IDLE_TIMEOUT=720h
|
|
|
|
|
SESSION_IDLE_TIMEOUT=24h
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
@@ -2229,7 +2229,7 @@ GET /api/v1/challenge
|
|
|
|
|
|
|
|
|
|
- [ ] **Hashcash proof-of-work** for session creation (abuse prevention)
|
|
|
|
|
- [x] **Queue pruning** — delete old queue entries per `QUEUE_MAX_AGE`
|
|
|
|
|
- [x] **Message rotation** — prune messages older than `MESSAGE_MAX_AGE`
|
|
|
|
|
- [x] **Message expiry** — delete messages older than `MESSAGE_MAX_AGE`
|
|
|
|
|
- [ ] **Channel modes** — enforce `+i`, `+m`, `+s`, `+t`, `+n`
|
|
|
|
|
- [ ] **User channel modes** — `+o` (operator), `+v` (voice)
|
|
|
|
|
- [x] **MODE command** — query channel and user modes (set not yet implemented)
|
|
|
|
|
|