8个版本 (5个稳定版)

3.0.0-beta2020年4月10日
3.0.0-alpha2020年3月31日
2.3.0 2020年3月19日
2.0.0 2020年2月24日
1.0.0 2020年2月20日

#5 in #irc-v3

ISC许可证

275KB
5.5K SLoC

可爱

builds.sr.ht status crates.io

此仓库包含一些可能对21世纪IRC工匠有所帮助的crate。它们围绕现代IRC服务器(或IRCd,简称)构建。您将特别发现

  • 一个IRC解析库,ellidri-tokens,它提供了解析IRC消息和模式字符串的正确和高效工具,
  • ellidri-unicase,提供对字符串的包装,使其对IRC的不同大小写映射不敏感,
  • 一个IRC服务器,ellidri,旨在易于设置、广泛兼容、功能完整且可扩展。

要讨论ellidri及其它,请加入IRC频道: #ellidri on freenode!还有一个测试服务器在ellidri.org上运行,如果您想尝试它!

本文件的其余部分关于ellidri,即IRC服务器。所有其他项目都有自己的README.md

特性

  • RFC 14592812 兼容性(几乎!见#1
  • 支持IRCv3
  • 可以通过可以在运行时重新加载的文件进行配置
  • 支持SQLite和PostgreSQL的SASL
  • 可爱消息

支持的扩展: account-notify, away-notify, batch, cap-notify, echo-message, extended-join, invite-notify, labeled-response, message-ids, message-tags, multi-prefix, sasl, server-time, setname, userhost-in-names

ellidri不支持任何服务器到服务器(S2S)协议。因此,不可能让多个ellidri实例管理同一个IRC网络。

ellidri要求客户端使用UTF-8,目前它只支持ascii作为大小写映射。

构建和安装

先决条件

  • Rust 编译器(至少版本 1.39,使用 PostgreSQL 时的版本为 v1.41)和 Cargo:[https://rustup.rs/](https://rustup.rs/)
  • SQLite 3(如果启用了 sqlite 功能)
  • PostgreSQL 客户端库(如果启用了 postgres 功能)
  • 在 Linux 上,OpenSSL 库及其开发文件

使用 cargo install ellidri 安装 ellidri,或使用 [AUR 软件包](https://aur.archlinux.org/packages/ellidri/).

在开发期间,使用 cargo build 构建,并使用 cargo run 运行。

对于打包,使用 cargo build --release --locked 构建。release 标志将启用优化,而 locked 标志将需要有效的锁文件(Cargo.lock),以确保开发和发布使用相同的依赖项。可执行文件生成在 target/release/ellidri

用法

ellidri 必须使用配置文件启动,例如

# Configuration file
domain  your.domain.tld

# Bind to an address and port.
bind_to 127.0.0.1:6667

# TLS-enabled port, with a PKCS12 archive.
bind_to 0.0.0.0:6697 /var/lib/ellidri/identity.p12

# Default is /etc/motd
motd_file  custom_motd.txt

然后使用 --config 参数启动 ellidri,如下所示

ellidri --config /path/to/the.configuration.file

包含所有设置及其默认值的示例配置文件可以在 doc/ellidri.conf 中找到。

贡献

欢迎提交补丁!以下是一些开始链接

  • 文档:[https://docs.rs/ellidri](https://docs.rs/ellidri)(请注意!此文档仅显示公共项目,但私有项目也有文档!开发者可以通过以下命令手动生成文档)
  • Git 仓库:[https://git.sr.ht/~taiite/ellidri](https://git.sr.ht/~taiite/ellidri)
  • 在 [Github](https://github.com/hhirtz/ellidri) 上提交 PR 或将补丁发送到邮件列表:[https://lists.sr.ht/~taiite/public-inbox](https://lists.sr.ht/~taiite/public-inbox)
  • 在问题跟踪器上报告错误:[https://todo.sr.ht/~taiite/ellidri](https://todo.sr.ht/~taiite/ellidri)

在开发 ellidri 时,您可以使用以下命令生成所有项目的文档

cargo doc --no-deps --document-private-items --open

致谢

没有 [https://ircdocs.horse](https://ircdocs.horse) 的帮助,ellidri 就无法存在。感谢 Daniel Oaks 和 [所有其他贡献者](https://github.com/ircdocs/modern-irc/graphs/contributors)!

还要感谢 [IRCv3 工作组](https://ircv3.net/charter) 对现代化 IRC 协议所做的工作!

许可证

ellidri 使用 ISC 许可证。有关副本,请参阅 LICENSE

依赖项

~11–27MB
~378K SLoC