v1.12.2 · Python 3.10+ · Linux, Windows and macOS
An IRC DCC file-sharing daemon — a modern reimplementation of OmenServe, the mIRC script that has run these channels for twenty years.
It sits in a channel, advertises a catalogue, and serves files over DCC to whoever asks. It can also fetch files from other bots, which OmenServe never could. No third-party packages: everything it needs to talk to IRC, move files, pack albums and run its admin console is in the standard library.
- Serves files over DCC — per-user and global queues, configurable slots,
!raralbum packing on demand, and DCC RESUME so an interrupted download continues instead of starting over - Keeps a searchable master list in
.txt,.zipand.rar, rebuilt atomically so a failed scan never overwrites a good one - Fetches from other bots — request a file or a whole list, or broadcast one
@findand collect every reply - Remembers people — a user who disconnects keeps their queue for five minutes and resumes on rejoin
- Defends itself — rolling flood windows, escalating mutes, hostmask bans, and every other bot treated as untrusted
- Is operable — an authenticated DCC CHAT console, an optional web dashboard, live
!rehash, and statistics that survive a restart - Runs where you run it — long paths, non-ASCII filenames, and Linux, Windows and macOS all in CI on every commit
See docs/FUTURE.md for the full picture, including what is not built yet.
python3 configure.py # a few questions
./scripts/linux/start-dccore.sh check # verify, without touching the network
./scripts/linux/start-dccore.sh # go
python3 update_list.py # build the first listOn Windows, py rather than python3 — a python.org install gives you py and python, not python3, and Windows ships an alias that makes python3 open the Microsoft Store instead:
py configure.py
scripts\windows\start-dccore.bat check
scripts\windows\start-dccore.bat
py update_list.pyFull guide, including configuring it by hand and upgrading from an older install: docs/INSTALL.md.
| INSTALL.md | requirements, setup, configuration, upgrading |
| FUTURE.md | what is implemented, what is planned |
| ADMIN-CONSOLE.md | the authenticated DCC CHAT console |
| WINDOWS.md | the Windows guide |
| CONVENTIONS.md | how this codebase is written, if you want to contribute |
| UPDATES.md | the changelog |
| SECURITY.md | how to report a vulnerability |
oserve.py wires everything and owns the threads. irc.py is the network loop and command parser; dcc.py sends files and dcc_fetch.py receives them. list.py and update_list.py build and search the catalogue, announce.py owns everything the channel sees, and commands.py handles what users type. db.py persists state, security.py decides who is allowed, and platform_compat.py holds the handful of genuine Linux/Windows differences so nothing else has to care. defaults.py declares every setting; settings_file.py lets an operator override them without editing Python.
The optional dashboard is webserver.py and web/, and disables itself cleanly if Flask is absent.
python3 -m unittest discover -s tests -t .4994 of them, stdlib-only, on Linux, Windows and macOS, Python 3.10, 3.12 and 3.14 in CI.
DCCore - an IRC DCC file-sharing daemon Copyright (C) 2026 The DCCore contributors
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.
In short: distributed forks and modified versions must stay open source under the same terms. Running a modified copy privately, which is what most operators do, carries no obligation at all - GPLv3's requirements attach to distribution, not to use.