miniircd -- A (very) simple Internet Relay Chat (IRC) server
Description
miniircd is a small and limited IRC server written in Python. Despite its size, it is a functional alternative to a full-blown ircd for private or internal use. Installation is simple; no configuration is required.
Features
- Knows about the basic IRC protocol and commands.
- Easy installation.
- Basic SSL support.
- No configuration.
- No ident lookup (so that people behind firewalls that filter the ident port without sending NACK can connect without long timeouts).
- Reasonably secure when used with --chroot and --setuid.
Limitations
- Can't connect to other IRC servers.
- Only knows the most basic IRC commands.
- No IRC operators.
- No channel operators.
- No user or channel modes except channel key.
- No reverse DNS lookup.
- No other mechanism to reject clients than requiring a password.
Requirements
Python 3.6 or newer. Get it at https://www.python.org.
Installation
No special installation needed: Just clone the repository and execute miniircd:
git clone https://github.com/jrosdahl/miniircd.git
cd miniircd
./miniircd --help
If you do want to install miniircd, there are several options:
-
Clone the repository and copy the executable file to a directory in PATH:
git clone https://github.com/jrosdahl/miniircd.git cd miniircd cp miniircd /usr/local/bin # or some other directory in your PATHYou can then execute the program like this:
miniircd --help -
Install miniircd as a package from the miniircd PyPI project.
You can then execute the program with
miniircd --helpor as a module like this:
python3 -m miniircd --help
Using --chroot and --setuid
In order to use the --chroot or --setuid options, you must be using an OS
that supports these functions (most Unix-like systems), and you must start the
server as root. These options limit the daemon process to a small subset of the
filesystem, running with the privileges of the specified user (ideally
unprivileged) instead of the user who launched miniircd.
To create a new chroot jail for miniircd, edit the Makefile and change JAILDIR
and JAILUSER to suit your needs, then run make jail as root. If you have a
motd file or an SSL PEM file, you'll need to put them in the jail as well:
cp miniircd.pem motd.txt /var/jail/miniircd
Remember to specify the paths for --state-dir, --channel-log-dir, --motd
and --ssl-pem-file from within the jail, e.g.:
miniircd --state-dir=/ --channel-log-dir=/ --motd=/motd.txt \
--setuid=nobody --ssl-pem-file=/miniircd.pem --chroot=/var/jail/miniircd
Make sure your jail is writable by whatever user/group you are running the server as. Also, keep your jail clean. Ideally it should only contain the files mentioned above and the state/log files from miniircd. You should not place the miniircd script itself, or any executables, in the jail. In the end it should look something like this:
# ls -alR /var/jail/miniircd
.:
total 36
drwxr-xr-x 3 nobody root 4096 Jun 10 16:20 .
drwxr-xr-x 4 root root 4096 Jun 10 18:40 ..
-rw------- 1 nobody nobody 26 Jun 10 16:20 #channel
-rw-r--r-- 1 nobody nobody 1414 Jun 10 16:51 #channel.log
drwxr-xr-x 2 root root 4096 Jun 10 16:19 dev
-rw-r----- 1 rezrov nobody 5187 Jun 9 22:25 ircd.pem
-rw-r--r-- 1 rezrov nobody 17 Jun 9 22:26 motd.txt
./dev:
total 8
drwxr-xr-x 2 root root 4096 Jun 10 16:19 .
drwxr-xr-x 3 nobody root 4096 Jun 10 16:20 ..
crw-rw-rw- 1 root root 1, 3 Jun 10 16:16 null
crw-rw-rw- 1 root root 1, 9 Jun 10 16:19 urandom
License
GNU General Public License version 2 or later.
Primary author
- Joel Rosdahl joel@rosdahl.net
Contributors
- Alex Wright
- Braxton Plaxco
- Hanno Foest
- Jan Fuchs
- John Andersen
- Julien Castiaux
- Julien Monnier
- Leandro Lucarella
- Leonardo Taccari
- Martin Maney
- Matt Baxter
- Matt Behrens
- Michael Rene Wilcox
- Ron Fritz
Metadata
Release files for miniircd 2.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| miniircd-2.3.tar.gz | 20.6 kB | Without provenance | Details for miniircd-2.3.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| miniircd-2.3-py3-none-any.whl | Python 3 | none | any | Details for miniircd-2.3-py3-none-any.whl |
Total release size: 41.0 kB
Release files / miniircd-2.3.tar.gz
| Download URL | miniircd-2.3.tar.gz |
|---|---|
| Size | 20.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c4521e393d355b0a2c67cdce5f3e92feb5186f4ab280790f3ebe67544c9c554f
|
|
BLAKE2b-256 checksum How to use checksums |
ae8e4421727e5e1f360e2724279053275d9871264224118e0f4e5a595233ce90
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.11.4
|
Release files / miniircd-2.3-py3-none-any.whl
| Download URL | miniircd-2.3-py3-none-any.whl |
|---|---|
| Size | 20.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7fc051f023284e8f1d2446e6108e2243984f60216bfe64de7b8b9f215e7a0c57
|
|
BLAKE2b-256 checksum How to use checksums |
b0432ed748ffcb361b1306cb26d12cdc9417f34176313d139d4dd818584902c6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.11.4
|
Security for miniircd 2.3
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.