mirror of
https://github.com/jlu5/PyLink.git
synced 2024-11-30 23:09:23 +01:00
20474dabac
Closes #85. Nick collisions caused by internal clients are handled fine now, including the following cases: - Abusing spawnClient to create a user with the same nick as a relay client, but with a lower TS. - When both an UID (e.g. 42XAAAAAA) and a tagged UID (_42XAAAAAA) exist on the same network (the two will both try to take the same nick of _42XAAAAAA/net over the relay). The case where changing NICK from a long cut-off nick to another long cut-off nick is also mitigated. somelongnick/net won't show nick changes to somelongnic//net if the old and new nicks have give the same normalized relay nick. This introduces a new dependency, expiringdict, from https://pypi.python.org/pypi/expiringdict/1.1.2, which is used as a cache for flood prevention.
32 lines
1.2 KiB
Markdown
32 lines
1.2 KiB
Markdown
# PyLink
|
|
|
|
PyLink is an extensible, plugin-based IRC PseudoService written in Python. It aims to be a replacement for the now-defunct Janus.
|
|
|
|
## Usage
|
|
|
|
**PyLink is a work in progress and thus may be very unstable**! No warranty is provided if this completely wrecks your network and causes widespread rioting amongst your users!
|
|
|
|
That said, please report any bugs you find to the [issue tracker](https://github.com/GLolol/PyLink/issues). Pull requests are open if you'd like to contribute.
|
|
|
|
### Dependencies
|
|
|
|
Dependencies currently include:
|
|
|
|
* Python 3.4+
|
|
* PyYAML (`pip install pyyaml` or `apt-get install python3-yaml`)
|
|
* *For the relay plugin only*: expiringdict (`pip install expiringdict`/`apt-get install python3-expiringdict`)
|
|
|
|
#### Supported IRCds
|
|
|
|
* InspIRCd 2.0.x - module `inspircd`
|
|
* charybdis (3.5.x / git master) - module `ts6`
|
|
* Elemental-IRCd (6.6.x / git master) - module `ts6`
|
|
|
|
### Installation
|
|
|
|
1) Rename `config.yml.example` to `config.yml` and configure your instance there. Not all options are properly implemented yet, and the configuration schema isn't finalized yet - this means that your configuration may break in an update!
|
|
|
|
2) Run `main.py` from the command line.
|
|
|
|
3) Profit???
|