66 lines
3.6 KiB
HTML
66 lines
3.6 KiB
HTML
{% extends "base.html" %}
|
|
{% block title %}echoIRCd — a from-scratch IRC server in Rust{% endblock %}
|
|
{% block content %}
|
|
<section class="hero">
|
|
<div class="hero-in">
|
|
<div class="hero-main">
|
|
<p class="eyebrow">// IRC daemon · written in Rust · IRCv3</p>
|
|
<h1>The from-scratch<br>IRC server.</h1>
|
|
<p class="hero-sub">A modern IRC daemon built from the ground up in Rust — full IRCv3,
|
|
TLS 1.3 and SASL. No forks. No C. No <code>unsafe</code>. Pair it with
|
|
<a href="/services">echo services</a> over S2S.</p>
|
|
<div class="cta">
|
|
<a class="btn btn-primary" href="/connect">Connect to the network</a>
|
|
<a class="btn btn-ghost" href="/docs">Read the docs</a>
|
|
</div>
|
|
<div class="statline" aria-label="live network status">
|
|
{% if status.online %}<span class="st on">● online</span>{% else %}<span class="st down">● offline</span>{% endif %}
|
|
<span>echoIRCd <b>{{ status.version }}</b></span>
|
|
<span>:6697 tls 1.3</span>
|
|
<span>users <b>{{ status.users }}</b></span>
|
|
<span>chans <b>{{ status.channels }}</b></span>
|
|
</div>
|
|
</div>
|
|
|
|
<aside class="codewin" aria-label="example IRC session">
|
|
<div class="codewin-bar"><span class="cw-dot"></span>session · irc.echoircd.org:6697</div>
|
|
<pre><code><span class="c-cmd">$ openssl s_client -connect irc.echoircd.org:6697 -quiet</span>
|
|
<span class="c-srv">:irc.echoircd.org NOTICE * :*** Looking up your host</span>
|
|
<span class="c-kw">CAP</span> LS 302
|
|
<span class="c-kw">NICK</span> dev
|
|
<span class="c-kw">USER</span> dev 0 * :dev
|
|
<span class="c-srv">:irc.echoircd.org</span> <span class="c-num">001</span> dev :Welcome to the echoIRCd Network
|
|
<span class="c-srv">:irc.echoircd.org</span> <span class="c-num">005</span> dev CHANTYPES=# PREFIX=(ohv)@%+ :are supported
|
|
<span class="c-kw">JOIN</span> #echoircd</code></pre>
|
|
</aside>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="band">
|
|
<div class="wrap">
|
|
<h2 class="h-center">Why echoIRCd</h2>
|
|
<div class="cards">
|
|
<div class="fcard"><h3>Safe by construction</h3><p><code>#![forbid(unsafe_code)]</code> across the whole tree, enforced in CI. Original code — not a fork of anything.</p></div>
|
|
<div class="fcard"><h3>Full IRCv3</h3><p>server-time, message-tags, account-tag, batch, labeled-response, chathistory, multiline, standard-replies and more.</p></div>
|
|
<div class="fcard"><h3>Modern TLS</h3><p>Direct TLS and WebSocket, OpenSSL & rustls backends, TLS 1.3 with post-quantum X25519MLKEM768, per-host SNI.</p></div>
|
|
<div class="fcard"><h3>SASL, incl. ECDSA</h3><p>PLAIN, EXTERNAL, SCRAM-SHA-256, and ECDSA-NIST256P-CHALLENGE — sign a challenge, no password on the wire.</p></div>
|
|
<div class="fcard"><h3>Companion services</h3><p><a href="/services">echo services</a> is a <b>separate</b> package — NickServ, ChanServ and more — that links to the daemon over S2S. It is not built in.</p></div>
|
|
<div class="fcard"><h3>Anti-abuse built in</h3><p>A native security engine: connection & nick-flood detection, behavioral/content heuristics, DEFCON, DNSBL/MX screening.</p></div>
|
|
</div>
|
|
<p class="h-center more"><a href="/features">Everything that's inside →</a></p>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="wrap latest">
|
|
<h2>Latest</h2>
|
|
<ul class="news">
|
|
{% for c in commits %}
|
|
<li>
|
|
<span class="news-date">{{ c.date }}</span>
|
|
<div><a href="{{ c.url }}"><code>{{ c.short }}</code></a> — {{ c.subject }}</div>
|
|
</li>
|
|
{% endfor %}
|
|
</ul>
|
|
<p class="h-center more"><a href="/docs/changelog">Full changelog →</a></p>
|
|
</section>
|
|
{% endblock %}
|