evennia/docs/0.9.5/api/evennia.server.portal.telnet.html
Griatch e34f258a92 Revert "Updated HTML docs."
This reverts commit 51d5840b8b.
2022-11-14 22:43:45 +01:00

348 lines
No EOL
24 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>evennia.server.portal.telnet &#8212; Evennia 0.9.5 documentation</title>
<link rel="stylesheet" href="../_static/nature.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<script id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/language_data.js"></script>
<script async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/latest.js?config=TeX-AMS-MML_HTMLorMML"></script>
<script type="text/x-mathjax-config">MathJax.Hub.Config({"tex2jax": {"processClass": "tex2jax_process|mathjax_process|math|output_area"}})</script>
<link rel="shortcut icon" href="../_static/favicon.ico"/>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
</head><body>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 0.9.5</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">evennia.server.portal.telnet</a></li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<section id="module-evennia.server.portal.telnet">
<span id="evennia-server-portal-telnet"></span><h1>evennia.server.portal.telnet<a class="headerlink" href="#module-evennia.server.portal.telnet" title="Permalink to this headline"></a></h1>
<p>This module implements the telnet protocol.</p>
<p>This depends on a generic session module that implements
the actual login procedure of the game, tracks
sessions etc.</p>
<dl class="py class">
<dt id="evennia.server.portal.telnet.TelnetServerFactory">
<em class="property">class </em><code class="sig-prename descclassname">evennia.server.portal.telnet.</code><code class="sig-name descname">TelnetServerFactory</code><a class="reference internal" href="../_modules/evennia/server/portal/telnet.html#TelnetServerFactory"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.telnet.TelnetServerFactory" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">twisted.internet.protocol.ServerFactory</span></code></p>
<p>This is only to name this better in logs</p>
<dl class="py attribute">
<dt id="evennia.server.portal.telnet.TelnetServerFactory.noisy">
<code class="sig-name descname">noisy</code><em class="property"> = False</em><a class="headerlink" href="#evennia.server.portal.telnet.TelnetServerFactory.noisy" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="py method">
<dt id="evennia.server.portal.telnet.TelnetServerFactory.logPrefix">
<code class="sig-name descname">logPrefix</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/telnet.html#TelnetServerFactory.logPrefix"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.telnet.TelnetServerFactory.logPrefix" title="Permalink to this definition"></a></dt>
<dd><p>Describe this factory for log messages.</p>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt id="evennia.server.portal.telnet.TelnetProtocol">
<em class="property">class </em><code class="sig-prename descclassname">evennia.server.portal.telnet.</code><code class="sig-name descname">TelnetProtocol</code><span class="sig-paren">(</span><em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/telnet.html#TelnetProtocol"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.telnet.TelnetProtocol" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">twisted.conch.telnet.Telnet</span></code>, <code class="xref py py-class docutils literal notranslate"><span class="pre">twisted.conch.telnet.StatefulTelnetProtocol</span></code>, <a class="reference internal" href="evennia.server.session.html#evennia.server.session.Session" title="evennia.server.session.Session"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.server.session.Session</span></code></a></p>
<p>Each player connecting over telnet (ie using most traditional mud
clients) gets a telnet protocol instance assigned to them. All
communication between game and player goes through here.</p>
<dl class="py method">
<dt id="evennia.server.portal.telnet.TelnetProtocol.__init__">
<code class="sig-name descname">__init__</code><span class="sig-paren">(</span><em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/telnet.html#TelnetProtocol.__init__"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.telnet.TelnetProtocol.__init__" title="Permalink to this definition"></a></dt>
<dd><p>Initialize self. See help(type(self)) for accurate signature.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.portal.telnet.TelnetProtocol.dataReceived">
<code class="sig-name descname">dataReceived</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">data</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/telnet.html#TelnetProtocol.dataReceived"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.telnet.TelnetProtocol.dataReceived" title="Permalink to this definition"></a></dt>
<dd><p>Unused by default, but a good place to put debug printouts
of incoming data.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.portal.telnet.TelnetProtocol.connectionMade">
<code class="sig-name descname">connectionMade</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/telnet.html#TelnetProtocol.connectionMade"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.telnet.TelnetProtocol.connectionMade" title="Permalink to this definition"></a></dt>
<dd><p>This is called when the connection is first established.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.portal.telnet.TelnetProtocol.toggle_nop_keepalive">
<code class="sig-name descname">toggle_nop_keepalive</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/telnet.html#TelnetProtocol.toggle_nop_keepalive"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.telnet.TelnetProtocol.toggle_nop_keepalive" title="Permalink to this definition"></a></dt>
<dd><p>Allow to toggle the NOP keepalive for those sad clients that
cant even handle a NOP instruction. This is turned off by the
protocol_flag NOPKEEPALIVE (settable e.g. by the default
<strong>&#64;option</strong> command).</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.portal.telnet.TelnetProtocol.handshake_done">
<code class="sig-name descname">handshake_done</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">timeout</span><span class="o">=</span><span class="default_value">False</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/telnet.html#TelnetProtocol.handshake_done"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.telnet.TelnetProtocol.handshake_done" title="Permalink to this definition"></a></dt>
<dd><p>This is called by all telnet extensions once they are finished.
When all have reported, a sync with the server is performed.
The system will force-call this sync after a small time to handle
clients that dont reply to handshakes at all.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.portal.telnet.TelnetProtocol.at_login">
<code class="sig-name descname">at_login</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/telnet.html#TelnetProtocol.at_login"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.telnet.TelnetProtocol.at_login" title="Permalink to this definition"></a></dt>
<dd><p>Called when this session gets authenticated by the server.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.portal.telnet.TelnetProtocol.enableRemote">
<code class="sig-name descname">enableRemote</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">option</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/telnet.html#TelnetProtocol.enableRemote"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.telnet.TelnetProtocol.enableRemote" title="Permalink to this definition"></a></dt>
<dd><p>This sets up the remote-activated options we allow for this protocol.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>option</strong> (<em>char</em>) The telnet option to enable.</p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><em>enable (bool)</em> If this option should be enabled.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.portal.telnet.TelnetProtocol.disableRemote">
<code class="sig-name descname">disableRemote</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">option</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/telnet.html#TelnetProtocol.disableRemote"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.telnet.TelnetProtocol.disableRemote" title="Permalink to this definition"></a></dt>
<dd><p>Signal a programming error by raising an exception.</p>
<p>L{enableRemote} must return true for the given value of C{option} in
order for this method to be called. If a subclass of L{Telnet}
overrides enableRemote to allow certain options to be enabled, it must
also override disableRemote tto disable those options.</p>
<p>&#64;raise NotImplementedError: Always raised.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.portal.telnet.TelnetProtocol.enableLocal">
<code class="sig-name descname">enableLocal</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">option</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/telnet.html#TelnetProtocol.enableLocal"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.telnet.TelnetProtocol.enableLocal" title="Permalink to this definition"></a></dt>
<dd><p>Call to allow the activation of options for this protocol</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>option</strong> (<em>char</em>) The telnet option to enable locally.</p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><em>enable (bool)</em> If this option should be enabled.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.portal.telnet.TelnetProtocol.disableLocal">
<code class="sig-name descname">disableLocal</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">option</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/telnet.html#TelnetProtocol.disableLocal"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.telnet.TelnetProtocol.disableLocal" title="Permalink to this definition"></a></dt>
<dd><p>Disable a given option locally.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>option</strong> (<em>char</em>) The telnet option to disable locally.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.portal.telnet.TelnetProtocol.connectionLost">
<code class="sig-name descname">connectionLost</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">reason</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/telnet.html#TelnetProtocol.connectionLost"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.telnet.TelnetProtocol.connectionLost" title="Permalink to this definition"></a></dt>
<dd><p>this is executed when the connection is lost for whatever
reason. it can also be called directly, from the disconnect
method</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>reason</strong> (<em>str</em>) Motivation for losing connection.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.portal.telnet.TelnetProtocol.applicationDataReceived">
<code class="sig-name descname">applicationDataReceived</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">data</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/telnet.html#TelnetProtocol.applicationDataReceived"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.telnet.TelnetProtocol.applicationDataReceived" title="Permalink to this definition"></a></dt>
<dd><p>Telnet method called when non-telnet-command data is coming in
over the telnet connection. We pass it on to the game engine
directly.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>data</strong> (<em>str</em>) Incoming data.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.portal.telnet.TelnetProtocol.sendLine">
<code class="sig-name descname">sendLine</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">line</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/telnet.html#TelnetProtocol.sendLine"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.telnet.TelnetProtocol.sendLine" title="Permalink to this definition"></a></dt>
<dd><p>Hook overloading the one used by linereceiver.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>line</strong> (<em>str</em>) Line to send.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.portal.telnet.TelnetProtocol.disconnect">
<code class="sig-name descname">disconnect</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">reason</span><span class="o">=</span><span class="default_value">''</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/telnet.html#TelnetProtocol.disconnect"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.telnet.TelnetProtocol.disconnect" title="Permalink to this definition"></a></dt>
<dd><p>generic hook for the engine to call in order to
disconnect this protocol.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>reason</strong> (<em>str</em><em>, </em><em>optional</em>) Reason for disconnecting.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.portal.telnet.TelnetProtocol.data_in">
<code class="sig-name descname">data_in</code><span class="sig-paren">(</span><em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/telnet.html#TelnetProtocol.data_in"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.telnet.TelnetProtocol.data_in" title="Permalink to this definition"></a></dt>
<dd><p>Data User -&gt; Evennia</p>
<dl class="field-list simple">
<dt class="field-odd">Keyword Arguments</dt>
<dd class="field-odd"><p><strong>kwargs</strong> (<em>any</em>) Options from the protocol.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.portal.telnet.TelnetProtocol.data_out">
<code class="sig-name descname">data_out</code><span class="sig-paren">(</span><em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/telnet.html#TelnetProtocol.data_out"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.telnet.TelnetProtocol.data_out" title="Permalink to this definition"></a></dt>
<dd><p>Data Evennia -&gt; User</p>
<dl class="field-list simple">
<dt class="field-odd">Keyword Arguments</dt>
<dd class="field-odd"><p><strong>kwargs</strong> (<em>any</em>) Options to the protocol</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.portal.telnet.TelnetProtocol.send_text">
<code class="sig-name descname">send_text</code><span class="sig-paren">(</span><em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/telnet.html#TelnetProtocol.send_text"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.telnet.TelnetProtocol.send_text" title="Permalink to this definition"></a></dt>
<dd><p>Send text data. This is an in-band telnet operation.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>text</strong> (<em>str</em>) The first argument is always the text string to send. No other arguments
are considered.</p>
</dd>
<dt class="field-even">Keyword Arguments</dt>
<dd class="field-even"><p><strong>options</strong> (<em>dict</em>) <p>Send-option flags:</p>
<ul class="simple">
<li><p>mxp: Enforce MXP link support.</p></li>
<li><p>ansi: Enforce no ANSI colors.</p></li>
<li><p>xterm256: Enforce xterm256 colors, regardless of TTYPE.</p></li>
<li><p>noxterm256: Enforce no xterm256 color support, regardless of TTYPE.</p></li>
<li><p>nocolor: Strip all Color, regardless of ansi/xterm256 setting.</p></li>
<li><p>raw: Pass string through without any ansi processing
(i.e. include Evennia ansi markers but do not
convert them into ansi tokens)</p></li>
<li><p>echo: Turn on/off line echo on the client. Turn
off line echo for client, for example for password.
Note that it must be actively turned back on again!</p></li>
</ul>
</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.portal.telnet.TelnetProtocol.send_prompt">
<code class="sig-name descname">send_prompt</code><span class="sig-paren">(</span><em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/telnet.html#TelnetProtocol.send_prompt"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.telnet.TelnetProtocol.send_prompt" title="Permalink to this definition"></a></dt>
<dd><p>Send a prompt - a text without a line end. See send_text for argument options.</p>
</dd></dl>
<dl class="py method">
<dt id="evennia.server.portal.telnet.TelnetProtocol.send_default">
<code class="sig-name descname">send_default</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">cmdname</span></em>, <em class="sig-param"><span class="o">*</span><span class="n">args</span></em>, <em class="sig-param"><span class="o">**</span><span class="n">kwargs</span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/portal/telnet.html#TelnetProtocol.send_default"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.portal.telnet.TelnetProtocol.send_default" title="Permalink to this definition"></a></dt>
<dd><p>Send other oob data</p>
</dd></dl>
</dd></dl>
</section>
<div class="clearer"></div>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<p class="logo"><a href="../index.html">
<img class="logo" src="../_static/evennia_logo.png" alt="Logo"/>
</a></p>
<div id="searchbox" style="display: none" role="search">
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="../search.html" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" />
<input type="submit" value="Go" />
</form>
</div>
</div>
<script>$('#searchbox').show(0);</script>
<div role="note" aria-label="source link">
<!--h3>This Page</h3-->
<ul class="this-page-menu">
<li><a href="../_sources/api/evennia.server.portal.telnet.md.txt"
rel="nofollow">Show Page Source</a></li>
</ul>
</div><h3>Links</h3>
<ul>
<li><a href="https://www.evennia.com">Home page</a> </li>
<li><a href="https://github.com/evennia/evennia">Evennia Github</a> </li>
<li><a href="http://games.evennia.com">Game Index</a> </li>
<li><a href="http://webchat.freenode.net/?channels=evennia&uio=MT1mYWxzZSY5PXRydWUmMTE9MTk1JjEyPXRydWUbb">IRC</a> -
<a href="https://discord.gg/NecFePw">Discord</a> -
<a href="https://groups.google.com/forum/#%21forum/evennia">Forums</a>
</li>
<li><a href="http://evennia.blogspot.com/">Evennia Dev blog</a> </li>
</ul>
<h3>Versions</h3>
<ul>
<li><a href="../../1.0-dev/api/evennia.server.portal.telnet.html">1.0-dev (develop branch)</a></li>
<li><a href="evennia.server.portal.telnet.html">0.9.5 (v0.9.5 branch)</a></li>
</ul>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="nav-item nav-item-0"><a href="../index.html">Evennia 0.9.5</a> &#187;</li>
<li class="nav-item nav-item-this"><a href="">evennia.server.portal.telnet</a></li>
</ul>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2020, The Evennia developer community.
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.2.1.
</div>
</body>
</html>