63 lines
3.2 KiB
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">↔ S2S ↔</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 & 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 & 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 <password> <email></p></div>
|
|
<a class="btn btn-primary" href="/docs/accounts">Accounts & SASL</a>
|
|
</div>
|
|
</section>
|
|
{% endblock %}
|