Skip to main content

A very simple Internet Relay Chat (IRC) server

Project description

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:

  1. 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 PATH
    

    You can then execute the program like this:

     miniircd --help
    
  2. Install miniircd as a package from the miniircd PyPI project.

    You can then execute the program with

     miniircd --help
    

    or 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

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

miniircd-2.3.tar.gz (20.6 kB view details)

Uploaded Source

Built Distribution

miniircd-2.3-py3-none-any.whl (20.4 kB view details)

Uploaded Python 3

File details

Details for the file miniircd-2.3.tar.gz.

File metadata

  • Download URL: miniircd-2.3.tar.gz
  • Upload date:
  • Size: 20.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for miniircd-2.3.tar.gz
Algorithm Hash digest
SHA256 c4521e393d355b0a2c67cdce5f3e92feb5186f4ab280790f3ebe67544c9c554f
MD5 f9c44fdfd0aec3f47777dbba1e95bb98
BLAKE2b-256 ae8e4421727e5e1f360e2724279053275d9871264224118e0f4e5a595233ce90

See more details on using hashes here.

File details

Details for the file miniircd-2.3-py3-none-any.whl.

File metadata

  • Download URL: miniircd-2.3-py3-none-any.whl
  • Upload date:
  • Size: 20.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for miniircd-2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 7fc051f023284e8f1d2446e6108e2243984f60216bfe64de7b8b9f215e7a0c57
MD5 2217461acfe9d3309192254a64ffaacb
BLAKE2b-256 b0432ed748ffcb361b1306cb26d12cdc9417f34176313d139d4dd818584902c6

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page