website/templates/services.html

63 lines
3.2 KiB
HTML

{% extends "base.html" %}
{% block title %}Services — echoIRCd{% endblock %}
{% block content %}
<section class="pagehead">
<div class="wrap">
<h1>echo services</h1>
<p>A companion services package that <b>links to echoIRCd over S2S</b>. It is <b>not</b> part of
the daemon — echoIRCd is a pure ircd; the services run as their own program.</p>
</div>
</section>
<section class="wrap doc">
<div class="doc-block">
<h2>Linked, not built in</h2>
<p>echoIRCd is an IRC <em>daemon</em> and nothing more. Accounts, nickname registration and
channel ownership are handled by <b>echo services</b> — a separate Rust program, from its own
repository, that connects to the network as a <b>linked services server</b>.</p>
<p>The split is deliberate: the daemon carries only the account and SASL <em>interface</em> (the
SASL relay, the account extension, and U-lined service commands); the services package holds
the accounts, the logic, and the data.</p>
<div class="flow">
<span class="node">IRC client</span><span class="arrow"></span>
<span class="node accent">echoIRCd</span><span class="arrow">&nbsp;S2S&nbsp;</span>
<span class="node accent2">echo services</span>
</div>
</div>
<div class="doc-block">
<h2>The services</h2>
<div class="cards">
<div class="fcard"><h3>NickServ</h3><p>Register and protect your nick — grouped nicks, certificates, public keys, vhosts, and profiles.</p></div>
<div class="fcard"><h3>ChanServ</h3><p>Channel founders and access lists, auto-op, akick, and topic &amp; mode locks.</p></div>
<div class="fcard"><h3>OperServ</h3><p>Network administration — akills, sessions, and staff tooling.</p></div>
<div class="fcard"><h3>MemoServ</h3><p>Leave messages for accounts while they're offline.</p></div>
</div>
</div>
<div class="doc-block">
<h2>How it fits together</h2>
<ul>
<li>echo services connects to echoIRCd over the <b>server link</b> — the same server-to-server protocol servers use between each other.</li>
<li>The daemon <b>U-lines</b> the services server and names it as the SASL server, so its privileged commands and SASL relay are trusted.</li>
<li>SASL is relayed from the daemon to services <b>mechanism-agnostically</b>, so new mechanisms (like ECDSA) work with no daemon changes.</li>
<li>State is <b>event-sourced</b>: every change is an appended event, replayed to rebuild the database.</li>
</ul>
</div>
<div class="doc-block">
<h2>Run &amp; source</h2>
<p>echo services is its own binary, with its own configuration:</p>
<pre class="code">echo config.toml</pre>
<p>Source: <a href="https://git.devtronic.pro/echo/echo">git.devtronic.pro/echo/echo</a>. See the
docs on <a href="/docs/services">Services</a> and <a href="/docs/linking">Server links</a>.</p>
</div>
</section>
<section class="ctaband">
<div class="wrap ctaband-in">
<div><h2>Register your nick</h2><p class="mono-line">/msg NickServ REGISTER &lt;password&gt; &lt;email&gt;</p></div>
<a class="btn btn-primary" href="/docs/accounts">Accounts &amp; SASL</a>
</div>
</section>
{% endblock %}