Project description
PyLink is an extensible, plugin-based IRC services framework written in
Python. It aims to be:
a replacement for the now-defunct Janus.
a versatile framework and gateway to IRC.
PyLink and any bundled software are licensed under the Mozilla Public
License, version 2.0 (LICENSE.MPL2). The
corresponding documentation in the docs/ folder is licensed
under the Creative Attribution-ShareAlike 4.0 International License.
(LICENSE.CC-BY-SA-4.0)
Support
First, MAKE SURE you’ve read the `FAQ <docs/faq.md>`__!
When upgrading between major versions, remember to read the `release
notes <RELNOTES.md>`__ for any breaking changes!
Please report any bugs you find to the issue
tracker. Pull requests are
open if you’d like to contribute, though new stuff generally goes to the
devel branch.
You can also find support via our IRC channels:
#PyLink @ irc.overdrivenetworks.com(webchat)
or #PyLink @ chat.freenode.net. Ask your questions and be patient
for a response.
Installation
Installing from source
First, make sure the following dependencies are met:
Python 3.4+
Setuptools (pip3 install setuptools)
PyYAML (pip3 install pyyaml)
ircmatch (pip3 install ircmatch)
For password encryption: Passlib (pip3 install passlib)
For the servprotect plugin: expiringdict (install this from
source; installation is
broken in pip due to
mailgun/expiringdict#13)
Clone the repository:
git clone https://github.com/GLolol/PyLink && cd PyLink
Pick your branch.
By default you’ll be on the master (stable) branch, which is
bugfix only for the most part (except when a new stable release is
introduced).
However, new features or more intensive bug fixes may not always be
included. Instead, the devel (pre-release) branch is where active
development goes, and it can be accessed by running
git checkout devel in your Git tree.
Install PyLink using python3 setup.py install (global install) or
python3 setup.py install --user (local install)
Note: --user is a literal string; do not replace it with your
username.
Whenever you switch branches or update PyLink’s sources via
``git pull``, you will need to re-run this command for changes to
apply!
Installing via PyPI (stable branch only)
Make sure you’re running the right pip command: on most distros, pip
for Python 3 uses the command pip3.
Run pip3 install pylinkirc to download and install PyLink. pip
will automatically resolve dependencies.
Download or copy
https://github.com/GLolol/PyLink/blob/master/example-conf.yml for an
example configuration.
Installing via Debian APT repository (stable branch only)
The Utopia Repository
hosts .deb packages for PyLink. For Debian Jessie (stable) and
Stretch/sid (testing), the pylink package and its dependencies are
available in the main section. See
https://packages.overdrivenetworks.com/#instructions for setup
instructions.
Upon installing pylink, example configurations and docs will be in
/usr/share/doc/pylink/examples and /usr/share/doc/pylink/docs
respectively. You can also install a local copy of the PyLink API
reference, which is provided by the
pylink-doc package.
Installing via Ubuntu PPA (stable branch only)
Ubuntu packages for PyLink are available from the PyLink
PPA for
Ubuntu 14.04 LTS (trusty) and above. Like with the Debian installation,
example configurations and docs will be in
/usr/share/doc/pylink/examples and /usr/share/doc/pylink/docs
respectively.
Configuration
Rename example-conf.yml to pylink.yml (or a similarly named
.yml file) and configure your instance there. Note that the
configuration format isn’t finalized yet - this means that your
configuration may break in an update!
Run pylink from the command line. PyLink will load its
configuration from pylink.yml by default, but you can override
this by running pylink with a config argument (e.g.
pylink mynet.yml).
Supported IRCds
Primary support
These IRCds (in alphabetical order) are frequently tested and well
supported. If any issues occur, please file a bug on the issue tracker.
charybdis (3.5+) - module ts6
InspIRCd 2.0.x - module inspircd
For vHost setting to work, m_chghost.so must be loaded.
Supported channel, user, and prefix modes are negotiated on
connect, but hotloading modules that change these is not
supported. After changing module configuration, it is recommended
to SQUIT PyLink to force a protocol renegotiation.
Nefarious IRCu (2.0.0+) -
module nefarious
UnrealIRCd 4.x - module unreal
Extended support
Support for these IRCds exist, but are not tested as frequently and
thoroughly. Bugs should be filed if there are any issues, though they
may not always be fixed in a timely fashion.
Elemental-IRCd
(6.6.x / git master) - module ts6
InspIRCd 3.0.x (git master) - module
inspircd
IRCd-Hybrid (8.2.x / svn trunk) -
module hybrid
ircd-ratbox (3.x) - module ratbox
Host changing is not supported on ircd-ratbox.
On ircd-ratbox, all known IPs of users will be shown in
/whois, even if the client is a cloaked relay client: if
you’re paranoid about this, turn off Relay IP forwarding by
setting the relay_no_ips option in the ratbox network’s
server: block.
juno-ircd (11.x / janet) -
module ts6 (see configuration
example)
Other TS6 and P10 variations may work, but are not officially supported.
Clientbot
Since v1.0, PyLink supports connecting to IRCds as a relay bot and
forwarding users back, similar to Janus’ Clientbot. This can be useful
if the IRCd a network used isn’t supported, or if you want to relay
certain channels without fully linking with a network.
For Relay to work properly with Clientbot, be sure to load the
relay_clientbot plugin in conjunction with relay.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution