evennia/docs/1.0-dev/api/evennia.server.html
2020-06-15 21:52:33 +02:00

3359 lines
No EOL
246 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 xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>evennia.server package &#8212; Evennia 1.0-dev 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>
<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 1.0-dev documentation</a> &#187;</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<div class="section" id="module-evennia.server">
<span id="evennia-server-package"></span><h1>evennia.server package<a class="headerlink" href="#module-evennia.server" title="Permalink to this headline"></a></h1>
<p>This sub-package holds the Server and Portal programs - the “core” of
Evennia. It also contains the SessionHandler that manages all
connected users as well as defines all the connection protocols used
to connect to the game.</p>
<div class="section" id="subpackages">
<h2>Subpackages<a class="headerlink" href="#subpackages" title="Permalink to this headline"></a></h2>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="evennia.server.game_index_client.html">evennia.server.game_index_client package</a><ul>
<li class="toctree-l2"><a class="reference internal" href="evennia.server.game_index_client.html#submodules">Submodules</a></li>
<li class="toctree-l2"><a class="reference internal" href="evennia.server.game_index_client.html#module-evennia.server.game_index_client.client">evennia.server.game_index_client.client module</a></li>
<li class="toctree-l2"><a class="reference internal" href="evennia.server.game_index_client.html#module-evennia.server.game_index_client.service">evennia.server.game_index_client.service module</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="evennia.server.portal.html">evennia.server.portal package</a><ul>
<li class="toctree-l2"><a class="reference internal" href="evennia.server.portal.html#submodules">Submodules</a></li>
<li class="toctree-l2"><a class="reference internal" href="evennia.server.portal.html#module-evennia.server.portal.amp">evennia.server.portal.amp module</a></li>
<li class="toctree-l2"><a class="reference internal" href="evennia.server.portal.html#module-evennia.server.portal.amp_server">evennia.server.portal.amp_server module</a></li>
<li class="toctree-l2"><a class="reference internal" href="evennia.server.portal.html#module-evennia.server.portal.grapevine">evennia.server.portal.grapevine module</a></li>
<li class="toctree-l2"><a class="reference internal" href="evennia.server.portal.html#module-evennia.server.portal.irc">evennia.server.portal.irc module</a></li>
<li class="toctree-l2"><a class="reference internal" href="evennia.server.portal.html#module-evennia.server.portal.mccp">evennia.server.portal.mccp module</a></li>
<li class="toctree-l2"><a class="reference internal" href="evennia.server.portal.html#module-evennia.server.portal.mssp">evennia.server.portal.mssp module</a></li>
<li class="toctree-l2"><a class="reference internal" href="evennia.server.portal.html#module-evennia.server.portal.mxp">evennia.server.portal.mxp module</a></li>
<li class="toctree-l2"><a class="reference internal" href="evennia.server.portal.html#module-evennia.server.portal.naws">evennia.server.portal.naws module</a></li>
<li class="toctree-l2"><a class="reference internal" href="evennia.server.portal.html#module-evennia.server.portal.portal">evennia.server.portal.portal module</a></li>
<li class="toctree-l2"><a class="reference internal" href="evennia.server.portal.html#module-evennia.server.portal.portalsessionhandler">evennia.server.portal.portalsessionhandler module</a></li>
<li class="toctree-l2"><a class="reference internal" href="evennia.server.portal.html#module-evennia.server.portal.rss">evennia.server.portal.rss module</a></li>
<li class="toctree-l2"><a class="reference internal" href="evennia.server.portal.html#module-evennia.server.portal.ssh">evennia.server.portal.ssh module</a></li>
<li class="toctree-l2"><a class="reference internal" href="evennia.server.portal.html#module-evennia.server.portal.ssl">evennia.server.portal.ssl module</a></li>
<li class="toctree-l2"><a class="reference internal" href="evennia.server.portal.html#module-evennia.server.portal.suppress_ga">evennia.server.portal.suppress_ga module</a></li>
<li class="toctree-l2"><a class="reference internal" href="evennia.server.portal.html#module-evennia.server.portal.telnet">evennia.server.portal.telnet module</a></li>
<li class="toctree-l2"><a class="reference internal" href="evennia.server.portal.html#module-evennia.server.portal.telnet_oob">evennia.server.portal.telnet_oob module</a></li>
<li class="toctree-l2"><a class="reference internal" href="evennia.server.portal.html#module-evennia.server.portal.telnet_ssl">evennia.server.portal.telnet_ssl module</a></li>
<li class="toctree-l2"><a class="reference internal" href="evennia.server.portal.html#module-evennia.server.portal.tests">evennia.server.portal.tests module</a></li>
<li class="toctree-l2"><a class="reference internal" href="evennia.server.portal.html#module-evennia.server.portal.ttype">evennia.server.portal.ttype module</a></li>
<li class="toctree-l2"><a class="reference internal" href="evennia.server.portal.html#module-evennia.server.portal.webclient">evennia.server.portal.webclient module</a></li>
<li class="toctree-l2"><a class="reference internal" href="evennia.server.portal.html#module-evennia.server.portal.webclient_ajax">evennia.server.portal.webclient_ajax module</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="evennia.server.profiling.html">evennia.server.profiling package</a><ul>
<li class="toctree-l2"><a class="reference internal" href="evennia.server.profiling.html#submodules">Submodules</a></li>
<li class="toctree-l2"><a class="reference internal" href="evennia.server.profiling.html#module-evennia.server.profiling.dummyrunner">evennia.server.profiling.dummyrunner module</a></li>
<li class="toctree-l2"><a class="reference internal" href="evennia.server.profiling.html#module-evennia.server.profiling.dummyrunner_settings">evennia.server.profiling.dummyrunner_settings module</a></li>
<li class="toctree-l2"><a class="reference internal" href="evennia.server.profiling.html#module-evennia.server.profiling.memplot">evennia.server.profiling.memplot module</a></li>
<li class="toctree-l2"><a class="reference internal" href="evennia.server.profiling.html#module-evennia.server.profiling.settings_mixin">evennia.server.profiling.settings_mixin module</a></li>
<li class="toctree-l2"><a class="reference internal" href="evennia.server.profiling.html#module-evennia.server.profiling.test_queries">evennia.server.profiling.test_queries module</a></li>
<li class="toctree-l2"><a class="reference internal" href="evennia.server.profiling.html#module-evennia.server.profiling.tests">evennia.server.profiling.tests module</a></li>
<li class="toctree-l2"><a class="reference internal" href="evennia.server.profiling.html#module-evennia.server.profiling.timetrace">evennia.server.profiling.timetrace module</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="evennia.server.tests.html">evennia.server.tests package</a><ul>
<li class="toctree-l2"><a class="reference internal" href="evennia.server.tests.html#submodules">Submodules</a></li>
<li class="toctree-l2"><a class="reference internal" href="evennia.server.tests.html#module-evennia.server.tests.test_amp_connection">evennia.server.tests.test_amp_connection module</a></li>
<li class="toctree-l2"><a class="reference internal" href="evennia.server.tests.html#module-evennia.server.tests.test_initial_setup">evennia.server.tests.test_initial_setup module</a></li>
<li class="toctree-l2"><a class="reference internal" href="evennia.server.tests.html#module-evennia.server.tests.test_launcher">evennia.server.tests.test_launcher module</a></li>
<li class="toctree-l2"><a class="reference internal" href="evennia.server.tests.html#module-evennia.server.tests.test_misc">evennia.server.tests.test_misc module</a></li>
<li class="toctree-l2"><a class="reference internal" href="evennia.server.tests.html#module-evennia.server.tests.test_server">evennia.server.tests.test_server module</a></li>
<li class="toctree-l2"><a class="reference internal" href="evennia.server.tests.html#module-evennia.server.tests.testrunner">evennia.server.tests.testrunner module</a></li>
</ul>
</li>
</ul>
</div>
</div>
<div class="section" id="submodules">
<h2>Submodules<a class="headerlink" href="#submodules" title="Permalink to this headline"></a></h2>
</div>
<div class="section" id="module-evennia.server.admin">
<span id="evennia-server-admin-module"></span><h2>evennia.server.admin module<a class="headerlink" href="#module-evennia.server.admin" title="Permalink to this headline"></a></h2>
<dl class="class">
<dt id="evennia.server.admin.ServerConfigAdmin">
<em class="property">class </em><code class="sig-prename descclassname">evennia.server.admin.</code><code class="sig-name descname">ServerConfigAdmin</code><span class="sig-paren">(</span><em class="sig-param">model</em>, <em class="sig-param">admin_site</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/admin.html#ServerConfigAdmin"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.admin.ServerConfigAdmin" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">django.contrib.admin.options.ModelAdmin</span></code></p>
<p>Custom admin for server configs</p>
<dl class="attribute">
<dt id="evennia.server.admin.ServerConfigAdmin.list_display">
<code class="sig-name descname">list_display</code><em class="property"> = ('db_key', 'db_value')</em><a class="headerlink" href="#evennia.server.admin.ServerConfigAdmin.list_display" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.server.admin.ServerConfigAdmin.list_display_links">
<code class="sig-name descname">list_display_links</code><em class="property"> = ('db_key',)</em><a class="headerlink" href="#evennia.server.admin.ServerConfigAdmin.list_display_links" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.server.admin.ServerConfigAdmin.list_select_related">
<code class="sig-name descname">list_select_related</code><em class="property"> = True</em><a class="headerlink" href="#evennia.server.admin.ServerConfigAdmin.list_select_related" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.server.admin.ServerConfigAdmin.media">
<em class="property">property </em><code class="sig-name descname">media</code><a class="headerlink" href="#evennia.server.admin.ServerConfigAdmin.media" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.server.admin.ServerConfigAdmin.ordering">
<code class="sig-name descname">ordering</code><em class="property"> = ['db_key', 'db_value']</em><a class="headerlink" href="#evennia.server.admin.ServerConfigAdmin.ordering" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.server.admin.ServerConfigAdmin.save_as">
<code class="sig-name descname">save_as</code><em class="property"> = True</em><a class="headerlink" href="#evennia.server.admin.ServerConfigAdmin.save_as" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.server.admin.ServerConfigAdmin.save_on_top">
<code class="sig-name descname">save_on_top</code><em class="property"> = True</em><a class="headerlink" href="#evennia.server.admin.ServerConfigAdmin.save_on_top" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.server.admin.ServerConfigAdmin.search_fields">
<code class="sig-name descname">search_fields</code><em class="property"> = ['db_key']</em><a class="headerlink" href="#evennia.server.admin.ServerConfigAdmin.search_fields" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
</div>
<div class="section" id="module-evennia.server.amp_client">
<span id="evennia-server-amp-client-module"></span><h2>evennia.server.amp_client module<a class="headerlink" href="#module-evennia.server.amp_client" title="Permalink to this headline"></a></h2>
<p>The Evennia Server service acts as an AMP-client when talking to the
Portal. This module sets up the Client-side communication.</p>
<dl class="class">
<dt id="evennia.server.amp_client.AMPClientFactory">
<em class="property">class </em><code class="sig-prename descclassname">evennia.server.amp_client.</code><code class="sig-name descname">AMPClientFactory</code><span class="sig-paren">(</span><em class="sig-param">server</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/amp_client.html#AMPClientFactory"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.amp_client.AMPClientFactory" 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.ReconnectingClientFactory</span></code></p>
<p>This factory creates an instance of an AMP client connection. This handles communication from
the be the Evennia Server service to the Portal. The client will try to auto-reconnect on a
connection error.</p>
<dl class="method">
<dt id="evennia.server.amp_client.AMPClientFactory.__init__">
<code class="sig-name descname">__init__</code><span class="sig-paren">(</span><em class="sig-param">server</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/amp_client.html#AMPClientFactory.__init__"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.amp_client.AMPClientFactory.__init__" title="Permalink to this definition"></a></dt>
<dd><p>Initializes the client factory.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>server</strong> (<em>server</em>) server instance.</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.amp_client.AMPClientFactory.buildProtocol">
<code class="sig-name descname">buildProtocol</code><span class="sig-paren">(</span><em class="sig-param">addr</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/amp_client.html#AMPClientFactory.buildProtocol"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.amp_client.AMPClientFactory.buildProtocol" title="Permalink to this definition"></a></dt>
<dd><p>Creates an AMPProtocol instance when connecting to the AMP server.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>addr</strong> (<em>str</em>) Connection address. Not used.</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.amp_client.AMPClientFactory.clientConnectionFailed">
<code class="sig-name descname">clientConnectionFailed</code><span class="sig-paren">(</span><em class="sig-param">connector</em>, <em class="sig-param">reason</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/amp_client.html#AMPClientFactory.clientConnectionFailed"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.amp_client.AMPClientFactory.clientConnectionFailed" title="Permalink to this definition"></a></dt>
<dd><p>Called when an AMP connection attempt to the MUD server fails.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>connector</strong> (<em>Connector</em>) Twisted Connector instance representing
this connection.</p></li>
<li><p><strong>reason</strong> (<em>str</em>) Eventual text describing why connection failed.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.amp_client.AMPClientFactory.clientConnectionLost">
<code class="sig-name descname">clientConnectionLost</code><span class="sig-paren">(</span><em class="sig-param">connector</em>, <em class="sig-param">reason</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/amp_client.html#AMPClientFactory.clientConnectionLost"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.amp_client.AMPClientFactory.clientConnectionLost" title="Permalink to this definition"></a></dt>
<dd><p>Called when the AMP connection to the MUD server is lost.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>connector</strong> (<em>Connector</em>) Twisted Connector instance representing
this connection.</p></li>
<li><p><strong>reason</strong> (<em>str</em>) Eventual text describing why connection was lost.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="attribute">
<dt id="evennia.server.amp_client.AMPClientFactory.factor">
<code class="sig-name descname">factor</code><em class="property"> = 1.5</em><a class="headerlink" href="#evennia.server.amp_client.AMPClientFactory.factor" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.server.amp_client.AMPClientFactory.initialDelay">
<code class="sig-name descname">initialDelay</code><em class="property"> = 1</em><a class="headerlink" href="#evennia.server.amp_client.AMPClientFactory.initialDelay" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.server.amp_client.AMPClientFactory.maxDelay">
<code class="sig-name descname">maxDelay</code><em class="property"> = 1</em><a class="headerlink" href="#evennia.server.amp_client.AMPClientFactory.maxDelay" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.server.amp_client.AMPClientFactory.noisy">
<code class="sig-name descname">noisy</code><em class="property"> = False</em><a class="headerlink" href="#evennia.server.amp_client.AMPClientFactory.noisy" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.server.amp_client.AMPClientFactory.startedConnecting">
<code class="sig-name descname">startedConnecting</code><span class="sig-paren">(</span><em class="sig-param">connector</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/amp_client.html#AMPClientFactory.startedConnecting"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.amp_client.AMPClientFactory.startedConnecting" title="Permalink to this definition"></a></dt>
<dd><p>Called when starting to try to connect to the Portal AMP server.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>connector</strong> (<em>Connector</em>) Twisted Connector instance representing
this connection.</p>
</dd>
</dl>
</dd></dl>
</dd></dl>
<dl class="class">
<dt id="evennia.server.amp_client.AMPServerClientProtocol">
<em class="property">class </em><code class="sig-prename descclassname">evennia.server.amp_client.</code><code class="sig-name descname">AMPServerClientProtocol</code><span class="sig-paren">(</span><em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/amp_client.html#AMPServerClientProtocol"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.amp_client.AMPServerClientProtocol" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.server.portal.html#evennia.server.portal.amp.AMPMultiConnectionProtocol" title="evennia.server.portal.amp.AMPMultiConnectionProtocol"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.server.portal.amp.AMPMultiConnectionProtocol</span></code></a></p>
<p>This protocol describes the Server service (acting as an AMP-client)s communication with the
Portal (which acts as the AMP-server)</p>
<dl class="attribute">
<dt id="evennia.server.amp_client.AMPServerClientProtocol._commandDispatch">
<code class="sig-name descname">_commandDispatch</code><em class="property"> = {b'AdminPortal2Server': (&lt;class 'evennia.server.portal.amp.AdminPortal2Server'&gt;, &lt;function catch_traceback&gt;), b'FunctionCall': (&lt;class 'evennia.server.portal.amp.FunctionCall'&gt;, &lt;function catch_traceback&gt;), b'MsgPortal2Server': (&lt;class 'evennia.server.portal.amp.MsgPortal2Server'&gt;, &lt;function catch_traceback&gt;), b'MsgStatus': (&lt;class 'evennia.server.portal.amp.MsgStatus'&gt;, &lt;function AMPServerClientProtocol.server_receive_status&gt;), b'StartTLS': (&lt;class 'twisted.protocols.amp.StartTLS'&gt;, &lt;function BinaryBoxProtocol._defaultStartTLSResponder&gt;)}</em><a class="headerlink" href="#evennia.server.amp_client.AMPServerClientProtocol._commandDispatch" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.server.amp_client.AMPServerClientProtocol.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/amp_client.html#AMPServerClientProtocol.connectionMade"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.amp_client.AMPServerClientProtocol.connectionMade" title="Permalink to this definition"></a></dt>
<dd><p>Called when a new connection is established.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.server.amp_client.AMPServerClientProtocol.data_to_portal">
<code class="sig-name descname">data_to_portal</code><span class="sig-paren">(</span><em class="sig-param">command</em>, <em class="sig-param">sessid</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/amp_client.html#AMPServerClientProtocol.data_to_portal"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.amp_client.AMPServerClientProtocol.data_to_portal" title="Permalink to this definition"></a></dt>
<dd><p>Send data across the wire to the Portal</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>command</strong> (<em>AMP Command</em>) A protocol send command.</p></li>
<li><p><strong>sessid</strong> (<em>int</em>) A unique Session id.</p></li>
<li><p><strong>kwargs</strong> (<em>any</em>) Any data to pickle into the command.</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>A deferred with an errback.</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p>deferred (deferred or None)</p>
</dd>
</dl>
<p class="rubric">Notes</p>
<p>Data will be sent across the wire pickled as a tuple
(sessid, kwargs).</p>
</dd></dl>
<dl class="method">
<dt id="evennia.server.amp_client.AMPServerClientProtocol.send_AdminServer2Portal">
<code class="sig-name descname">send_AdminServer2Portal</code><span class="sig-paren">(</span><em class="sig-param">session</em>, <em class="sig-param">operation=''</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/amp_client.html#AMPServerClientProtocol.send_AdminServer2Portal"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.amp_client.AMPServerClientProtocol.send_AdminServer2Portal" title="Permalink to this definition"></a></dt>
<dd><p>Administrative access method called by the Server to send an
instruction to the Portal.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>session</strong> (<a class="reference internal" href="#evennia.server.session.Session" title="evennia.server.session.Session"><em>Session</em></a>) Session.</p></li>
<li><p><strong>operation</strong> (<em>char</em><em>, </em><em>optional</em>) Identifier for the server
operation, as defined by the global variables in
<cite>evennia/server/amp.py</cite>.</p></li>
<li><p><strong>kwargs</strong> (<em>dict</em><em>, </em><em>optional</em>) Data going into the adminstrative.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.amp_client.AMPServerClientProtocol.send_MsgServer2Portal">
<code class="sig-name descname">send_MsgServer2Portal</code><span class="sig-paren">(</span><em class="sig-param">session</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/amp_client.html#AMPServerClientProtocol.send_MsgServer2Portal"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.amp_client.AMPServerClientProtocol.send_MsgServer2Portal" title="Permalink to this definition"></a></dt>
<dd><dl class="simple">
<dt>Access method - executed on the Server for sending data</dt><dd><p>to Portal.</p>
</dd>
</dl>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>session</strong> (<a class="reference internal" href="#evennia.server.session.Session" title="evennia.server.session.Session"><em>Session</em></a>) Unique Session.</p></li>
<li><p><strong>kwargs</strong> (<em>any</em><em>, </em><em>optiona</em>) Extra data.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.amp_client.AMPServerClientProtocol.server_receive_adminportal2server">
<code class="sig-name descname">server_receive_adminportal2server</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#evennia.server.amp_client.AMPServerClientProtocol.server_receive_adminportal2server" title="Permalink to this definition"></a></dt>
<dd><p>Helper decorator</p>
</dd></dl>
<dl class="method">
<dt id="evennia.server.amp_client.AMPServerClientProtocol.server_receive_msgportal2server">
<code class="sig-name descname">server_receive_msgportal2server</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#evennia.server.amp_client.AMPServerClientProtocol.server_receive_msgportal2server" title="Permalink to this definition"></a></dt>
<dd><p>Helper decorator</p>
</dd></dl>
<dl class="method">
<dt id="evennia.server.amp_client.AMPServerClientProtocol.server_receive_status">
<code class="sig-name descname">server_receive_status</code><span class="sig-paren">(</span><em class="sig-param">question</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/amp_client.html#AMPServerClientProtocol.server_receive_status"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.amp_client.AMPServerClientProtocol.server_receive_status" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
</div>
<div class="section" id="module-evennia.server.connection_wizard">
<span id="evennia-server-connection-wizard-module"></span><h2>evennia.server.connection_wizard module<a class="headerlink" href="#module-evennia.server.connection_wizard" title="Permalink to this headline"></a></h2>
<p>Link Evennia to external resources (wizard plugin for evennia_launcher)</p>
<dl class="class">
<dt id="evennia.server.connection_wizard.ConnectionWizard">
<em class="property">class </em><code class="sig-prename descclassname">evennia.server.connection_wizard.</code><code class="sig-name descname">ConnectionWizard</code><a class="reference internal" href="../_modules/evennia/server/connection_wizard.html#ConnectionWizard"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.connection_wizard.ConnectionWizard" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<dl class="method">
<dt id="evennia.server.connection_wizard.ConnectionWizard.__init__">
<code class="sig-name descname">__init__</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/connection_wizard.html#ConnectionWizard.__init__"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.connection_wizard.ConnectionWizard.__init__" title="Permalink to this definition"></a></dt>
<dd><p>Initialize self. See help(type(self)) for accurate signature.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.server.connection_wizard.ConnectionWizard.ask_choice">
<code class="sig-name descname">ask_choice</code><span class="sig-paren">(</span><em class="sig-param">prompt=' &gt; '</em>, <em class="sig-param">options=None</em>, <em class="sig-param">default=None</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/connection_wizard.html#ConnectionWizard.ask_choice"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.connection_wizard.ConnectionWizard.ask_choice" title="Permalink to this definition"></a></dt>
<dd><p>Ask multiple-choice question, get response inline.</p>
<dl class="simple">
<dt>Kwargs:</dt><dd><p>prompt (str): Input prompt.
options (list): List of options. Will be indexable by sequence number 1…
default (int): The list index+1 of the default choice, if any</p>
</dd>
</dl>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p>The answered reply.</p>
</dd>
<dt class="field-even">Return type</dt>
<dd class="field-even"><p>reply (str)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.connection_wizard.ConnectionWizard.ask_continue">
<code class="sig-name descname">ask_continue</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/connection_wizard.html#ConnectionWizard.ask_continue"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.connection_wizard.ConnectionWizard.ask_continue" title="Permalink to this definition"></a></dt>
<dd><p>Press return to continue-prompt</p>
</dd></dl>
<dl class="method">
<dt id="evennia.server.connection_wizard.ConnectionWizard.ask_input">
<code class="sig-name descname">ask_input</code><span class="sig-paren">(</span><em class="sig-param">prompt=' &gt; '</em>, <em class="sig-param">default=None</em>, <em class="sig-param">validator=None</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/connection_wizard.html#ConnectionWizard.ask_input"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.connection_wizard.ConnectionWizard.ask_input" title="Permalink to this definition"></a></dt>
<dd><p>Get arbitrary input inline.</p>
<dl>
<dt>Kwargs:</dt><dd><p>prompt (str): The display prompt.
default (str): If empty input, use this.
validator (callable): If given, the input will be passed</p>
<blockquote>
<div><p>into this callable. It should return True unless validation
fails (and is expected to echo why if so).</p>
</div></blockquote>
</dd>
</dl>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p>The input given, or default.</p>
</dd>
<dt class="field-even">Return type</dt>
<dd class="field-even"><p>inp (str)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.connection_wizard.ConnectionWizard.ask_node">
<code class="sig-name descname">ask_node</code><span class="sig-paren">(</span><em class="sig-param">options</em>, <em class="sig-param">prompt='Enter choice: '</em>, <em class="sig-param">default=None</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/connection_wizard.html#ConnectionWizard.ask_node"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.connection_wizard.ConnectionWizard.ask_node" title="Permalink to this definition"></a></dt>
<dd><p>Retrieve options and jump to different menu nodes</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>options</strong> (<em>dict</em>) Node options on the form {key: (desc, callback), }</p></li>
<li><p><strong>prompt</strong> (<em>str</em><em>, </em><em>optional</em>) Question to ask</p></li>
<li><p><strong>default</strong> (<em>str</em><em>, </em><em>optional</em>) Default value to use if user hits return.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.connection_wizard.ConnectionWizard.ask_yesno">
<code class="sig-name descname">ask_yesno</code><span class="sig-paren">(</span><em class="sig-param">prompt</em>, <em class="sig-param">default='yes'</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/connection_wizard.html#ConnectionWizard.ask_yesno"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.connection_wizard.ConnectionWizard.ask_yesno" title="Permalink to this definition"></a></dt>
<dd><p>Ask a yes/no question inline.</p>
<dl class="simple">
<dt>Kwargs:</dt><dd><p>prompt (str): The prompt to ask.
default (str): “yes” or “no”, used if pressing return.</p>
</dd>
</dl>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p>Either yes or no.</p>
</dd>
<dt class="field-even">Return type</dt>
<dd class="field-even"><p>reply (str)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.connection_wizard.ConnectionWizard.display">
<code class="sig-name descname">display</code><span class="sig-paren">(</span><em class="sig-param">text</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/connection_wizard.html#ConnectionWizard.display"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.connection_wizard.ConnectionWizard.display" title="Permalink to this definition"></a></dt>
<dd><p>Show text</p>
</dd></dl>
</dd></dl>
<dl class="function">
<dt id="evennia.server.connection_wizard._save_changes">
<code class="sig-prename descclassname">evennia.server.connection_wizard.</code><code class="sig-name descname">_save_changes</code><span class="sig-paren">(</span><em class="sig-param">wizard</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/connection_wizard.html#_save_changes"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.connection_wizard._save_changes" title="Permalink to this definition"></a></dt>
<dd><p>Perform the save</p>
</dd></dl>
<dl class="function">
<dt id="evennia.server.connection_wizard.node_game_index_fields">
<code class="sig-prename descclassname">evennia.server.connection_wizard.</code><code class="sig-name descname">node_game_index_fields</code><span class="sig-paren">(</span><em class="sig-param">wizard</em>, <em class="sig-param">status=None</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/connection_wizard.html#node_game_index_fields"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.connection_wizard.node_game_index_fields" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="function">
<dt id="evennia.server.connection_wizard.node_game_index_start">
<code class="sig-prename descclassname">evennia.server.connection_wizard.</code><code class="sig-name descname">node_game_index_start</code><span class="sig-paren">(</span><em class="sig-param">wizard</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/connection_wizard.html#node_game_index_start"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.connection_wizard.node_game_index_start" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="function">
<dt id="evennia.server.connection_wizard.node_mssp_start">
<code class="sig-prename descclassname">evennia.server.connection_wizard.</code><code class="sig-name descname">node_mssp_start</code><span class="sig-paren">(</span><em class="sig-param">wizard</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/connection_wizard.html#node_mssp_start"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.connection_wizard.node_mssp_start" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="function">
<dt id="evennia.server.connection_wizard.node_start">
<code class="sig-prename descclassname">evennia.server.connection_wizard.</code><code class="sig-name descname">node_start</code><span class="sig-paren">(</span><em class="sig-param">wizard</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/connection_wizard.html#node_start"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.connection_wizard.node_start" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="function">
<dt id="evennia.server.connection_wizard.node_view_and_apply_settings">
<code class="sig-prename descclassname">evennia.server.connection_wizard.</code><code class="sig-name descname">node_view_and_apply_settings</code><span class="sig-paren">(</span><em class="sig-param">wizard</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/connection_wizard.html#node_view_and_apply_settings"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.connection_wizard.node_view_and_apply_settings" title="Permalink to this definition"></a></dt>
<dd><p>Inspect and save the data gathered in the other nodes</p>
</dd></dl>
</div>
<div class="section" id="module-evennia.server.deprecations">
<span id="evennia-server-deprecations-module"></span><h2>evennia.server.deprecations module<a class="headerlink" href="#module-evennia.server.deprecations" title="Permalink to this headline"></a></h2>
<p>This module contains historical deprecations that the Evennia launcher
checks for.</p>
<p>These all print to the terminal.</p>
<dl class="function">
<dt id="evennia.server.deprecations.check_errors">
<code class="sig-prename descclassname">evennia.server.deprecations.</code><code class="sig-name descname">check_errors</code><span class="sig-paren">(</span><em class="sig-param">settings</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/deprecations.html#check_errors"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.deprecations.check_errors" title="Permalink to this definition"></a></dt>
<dd><p>Check for deprecations that are critical errors and should stop
the launcher.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>settings</strong> (<em>Settings</em>) The Django settings file</p>
</dd>
<dt class="field-even">Raises</dt>
<dd class="field-even"><p><strong>DeprecationWarning if a critical deprecation is found.</strong> </p>
</dd>
</dl>
</dd></dl>
<dl class="function">
<dt id="evennia.server.deprecations.check_warnings">
<code class="sig-prename descclassname">evennia.server.deprecations.</code><code class="sig-name descname">check_warnings</code><span class="sig-paren">(</span><em class="sig-param">settings</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/deprecations.html#check_warnings"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.deprecations.check_warnings" title="Permalink to this definition"></a></dt>
<dd><p>Check conditions and deprecations that should produce warnings but which
does not stop launch.</p>
</dd></dl>
</div>
<div class="section" id="module-evennia.server.evennia_launcher">
<span id="evennia-server-evennia-launcher-module"></span><h2>evennia.server.evennia_launcher module<a class="headerlink" href="#module-evennia.server.evennia_launcher" title="Permalink to this headline"></a></h2>
<p>Evennia launcher program</p>
<p>This is the start point for running Evennia.</p>
<p>Sets the appropriate environmental variables for managing an Evennia game. It will start and connect
to the Portal, through which the Server is also controlled. This pprogram</p>
<p>Run the script with the -h flag to see usage information.</p>
<dl class="class">
<dt id="evennia.server.evennia_launcher.AMPLauncherProtocol">
<em class="property">class </em><code class="sig-prename descclassname">evennia.server.evennia_launcher.</code><code class="sig-name descname">AMPLauncherProtocol</code><a class="reference internal" href="../_modules/evennia/server/evennia_launcher.html#AMPLauncherProtocol"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.evennia_launcher.AMPLauncherProtocol" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">twisted.protocols.amp.AMP</span></code></p>
<p>Defines callbacks to the launcher</p>
<dl class="method">
<dt id="evennia.server.evennia_launcher.AMPLauncherProtocol.__init__">
<code class="sig-name descname">__init__</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/evennia_launcher.html#AMPLauncherProtocol.__init__"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.evennia_launcher.AMPLauncherProtocol.__init__" title="Permalink to this definition"></a></dt>
<dd><p>Initialize self. See help(type(self)) for accurate signature.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.server.evennia_launcher.AMPLauncherProtocol._commandDispatch">
<code class="sig-name descname">_commandDispatch</code><em class="property"> = {b'MsgStatus': (&lt;class 'evennia.server.evennia_launcher.MsgStatus'&gt;, &lt;function AMPLauncherProtocol.receive_status_from_portal&gt;), b'StartTLS': (&lt;class 'twisted.protocols.amp.StartTLS'&gt;, &lt;function BinaryBoxProtocol._defaultStartTLSResponder&gt;)}</em><a class="headerlink" href="#evennia.server.evennia_launcher.AMPLauncherProtocol._commandDispatch" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.server.evennia_launcher.AMPLauncherProtocol.receive_status_from_portal">
<code class="sig-name descname">receive_status_from_portal</code><span class="sig-paren">(</span><em class="sig-param">status</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/evennia_launcher.html#AMPLauncherProtocol.receive_status_from_portal"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.evennia_launcher.AMPLauncherProtocol.receive_status_from_portal" title="Permalink to this definition"></a></dt>
<dd><p>Get a status signal from portal - fire next queued
callback</p>
</dd></dl>
<dl class="method">
<dt id="evennia.server.evennia_launcher.AMPLauncherProtocol.wait_for_status">
<code class="sig-name descname">wait_for_status</code><span class="sig-paren">(</span><em class="sig-param">callback</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/evennia_launcher.html#AMPLauncherProtocol.wait_for_status"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.evennia_launcher.AMPLauncherProtocol.wait_for_status" title="Permalink to this definition"></a></dt>
<dd><p>Register a waiter for a status return.</p>
</dd></dl>
</dd></dl>
<dl class="class">
<dt id="evennia.server.evennia_launcher.MsgLauncher2Portal">
<em class="property">class </em><code class="sig-prename descclassname">evennia.server.evennia_launcher.</code><code class="sig-name descname">MsgLauncher2Portal</code><span class="sig-paren">(</span><em class="sig-param">**kw</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/evennia_launcher.html#MsgLauncher2Portal"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.evennia_launcher.MsgLauncher2Portal" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">twisted.protocols.amp.Command</span></code></p>
<p>Message Launcher -&gt; Portal</p>
<dl class="attribute">
<dt id="evennia.server.evennia_launcher.MsgLauncher2Portal.allErrors">
<code class="sig-name descname">allErrors</code><em class="property"> = {&lt;class 'Exception'&gt;: b'EXCEPTION'}</em><a class="headerlink" href="#evennia.server.evennia_launcher.MsgLauncher2Portal.allErrors" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.server.evennia_launcher.MsgLauncher2Portal.arguments">
<code class="sig-name descname">arguments</code><em class="property"> = [(b'operation', &lt;twisted.protocols.amp.String object&gt;), (b'arguments', &lt;twisted.protocols.amp.String object&gt;)]</em><a class="headerlink" href="#evennia.server.evennia_launcher.MsgLauncher2Portal.arguments" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.server.evennia_launcher.MsgLauncher2Portal.commandName">
<code class="sig-name descname">commandName</code><em class="property"> = b'MsgLauncher2Portal'</em><a class="headerlink" href="#evennia.server.evennia_launcher.MsgLauncher2Portal.commandName" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.server.evennia_launcher.MsgLauncher2Portal.errors">
<code class="sig-name descname">errors</code><em class="property"> = {&lt;class 'Exception'&gt;: b'EXCEPTION'}</em><a class="headerlink" href="#evennia.server.evennia_launcher.MsgLauncher2Portal.errors" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.server.evennia_launcher.MsgLauncher2Portal.key">
<code class="sig-name descname">key</code><em class="property"> = 'MsgLauncher2Portal'</em><a class="headerlink" href="#evennia.server.evennia_launcher.MsgLauncher2Portal.key" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.server.evennia_launcher.MsgLauncher2Portal.response">
<code class="sig-name descname">response</code><em class="property"> = []</em><a class="headerlink" href="#evennia.server.evennia_launcher.MsgLauncher2Portal.response" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.server.evennia_launcher.MsgLauncher2Portal.reverseErrors">
<code class="sig-name descname">reverseErrors</code><em class="property"> = {b'EXCEPTION': &lt;class 'Exception'&gt;}</em><a class="headerlink" href="#evennia.server.evennia_launcher.MsgLauncher2Portal.reverseErrors" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="class">
<dt id="evennia.server.evennia_launcher.MsgStatus">
<em class="property">class </em><code class="sig-prename descclassname">evennia.server.evennia_launcher.</code><code class="sig-name descname">MsgStatus</code><span class="sig-paren">(</span><em class="sig-param">**kw</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/evennia_launcher.html#MsgStatus"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.evennia_launcher.MsgStatus" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">twisted.protocols.amp.Command</span></code></p>
<p>Ping between AMP services</p>
<dl class="attribute">
<dt id="evennia.server.evennia_launcher.MsgStatus.allErrors">
<code class="sig-name descname">allErrors</code><em class="property"> = {&lt;class 'Exception'&gt;: b'EXCEPTION'}</em><a class="headerlink" href="#evennia.server.evennia_launcher.MsgStatus.allErrors" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.server.evennia_launcher.MsgStatus.arguments">
<code class="sig-name descname">arguments</code><em class="property"> = [(b'status', &lt;twisted.protocols.amp.String object&gt;)]</em><a class="headerlink" href="#evennia.server.evennia_launcher.MsgStatus.arguments" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.server.evennia_launcher.MsgStatus.commandName">
<code class="sig-name descname">commandName</code><em class="property"> = b'MsgStatus'</em><a class="headerlink" href="#evennia.server.evennia_launcher.MsgStatus.commandName" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.server.evennia_launcher.MsgStatus.errors">
<code class="sig-name descname">errors</code><em class="property"> = {&lt;class 'Exception'&gt;: b'EXCEPTION'}</em><a class="headerlink" href="#evennia.server.evennia_launcher.MsgStatus.errors" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.server.evennia_launcher.MsgStatus.key">
<code class="sig-name descname">key</code><em class="property"> = 'MsgStatus'</em><a class="headerlink" href="#evennia.server.evennia_launcher.MsgStatus.key" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.server.evennia_launcher.MsgStatus.response">
<code class="sig-name descname">response</code><em class="property"> = [(b'status', &lt;twisted.protocols.amp.String object&gt;)]</em><a class="headerlink" href="#evennia.server.evennia_launcher.MsgStatus.response" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.server.evennia_launcher.MsgStatus.reverseErrors">
<code class="sig-name descname">reverseErrors</code><em class="property"> = {b'EXCEPTION': &lt;class 'Exception'&gt;}</em><a class="headerlink" href="#evennia.server.evennia_launcher.MsgStatus.reverseErrors" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="function">
<dt id="evennia.server.evennia_launcher._file_names_compact">
<code class="sig-prename descclassname">evennia.server.evennia_launcher.</code><code class="sig-name descname">_file_names_compact</code><span class="sig-paren">(</span><em class="sig-param">filepath1</em>, <em class="sig-param">filepath2</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/evennia_launcher.html#_file_names_compact"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.evennia_launcher._file_names_compact" title="Permalink to this definition"></a></dt>
<dd><p>Compact the output of filenames with same base dir</p>
</dd></dl>
<dl class="function">
<dt id="evennia.server.evennia_launcher._get_twistd_cmdline">
<code class="sig-prename descclassname">evennia.server.evennia_launcher.</code><code class="sig-name descname">_get_twistd_cmdline</code><span class="sig-paren">(</span><em class="sig-param">pprofiler</em>, <em class="sig-param">sprofiler</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/evennia_launcher.html#_get_twistd_cmdline"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.evennia_launcher._get_twistd_cmdline" title="Permalink to this definition"></a></dt>
<dd><p>Compile the command line for starting a Twisted application using the twistd executable.</p>
</dd></dl>
<dl class="function">
<dt id="evennia.server.evennia_launcher._is_windows">
<code class="sig-prename descclassname">evennia.server.evennia_launcher.</code><code class="sig-name descname">_is_windows</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/evennia_launcher.html#_is_windows"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.evennia_launcher._is_windows" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="function">
<dt id="evennia.server.evennia_launcher._parse_status">
<code class="sig-prename descclassname">evennia.server.evennia_launcher.</code><code class="sig-name descname">_parse_status</code><span class="sig-paren">(</span><em class="sig-param">response</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/evennia_launcher.html#_parse_status"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.evennia_launcher._parse_status" title="Permalink to this definition"></a></dt>
<dd><p>Unpack the status information</p>
</dd></dl>
<dl class="function">
<dt id="evennia.server.evennia_launcher._print_info">
<code class="sig-prename descclassname">evennia.server.evennia_launcher.</code><code class="sig-name descname">_print_info</code><span class="sig-paren">(</span><em class="sig-param">portal_info_dict</em>, <em class="sig-param">server_info_dict</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/evennia_launcher.html#_print_info"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.evennia_launcher._print_info" title="Permalink to this definition"></a></dt>
<dd><p>Format info dicts from the Portal/Server for display</p>
</dd></dl>
<dl class="function">
<dt id="evennia.server.evennia_launcher._reactor_stop">
<code class="sig-prename descclassname">evennia.server.evennia_launcher.</code><code class="sig-name descname">_reactor_stop</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/evennia_launcher.html#_reactor_stop"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.evennia_launcher._reactor_stop" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="function">
<dt id="evennia.server.evennia_launcher.check_database">
<code class="sig-prename descclassname">evennia.server.evennia_launcher.</code><code class="sig-name descname">check_database</code><span class="sig-paren">(</span><em class="sig-param">always_return=False</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/evennia_launcher.html#check_database"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.evennia_launcher.check_database" title="Permalink to this definition"></a></dt>
<dd><p>Check so the database exists.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>always_return</strong> (<em>bool</em><em>, </em><em>optional</em>) If set, will always return True/False
also on critical errors. No output will be printed.</p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><cite>True</cite> if the database exists, otherwise <cite>False</cite>.</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p>exists (bool)</p>
</dd>
</dl>
</dd></dl>
<dl class="function">
<dt id="evennia.server.evennia_launcher.check_main_evennia_dependencies">
<code class="sig-prename descclassname">evennia.server.evennia_launcher.</code><code class="sig-name descname">check_main_evennia_dependencies</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/evennia_launcher.html#check_main_evennia_dependencies"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.evennia_launcher.check_main_evennia_dependencies" title="Permalink to this definition"></a></dt>
<dd><p>Checks and imports the Evennia dependencies. This must be done
already before the paths are set up.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p>True if no dependency error was found.</p>
</dd>
<dt class="field-even">Return type</dt>
<dd class="field-even"><p>not_error (bool)</p>
</dd>
</dl>
</dd></dl>
<dl class="function">
<dt id="evennia.server.evennia_launcher.collectstatic">
<code class="sig-prename descclassname">evennia.server.evennia_launcher.</code><code class="sig-name descname">collectstatic</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/evennia_launcher.html#collectstatic"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.evennia_launcher.collectstatic" title="Permalink to this definition"></a></dt>
<dd><p>Run the collectstatic django command</p>
</dd></dl>
<dl class="function">
<dt id="evennia.server.evennia_launcher.create_game_directory">
<code class="sig-prename descclassname">evennia.server.evennia_launcher.</code><code class="sig-name descname">create_game_directory</code><span class="sig-paren">(</span><em class="sig-param">dirname</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/evennia_launcher.html#create_game_directory"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.evennia_launcher.create_game_directory" title="Permalink to this definition"></a></dt>
<dd><p>Initialize a new game directory named dirname
at the current path. This means copying the
template directory from evennias root.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>dirname</strong> (<em>str</em>) The directory name to create.</p>
</dd>
</dl>
</dd></dl>
<dl class="function">
<dt id="evennia.server.evennia_launcher.create_secret_key">
<code class="sig-prename descclassname">evennia.server.evennia_launcher.</code><code class="sig-name descname">create_secret_key</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/evennia_launcher.html#create_secret_key"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.evennia_launcher.create_secret_key" title="Permalink to this definition"></a></dt>
<dd><p>Randomly create the secret key for the settings file</p>
</dd></dl>
<dl class="function">
<dt id="evennia.server.evennia_launcher.create_settings_file">
<code class="sig-prename descclassname">evennia.server.evennia_launcher.</code><code class="sig-name descname">create_settings_file</code><span class="sig-paren">(</span><em class="sig-param">init=True</em>, <em class="sig-param">secret_settings=False</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/evennia_launcher.html#create_settings_file"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.evennia_launcher.create_settings_file" title="Permalink to this definition"></a></dt>
<dd><p>Uses the template settings file to build a working settings file.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>init</strong> (<em>bool</em>) This is part of the normal evennia init
operation. If false, this function will copy a fresh
template file in (asking if it already exists).</p></li>
<li><p><strong>secret_settings</strong> (<em>bool</em><em>, </em><em>optional</em>) If False, create settings.py, otherwise
create the secret_settings.py file.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="function">
<dt id="evennia.server.evennia_launcher.create_superuser">
<code class="sig-prename descclassname">evennia.server.evennia_launcher.</code><code class="sig-name descname">create_superuser</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/evennia_launcher.html#create_superuser"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.evennia_launcher.create_superuser" title="Permalink to this definition"></a></dt>
<dd><p>Create the superuser account</p>
</dd></dl>
<dl class="function">
<dt id="evennia.server.evennia_launcher.del_pid">
<code class="sig-prename descclassname">evennia.server.evennia_launcher.</code><code class="sig-name descname">del_pid</code><span class="sig-paren">(</span><em class="sig-param">pidfile</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/evennia_launcher.html#del_pid"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.evennia_launcher.del_pid" title="Permalink to this definition"></a></dt>
<dd><p>The pidfile should normally be removed after a process has
finished, but when sending certain signals they remain, so we need
to clean them manually.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>pidfile</strong> (<em>str</em>) The path of the pid file.</p>
</dd>
</dl>
</dd></dl>
<dl class="function">
<dt id="evennia.server.evennia_launcher.error_check_python_modules">
<code class="sig-prename descclassname">evennia.server.evennia_launcher.</code><code class="sig-name descname">error_check_python_modules</code><span class="sig-paren">(</span><em class="sig-param">show_warnings=False</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/evennia_launcher.html#error_check_python_modules"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.evennia_launcher.error_check_python_modules" title="Permalink to this definition"></a></dt>
<dd><p>Import settings modules in settings. This will raise exceptions on
pure python-syntax issues which are hard to catch gracefully with
exceptions in the engine (since they are formatting errors in the
python source files themselves). Best they fail already here
before we get any further.</p>
<dl class="simple">
<dt>Kwargs:</dt><dd><p>show_warnings (bool): If non-fatal warning messages should be shown.</p>
</dd>
</dl>
</dd></dl>
<dl class="function">
<dt id="evennia.server.evennia_launcher.evennia_version">
<code class="sig-prename descclassname">evennia.server.evennia_launcher.</code><code class="sig-name descname">evennia_version</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/evennia_launcher.html#evennia_version"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.evennia_launcher.evennia_version" title="Permalink to this definition"></a></dt>
<dd><p>Get the Evennia version info from the main package.</p>
</dd></dl>
<dl class="function">
<dt id="evennia.server.evennia_launcher.get_pid">
<code class="sig-prename descclassname">evennia.server.evennia_launcher.</code><code class="sig-name descname">get_pid</code><span class="sig-paren">(</span><em class="sig-param">pidfile</em>, <em class="sig-param">default=None</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/evennia_launcher.html#get_pid"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.evennia_launcher.get_pid" title="Permalink to this definition"></a></dt>
<dd><p>Get the PID (Process ID) by trying to access an PID file.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>pidfile</strong> (<em>str</em>) The path of the pid file.</p></li>
<li><p><strong>default</strong> (<em>int</em><em>, </em><em>optional</em>) What to return if file does not exist.</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>The process id or <cite>default</cite>.</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p>pid (str)</p>
</dd>
</dl>
</dd></dl>
<dl class="function">
<dt id="evennia.server.evennia_launcher.getenv">
<code class="sig-prename descclassname">evennia.server.evennia_launcher.</code><code class="sig-name descname">getenv</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/evennia_launcher.html#getenv"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.evennia_launcher.getenv" title="Permalink to this definition"></a></dt>
<dd><p>Get current environment and add PYTHONPATH.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p>Environment global dict.</p>
</dd>
<dt class="field-even">Return type</dt>
<dd class="field-even"><p>env (dict)</p>
</dd>
</dl>
</dd></dl>
<dl class="function">
<dt id="evennia.server.evennia_launcher.init_game_directory">
<code class="sig-prename descclassname">evennia.server.evennia_launcher.</code><code class="sig-name descname">init_game_directory</code><span class="sig-paren">(</span><em class="sig-param">path</em>, <em class="sig-param">check_db=True</em>, <em class="sig-param">need_gamedir=True</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/evennia_launcher.html#init_game_directory"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.evennia_launcher.init_game_directory" title="Permalink to this definition"></a></dt>
<dd><p>Try to analyze the given path to find settings.py - this defines
the game directory and also sets PYTHONPATH as well as the django
path.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>path</strong> (<em>str</em>) Path to new game directory, including its name.</p></li>
<li><p><strong>check_db</strong> (<em>bool</em><em>, </em><em>optional</em>) Check if the databae exists.</p></li>
<li><p><strong>need_gamedir</strong> (<em>bool</em><em>, </em><em>optional</em>) set to False if Evennia doesnt require to
be run in a valid game directory.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="function">
<dt id="evennia.server.evennia_launcher.kill">
<code class="sig-prename descclassname">evennia.server.evennia_launcher.</code><code class="sig-name descname">kill</code><span class="sig-paren">(</span><em class="sig-param">pidfile</em>, <em class="sig-param">component='Server'</em>, <em class="sig-param">callback=None</em>, <em class="sig-param">errback=None</em>, <em class="sig-param">killsignal=&lt;Signals.SIGINT: 2&gt;</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/evennia_launcher.html#kill"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.evennia_launcher.kill" title="Permalink to this definition"></a></dt>
<dd><p>Send a kill signal to a process based on PID. A customized
success/error message will be returned. If clean=True, the system
will attempt to manually remove the pid file. On Windows, no arguments
are useful since Windows has no ability to direct signals except to all
children of a console.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>pidfile</strong> (<em>str</em>) The path of the pidfile to get the PID from. This is ignored
on Windows.</p></li>
<li><p><strong>component</strong> (<em>str</em><em>, </em><em>optional</em>) Usually one of Server or Portal. This is
ignored on Windows.</p></li>
<li><p><strong>errback</strong> (<em>callable</em><em>, </em><em>optional</em>) Called if signal failed to send. This
is ignored on Windows.</p></li>
<li><p><strong>callback</strong> (<em>callable</em><em>, </em><em>optional</em>) Called if kill signal was sent successfully.
This is ignored on Windows.</p></li>
<li><p><strong>killsignal</strong> (<em>int</em><em>, </em><em>optional</em>) Signal identifier for signal to send. This is
ignored on Windows.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="function">
<dt id="evennia.server.evennia_launcher.list_settings">
<code class="sig-prename descclassname">evennia.server.evennia_launcher.</code><code class="sig-name descname">list_settings</code><span class="sig-paren">(</span><em class="sig-param">keys</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/evennia_launcher.html#list_settings"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.evennia_launcher.list_settings" title="Permalink to this definition"></a></dt>
<dd><p>Display the server settings. We only display the Evennia specific
settings here. The result will be printed to the terminal.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>keys</strong> (<em>str</em><em> or </em><em>list</em>) Setting key or keys to inspect.</p>
</dd>
</dl>
</dd></dl>
<dl class="function">
<dt id="evennia.server.evennia_launcher.main">
<code class="sig-prename descclassname">evennia.server.evennia_launcher.</code><code class="sig-name descname">main</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/evennia_launcher.html#main"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.evennia_launcher.main" title="Permalink to this definition"></a></dt>
<dd><p>Run the evennia launcher main program.</p>
</dd></dl>
<dl class="function">
<dt id="evennia.server.evennia_launcher.query_info">
<code class="sig-prename descclassname">evennia.server.evennia_launcher.</code><code class="sig-name descname">query_info</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/evennia_launcher.html#query_info"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.evennia_launcher.query_info" title="Permalink to this definition"></a></dt>
<dd><p>Display the info strings from the running Evennia</p>
</dd></dl>
<dl class="function">
<dt id="evennia.server.evennia_launcher.query_status">
<code class="sig-prename descclassname">evennia.server.evennia_launcher.</code><code class="sig-name descname">query_status</code><span class="sig-paren">(</span><em class="sig-param">callback=None</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/evennia_launcher.html#query_status"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.evennia_launcher.query_status" title="Permalink to this definition"></a></dt>
<dd><p>Send status ping to portal</p>
</dd></dl>
<dl class="function">
<dt id="evennia.server.evennia_launcher.reboot_evennia">
<code class="sig-prename descclassname">evennia.server.evennia_launcher.</code><code class="sig-name descname">reboot_evennia</code><span class="sig-paren">(</span><em class="sig-param">pprofiler=False</em>, <em class="sig-param">sprofiler=False</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/evennia_launcher.html#reboot_evennia"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.evennia_launcher.reboot_evennia" title="Permalink to this definition"></a></dt>
<dd><p>This is essentially an evennia stop &amp;&amp; evennia start except we make sure
the system has successfully shut down before starting it again.</p>
<p>If evennia was not running, start it.</p>
</dd></dl>
<dl class="function">
<dt id="evennia.server.evennia_launcher.reload_evennia">
<code class="sig-prename descclassname">evennia.server.evennia_launcher.</code><code class="sig-name descname">reload_evennia</code><span class="sig-paren">(</span><em class="sig-param">sprofiler=False</em>, <em class="sig-param">reset=False</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/evennia_launcher.html#reload_evennia"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.evennia_launcher.reload_evennia" title="Permalink to this definition"></a></dt>
<dd><p>This will instruct the Portal to reboot the Server component. We
do this manually by telling the server to shutdown (in reload mode)
and wait for the portal to report back, at which point we start the
server again. This way we control the process exactly.</p>
</dd></dl>
<dl class="function">
<dt id="evennia.server.evennia_launcher.run_connect_wizard">
<code class="sig-prename descclassname">evennia.server.evennia_launcher.</code><code class="sig-name descname">run_connect_wizard</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/evennia_launcher.html#run_connect_wizard"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.evennia_launcher.run_connect_wizard" title="Permalink to this definition"></a></dt>
<dd><p>Run the linking wizard, for adding new external connections.</p>
</dd></dl>
<dl class="function">
<dt id="evennia.server.evennia_launcher.run_dummyrunner">
<code class="sig-prename descclassname">evennia.server.evennia_launcher.</code><code class="sig-name descname">run_dummyrunner</code><span class="sig-paren">(</span><em class="sig-param">number_of_dummies</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/evennia_launcher.html#run_dummyrunner"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.evennia_launcher.run_dummyrunner" title="Permalink to this definition"></a></dt>
<dd><p>Start an instance of the dummyrunner</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>number_of_dummies</strong> (<em>int</em>) The number of dummy accounts to start.</p>
</dd>
</dl>
<p class="rubric">Notes</p>
<p>The dummy accounts behavior can be customized by adding a
<cite>dummyrunner_settings.py</cite> config file in the games conf/
directory.</p>
</dd></dl>
<dl class="function">
<dt id="evennia.server.evennia_launcher.run_menu">
<code class="sig-prename descclassname">evennia.server.evennia_launcher.</code><code class="sig-name descname">run_menu</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/evennia_launcher.html#run_menu"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.evennia_launcher.run_menu" title="Permalink to this definition"></a></dt>
<dd><p>This launches an interactive menu.</p>
</dd></dl>
<dl class="function">
<dt id="evennia.server.evennia_launcher.send_instruction">
<code class="sig-prename descclassname">evennia.server.evennia_launcher.</code><code class="sig-name descname">send_instruction</code><span class="sig-paren">(</span><em class="sig-param">operation</em>, <em class="sig-param">arguments</em>, <em class="sig-param">callback=None</em>, <em class="sig-param">errback=None</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/evennia_launcher.html#send_instruction"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.evennia_launcher.send_instruction" title="Permalink to this definition"></a></dt>
<dd><p>Send instruction and handle the response.</p>
</dd></dl>
<dl class="function">
<dt id="evennia.server.evennia_launcher.set_gamedir">
<code class="sig-prename descclassname">evennia.server.evennia_launcher.</code><code class="sig-name descname">set_gamedir</code><span class="sig-paren">(</span><em class="sig-param">path</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/evennia_launcher.html#set_gamedir"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.evennia_launcher.set_gamedir" title="Permalink to this definition"></a></dt>
<dd><p>Set GAMEDIR based on path, by figuring out where the setting file
is inside the directory tree. This allows for running the launcher
from elsewhere than the top of the gamedir folder.</p>
</dd></dl>
<dl class="function">
<dt id="evennia.server.evennia_launcher.show_version_info">
<code class="sig-prename descclassname">evennia.server.evennia_launcher.</code><code class="sig-name descname">show_version_info</code><span class="sig-paren">(</span><em class="sig-param">about=False</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/evennia_launcher.html#show_version_info"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.evennia_launcher.show_version_info" title="Permalink to this definition"></a></dt>
<dd><p>Display version info.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>about</strong> (<em>bool</em>) Include ABOUT info as well as version numbers.</p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>A complete version info string.</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p>version_info (str)</p>
</dd>
</dl>
</dd></dl>
<dl class="function">
<dt id="evennia.server.evennia_launcher.start_evennia">
<code class="sig-prename descclassname">evennia.server.evennia_launcher.</code><code class="sig-name descname">start_evennia</code><span class="sig-paren">(</span><em class="sig-param">pprofiler=False</em>, <em class="sig-param">sprofiler=False</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/evennia_launcher.html#start_evennia"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.evennia_launcher.start_evennia" title="Permalink to this definition"></a></dt>
<dd><p>This will start Evennia anew by launching the Evennia Portal (which in turn
will start the Server)</p>
</dd></dl>
<dl class="function">
<dt id="evennia.server.evennia_launcher.start_only_server">
<code class="sig-prename descclassname">evennia.server.evennia_launcher.</code><code class="sig-name descname">start_only_server</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/evennia_launcher.html#start_only_server"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.evennia_launcher.start_only_server" title="Permalink to this definition"></a></dt>
<dd><p>Tell portal to start server (debug)</p>
</dd></dl>
<dl class="function">
<dt id="evennia.server.evennia_launcher.start_portal_interactive">
<code class="sig-prename descclassname">evennia.server.evennia_launcher.</code><code class="sig-name descname">start_portal_interactive</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/evennia_launcher.html#start_portal_interactive"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.evennia_launcher.start_portal_interactive" title="Permalink to this definition"></a></dt>
<dd><p>Start the Portal under control of the launcher process (foreground)</p>
<p class="rubric">Notes</p>
<p>In a normal start, the launcher waits for the Portal to start, then
tells it to start the Server. Since we cant do this here, we instead
start the Server first and then starts the Portal - the Server will
auto-reconnect to the Portal. To allow the Server to be reloaded, this
relies on a fixed server server-cmdline stored as a fallback on the
portal application in evennia/server/portal/portal.py.</p>
</dd></dl>
<dl class="function">
<dt id="evennia.server.evennia_launcher.start_server_interactive">
<code class="sig-prename descclassname">evennia.server.evennia_launcher.</code><code class="sig-name descname">start_server_interactive</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/evennia_launcher.html#start_server_interactive"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.evennia_launcher.start_server_interactive" title="Permalink to this definition"></a></dt>
<dd><p>Start the Server under control of the launcher process (foreground)</p>
</dd></dl>
<dl class="function">
<dt id="evennia.server.evennia_launcher.stop_evennia">
<code class="sig-prename descclassname">evennia.server.evennia_launcher.</code><code class="sig-name descname">stop_evennia</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/evennia_launcher.html#stop_evennia"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.evennia_launcher.stop_evennia" title="Permalink to this definition"></a></dt>
<dd><p>This instructs the Portal to stop the Server and then itself.</p>
</dd></dl>
<dl class="function">
<dt id="evennia.server.evennia_launcher.stop_server_only">
<code class="sig-prename descclassname">evennia.server.evennia_launcher.</code><code class="sig-name descname">stop_server_only</code><span class="sig-paren">(</span><em class="sig-param">when_stopped=None</em>, <em class="sig-param">interactive=False</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/evennia_launcher.html#stop_server_only"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.evennia_launcher.stop_server_only" title="Permalink to this definition"></a></dt>
<dd><p>Only stop the Server-component of Evennia (this is not useful except for debug)</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>when_stopped</strong> (<em>callable</em>) This will be called with no arguments when Server has stopped (or
if it had already stopped when this is called).</p></li>
<li><p><strong>interactive</strong> (<em>bool</em><em>, </em><em>optional</em>) Set if this is called as part of the interactive reload
mechanism.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="function">
<dt id="evennia.server.evennia_launcher.tail_log_files">
<code class="sig-prename descclassname">evennia.server.evennia_launcher.</code><code class="sig-name descname">tail_log_files</code><span class="sig-paren">(</span><em class="sig-param">filename1</em>, <em class="sig-param">filename2</em>, <em class="sig-param">start_lines1=20</em>, <em class="sig-param">start_lines2=20</em>, <em class="sig-param">rate=1</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/evennia_launcher.html#tail_log_files"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.evennia_launcher.tail_log_files" title="Permalink to this definition"></a></dt>
<dd><p>Tail two logfiles interactively, combining their output to stdout</p>
<p>When first starting, this will display the tail of the log files. After
that it will poll the log files repeatedly and display changes.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>filename1</strong> (<em>str</em>) Path to first log file.</p></li>
<li><p><strong>filename2</strong> (<em>str</em>) Path to second log file.</p></li>
<li><p><strong>start_lines1</strong> (<em>int</em>) How many lines to show from existing first log.</p></li>
<li><p><strong>start_lines2</strong> (<em>int</em>) How many lines to show from existing second log.</p></li>
<li><p><strong>rate</strong> (<em>int</em><em>, </em><em>optional</em>) How often to poll the log file.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="function">
<dt id="evennia.server.evennia_launcher.wait_for_status">
<code class="sig-prename descclassname">evennia.server.evennia_launcher.</code><code class="sig-name descname">wait_for_status</code><span class="sig-paren">(</span><em class="sig-param">portal_running=True</em>, <em class="sig-param">server_running=True</em>, <em class="sig-param">callback=None</em>, <em class="sig-param">errback=None</em>, <em class="sig-param">rate=0.5</em>, <em class="sig-param">retries=20</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/evennia_launcher.html#wait_for_status"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.evennia_launcher.wait_for_status" title="Permalink to this definition"></a></dt>
<dd><p>Repeat the status ping until the desired state combination is achieved.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>portal_running</strong> (<em>bool</em><em> or </em><em>None</em>) Desired portal run-state. If None, any state
is accepted.</p></li>
<li><p><strong>server_running</strong> (<em>bool</em><em> or </em><em>None</em>) Desired server run-state. If None, any state
is accepted. The portal must be running.</p></li>
<li><p><strong>callback</strong> (<em>callable</em>) Will be called with portal_state, server_state when
condition is fulfilled.</p></li>
<li><p><strong>errback</strong> (<em>callable</em>) Will be called with portal_state, server_state if the
request is timed out.</p></li>
<li><p><strong>rate</strong> (<em>float</em>) How often to retry.</p></li>
<li><p><strong>retries</strong> (<em>int</em>) How many times to retry before timing out and calling <cite>errback</cite>.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="function">
<dt id="evennia.server.evennia_launcher.wait_for_status_reply">
<code class="sig-prename descclassname">evennia.server.evennia_launcher.</code><code class="sig-name descname">wait_for_status_reply</code><span class="sig-paren">(</span><em class="sig-param">callback</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/evennia_launcher.html#wait_for_status_reply"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.evennia_launcher.wait_for_status_reply" title="Permalink to this definition"></a></dt>
<dd><p>Wait for an explicit STATUS signal to be sent back from Evennia.</p>
</dd></dl>
</div>
<div class="section" id="module-evennia.server.initial_setup">
<span id="evennia-server-initial-setup-module"></span><h2>evennia.server.initial_setup module<a class="headerlink" href="#module-evennia.server.initial_setup" title="Permalink to this headline"></a></h2>
<p>This module handles initial database propagation, which is only run the first
time the game starts. It will create some default channels, objects, and
other things.</p>
<p>Everything starts at handle_setup()</p>
<dl class="function">
<dt id="evennia.server.initial_setup.at_initial_setup">
<code class="sig-prename descclassname">evennia.server.initial_setup.</code><code class="sig-name descname">at_initial_setup</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/initial_setup.html#at_initial_setup"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.initial_setup.at_initial_setup" title="Permalink to this definition"></a></dt>
<dd><p>Custom hook for users to overload some or all parts of the initial
setup. Called very last in the sequence. It tries to import and
srun a module settings.AT_INITIAL_SETUP_HOOK_MODULE and will fail
silently if this does not exist or fails to load.</p>
</dd></dl>
<dl class="function">
<dt id="evennia.server.initial_setup.collectstatic">
<code class="sig-prename descclassname">evennia.server.initial_setup.</code><code class="sig-name descname">collectstatic</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/initial_setup.html#collectstatic"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.initial_setup.collectstatic" title="Permalink to this definition"></a></dt>
<dd><p>Run collectstatic to make sure all web assets are loaded.</p>
</dd></dl>
<dl class="function">
<dt id="evennia.server.initial_setup.create_channels">
<code class="sig-prename descclassname">evennia.server.initial_setup.</code><code class="sig-name descname">create_channels</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/initial_setup.html#create_channels"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.initial_setup.create_channels" title="Permalink to this definition"></a></dt>
<dd><p>Creates some sensible default channels.</p>
</dd></dl>
<dl class="function">
<dt id="evennia.server.initial_setup.create_objects">
<code class="sig-prename descclassname">evennia.server.initial_setup.</code><code class="sig-name descname">create_objects</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/initial_setup.html#create_objects"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.initial_setup.create_objects" title="Permalink to this definition"></a></dt>
<dd><p>Creates the #1 account and Limbo room.</p>
</dd></dl>
<dl class="function">
<dt id="evennia.server.initial_setup.get_god_account">
<code class="sig-prename descclassname">evennia.server.initial_setup.</code><code class="sig-name descname">get_god_account</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/initial_setup.html#get_god_account"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.initial_setup.get_god_account" title="Permalink to this definition"></a></dt>
<dd><p>Creates the god user and dont take no for an answer.</p>
</dd></dl>
<dl class="function">
<dt id="evennia.server.initial_setup.handle_setup">
<code class="sig-prename descclassname">evennia.server.initial_setup.</code><code class="sig-name descname">handle_setup</code><span class="sig-paren">(</span><em class="sig-param">last_step</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/initial_setup.html#handle_setup"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.initial_setup.handle_setup" title="Permalink to this definition"></a></dt>
<dd><p>Main logic for the module. It allows for restarting the
initialization at any point if one of the modules should crash.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>last_step</strong> (<em>int</em>) The last stored successful step, for starting
over on errors. If <cite>&lt; 0</cite>, initialization has finished and no
steps need to be redone.</p>
</dd>
</dl>
</dd></dl>
<dl class="function">
<dt id="evennia.server.initial_setup.reset_server">
<code class="sig-prename descclassname">evennia.server.initial_setup.</code><code class="sig-name descname">reset_server</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/initial_setup.html#reset_server"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.initial_setup.reset_server" title="Permalink to this definition"></a></dt>
<dd><p>We end the initialization by resetting the server. This makes sure
the first login is the same as all the following ones,
particularly it cleans all caches for the special objects. It
also checks so the warm-reset mechanism works as it should.</p>
</dd></dl>
</div>
<div class="section" id="module-evennia.server.inputfuncs">
<span id="evennia-server-inputfuncs-module"></span><h2>evennia.server.inputfuncs module<a class="headerlink" href="#module-evennia.server.inputfuncs" title="Permalink to this headline"></a></h2>
<p>Functions for processing input commands.</p>
<p>All global functions in this module whose name does not start with “_”
is considered an inputfunc. Each function must have the following
callsign (where inputfunc name is always lower-case, no matter what the
OOB input name looked like):</p>
<blockquote>
<div><p>inputfunc(session, <a href="#id1"><span class="problematic" id="id2">*</span></a>args, <a href="#id3"><span class="problematic" id="id4">**</span></a>kwargs)</p>
</div></blockquote>
<p>Where “options” is always one of the kwargs, containing eventual
protocol-options.
There is one special function, the “default” function, which is called
on a no-match. It has this callsign:</p>
<blockquote>
<div><p>default(session, cmdname, <a href="#id5"><span class="problematic" id="id6">*</span></a>args, <a href="#id7"><span class="problematic" id="id8">**</span></a>kwargs)</p>
</div></blockquote>
<p>Evennia knows which modules to use for inputfuncs by
settings.INPUT_FUNC_MODULES.</p>
<dl class="function">
<dt id="evennia.server.inputfuncs._GA">
<code class="sig-prename descclassname">evennia.server.inputfuncs.</code><code class="sig-name descname">_GA</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#evennia.server.inputfuncs._GA" title="Permalink to this definition"></a></dt>
<dd><p>Return getattr(self, name).</p>
</dd></dl>
<dl class="function">
<dt id="evennia.server.inputfuncs._NA">
<code class="sig-prename descclassname">evennia.server.inputfuncs.</code><code class="sig-name descname">_NA</code><span class="sig-paren">(</span><em class="sig-param">o</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/inputfuncs.html#_NA"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.inputfuncs._NA" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="function">
<dt id="evennia.server.inputfuncs._SA">
<code class="sig-prename descclassname">evennia.server.inputfuncs.</code><code class="sig-name descname">_SA</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#evennia.server.inputfuncs._SA" title="Permalink to this definition"></a></dt>
<dd><p>Implement setattr(self, name, value).</p>
</dd></dl>
<dl class="function">
<dt id="evennia.server.inputfuncs._on_monitor_change">
<code class="sig-prename descclassname">evennia.server.inputfuncs.</code><code class="sig-name descname">_on_monitor_change</code><span class="sig-paren">(</span><em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/inputfuncs.html#_on_monitor_change"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.inputfuncs._on_monitor_change" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="function">
<dt id="evennia.server.inputfuncs._on_webclient_options_change">
<code class="sig-prename descclassname">evennia.server.inputfuncs.</code><code class="sig-name descname">_on_webclient_options_change</code><span class="sig-paren">(</span><em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/inputfuncs.html#_on_webclient_options_change"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.inputfuncs._on_webclient_options_change" title="Permalink to this definition"></a></dt>
<dd><p>Called when the webclient options stored on the account changes.
Inform the interested clients of this change.</p>
</dd></dl>
<dl class="function">
<dt id="evennia.server.inputfuncs._testrepeat">
<code class="sig-prename descclassname">evennia.server.inputfuncs.</code><code class="sig-name descname">_testrepeat</code><span class="sig-paren">(</span><em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/inputfuncs.html#_testrepeat"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.inputfuncs._testrepeat" title="Permalink to this definition"></a></dt>
<dd><p>This is a test function for using with the repeat
inputfunc.</p>
<dl class="simple">
<dt>Kwargs:</dt><dd><p>session (Session): Session to return to.</p>
</dd>
</dl>
</dd></dl>
<dl class="function">
<dt id="evennia.server.inputfuncs.bot_data_in">
<code class="sig-prename descclassname">evennia.server.inputfuncs.</code><code class="sig-name descname">bot_data_in</code><span class="sig-paren">(</span><em class="sig-param">session</em>, <em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/inputfuncs.html#bot_data_in"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.inputfuncs.bot_data_in" title="Permalink to this definition"></a></dt>
<dd><p>Text input from the IRC and RSS bots.
This will trigger the execute_cmd method on the bots in-game counterpart.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>session</strong> (<a class="reference internal" href="#evennia.server.session.Session" title="evennia.server.session.Session"><em>Session</em></a>) The active Session to receive the input.</p></li>
<li><p><strong>text</strong> (<em>str</em>) First arg is text input. Other arguments are ignored.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="function">
<dt id="evennia.server.inputfuncs.client_options">
<code class="sig-prename descclassname">evennia.server.inputfuncs.</code><code class="sig-name descname">client_options</code><span class="sig-paren">(</span><em class="sig-param">session</em>, <em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/inputfuncs.html#client_options"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.inputfuncs.client_options" title="Permalink to this definition"></a></dt>
<dd><p>This allows the client an OOB way to inform us about its name and capabilities.
This will be integrated into the session settings</p>
<dl>
<dt>Kwargs:</dt><dd><dl class="simple">
<dt>get (bool): If this is true, return the settings as a dict</dt><dd><p>(ignore all other kwargs).</p>
</dd>
</dl>
<p>client (str): A client identifier, like “mushclient”.
version (str): A client version
ansi (bool): Supports ansi colors
xterm256 (bool): Supports xterm256 colors or not
mxp (bool): Supports MXP or not
utf-8 (bool): Supports UTF-8 or not
screenreader (bool): Screen-reader mode on/off
mccp (bool): MCCP compression on/off
screenheight (int): Screen height in lines
screenwidth (int): Screen width in characters
inputdebug (bool): Debug input functions
nocolor (bool): Strip color
raw (bool): Turn off parsing</p>
</dd>
</dl>
</dd></dl>
<dl class="function">
<dt id="evennia.server.inputfuncs.default">
<code class="sig-prename descclassname">evennia.server.inputfuncs.</code><code class="sig-name descname">default</code><span class="sig-paren">(</span><em class="sig-param">session</em>, <em class="sig-param">cmdname</em>, <em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/inputfuncs.html#default"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.inputfuncs.default" title="Permalink to this definition"></a></dt>
<dd><p>Default catch-function. This is like all other input functions except
it will get <cite>cmdname</cite> as the first argument.</p>
</dd></dl>
<dl class="function">
<dt id="evennia.server.inputfuncs.echo">
<code class="sig-prename descclassname">evennia.server.inputfuncs.</code><code class="sig-name descname">echo</code><span class="sig-paren">(</span><em class="sig-param">session</em>, <em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/inputfuncs.html#echo"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.inputfuncs.echo" title="Permalink to this definition"></a></dt>
<dd><p>Echo test function</p>
</dd></dl>
<dl class="function">
<dt id="evennia.server.inputfuncs.external_discord_hello">
<code class="sig-prename descclassname">evennia.server.inputfuncs.</code><code class="sig-name descname">external_discord_hello</code><span class="sig-paren">(</span><em class="sig-param">session</em>, <em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/inputfuncs.html#external_discord_hello"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.inputfuncs.external_discord_hello" title="Permalink to this definition"></a></dt>
<dd><p>Sent by Mudlet as a greeting; added here to avoid
logging a missing inputfunc for it.</p>
</dd></dl>
<dl class="function">
<dt id="evennia.server.inputfuncs.get_client_options">
<code class="sig-prename descclassname">evennia.server.inputfuncs.</code><code class="sig-name descname">get_client_options</code><span class="sig-paren">(</span><em class="sig-param">session</em>, <em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/inputfuncs.html#get_client_options"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.inputfuncs.get_client_options" title="Permalink to this definition"></a></dt>
<dd><p>Alias wrapper for getting options.</p>
</dd></dl>
<dl class="function">
<dt id="evennia.server.inputfuncs.get_inputfuncs">
<code class="sig-prename descclassname">evennia.server.inputfuncs.</code><code class="sig-name descname">get_inputfuncs</code><span class="sig-paren">(</span><em class="sig-param">session</em>, <em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/inputfuncs.html#get_inputfuncs"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.inputfuncs.get_inputfuncs" title="Permalink to this definition"></a></dt>
<dd><p>Get the keys of all available inputfuncs. Note that we dont get
it from this module alone since multiple modules could be added.
So we get it from the sessionhandler.</p>
</dd></dl>
<dl class="function">
<dt id="evennia.server.inputfuncs.get_value">
<code class="sig-prename descclassname">evennia.server.inputfuncs.</code><code class="sig-name descname">get_value</code><span class="sig-paren">(</span><em class="sig-param">session</em>, <em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/inputfuncs.html#get_value"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.inputfuncs.get_value" title="Permalink to this definition"></a></dt>
<dd><p>Return the value of a given attribute or db_property on the
sessions current account or character.</p>
<dl class="simple">
<dt>Kwargs:</dt><dd><dl class="simple">
<dt>name (str): Name of info value to return. Only names</dt><dd><p>in the _gettable dictionary earlier in this module
are accepted.</p>
</dd>
</dl>
</dd>
</dl>
</dd></dl>
<dl class="function">
<dt id="evennia.server.inputfuncs.hello">
<code class="sig-prename descclassname">evennia.server.inputfuncs.</code><code class="sig-name descname">hello</code><span class="sig-paren">(</span><em class="sig-param">session</em>, <em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#evennia.server.inputfuncs.hello" title="Permalink to this definition"></a></dt>
<dd><p>This allows the client an OOB way to inform us about its name and capabilities.
This will be integrated into the session settings</p>
<dl>
<dt>Kwargs:</dt><dd><dl class="simple">
<dt>get (bool): If this is true, return the settings as a dict</dt><dd><p>(ignore all other kwargs).</p>
</dd>
</dl>
<p>client (str): A client identifier, like “mushclient”.
version (str): A client version
ansi (bool): Supports ansi colors
xterm256 (bool): Supports xterm256 colors or not
mxp (bool): Supports MXP or not
utf-8 (bool): Supports UTF-8 or not
screenreader (bool): Screen-reader mode on/off
mccp (bool): MCCP compression on/off
screenheight (int): Screen height in lines
screenwidth (int): Screen width in characters
inputdebug (bool): Debug input functions
nocolor (bool): Strip color
raw (bool): Turn off parsing</p>
</dd>
</dl>
</dd></dl>
<dl class="function">
<dt id="evennia.server.inputfuncs.login">
<code class="sig-prename descclassname">evennia.server.inputfuncs.</code><code class="sig-name descname">login</code><span class="sig-paren">(</span><em class="sig-param">session</em>, <em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/inputfuncs.html#login"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.inputfuncs.login" title="Permalink to this definition"></a></dt>
<dd><p>Peform a login. This only works if session is currently not logged
in. This will also automatically throttle too quick attempts.</p>
<dl class="simple">
<dt>Kwargs:</dt><dd><p>name (str): Account name
password (str): Plain-text password</p>
</dd>
</dl>
</dd></dl>
<dl class="function">
<dt id="evennia.server.inputfuncs.monitor">
<code class="sig-prename descclassname">evennia.server.inputfuncs.</code><code class="sig-name descname">monitor</code><span class="sig-paren">(</span><em class="sig-param">session</em>, <em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/inputfuncs.html#monitor"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.inputfuncs.monitor" title="Permalink to this definition"></a></dt>
<dd><p>Adds monitoring to a given property or Attribute.</p>
<dl>
<dt>Kwargs:</dt><dd><dl class="simple">
<dt>name (str): The name of the property or Attribute</dt><dd><p>to report. No db_* prefix is needed. Only names
in the _monitorable dict earlier in this module
are accepted.</p>
</dd>
</dl>
<p>stop (bool): Stop monitoring the above name.
outputfunc_name (str, optional): Change the name of</p>
<blockquote>
<div><p>the outputfunc name. This is used e.g. by MSDP which
has its own specific output format.</p>
</div></blockquote>
</dd>
</dl>
</dd></dl>
<dl class="function">
<dt id="evennia.server.inputfuncs.monitored">
<code class="sig-prename descclassname">evennia.server.inputfuncs.</code><code class="sig-name descname">monitored</code><span class="sig-paren">(</span><em class="sig-param">session</em>, <em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/inputfuncs.html#monitored"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.inputfuncs.monitored" title="Permalink to this definition"></a></dt>
<dd><p>Report on what is being monitored</p>
</dd></dl>
<dl class="function">
<dt id="evennia.server.inputfuncs.msdp_list">
<code class="sig-prename descclassname">evennia.server.inputfuncs.</code><code class="sig-name descname">msdp_list</code><span class="sig-paren">(</span><em class="sig-param">session</em>, <em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/inputfuncs.html#msdp_list"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.inputfuncs.msdp_list" title="Permalink to this definition"></a></dt>
<dd><p>MSDP LIST command</p>
</dd></dl>
<dl class="function">
<dt id="evennia.server.inputfuncs.msdp_report">
<code class="sig-prename descclassname">evennia.server.inputfuncs.</code><code class="sig-name descname">msdp_report</code><span class="sig-paren">(</span><em class="sig-param">session</em>, <em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/inputfuncs.html#msdp_report"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.inputfuncs.msdp_report" title="Permalink to this definition"></a></dt>
<dd><p>MSDP REPORT command</p>
</dd></dl>
<dl class="function">
<dt id="evennia.server.inputfuncs.msdp_send">
<code class="sig-prename descclassname">evennia.server.inputfuncs.</code><code class="sig-name descname">msdp_send</code><span class="sig-paren">(</span><em class="sig-param">session</em>, <em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/inputfuncs.html#msdp_send"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.inputfuncs.msdp_send" title="Permalink to this definition"></a></dt>
<dd><p>MSDP SEND command</p>
</dd></dl>
<dl class="function">
<dt id="evennia.server.inputfuncs.msdp_unreport">
<code class="sig-prename descclassname">evennia.server.inputfuncs.</code><code class="sig-name descname">msdp_unreport</code><span class="sig-paren">(</span><em class="sig-param">session</em>, <em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/inputfuncs.html#msdp_unreport"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.inputfuncs.msdp_unreport" title="Permalink to this definition"></a></dt>
<dd><p>MSDP UNREPORT command</p>
</dd></dl>
<dl class="function">
<dt id="evennia.server.inputfuncs.repeat">
<code class="sig-prename descclassname">evennia.server.inputfuncs.</code><code class="sig-name descname">repeat</code><span class="sig-paren">(</span><em class="sig-param">session</em>, <em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/inputfuncs.html#repeat"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.inputfuncs.repeat" title="Permalink to this definition"></a></dt>
<dd><p>Call a named function repeatedly. Note that
this is meant as an example of limiting the number of
possible call functions.</p>
<dl class="simple">
<dt>Kwargs:</dt><dd><dl class="simple">
<dt>callback (str): The function to call. Only functions</dt><dd><p>from the _repeatable dictionary earlier in this
module are available.</p>
</dd>
<dt>interval (int): How often to call function (s).</dt><dd><dl class="simple">
<dt>Defaults to once every 60 seconds with a minimum</dt><dd><p>of 5 seconds.</p>
</dd>
</dl>
</dd>
<dt>stop (bool): Stop a previously assigned ticker with</dt><dd><p>the above settings.</p>
</dd>
</dl>
</dd>
</dl>
</dd></dl>
<dl class="function">
<dt id="evennia.server.inputfuncs.supports_set">
<code class="sig-prename descclassname">evennia.server.inputfuncs.</code><code class="sig-name descname">supports_set</code><span class="sig-paren">(</span><em class="sig-param">session</em>, <em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#evennia.server.inputfuncs.supports_set" title="Permalink to this definition"></a></dt>
<dd><p>This allows the client an OOB way to inform us about its name and capabilities.
This will be integrated into the session settings</p>
<dl>
<dt>Kwargs:</dt><dd><dl class="simple">
<dt>get (bool): If this is true, return the settings as a dict</dt><dd><p>(ignore all other kwargs).</p>
</dd>
</dl>
<p>client (str): A client identifier, like “mushclient”.
version (str): A client version
ansi (bool): Supports ansi colors
xterm256 (bool): Supports xterm256 colors or not
mxp (bool): Supports MXP or not
utf-8 (bool): Supports UTF-8 or not
screenreader (bool): Screen-reader mode on/off
mccp (bool): MCCP compression on/off
screenheight (int): Screen height in lines
screenwidth (int): Screen width in characters
inputdebug (bool): Debug input functions
nocolor (bool): Strip color
raw (bool): Turn off parsing</p>
</dd>
</dl>
</dd></dl>
<dl class="function">
<dt id="evennia.server.inputfuncs.text">
<code class="sig-prename descclassname">evennia.server.inputfuncs.</code><code class="sig-name descname">text</code><span class="sig-paren">(</span><em class="sig-param">session</em>, <em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/inputfuncs.html#text"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.inputfuncs.text" title="Permalink to this definition"></a></dt>
<dd><p>Main text input from the client. This will execute a command
string on the server.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>session</strong> (<a class="reference internal" href="#evennia.server.session.Session" title="evennia.server.session.Session"><em>Session</em></a>) The active Session to receive the input.</p></li>
<li><p><strong>text</strong> (<em>str</em>) First arg is used as text-command input. Other
arguments are ignored.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="function">
<dt id="evennia.server.inputfuncs.unmonitor">
<code class="sig-prename descclassname">evennia.server.inputfuncs.</code><code class="sig-name descname">unmonitor</code><span class="sig-paren">(</span><em class="sig-param">session</em>, <em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/inputfuncs.html#unmonitor"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.inputfuncs.unmonitor" title="Permalink to this definition"></a></dt>
<dd><p>Wrapper for turning off monitoring</p>
</dd></dl>
<dl class="function">
<dt id="evennia.server.inputfuncs.unrepeat">
<code class="sig-prename descclassname">evennia.server.inputfuncs.</code><code class="sig-name descname">unrepeat</code><span class="sig-paren">(</span><em class="sig-param">session</em>, <em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/inputfuncs.html#unrepeat"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.inputfuncs.unrepeat" title="Permalink to this definition"></a></dt>
<dd><p>Wrapper for OOB use</p>
</dd></dl>
<dl class="function">
<dt id="evennia.server.inputfuncs.webclient_options">
<code class="sig-prename descclassname">evennia.server.inputfuncs.</code><code class="sig-name descname">webclient_options</code><span class="sig-paren">(</span><em class="sig-param">session</em>, <em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/inputfuncs.html#webclient_options"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.inputfuncs.webclient_options" title="Permalink to this definition"></a></dt>
<dd><p>Handles retrieving and changing of options related to the webclient.</p>
<p>If kwargs is empty (or contains just a “cmdid”), the saved options will be
sent back to the session.
A monitor handler will be created to inform the client of any future options
that changes.</p>
<p>If kwargs is not empty, the key/values stored in there will be persisted
to the account object.</p>
<dl class="simple">
<dt>Kwargs:</dt><dd><p>&lt;option name&gt;: an option to save</p>
</dd>
</dl>
</dd></dl>
</div>
<div class="section" id="module-evennia.server.manager">
<span id="evennia-server-manager-module"></span><h2>evennia.server.manager module<a class="headerlink" href="#module-evennia.server.manager" title="Permalink to this headline"></a></h2>
<p>Custom manager for ServerConfig objects.</p>
<dl class="class">
<dt id="evennia.server.manager.ServerConfigManager">
<em class="property">class </em><code class="sig-prename descclassname">evennia.server.manager.</code><code class="sig-name descname">ServerConfigManager</code><a class="reference internal" href="../_modules/evennia/server/manager.html#ServerConfigManager"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.manager.ServerConfigManager" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">django.db.models.manager.Manager</span></code></p>
<p>This ServerConfigManager implements methods for searching and
manipulating ServerConfigs directly from the database.</p>
<p>These methods will all return database objects (or QuerySets)
directly.</p>
<p>ServerConfigs are used to store certain persistent settings for
the server at run-time.</p>
<dl class="method">
<dt id="evennia.server.manager.ServerConfigManager.conf">
<code class="sig-name descname">conf</code><span class="sig-paren">(</span><em class="sig-param">key=None</em>, <em class="sig-param">value=None</em>, <em class="sig-param">delete=False</em>, <em class="sig-param">default=None</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/manager.html#ServerConfigManager.conf"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.manager.ServerConfigManager.conf" title="Permalink to this definition"></a></dt>
<dd><p>Add, retrieve and manipulate config values.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>key</strong> (<em>str</em><em>, </em><em>optional</em>) Name of config.</p></li>
<li><p><strong>value</strong> (<em>str</em><em>, </em><em>optional</em>) Data to store in this config value.</p></li>
<li><p><strong>delete</strong> (<em>bool</em><em>, </em><em>optional</em>) If <cite>True</cite>, delete config with <cite>key</cite>.</p></li>
<li><p><strong>default</strong> (<em>str</em><em>, </em><em>optional</em>) Use when retrieving a config value
by a key that does not exist.</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><p>If <cite>key</cite> was not given - all stored config values.
value (str): If <cite>key</cite> was given, this is the stored value, or</p>
<blockquote>
<div><p><cite>default</cite> if no matching <cite>key</cite> was found.</p>
</div></blockquote>
</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p>all (list)</p>
</dd>
</dl>
</dd></dl>
</dd></dl>
</div>
<div class="section" id="module-evennia.server.models">
<span id="evennia-server-models-module"></span><h2>evennia.server.models module<a class="headerlink" href="#module-evennia.server.models" title="Permalink to this headline"></a></h2>
<p>Server Configuration flags</p>
<p>This holds persistent server configuration flags.</p>
<p>Config values should usually be set through the
managers conf() method.</p>
<dl class="class">
<dt id="evennia.server.models.ServerConfig">
<em class="property">class </em><code class="sig-prename descclassname">evennia.server.models.</code><code class="sig-name descname">ServerConfig</code><span class="sig-paren">(</span><em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/models.html#ServerConfig"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.models.ServerConfig" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="evennia.utils.idmapper.html#evennia.utils.idmapper.models.WeakSharedMemoryModel" title="evennia.utils.idmapper.models.WeakSharedMemoryModel"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.utils.idmapper.models.WeakSharedMemoryModel</span></code></a></p>
<p>On-the fly storage of global settings.</p>
<p>Properties defined on ServerConfig:</p>
<blockquote>
<div><ul class="simple">
<li><p>key: Main identifier</p></li>
<li><p>value: Value stored in key. This is a pickled storage.</p></li>
</ul>
</div></blockquote>
<dl class="exception">
<dt id="evennia.server.models.ServerConfig.DoesNotExist">
<em class="property">exception </em><code class="sig-name descname">DoesNotExist</code><a class="headerlink" href="#evennia.server.models.ServerConfig.DoesNotExist" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">django.core.exceptions.ObjectDoesNotExist</span></code></p>
</dd></dl>
<dl class="exception">
<dt id="evennia.server.models.ServerConfig.MultipleObjectsReturned">
<em class="property">exception </em><code class="sig-name descname">MultipleObjectsReturned</code><a class="headerlink" href="#evennia.server.models.ServerConfig.MultipleObjectsReturned" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">django.core.exceptions.MultipleObjectsReturned</span></code></p>
</dd></dl>
<dl class="method">
<dt id="evennia.server.models.ServerConfig._ServerConfig__key_del">
<code class="sig-name descname">_ServerConfig__key_del</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#evennia.server.models.ServerConfig._ServerConfig__key_del" title="Permalink to this definition"></a></dt>
<dd><p>Deleter. Allows for del self.key. Deletes entry.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.server.models.ServerConfig._ServerConfig__key_get">
<code class="sig-name descname">_ServerConfig__key_get</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#evennia.server.models.ServerConfig._ServerConfig__key_get" title="Permalink to this definition"></a></dt>
<dd><p>Getter. Allows for value = self.key</p>
</dd></dl>
<dl class="method">
<dt id="evennia.server.models.ServerConfig._ServerConfig__key_set">
<code class="sig-name descname">_ServerConfig__key_set</code><span class="sig-paren">(</span><em class="sig-param">value</em><span class="sig-paren">)</span><a class="headerlink" href="#evennia.server.models.ServerConfig._ServerConfig__key_set" title="Permalink to this definition"></a></dt>
<dd><p>Setter. Allows for self.key = value</p>
</dd></dl>
<dl class="method">
<dt id="evennia.server.models.ServerConfig._ServerConfig__value_del">
<code class="sig-name descname">_ServerConfig__value_del</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#evennia.server.models.ServerConfig._ServerConfig__value_del" title="Permalink to this definition"></a></dt>
<dd><p>Deleter. Allows for del self.value. Deletes entry.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.server.models.ServerConfig._ServerConfig__value_get">
<code class="sig-name descname">_ServerConfig__value_get</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#evennia.server.models.ServerConfig._ServerConfig__value_get" title="Permalink to this definition"></a></dt>
<dd><p>Getter. Allows for value = self.value</p>
</dd></dl>
<dl class="method">
<dt id="evennia.server.models.ServerConfig._ServerConfig__value_set">
<code class="sig-name descname">_ServerConfig__value_set</code><span class="sig-paren">(</span><em class="sig-param">value</em><span class="sig-paren">)</span><a class="headerlink" href="#evennia.server.models.ServerConfig._ServerConfig__value_set" title="Permalink to this definition"></a></dt>
<dd><p>Setter. Allows for self.value = value</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.server.models.ServerConfig._is_deleted">
<code class="sig-name descname">_is_deleted</code><em class="property"> = False</em><a class="headerlink" href="#evennia.server.models.ServerConfig._is_deleted" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.server.models.ServerConfig._meta">
<code class="sig-name descname">_meta</code><em class="property"> = &lt;Options for ServerConfig&gt;</em><a class="headerlink" href="#evennia.server.models.ServerConfig._meta" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.server.models.ServerConfig.db_key">
<code class="sig-name descname">db_key</code><a class="headerlink" href="#evennia.server.models.ServerConfig.db_key" title="Permalink to this definition"></a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.server.models.ServerConfig.db_value">
<code class="sig-name descname">db_value</code><a class="headerlink" href="#evennia.server.models.ServerConfig.db_value" title="Permalink to this definition"></a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.server.models.ServerConfig.id">
<code class="sig-name descname">id</code><a class="headerlink" href="#evennia.server.models.ServerConfig.id" title="Permalink to this definition"></a></dt>
<dd><p>A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.server.models.ServerConfig.key">
<em class="property">property </em><code class="sig-name descname">key</code><a class="headerlink" href="#evennia.server.models.ServerConfig.key" title="Permalink to this definition"></a></dt>
<dd><p>Getter. Allows for value = self.key</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.server.models.ServerConfig.objects">
<code class="sig-name descname">objects</code><em class="property"> = &lt;evennia.server.manager.ServerConfigManager object&gt;</em><a class="headerlink" href="#evennia.server.models.ServerConfig.objects" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="evennia.server.models.ServerConfig.path">
<code class="sig-name descname">path</code><em class="property"> = 'evennia.server.models.ServerConfig'</em><a class="headerlink" href="#evennia.server.models.ServerConfig.path" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.server.models.ServerConfig.store">
<code class="sig-name descname">store</code><span class="sig-paren">(</span><em class="sig-param">key</em>, <em class="sig-param">value</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/models.html#ServerConfig.store"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.models.ServerConfig.store" title="Permalink to this definition"></a></dt>
<dd><p>Wrap the storage.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>key</strong> (<em>str</em>) The name of this store.</p></li>
<li><p><strong>value</strong> (<em>str</em>) The data to store with this <cite>key</cite>.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="attribute">
<dt id="evennia.server.models.ServerConfig.typename">
<code class="sig-name descname">typename</code><em class="property"> = 'WeakSharedMemoryModelBase'</em><a class="headerlink" href="#evennia.server.models.ServerConfig.typename" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.server.models.ServerConfig.value">
<em class="property">property </em><code class="sig-name descname">value</code><a class="headerlink" href="#evennia.server.models.ServerConfig.value" title="Permalink to this definition"></a></dt>
<dd><p>Getter. Allows for value = self.value</p>
</dd></dl>
</dd></dl>
</div>
<div class="section" id="module-evennia.server.server">
<span id="evennia-server-server-module"></span><h2>evennia.server.server module<a class="headerlink" href="#module-evennia.server.server" title="Permalink to this headline"></a></h2>
<p>This module implements the main Evennia server process, the core of
the game engine.</p>
<p>This module should be started with the twistd executable since it
sets up all the networking features. (this is done automatically
by evennia/server/server_runner.py).</p>
<dl class="class">
<dt id="evennia.server.server.Evennia">
<em class="property">class </em><code class="sig-prename descclassname">evennia.server.server.</code><code class="sig-name descname">Evennia</code><span class="sig-paren">(</span><em class="sig-param">application</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/server.html#Evennia"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.server.Evennia" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>The main Evennia server handler. This object sets up the database and
tracks and interlinks all the twisted network services that make up
evennia.</p>
<dl class="method">
<dt id="evennia.server.server.Evennia.__init__">
<code class="sig-name descname">__init__</code><span class="sig-paren">(</span><em class="sig-param">application</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/server.html#Evennia.__init__"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.server.Evennia.__init__" title="Permalink to this definition"></a></dt>
<dd><p>Setup the server.</p>
<p>application - an instantiated Twisted application</p>
</dd></dl>
<dl class="method">
<dt id="evennia.server.server.Evennia.at_post_portal_sync">
<code class="sig-name descname">at_post_portal_sync</code><span class="sig-paren">(</span><em class="sig-param">mode</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/server.html#Evennia.at_post_portal_sync"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.server.Evennia.at_post_portal_sync" title="Permalink to this definition"></a></dt>
<dd><p>This is called just after the portal has finished syncing back data to the server
after reconnecting.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>mode</strong> (<em>str</em>) One of reload, reset or shutdown.</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.server.Evennia.at_server_cold_start">
<code class="sig-name descname">at_server_cold_start</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/server.html#Evennia.at_server_cold_start"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.server.Evennia.at_server_cold_start" title="Permalink to this definition"></a></dt>
<dd><p>This is called only when the server starts “cold”, i.e. after a
shutdown or a reset.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.server.server.Evennia.at_server_cold_stop">
<code class="sig-name descname">at_server_cold_stop</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/server.html#Evennia.at_server_cold_stop"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.server.Evennia.at_server_cold_stop" title="Permalink to this definition"></a></dt>
<dd><p>This is called only when the server goes down due to a shutdown or reset.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.server.server.Evennia.at_server_reload_start">
<code class="sig-name descname">at_server_reload_start</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/server.html#Evennia.at_server_reload_start"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.server.Evennia.at_server_reload_start" title="Permalink to this definition"></a></dt>
<dd><p>This is called only when server starts back up after a reload.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.server.server.Evennia.at_server_reload_stop">
<code class="sig-name descname">at_server_reload_stop</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/server.html#Evennia.at_server_reload_stop"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.server.Evennia.at_server_reload_stop" title="Permalink to this definition"></a></dt>
<dd><p>This is called only time the server stops before a reload.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.server.server.Evennia.at_server_start">
<code class="sig-name descname">at_server_start</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/server.html#Evennia.at_server_start"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.server.Evennia.at_server_start" title="Permalink to this definition"></a></dt>
<dd><p>This is called every time the server starts up, regardless of
how it was shut down.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.server.server.Evennia.at_server_stop">
<code class="sig-name descname">at_server_stop</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/server.html#Evennia.at_server_stop"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.server.Evennia.at_server_stop" title="Permalink to this definition"></a></dt>
<dd><p>This is called just before a server is shut down, regardless
of it is fore a reload, reset or shutdown.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.server.server.Evennia.get_info_dict">
<code class="sig-name descname">get_info_dict</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/server.html#Evennia.get_info_dict"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.server.Evennia.get_info_dict" title="Permalink to this definition"></a></dt>
<dd><p>Return the server info, for display.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.server.server.Evennia.run_init_hooks">
<code class="sig-name descname">run_init_hooks</code><span class="sig-paren">(</span><em class="sig-param">mode</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/server.html#Evennia.run_init_hooks"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.server.Evennia.run_init_hooks" title="Permalink to this definition"></a></dt>
<dd><p>Called by the amp client once receiving sync back from Portal</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>mode</strong> (<em>str</em>) One of shutdown, reload or reset</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.server.Evennia.run_initial_setup">
<code class="sig-name descname">run_initial_setup</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/server.html#Evennia.run_initial_setup"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.server.Evennia.run_initial_setup" title="Permalink to this definition"></a></dt>
<dd><p>This is triggered by the amp protocol when the connection
to the portal has been established.
This attempts to run the initial_setup script of the server.
It returns if this is not the first time the server starts.
Once finished the last_initial_setup_step is set to -1.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.server.server.Evennia.shutdown">
<code class="sig-name descname">shutdown</code><span class="sig-paren">(</span><em class="sig-param">mode='reload'</em>, <em class="sig-param">_reactor_stopping=False</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/server.html#Evennia.shutdown"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.server.Evennia.shutdown" title="Permalink to this definition"></a></dt>
<dd><p>Shuts down the server from inside it.</p>
<dl>
<dt>mode - sets the server restart mode.</dt><dd><dl class="simple">
<dt>reload - server restarts, no “persistent” scripts</dt><dd><p>are stopped, at_reload hooks called.</p>
</dd>
<dt>reset - server restarts, non-persistent scripts stopped,</dt><dd><p>at_shutdown hooks called but sessions will not
be disconnected.</p>
</dd>
</dl>
<p>shutdown - like reset, but server will not auto-restart.</p>
</dd>
<dt>_reactor_stopping - this is set if server is stopped by a kill</dt><dd><dl class="simple">
<dt>command OR this method was already called</dt><dd><p>once - in both cases the reactor is
dead/stopping already.</p>
</dd>
</dl>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.server.Evennia.sqlite3_prep">
<code class="sig-name descname">sqlite3_prep</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/server.html#Evennia.sqlite3_prep"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.server.Evennia.sqlite3_prep" title="Permalink to this definition"></a></dt>
<dd><p>Optimize some SQLite stuff at startup since we
cant save it to the database.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.server.server.Evennia.update_defaults">
<code class="sig-name descname">update_defaults</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/server.html#Evennia.update_defaults"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.server.Evennia.update_defaults" title="Permalink to this definition"></a></dt>
<dd><p>We make sure to store the most important object defaults here, so
we can catch if they change and update them on-objects automatically.
This allows for changing default cmdset locations and default
typeclasses in the settings file and have them auto-update all
already existing objects.</p>
</dd></dl>
</dd></dl>
<dl class="function">
<dt id="evennia.server.server._SA">
<code class="sig-prename descclassname">evennia.server.server.</code><code class="sig-name descname">_SA</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#evennia.server.server._SA" title="Permalink to this definition"></a></dt>
<dd><p>Implement setattr(self, name, value).</p>
</dd></dl>
<dl class="function">
<dt id="evennia.server.server._server_maintenance">
<code class="sig-prename descclassname">evennia.server.server.</code><code class="sig-name descname">_server_maintenance</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/server.html#_server_maintenance"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.server._server_maintenance" title="Permalink to this definition"></a></dt>
<dd><p>This maintenance function handles repeated checks and updates that
the server needs to do. It is called every minute.</p>
</dd></dl>
</div>
<div class="section" id="module-evennia.server.serversession">
<span id="evennia-server-serversession-module"></span><h2>evennia.server.serversession module<a class="headerlink" href="#module-evennia.server.serversession" title="Permalink to this headline"></a></h2>
<p>This defines a the Servers generic session object. This object represents
a connection to the outside world but dont know any details about how the
connection actually happens (so its the same for telnet, web, ssh etc).</p>
<p>It is stored on the Server side (as opposed to protocol-specific sessions which
are stored on the Portal side)</p>
<dl class="class">
<dt id="evennia.server.serversession.ServerSession">
<em class="property">class </em><code class="sig-prename descclassname">evennia.server.serversession.</code><code class="sig-name descname">ServerSession</code><a class="reference internal" href="../_modules/evennia/server/serversession.html#ServerSession"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.serversession.ServerSession" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#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>This class represents an accounts session and is a template for
individual protocols to communicate with Evennia.</p>
<p>Each account gets a session assigned to them whenever they connect
to the game server. All communication between game and account goes
through their session.</p>
<dl class="method">
<dt id="evennia.server.serversession.ServerSession._ServerSession__cmdset_storage_get">
<code class="sig-name descname">_ServerSession__cmdset_storage_get</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#evennia.server.serversession.ServerSession._ServerSession__cmdset_storage_get" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.server.serversession.ServerSession._ServerSession__cmdset_storage_set">
<code class="sig-name descname">_ServerSession__cmdset_storage_set</code><span class="sig-paren">(</span><em class="sig-param">value</em><span class="sig-paren">)</span><a class="headerlink" href="#evennia.server.serversession.ServerSession._ServerSession__cmdset_storage_set" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.server.serversession.ServerSession.__init__">
<code class="sig-name descname">__init__</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/serversession.html#ServerSession.__init__"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.serversession.ServerSession.__init__" title="Permalink to this definition"></a></dt>
<dd><p>Initiate to avoid AttributeErrors down the line</p>
</dd></dl>
<dl class="method">
<dt id="evennia.server.serversession.ServerSession.access">
<code class="sig-name descname">access</code><span class="sig-paren">(</span><em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/serversession.html#ServerSession.access"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.serversession.ServerSession.access" title="Permalink to this definition"></a></dt>
<dd><p>Dummy method to mimic the logged-in API.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.server.serversession.ServerSession.at_cmdset_get">
<code class="sig-name descname">at_cmdset_get</code><span class="sig-paren">(</span><em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/serversession.html#ServerSession.at_cmdset_get"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.serversession.ServerSession.at_cmdset_get" title="Permalink to this definition"></a></dt>
<dd><p>A dummy hook all objects with cmdsets need to have</p>
</dd></dl>
<dl class="method">
<dt id="evennia.server.serversession.ServerSession.at_disconnect">
<code class="sig-name descname">at_disconnect</code><span class="sig-paren">(</span><em class="sig-param">reason=None</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/serversession.html#ServerSession.at_disconnect"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.serversession.ServerSession.at_disconnect" title="Permalink to this definition"></a></dt>
<dd><p>Hook called by sessionhandler when disconnecting this session.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.server.serversession.ServerSession.at_login">
<code class="sig-name descname">at_login</code><span class="sig-paren">(</span><em class="sig-param">account</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/serversession.html#ServerSession.at_login"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.serversession.ServerSession.at_login" title="Permalink to this definition"></a></dt>
<dd><p>Hook called by sessionhandler when the session becomes authenticated.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>account</strong> (<em>Account</em>) The account associated with the session.</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.serversession.ServerSession.at_sync">
<code class="sig-name descname">at_sync</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/serversession.html#ServerSession.at_sync"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.serversession.ServerSession.at_sync" title="Permalink to this definition"></a></dt>
<dd><p>This is called whenever a session has been resynced with the
portal. At this point all relevant attributes have already
been set and self.account been assigned (if applicable).</p>
<p>Since this is often called after a server restart we need to
set up the session as it was.</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.server.serversession.ServerSession.attributes">
<code class="sig-name descname">attributes</code><a class="reference internal" href="../_modules/evennia/server/serversession.html#ServerSession.attributes"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.serversession.ServerSession.attributes" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.server.serversession.ServerSession.cmdset_storage">
<em class="property">property </em><code class="sig-name descname">cmdset_storage</code><a class="headerlink" href="#evennia.server.serversession.ServerSession.cmdset_storage" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.server.serversession.ServerSession.data_in">
<code class="sig-name descname">data_in</code><span class="sig-paren">(</span><em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/serversession.html#ServerSession.data_in"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.serversession.ServerSession.data_in" title="Permalink to this definition"></a></dt>
<dd><p>Receiving data from the client, sending it off to
the respective inputfuncs.</p>
<dl class="simple">
<dt>Kwargs:</dt><dd><dl class="simple">
<dt>kwargs (any): Incoming data from protocol on</dt><dd><p>the form <cite>{“commandname”: ((args), {kwargs}),…}</cite></p>
</dd>
</dl>
</dd>
</dl>
<p class="rubric">Notes</p>
<p>This method is here in order to give the user
a single place to catch and possibly process all incoming data from
the client. It should usually always end by sending
this data off to <cite>self.sessionhandler.call_inputfuncs(self, **kwargs)</cite>.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.server.serversession.ServerSession.data_out">
<code class="sig-name descname">data_out</code><span class="sig-paren">(</span><em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/serversession.html#ServerSession.data_out"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.serversession.ServerSession.data_out" title="Permalink to this definition"></a></dt>
<dd><p>Sending data from Evennia-&gt;Client</p>
<dl>
<dt>Kwargs:</dt><dd><p>text (str or tuple)
any (str or tuple): Send-commands identified</p>
<blockquote>
<div><p>by their keys. Or “options”, carrying options
for the protocol(s).</p>
</div></blockquote>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.serversession.ServerSession.db">
<em class="property">property </em><code class="sig-name descname">db</code><a class="headerlink" href="#evennia.server.serversession.ServerSession.db" title="Permalink to this definition"></a></dt>
<dd><p>NonDataBase). Everything stored
to this is guaranteed to be cleared when a server is shutdown.
Syntax is same as for the _get_db_holder() method and
property, e.g. obj.ndb.attr = value etc.</p>
<dl class="field-list simple">
<dt class="field-odd">Type</dt>
<dd class="field-odd"><p>A non-persistent store (ndb</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.serversession.ServerSession.execute_cmd">
<code class="sig-name descname">execute_cmd</code><span class="sig-paren">(</span><em class="sig-param">raw_string</em>, <em class="sig-param">session=None</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/serversession.html#ServerSession.execute_cmd"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.serversession.ServerSession.execute_cmd" title="Permalink to this definition"></a></dt>
<dd><p>Do something as this object. This method is normally never
called directly, instead incoming command instructions are
sent to the appropriate inputfunc already at the sessionhandler
level. This method allows Python code to inject commands into
this stream, and will lead to the text inputfunc be called.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>raw_string</strong> (<em>string</em>) Raw command input</p></li>
<li><p><strong>session</strong> (<a class="reference internal" href="#evennia.server.session.Session" title="evennia.server.session.Session"><em>Session</em></a>) This is here to make API consistent with
Account/Object.execute_cmd. If given, data is passed to
that Session, otherwise use self.</p></li>
</ul>
</dd>
</dl>
<dl class="simple">
<dt>Kwargs:</dt><dd><p>Other keyword arguments will be added to the found command
object instace as variables before it executes. This is
unused by default Evennia but may be used to set flags and
change operating paramaters for commands at run-time.</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.serversession.ServerSession.get_account">
<code class="sig-name descname">get_account</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/serversession.html#ServerSession.get_account"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.serversession.ServerSession.get_account" title="Permalink to this definition"></a></dt>
<dd><p>Get the account associated with this session</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p>The associated Account.</p>
</dd>
<dt class="field-even">Return type</dt>
<dd class="field-even"><p>account (Account)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.serversession.ServerSession.get_character">
<code class="sig-name descname">get_character</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#evennia.server.serversession.ServerSession.get_character" title="Permalink to this definition"></a></dt>
<dd><p>Get the in-game character associated with this session.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p>The puppeted object, if any.</p>
</dd>
<dt class="field-even">Return type</dt>
<dd class="field-even"><p>puppet (Object)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.serversession.ServerSession.get_client_size">
<code class="sig-name descname">get_client_size</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/serversession.html#ServerSession.get_client_size"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.serversession.ServerSession.get_client_size" title="Permalink to this definition"></a></dt>
<dd><p>Return eventual eventual width and height reported by the
client. Note that this currently only deals with a single
client window (windowID==0) as in a traditional telnet session.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.server.serversession.ServerSession.get_puppet">
<code class="sig-name descname">get_puppet</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/serversession.html#ServerSession.get_puppet"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.serversession.ServerSession.get_puppet" title="Permalink to this definition"></a></dt>
<dd><p>Get the in-game character associated with this session.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p>The puppeted object, if any.</p>
</dd>
<dt class="field-even">Return type</dt>
<dd class="field-even"><p>puppet (Object)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.serversession.ServerSession.get_puppet_or_account">
<code class="sig-name descname">get_puppet_or_account</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/serversession.html#ServerSession.get_puppet_or_account"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.serversession.ServerSession.get_puppet_or_account" title="Permalink to this definition"></a></dt>
<dd><p>Get puppet or account.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p><dl class="simple">
<dt>The puppet if one exists,</dt><dd><p>otherwise return the account.</p>
</dd>
</dl>
</p>
</dd>
<dt class="field-even">Return type</dt>
<dd class="field-even"><p>controller (Object or Account)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.serversession.ServerSession.id">
<em class="property">property </em><code class="sig-name descname">id</code><a class="headerlink" href="#evennia.server.serversession.ServerSession.id" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.server.serversession.ServerSession.log">
<code class="sig-name descname">log</code><span class="sig-paren">(</span><em class="sig-param">message</em>, <em class="sig-param">channel=True</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/serversession.html#ServerSession.log"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.serversession.ServerSession.log" title="Permalink to this definition"></a></dt>
<dd><p>Emits session info to the appropriate outputs and info channels.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>message</strong> (<em>str</em>) The message to log.</p></li>
<li><p><strong>channel</strong> (<em>bool</em><em>, </em><em>optional</em>) Log to the CHANNEL_CONNECTINFO channel
in addition to the server log.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.serversession.ServerSession.msg">
<code class="sig-name descname">msg</code><span class="sig-paren">(</span><em class="sig-param">text=None</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/serversession.html#ServerSession.msg"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.serversession.ServerSession.msg" title="Permalink to this definition"></a></dt>
<dd><p>Wrapper to mimic msg() functionality of Objects and Accounts.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>text</strong> (<em>str</em>) String input.</p>
</dd>
</dl>
<dl class="simple">
<dt>Kwargs:</dt><dd><dl class="simple">
<dt>any (str or tuple): Send-commands identified</dt><dd><p>by their keys. Or “options”, carrying options
for the protocol(s).</p>
</dd>
</dl>
</dd>
</dl>
</dd></dl>
<dl class="attribute">
<dt id="evennia.server.serversession.ServerSession.nattributes">
<code class="sig-name descname">nattributes</code><a class="reference internal" href="../_modules/evennia/server/serversession.html#ServerSession.nattributes"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.serversession.ServerSession.nattributes" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.server.serversession.ServerSession.ndb">
<em class="property">property </em><code class="sig-name descname">ndb</code><a class="headerlink" href="#evennia.server.serversession.ServerSession.ndb" title="Permalink to this definition"></a></dt>
<dd><p>NonDataBase). Everything stored
to this is guaranteed to be cleared when a server is shutdown.
Syntax is same as for the _get_db_holder() method and
property, e.g. obj.ndb.attr = value etc.</p>
<dl class="field-list simple">
<dt class="field-odd">Type</dt>
<dd class="field-odd"><p>A non-persistent store (ndb</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.serversession.ServerSession.ndb_del">
<code class="sig-name descname">ndb_del</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/serversession.html#ServerSession.ndb_del"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.serversession.ServerSession.ndb_del" title="Permalink to this definition"></a></dt>
<dd><p>Stop accidental deletion.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.server.serversession.ServerSession.ndb_get">
<code class="sig-name descname">ndb_get</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/serversession.html#ServerSession.ndb_get"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.serversession.ServerSession.ndb_get" title="Permalink to this definition"></a></dt>
<dd><p>A non-persistent store (ndb: NonDataBase). Everything stored
to this is guaranteed to be cleared when a server is shutdown.
Syntax is same as for the _get_db_holder() method and
property, e.g. obj.ndb.attr = value etc.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.server.serversession.ServerSession.ndb_set">
<code class="sig-name descname">ndb_set</code><span class="sig-paren">(</span><em class="sig-param">value</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/serversession.html#ServerSession.ndb_set"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.serversession.ServerSession.ndb_set" title="Permalink to this definition"></a></dt>
<dd><p>Stop accidentally replacing the db object</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>value</strong> (<em>any</em>) A value to store in the ndb.</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.serversession.ServerSession.update_flags">
<code class="sig-name descname">update_flags</code><span class="sig-paren">(</span><em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/serversession.html#ServerSession.update_flags"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.serversession.ServerSession.update_flags" title="Permalink to this definition"></a></dt>
<dd><p>Update the protocol_flags and sync them with Portal.</p>
<dl class="simple">
<dt>Kwargs:</dt><dd><dl class="simple">
<dt>key, value - A key:value pair to set in the</dt><dd><p>protocol_flags dictionary.</p>
</dd>
</dl>
</dd>
</dl>
<p class="rubric">Notes</p>
<p>Since protocols can vary, no checking is done
as to the existene of the flag or not. The input
data should have been validated before this call.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.server.serversession.ServerSession.update_session_counters">
<code class="sig-name descname">update_session_counters</code><span class="sig-paren">(</span><em class="sig-param">idle=False</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/serversession.html#ServerSession.update_session_counters"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.serversession.ServerSession.update_session_counters" title="Permalink to this definition"></a></dt>
<dd><p>Hit this when the user enters a command in order to update
idle timers and command counters.</p>
</dd></dl>
</dd></dl>
<dl class="function">
<dt id="evennia.server.serversession._GA">
<code class="sig-prename descclassname">evennia.server.serversession.</code><code class="sig-name descname">_GA</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#evennia.server.serversession._GA" title="Permalink to this definition"></a></dt>
<dd><p>Return getattr(self, name).</p>
</dd></dl>
<dl class="function">
<dt id="evennia.server.serversession._SA">
<code class="sig-prename descclassname">evennia.server.serversession.</code><code class="sig-name descname">_SA</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#evennia.server.serversession._SA" title="Permalink to this definition"></a></dt>
<dd><p>Implement setattr(self, name, value).</p>
</dd></dl>
</div>
<div class="section" id="module-evennia.server.session">
<span id="evennia-server-session-module"></span><h2>evennia.server.session module<a class="headerlink" href="#module-evennia.server.session" title="Permalink to this headline"></a></h2>
<p>This module defines a generic session class. All connection instances
(both on Portal and Server side) should inherit from this class.</p>
<dl class="class">
<dt id="evennia.server.session.Session">
<em class="property">class </em><code class="sig-prename descclassname">evennia.server.session.</code><code class="sig-name descname">Session</code><a class="reference internal" href="../_modules/evennia/server/session.html#Session"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.session.Session" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>This class represents a players session and is a template for
both portal- and server-side sessions.</p>
<p>Each connection will see two session instances created:</p>
<blockquote>
<div><ol class="arabic simple">
<li><p>A Portal session. This is customized for the respective connection
protocols that Evennia supports, like Telnet, SSH etc. The Portal
session must call init_session() as part of its initialization. The
respective hook methods should be connected to the methods unique
for the respective protocol so that there is a unified interface
to Evennia.</p></li>
<li><p>A Server session. This is the same for all connected accounts,
regardless of how they connect.</p></li>
</ol>
</div></blockquote>
<p>The Portal and Server have their own respective sessionhandlers. These
are synced whenever new connections happen or the Server restarts etc,
which means much of the same information must be stored in both places
e.g. the portal can re-sync with the server when the server reboots.</p>
<dl class="method">
<dt id="evennia.server.session.Session.at_sync">
<code class="sig-name descname">at_sync</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/session.html#Session.at_sync"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.session.Session.at_sync" title="Permalink to this definition"></a></dt>
<dd><p>Called after a session has been fully synced (including
secondary operations such as setting self.account based
on uid etc).</p>
</dd></dl>
<dl class="method">
<dt id="evennia.server.session.Session.data_in">
<code class="sig-name descname">data_in</code><span class="sig-paren">(</span><em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/session.html#Session.data_in"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.session.Session.data_in" title="Permalink to this definition"></a></dt>
<dd><p>Hook for protocols to send incoming data to the engine.</p>
<dl class="simple">
<dt>Kwargs:</dt><dd><p>kwargs (any): Other data from the protocol.</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.session.Session.data_out">
<code class="sig-name descname">data_out</code><span class="sig-paren">(</span><em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/session.html#Session.data_out"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.session.Session.data_out" title="Permalink to this definition"></a></dt>
<dd><p>Generic hook for sending data out through the protocol. Server
protocols can use this right away. Portal sessions
should overload this to format/handle the outgoing data as needed.</p>
<dl class="simple">
<dt>Kwargs:</dt><dd><p>kwargs (any): Other data to the protocol.</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.session.Session.disconnect">
<code class="sig-name descname">disconnect</code><span class="sig-paren">(</span><em class="sig-param">reason=None</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/session.html#Session.disconnect"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.session.Session.disconnect" title="Permalink to this definition"></a></dt>
<dd><p>generic hook called from the outside to disconnect this session
should be connected to the protocols actual disconnect mechanism.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>reason</strong> (<em>str</em>) Eventual text motivating the disconnect.</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.session.Session.get_sync_data">
<code class="sig-name descname">get_sync_data</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/session.html#Session.get_sync_data"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.session.Session.get_sync_data" title="Permalink to this definition"></a></dt>
<dd><p>Get all data relevant to sync the session.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>syncdata</strong> (<em>dict</em>) All syncdata values, based on
the keys given by self._attrs_to_sync.</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.session.Session.init_session">
<code class="sig-name descname">init_session</code><span class="sig-paren">(</span><em class="sig-param">protocol_key</em>, <em class="sig-param">address</em>, <em class="sig-param">sessionhandler</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/session.html#Session.init_session"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.session.Session.init_session" title="Permalink to this definition"></a></dt>
<dd><p>Initialize the Session. This should be called by the protocol when
a new session is established.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>protocol_key</strong> (<em>str</em>) By default, one of telnet, telnet/ssl, ssh,
webclient/websocket or webclient/ajax.</p></li>
<li><p><strong>address</strong> (<em>str</em>) Client address.</p></li>
<li><p><strong>sessionhandler</strong> (<a class="reference internal" href="#evennia.server.sessionhandler.SessionHandler" title="evennia.server.sessionhandler.SessionHandler"><em>SessionHandler</em></a>) Reference to the
main sessionhandler instance.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.session.Session.load_sync_data">
<code class="sig-name descname">load_sync_data</code><span class="sig-paren">(</span><em class="sig-param">sessdata</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/session.html#Session.load_sync_data"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.session.Session.load_sync_data" title="Permalink to this definition"></a></dt>
<dd><p>Takes a session dictionary, as created by get_sync_data, and
loads it into the correct properties of the session.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>sessdata</strong> (<em>dict</em>) Session data dictionary.</p>
</dd>
</dl>
</dd></dl>
</dd></dl>
</div>
<div class="section" id="module-evennia.server.sessionhandler">
<span id="evennia-server-sessionhandler-module"></span><h2>evennia.server.sessionhandler module<a class="headerlink" href="#module-evennia.server.sessionhandler" title="Permalink to this headline"></a></h2>
<p>This module defines handlers for storing sessions when handles
sessions of users connecting to the server.</p>
<p>There are two similar but separate stores of sessions:</p>
<blockquote>
<div><ul class="simple">
<li><dl class="simple">
<dt>ServerSessionHandler - this stores generic game sessions</dt><dd><p>for the game. These sessions has no knowledge about
how they are connected to the world.</p>
</dd>
</dl>
</li>
<li><dl class="simple">
<dt>PortalSessionHandler - this stores sessions created by</dt><dd><p>twisted protocols. These are dumb connectors that
handle network communication but holds no game info.</p>
</dd>
</dl>
</li>
</ul>
</div></blockquote>
<dl class="class">
<dt id="evennia.server.sessionhandler.DummySession">
<em class="property">class </em><code class="sig-prename descclassname">evennia.server.sessionhandler.</code><code class="sig-name descname">DummySession</code><a class="reference internal" href="../_modules/evennia/server/sessionhandler.html#DummySession"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.sessionhandler.DummySession" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<dl class="attribute">
<dt id="evennia.server.sessionhandler.DummySession.sessid">
<code class="sig-name descname">sessid</code><em class="property"> = 0</em><a class="headerlink" href="#evennia.server.sessionhandler.DummySession.sessid" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="class">
<dt id="evennia.server.sessionhandler.ServerSessionHandler">
<em class="property">class </em><code class="sig-prename descclassname">evennia.server.sessionhandler.</code><code class="sig-name descname">ServerSessionHandler</code><span class="sig-paren">(</span><em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/sessionhandler.html#ServerSessionHandler"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.sessionhandler.ServerSessionHandler" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#evennia.server.sessionhandler.SessionHandler" title="evennia.server.sessionhandler.SessionHandler"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.server.sessionhandler.SessionHandler</span></code></a></p>
<p>This object holds the stack of sessions active in the game at
any time.</p>
<p>A session register with the handler in two steps, first by
registering itself with the connect() method. This indicates an
non-authenticated session. Whenever the session is authenticated
the session together with the related account is sent to the login()
method.</p>
<dl class="method">
<dt id="evennia.server.sessionhandler.ServerSessionHandler.__init__">
<code class="sig-name descname">__init__</code><span class="sig-paren">(</span><em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/sessionhandler.html#ServerSessionHandler.__init__"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.sessionhandler.ServerSessionHandler.__init__" title="Permalink to this definition"></a></dt>
<dd><p>Init the handler.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.server.sessionhandler.ServerSessionHandler._run_cmd_login">
<code class="sig-name descname">_run_cmd_login</code><span class="sig-paren">(</span><em class="sig-param">session</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/sessionhandler.html#ServerSessionHandler._run_cmd_login"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.sessionhandler.ServerSessionHandler._run_cmd_login" title="Permalink to this definition"></a></dt>
<dd><p>Launch the CMD_LOGINSTART command. This is wrapped
for delays.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.server.sessionhandler.ServerSessionHandler.account_count">
<code class="sig-name descname">account_count</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/sessionhandler.html#ServerSessionHandler.account_count"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.sessionhandler.ServerSessionHandler.account_count" title="Permalink to this definition"></a></dt>
<dd><p>Get the number of connected accounts (not sessions since a
account may have more than one session depending on settings).
Only logged-in accounts are counted here.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p>Number of connected accounts</p>
</dd>
<dt class="field-even">Return type</dt>
<dd class="field-even"><p>naccount (int)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.sessionhandler.ServerSessionHandler.all_connected_accounts">
<code class="sig-name descname">all_connected_accounts</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/sessionhandler.html#ServerSessionHandler.all_connected_accounts"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.sessionhandler.ServerSessionHandler.all_connected_accounts" title="Permalink to this definition"></a></dt>
<dd><p>Get a unique list of connected and logged-in Accounts.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p><dl class="simple">
<dt>All conected Accounts (which may be fewer than the</dt><dd><p>amount of Sessions due to multi-playing).</p>
</dd>
</dl>
</p>
</dd>
<dt class="field-even">Return type</dt>
<dd class="field-even"><p>accounts (list)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.sessionhandler.ServerSessionHandler.all_sessions_portal_sync">
<code class="sig-name descname">all_sessions_portal_sync</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/sessionhandler.html#ServerSessionHandler.all_sessions_portal_sync"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.sessionhandler.ServerSessionHandler.all_sessions_portal_sync" title="Permalink to this definition"></a></dt>
<dd><p>This is called by the server when it reboots. It syncs all session data
to the portal. Returns a deferred!</p>
</dd></dl>
<dl class="method">
<dt id="evennia.server.sessionhandler.ServerSessionHandler.announce_all">
<code class="sig-name descname">announce_all</code><span class="sig-paren">(</span><em class="sig-param">message</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/sessionhandler.html#ServerSessionHandler.announce_all"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.sessionhandler.ServerSessionHandler.announce_all" title="Permalink to this definition"></a></dt>
<dd><p>Send message to all connected sessions</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>message</strong> (<em>str</em>) Message to send.</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.sessionhandler.ServerSessionHandler.call_inputfuncs">
<code class="sig-name descname">call_inputfuncs</code><span class="sig-paren">(</span><em class="sig-param">session</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/sessionhandler.html#ServerSessionHandler.call_inputfuncs"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.sessionhandler.ServerSessionHandler.call_inputfuncs" title="Permalink to this definition"></a></dt>
<dd><p>Split incoming data into its inputfunc counterparts.
This should be called by the serversession.data_in
as sessionhandler.call_inputfunc(self, <a href="#id9"><span class="problematic" id="id10">**</span></a>kwargs).</p>
<p>We also intercept OOB communication here.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>sessions</strong> (<a class="reference internal" href="#evennia.server.session.Session" title="evennia.server.session.Session"><em>Session</em></a>) Session.</p>
</dd>
</dl>
<dl class="simple">
<dt>Kwargs:</dt><dd><dl class="simple">
<dt>kwargs (any): Incoming data from protocol on</dt><dd><p>the form <cite>{“commandname”: ((args), {kwargs}),…}</cite></p>
</dd>
</dl>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.sessionhandler.ServerSessionHandler.data_in">
<code class="sig-name descname">data_in</code><span class="sig-paren">(</span><em class="sig-param">session</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/sessionhandler.html#ServerSessionHandler.data_in"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.sessionhandler.ServerSessionHandler.data_in" title="Permalink to this definition"></a></dt>
<dd><p>We let the data take a “detour” to session.data_in
so the user can override and see it all in one place.
That method is responsible to in turn always call
this class <cite>sessionhandler.call_inputfunc</cite> with the
(possibly processed) data.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.server.sessionhandler.ServerSessionHandler.data_out">
<code class="sig-name descname">data_out</code><span class="sig-paren">(</span><em class="sig-param">session</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/sessionhandler.html#ServerSessionHandler.data_out"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.sessionhandler.ServerSessionHandler.data_out" title="Permalink to this definition"></a></dt>
<dd><p>Sending data Server -&gt; Portal</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>session</strong> (<a class="reference internal" href="#evennia.server.session.Session" title="evennia.server.session.Session"><em>Session</em></a>) Session to relay to.</p></li>
<li><p><strong>text</strong> (<em>str</em><em>, </em><em>optional</em>) text data to return</p></li>
</ul>
</dd>
</dl>
<p class="rubric">Notes</p>
<p>The outdata will be scrubbed for sending across
the wire here.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.server.sessionhandler.ServerSessionHandler.disconnect">
<code class="sig-name descname">disconnect</code><span class="sig-paren">(</span><em class="sig-param">session</em>, <em class="sig-param">reason=''</em>, <em class="sig-param">sync_portal=True</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/sessionhandler.html#ServerSessionHandler.disconnect"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.sessionhandler.ServerSessionHandler.disconnect" title="Permalink to this definition"></a></dt>
<dd><p>Called from server side to remove session and inform portal
of this fact.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>session</strong> (<a class="reference internal" href="#evennia.server.session.Session" title="evennia.server.session.Session"><em>Session</em></a>) The Session to disconnect.</p></li>
<li><p><strong>reason</strong> (<em>str</em><em>, </em><em>optional</em>) A motivation for the disconnect.</p></li>
<li><p><strong>sync_portal</strong> (<em>bool</em><em>, </em><em>optional</em>) Sync the disconnect to
Portal side. This should be done unless this was
called by self.portal_disconnect().</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.sessionhandler.ServerSessionHandler.disconnect_all_sessions">
<code class="sig-name descname">disconnect_all_sessions</code><span class="sig-paren">(</span><em class="sig-param">reason='You have been disconnected.'</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/sessionhandler.html#ServerSessionHandler.disconnect_all_sessions"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.sessionhandler.ServerSessionHandler.disconnect_all_sessions" title="Permalink to this definition"></a></dt>
<dd><p>Cleanly disconnect all of the connected sessions.</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>) The reason for the disconnection.</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.sessionhandler.ServerSessionHandler.disconnect_duplicate_sessions">
<code class="sig-name descname">disconnect_duplicate_sessions</code><span class="sig-paren">(</span><em class="sig-param">curr_session</em>, <em class="sig-param">reason='Logged in from elsewhere. Disconnecting.'</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/sessionhandler.html#ServerSessionHandler.disconnect_duplicate_sessions"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.sessionhandler.ServerSessionHandler.disconnect_duplicate_sessions" title="Permalink to this definition"></a></dt>
<dd><p>Disconnects any existing sessions with the same user.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>curr_session</strong> (<a class="reference internal" href="#evennia.server.session.Session" title="evennia.server.session.Session"><em>Session</em></a>) Disconnect all Sessions matching this one.</p></li>
<li><p><strong>reason</strong> (<em>str</em><em>, </em><em>optional</em>) A motivation for disconnecting.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.sessionhandler.ServerSessionHandler.get_inputfuncs">
<code class="sig-name descname">get_inputfuncs</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/sessionhandler.html#ServerSessionHandler.get_inputfuncs"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.sessionhandler.ServerSessionHandler.get_inputfuncs" title="Permalink to this definition"></a></dt>
<dd><p>Get all registered inputfuncs (access function)</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p>A dict of {key:inputfunc,…}</p>
</dd>
<dt class="field-even">Return type</dt>
<dd class="field-even"><p>inputfuncs (dict)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.sessionhandler.ServerSessionHandler.login">
<code class="sig-name descname">login</code><span class="sig-paren">(</span><em class="sig-param">session</em>, <em class="sig-param">account</em>, <em class="sig-param">force=False</em>, <em class="sig-param">testmode=False</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/sessionhandler.html#ServerSessionHandler.login"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.sessionhandler.ServerSessionHandler.login" title="Permalink to this definition"></a></dt>
<dd><p>Log in the previously unloggedin session and the account we by
now should know is connected to it. After this point we assume
the session to be logged in one way or another.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>session</strong> (<a class="reference internal" href="#evennia.server.session.Session" title="evennia.server.session.Session"><em>Session</em></a>) The Session to authenticate.</p></li>
<li><p><strong>account</strong> (<em>Account</em>) The Account identified as associated with this Session.</p></li>
<li><p><strong>force</strong> (<em>bool</em>) Login also if the session thinks its already logged in
(this can happen for auto-authenticating protocols)</p></li>
<li><p><strong>testmode</strong> (<em>bool</em><em>, </em><em>optional</em>) This is used by unittesting for
faking login without any AMP being actually active.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.sessionhandler.ServerSessionHandler.portal_connect">
<code class="sig-name descname">portal_connect</code><span class="sig-paren">(</span><em class="sig-param">portalsessiondata</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/sessionhandler.html#ServerSessionHandler.portal_connect"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.sessionhandler.ServerSessionHandler.portal_connect" title="Permalink to this definition"></a></dt>
<dd><p>Called by Portal when a new session has connected.
Creates a new, unlogged-in game session.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>portalsessiondata</strong> (<em>dict</em>) a dictionary of all property:value
keys defining the session and which is marked to be
synced.</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.sessionhandler.ServerSessionHandler.portal_disconnect">
<code class="sig-name descname">portal_disconnect</code><span class="sig-paren">(</span><em class="sig-param">session</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/sessionhandler.html#ServerSessionHandler.portal_disconnect"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.sessionhandler.ServerSessionHandler.portal_disconnect" title="Permalink to this definition"></a></dt>
<dd><p>Called from Portal when Portal session closed from the portal
side. There is no message to report in this case.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>session</strong> (<a class="reference internal" href="#evennia.server.session.Session" title="evennia.server.session.Session"><em>Session</em></a>) The Session to disconnect</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.sessionhandler.ServerSessionHandler.portal_disconnect_all">
<code class="sig-name descname">portal_disconnect_all</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/sessionhandler.html#ServerSessionHandler.portal_disconnect_all"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.sessionhandler.ServerSessionHandler.portal_disconnect_all" title="Permalink to this definition"></a></dt>
<dd><p>Called from Portal when Portal is closing down. All
Sessions should die. The Portal should not be informed.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.server.sessionhandler.ServerSessionHandler.portal_reset_server">
<code class="sig-name descname">portal_reset_server</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/sessionhandler.html#ServerSessionHandler.portal_reset_server"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.sessionhandler.ServerSessionHandler.portal_reset_server" title="Permalink to this definition"></a></dt>
<dd><p>Called by server when reloading. We tell the portal to start a new server instance.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.server.sessionhandler.ServerSessionHandler.portal_restart_server">
<code class="sig-name descname">portal_restart_server</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/sessionhandler.html#ServerSessionHandler.portal_restart_server"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.sessionhandler.ServerSessionHandler.portal_restart_server" title="Permalink to this definition"></a></dt>
<dd><p>Called by server when reloading. We tell the portal to start a new server instance.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.server.sessionhandler.ServerSessionHandler.portal_session_sync">
<code class="sig-name descname">portal_session_sync</code><span class="sig-paren">(</span><em class="sig-param">portalsessiondata</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/sessionhandler.html#ServerSessionHandler.portal_session_sync"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.sessionhandler.ServerSessionHandler.portal_session_sync" title="Permalink to this definition"></a></dt>
<dd><p>Called by Portal when it wants to update a single session (e.g.
because of all negotiation protocols have finally replied)</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>portalsessiondata</strong> (<em>dict</em>) a dictionary of all property:value
keys defining the session and which is marked to be
synced.</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.sessionhandler.ServerSessionHandler.portal_sessions_sync">
<code class="sig-name descname">portal_sessions_sync</code><span class="sig-paren">(</span><em class="sig-param">portalsessionsdata</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/sessionhandler.html#ServerSessionHandler.portal_sessions_sync"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.sessionhandler.ServerSessionHandler.portal_sessions_sync" title="Permalink to this definition"></a></dt>
<dd><p>Syncing all session ids of the portal with the ones of the
server. This is instantiated by the portal when reconnecting.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>portalsessionsdata</strong> (<em>dict</em>) A dictionary
<cite>{sessid: {property:value},…}</cite> defining each session and
the properties in it which should be synced.</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.sessionhandler.ServerSessionHandler.portal_shutdown">
<code class="sig-name descname">portal_shutdown</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/sessionhandler.html#ServerSessionHandler.portal_shutdown"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.sessionhandler.ServerSessionHandler.portal_shutdown" title="Permalink to this definition"></a></dt>
<dd><p>Called by server when its time to shut down (the portal will shut us down and then shut
itself down)</p>
</dd></dl>
<dl class="method">
<dt id="evennia.server.sessionhandler.ServerSessionHandler.session_from_account">
<code class="sig-name descname">session_from_account</code><span class="sig-paren">(</span><em class="sig-param">account</em>, <em class="sig-param">sessid</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/sessionhandler.html#ServerSessionHandler.session_from_account"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.sessionhandler.ServerSessionHandler.session_from_account" title="Permalink to this definition"></a></dt>
<dd><p>Given an account and a session id, return the actual session
object.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>account</strong> (<em>Account</em>) The Account to get the Session from.</p></li>
<li><p><strong>sessid</strong> (<em>int</em><em> or </em><em>list</em>) Session id(s).</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>Session(s) found.</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p>sessions (<a class="reference internal" href="#evennia.server.session.Session" title="evennia.server.session.Session">Session</a> or list)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.sessionhandler.ServerSessionHandler.session_from_sessid">
<code class="sig-name descname">session_from_sessid</code><span class="sig-paren">(</span><em class="sig-param">sessid</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/sessionhandler.html#ServerSessionHandler.session_from_sessid"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.sessionhandler.ServerSessionHandler.session_from_sessid" title="Permalink to this definition"></a></dt>
<dd><p>Get session based on sessid, or None if not found</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>sessid</strong> (<em>int</em><em> or </em><em>list</em>) Session id(s).</p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><dl class="simple">
<dt>Session(s) found. This</dt><dd><p>is a list if input was a list.</p>
</dd>
</dl>
</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p>sessions (<a class="reference internal" href="#evennia.server.session.Session" title="evennia.server.session.Session">Session</a> or list)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.sessionhandler.ServerSessionHandler.session_portal_partial_sync">
<code class="sig-name descname">session_portal_partial_sync</code><span class="sig-paren">(</span><em class="sig-param">session_data</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/sessionhandler.html#ServerSessionHandler.session_portal_partial_sync"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.sessionhandler.ServerSessionHandler.session_portal_partial_sync" title="Permalink to this definition"></a></dt>
<dd><p>Call to make a partial update of the session, such as only a particular property.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>session_data</strong> (<em>dict</em>) Store <cite>{sessid: {property:value}, …}</cite> defining one or
more sessions in detail.</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.sessionhandler.ServerSessionHandler.session_portal_sync">
<code class="sig-name descname">session_portal_sync</code><span class="sig-paren">(</span><em class="sig-param">session</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/sessionhandler.html#ServerSessionHandler.session_portal_sync"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.sessionhandler.ServerSessionHandler.session_portal_sync" title="Permalink to this definition"></a></dt>
<dd><p>This is called by the server when it wants to sync a single session
with the Portal for whatever reason. Returns a deferred!</p>
</dd></dl>
<dl class="method">
<dt id="evennia.server.sessionhandler.ServerSessionHandler.sessions_from_account">
<code class="sig-name descname">sessions_from_account</code><span class="sig-paren">(</span><em class="sig-param">account</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/sessionhandler.html#ServerSessionHandler.sessions_from_account"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.sessionhandler.ServerSessionHandler.sessions_from_account" title="Permalink to this definition"></a></dt>
<dd><p>Given an account, return all matching sessions.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>account</strong> (<em>Account</em>) Account to get sessions from.</p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>All Sessions associated with this account.</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p>sessions (list)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.sessionhandler.ServerSessionHandler.sessions_from_character">
<code class="sig-name descname">sessions_from_character</code><span class="sig-paren">(</span><em class="sig-param">puppet</em><span class="sig-paren">)</span><a class="headerlink" href="#evennia.server.sessionhandler.ServerSessionHandler.sessions_from_character" title="Permalink to this definition"></a></dt>
<dd><p>Given a puppeted object, return all controlling sessions.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>puppet</strong> (<em>Object</em>) Object puppeted</p>
</dd>
</dl>
<dl class="simple">
<dt>Returns.</dt><dd><dl class="simple">
<dt>sessions (Session or list): Can be more than one of Object is controlled by</dt><dd><p>more than one Session (MULTISESSION_MODE &gt; 1).</p>
</dd>
</dl>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.sessionhandler.ServerSessionHandler.sessions_from_csessid">
<code class="sig-name descname">sessions_from_csessid</code><span class="sig-paren">(</span><em class="sig-param">csessid</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/sessionhandler.html#ServerSessionHandler.sessions_from_csessid"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.sessionhandler.ServerSessionHandler.sessions_from_csessid" title="Permalink to this definition"></a></dt>
<dd><p>Given a client identification hash (for session types that offer them)
return all sessions with a matching hash.</p>
<dl class="simple">
<dt>Args</dt><dd><p>csessid (str): The session hash.</p>
</dd>
</dl>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p>The sessions with matching .csessid, if any.</p>
</dd>
<dt class="field-even">Return type</dt>
<dd class="field-even"><p>sessions (list)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.sessionhandler.ServerSessionHandler.sessions_from_puppet">
<code class="sig-name descname">sessions_from_puppet</code><span class="sig-paren">(</span><em class="sig-param">puppet</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/sessionhandler.html#ServerSessionHandler.sessions_from_puppet"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.sessionhandler.ServerSessionHandler.sessions_from_puppet" title="Permalink to this definition"></a></dt>
<dd><p>Given a puppeted object, return all controlling sessions.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>puppet</strong> (<em>Object</em>) Object puppeted</p>
</dd>
</dl>
<dl class="simple">
<dt>Returns.</dt><dd><dl class="simple">
<dt>sessions (Session or list): Can be more than one of Object is controlled by</dt><dd><p>more than one Session (MULTISESSION_MODE &gt; 1).</p>
</dd>
</dl>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.sessionhandler.ServerSessionHandler.start_bot_session">
<code class="sig-name descname">start_bot_session</code><span class="sig-paren">(</span><em class="sig-param">protocol_path</em>, <em class="sig-param">configdict</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/sessionhandler.html#ServerSessionHandler.start_bot_session"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.sessionhandler.ServerSessionHandler.start_bot_session" title="Permalink to this definition"></a></dt>
<dd><p>This method allows the server-side to force the Portal to
create a new bot session.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>protocol_path</strong> (<em>str</em>) The full python path to the bots
class.</p></li>
<li><p><strong>configdict</strong> (<em>dict</em>) This dict will be used to configure
the bot (this depends on the bot protocol).</p></li>
</ul>
</dd>
</dl>
<p class="rubric">Examples</p>
<dl class="simple">
<dt>start_bot_session(“evennia.server.portal.irc.IRCClient”,</dt><dd><dl class="simple">
<dt>{“uid”:1, “botname”:”evbot”, “channel”:”#evennia”,</dt><dd><p>“network:”irc.freenode.net”, “port”: 6667})</p>
</dd>
</dl>
</dd>
</dl>
<p class="rubric">Notes</p>
<p>The new session will use the supplied account-bot uid to
initiate an already logged-in connection. The Portal will
treat this as a normal connection and henceforth so will
the Server.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.server.sessionhandler.ServerSessionHandler.validate_sessions">
<code class="sig-name descname">validate_sessions</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/sessionhandler.html#ServerSessionHandler.validate_sessions"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.sessionhandler.ServerSessionHandler.validate_sessions" title="Permalink to this definition"></a></dt>
<dd><p>Check all currently connected sessions (logged in and not) and
see if any are dead or idle.</p>
</dd></dl>
</dd></dl>
<dl class="class">
<dt id="evennia.server.sessionhandler.SessionHandler">
<em class="property">class </em><code class="sig-prename descclassname">evennia.server.sessionhandler.</code><code class="sig-name descname">SessionHandler</code><a class="reference internal" href="../_modules/evennia/server/sessionhandler.html#SessionHandler"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.sessionhandler.SessionHandler" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">dict</span></code></p>
<p>This handler holds a stack of sessions.</p>
<dl class="method">
<dt id="evennia.server.sessionhandler.SessionHandler.clean_senddata">
<code class="sig-name descname">clean_senddata</code><span class="sig-paren">(</span><em class="sig-param">session</em>, <em class="sig-param">kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/sessionhandler.html#SessionHandler.clean_senddata"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.sessionhandler.SessionHandler.clean_senddata" title="Permalink to this definition"></a></dt>
<dd><p>Clean up data for sending across the AMP wire. Also apply INLINEFUNCS.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>session</strong> (<a class="reference internal" href="#evennia.server.session.Session" title="evennia.server.session.Session"><em>Session</em></a>) The relevant session instance.</p></li>
<li><p><strong>kwargs</strong> (<em>dict</em>) <p>send-instruction, with the keyword itself being the name
of the instruction (like “text”). Suitable values for each
keyword are:</p>
<blockquote>
<div><ul>
<li><p>arg -&gt; [[arg], {}]</p></li>
<li><p>[args] -&gt; [[args], {}]</p></li>
<li><p>{kwargs} -&gt; [[], {kwargs}]</p></li>
<li><p>[args, {kwargs}] -&gt; [[arg], {kwargs}]</p></li>
<li><p>[[args], {kwargs}] -&gt; [[args], {kwargs}]</p></li>
</ul>
</div></blockquote>
</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><dl class="simple">
<dt>A cleaned dictionary of cmdname:[[args],{kwargs}] pairs,</dt><dd><p>where the keys, args and kwargs have all been converted to
send-safe entities (strings or numbers), and inlinefuncs have been
applied.</p>
</dd>
</dl>
</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p>kwargs (dict)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.sessionhandler.SessionHandler.get">
<code class="sig-name descname">get</code><span class="sig-paren">(</span><em class="sig-param">key</em>, <em class="sig-param">default=None</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/sessionhandler.html#SessionHandler.get"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.sessionhandler.SessionHandler.get" title="Permalink to this definition"></a></dt>
<dd><p>Clean out None-sessions automatically.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.server.sessionhandler.SessionHandler.get_all_sync_data">
<code class="sig-name descname">get_all_sync_data</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/sessionhandler.html#SessionHandler.get_all_sync_data"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.sessionhandler.SessionHandler.get_all_sync_data" title="Permalink to this definition"></a></dt>
<dd><p>Create a dictionary of sessdata dicts representing all
sessions in store.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p>A dict of sync data.</p>
</dd>
<dt class="field-even">Return type</dt>
<dd class="field-even"><p>syncdata (dict)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.sessionhandler.SessionHandler.get_sessions">
<code class="sig-name descname">get_sessions</code><span class="sig-paren">(</span><em class="sig-param">include_unloggedin=False</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/sessionhandler.html#SessionHandler.get_sessions"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.sessionhandler.SessionHandler.get_sessions" title="Permalink to this definition"></a></dt>
<dd><p>Returns the connected session objects.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>include_unloggedin</strong> (<em>bool</em><em>, </em><em>optional</em>) Also list Sessions
that have not yet authenticated.</p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>A list of <cite>Session</cite> objects.</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p>sessions (list)</p>
</dd>
</dl>
</dd></dl>
</dd></dl>
<dl class="attribute">
<dt id="evennia.server.sessionhandler._SESSION_HANDLER_CLASS">
<code class="sig-prename descclassname">evennia.server.sessionhandler.</code><code class="sig-name descname">_SESSION_HANDLER_CLASS</code><a class="headerlink" href="#evennia.server.sessionhandler._SESSION_HANDLER_CLASS" title="Permalink to this definition"></a></dt>
<dd><p>alias of <a class="reference internal" href="#evennia.server.sessionhandler.ServerSessionHandler" title="evennia.server.sessionhandler.ServerSessionHandler"><code class="xref py py-class docutils literal notranslate"><span class="pre">evennia.server.sessionhandler.ServerSessionHandler</span></code></a></p>
</dd></dl>
<dl class="function">
<dt id="evennia.server.sessionhandler.delayed_import">
<code class="sig-prename descclassname">evennia.server.sessionhandler.</code><code class="sig-name descname">delayed_import</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/sessionhandler.html#delayed_import"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.sessionhandler.delayed_import" title="Permalink to this definition"></a></dt>
<dd><p>Helper method for delayed import of all needed entities.</p>
</dd></dl>
</div>
<div class="section" id="module-evennia.server.signals">
<span id="evennia-server-signals-module"></span><h2>evennia.server.signals module<a class="headerlink" href="#module-evennia.server.signals" title="Permalink to this headline"></a></h2>
<p>This module brings Django Signals into Evennia. These are events that
can be subscribed to by importing a given Signal and using the
following code.</p>
<p>THIS_SIGNAL.connect(callback, sender_object)</p>
<p>When other code calls THIS_SIGNAL.send(sender, <a href="#id11"><span class="problematic" id="id12">**</span></a>kwargs), the callback
will be triggered.</p>
<p>Callbacks must be in the following format:</p>
<dl class="simple">
<dt>def my_callback(sender, <a href="#id13"><span class="problematic" id="id14">**</span></a>kwargs):</dt><dd><p></p>
</dd>
</dl>
<p>This is used on top of hooks to make certain features easier to
add to contribs without necessitating a full takeover of hooks
that may be in high demand.</p>
</div>
<div class="section" id="module-evennia.server.throttle">
<span id="evennia-server-throttle-module"></span><h2>evennia.server.throttle module<a class="headerlink" href="#module-evennia.server.throttle" title="Permalink to this headline"></a></h2>
<dl class="class">
<dt id="evennia.server.throttle.Throttle">
<em class="property">class </em><code class="sig-prename descclassname">evennia.server.throttle.</code><code class="sig-name descname">Throttle</code><span class="sig-paren">(</span><em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/throttle.html#Throttle"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.throttle.Throttle" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Keeps a running count of failed actions per IP address.</p>
<p>Available methods indicate whether or not the number of failures exceeds a
particular threshold.</p>
<p>This version of the throttle is usable by both the terminal server as well
as the web server, imposes limits on memory consumption by using deques
with length limits instead of open-ended lists, and removes sparse keys when
no recent failures have been recorded.</p>
<dl class="method">
<dt id="evennia.server.throttle.Throttle.__init__">
<code class="sig-name descname">__init__</code><span class="sig-paren">(</span><em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/throttle.html#Throttle.__init__"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.throttle.Throttle.__init__" title="Permalink to this definition"></a></dt>
<dd><p>Allows setting of throttle parameters.</p>
<dl>
<dt>Kwargs:</dt><dd><p>limit (int): Max number of failures before imposing limiter
timeout (int): number of timeout seconds after</p>
<blockquote>
<div><p>max number of tries has been reached.</p>
</div></blockquote>
<dl class="simple">
<dt>cache_size (int): Max number of attempts to record per IP within a</dt><dd><p>rolling window; this is NOT the same as the limit after which
the throttle is imposed!</p>
</dd>
</dl>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.throttle.Throttle.check">
<code class="sig-name descname">check</code><span class="sig-paren">(</span><em class="sig-param">ip</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/throttle.html#Throttle.check"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.throttle.Throttle.check" title="Permalink to this definition"></a></dt>
<dd><p>This will check the sessions address against the
storage dictionary to check they havent spammed too many
fails recently.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>ip</strong> (<em>str</em>) IP address of requestor</p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><dl class="simple">
<dt>True if throttling is active,</dt><dd><p>False otherwise.</p>
</dd>
</dl>
</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p>throttled (bool)</p>
</dd>
</dl>
</dd></dl>
<dl class="attribute">
<dt id="evennia.server.throttle.Throttle.error_msg">
<code class="sig-name descname">error_msg</code><em class="property"> = 'Too many failed attempts; you must wait a few minutes before trying again.'</em><a class="headerlink" href="#evennia.server.throttle.Throttle.error_msg" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.server.throttle.Throttle.get">
<code class="sig-name descname">get</code><span class="sig-paren">(</span><em class="sig-param">ip=None</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/throttle.html#Throttle.get"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.throttle.Throttle.get" title="Permalink to this definition"></a></dt>
<dd><p>Convenience function that returns the storage table, or part of.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>ip</strong> (<em>str</em><em>, </em><em>optional</em>) IP address of requestor</p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><dl class="simple">
<dt>When no IP is provided, returns a dict of all</dt><dd><p>current IPs being tracked and the timestamps of their recent
failures.</p>
</dd>
<dt>timestamps (deque): When an IP is provided, returns a deque of</dt><dd><p>timestamps of recent failures only for that IP.</p>
</dd>
</dl>
</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p>storage (dict)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.throttle.Throttle.update">
<code class="sig-name descname">update</code><span class="sig-paren">(</span><em class="sig-param">ip</em>, <em class="sig-param">failmsg='Exceeded threshold.'</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/throttle.html#Throttle.update"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.throttle.Throttle.update" title="Permalink to this definition"></a></dt>
<dd><p>Store the time of the latest failure.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>ip</strong> (<em>str</em>) IP address of requestor</p></li>
<li><p><strong>failmsg</strong> (<em>str</em><em>, </em><em>optional</em>) Message to display in logs upon activation
of throttle.</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>None</p>
</dd>
</dl>
</dd></dl>
</dd></dl>
</div>
<div class="section" id="module-evennia.server.validators">
<span id="evennia-server-validators-module"></span><h2>evennia.server.validators module<a class="headerlink" href="#module-evennia.server.validators" title="Permalink to this headline"></a></h2>
<dl class="class">
<dt id="evennia.server.validators.EvenniaPasswordValidator">
<em class="property">class </em><code class="sig-prename descclassname">evennia.server.validators.</code><code class="sig-name descname">EvenniaPasswordValidator</code><span class="sig-paren">(</span><em class="sig-param">regex=&quot;^[\w. &#64;+\-',]+$&quot;, policy=&quot;Password should contain a mix of letters, spaces, digits and &#64;/./+/-/_/'/, only.&quot;</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/validators.html#EvenniaPasswordValidator"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.validators.EvenniaPasswordValidator" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<dl class="method">
<dt id="evennia.server.validators.EvenniaPasswordValidator.__init__">
<code class="sig-name descname">__init__</code><span class="sig-paren">(</span><em class="sig-param">regex=&quot;^[\\w. &#64;+\\-',]+$&quot;, policy=&quot;Password should contain a mix of letters, spaces, digits and &#64;/./+/-/_/'/, only.&quot;</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/validators.html#EvenniaPasswordValidator.__init__"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.validators.EvenniaPasswordValidator.__init__" title="Permalink to this definition"></a></dt>
<dd><p>Constructs a standard Django password validator.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>regex</strong> (<em>str</em>) Regex pattern of valid characters to allow.</p></li>
<li><p><strong>policy</strong> (<em>str</em>) Brief explanation of what the defined regex permits.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.validators.EvenniaPasswordValidator.get_help_text">
<code class="sig-name descname">get_help_text</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/validators.html#EvenniaPasswordValidator.get_help_text"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.validators.EvenniaPasswordValidator.get_help_text" title="Permalink to this definition"></a></dt>
<dd><p>Returns a user-facing explanation of the password policy defined
by this validator.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p>Explanation of password policy.</p>
</dd>
<dt class="field-even">Return type</dt>
<dd class="field-even"><p>text (str)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.validators.EvenniaPasswordValidator.validate">
<code class="sig-name descname">validate</code><span class="sig-paren">(</span><em class="sig-param">password</em>, <em class="sig-param">user=None</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/validators.html#EvenniaPasswordValidator.validate"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.validators.EvenniaPasswordValidator.validate" title="Permalink to this definition"></a></dt>
<dd><p>Validates a password string to make sure it meets predefined Evennia
acceptable character policy.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>password</strong> (<em>str</em>) Password to validate</p></li>
<li><p><strong>user</strong> (<em>None</em>) Unused argument but required by Django</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p><dl class="simple">
<dt>None if password successfully validated,</dt><dd><p>raises ValidationError otherwise.</p>
</dd>
</dl>
</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p>None (None)</p>
</dd>
</dl>
</dd></dl>
</dd></dl>
<dl class="class">
<dt id="evennia.server.validators.EvenniaUsernameAvailabilityValidator">
<em class="property">class </em><code class="sig-prename descclassname">evennia.server.validators.</code><code class="sig-name descname">EvenniaUsernameAvailabilityValidator</code><a class="reference internal" href="../_modules/evennia/server/validators.html#EvenniaUsernameAvailabilityValidator"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.validators.EvenniaUsernameAvailabilityValidator" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Checks to make sure a given username is not taken or otherwise reserved.</p>
</dd></dl>
</div>
<div class="section" id="module-evennia.server.webserver">
<span id="evennia-server-webserver-module"></span><h2>evennia.server.webserver module<a class="headerlink" href="#module-evennia.server.webserver" title="Permalink to this headline"></a></h2>
<p>This implements resources for Twisted webservers using the WSGI
interface of Django. This alleviates the need of running e.g. an
Apache server to serve Evennias web presence (although you could do
that too if desired).</p>
<p>The actual servers are started inside server.py as part of the Evennia
application.</p>
<p>(Lots of thanks to <a class="reference external" href="http://github.com/clemesha/twisted-wsgi-django">http://github.com/clemesha/twisted-wsgi-django</a> for
a great example/aid on how to do this.)</p>
<dl class="class">
<dt id="evennia.server.webserver.DjangoWebRoot">
<em class="property">class </em><code class="sig-prename descclassname">evennia.server.webserver.</code><code class="sig-name descname">DjangoWebRoot</code><span class="sig-paren">(</span><em class="sig-param">pool</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/webserver.html#DjangoWebRoot"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.webserver.DjangoWebRoot" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">twisted.web.resource.Resource</span></code></p>
<p>This creates a web root (/) that Django
understands by tweaking the way
child instances are recognized.</p>
<dl class="method">
<dt id="evennia.server.webserver.DjangoWebRoot.__init__">
<code class="sig-name descname">__init__</code><span class="sig-paren">(</span><em class="sig-param">pool</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/webserver.html#DjangoWebRoot.__init__"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.webserver.DjangoWebRoot.__init__" title="Permalink to this definition"></a></dt>
<dd><p>Setup the django+twisted resource.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>pool</strong> (<em>ThreadPool</em>) The twisted threadpool.</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.webserver.DjangoWebRoot._decrement_requests">
<code class="sig-name descname">_decrement_requests</code><span class="sig-paren">(</span><em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/webserver.html#DjangoWebRoot._decrement_requests"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.webserver.DjangoWebRoot._decrement_requests" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="evennia.server.webserver.DjangoWebRoot.empty_threadpool">
<code class="sig-name descname">empty_threadpool</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/webserver.html#DjangoWebRoot.empty_threadpool"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.webserver.DjangoWebRoot.empty_threadpool" title="Permalink to this definition"></a></dt>
<dd><p>Converts our _pending_requests list of deferreds into a DeferredList</p>
<dl class="field-list simple">
<dt class="field-odd">Returns</dt>
<dd class="field-odd"><p>Contains all deferreds of pending requests.</p>
</dd>
<dt class="field-even">Return type</dt>
<dd class="field-even"><p>deflist (DeferredList)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.webserver.DjangoWebRoot.getChild">
<code class="sig-name descname">getChild</code><span class="sig-paren">(</span><em class="sig-param">path</em>, <em class="sig-param">request</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/webserver.html#DjangoWebRoot.getChild"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.webserver.DjangoWebRoot.getChild" title="Permalink to this definition"></a></dt>
<dd><p>To make things work we nudge the url tree to make this the
root.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>path</strong> (<em>str</em>) Url path.</p></li>
<li><p><strong>request</strong> (<em>Request object</em>) Incoming request.</p></li>
</ul>
</dd>
</dl>
<p class="rubric">Notes</p>
<p>We make sure to save the request queue so
that we can safely kill the threadpool
on a server reload.</p>
</dd></dl>
</dd></dl>
<dl class="class">
<dt id="evennia.server.webserver.EvenniaReverseProxyResource">
<em class="property">class </em><code class="sig-prename descclassname">evennia.server.webserver.</code><code class="sig-name descname">EvenniaReverseProxyResource</code><span class="sig-paren">(</span><em class="sig-param">host</em>, <em class="sig-param">port</em>, <em class="sig-param">path</em>, <em class="sig-param">reactor=&lt;twisted.internet.epollreactor.EPollReactor object&gt;</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/webserver.html#EvenniaReverseProxyResource"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.webserver.EvenniaReverseProxyResource" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">twisted.web.proxy.ReverseProxyResource</span></code></p>
<dl class="method">
<dt id="evennia.server.webserver.EvenniaReverseProxyResource.getChild">
<code class="sig-name descname">getChild</code><span class="sig-paren">(</span><em class="sig-param">path</em>, <em class="sig-param">request</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/webserver.html#EvenniaReverseProxyResource.getChild"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.webserver.EvenniaReverseProxyResource.getChild" title="Permalink to this definition"></a></dt>
<dd><p>Create and return a proxy resource with the same proxy configuration
as this one, except that its path also contains the segment given by
path at the end.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>path</strong> (<em>str</em>) Url path.</p></li>
<li><p><strong>request</strong> (<em>Request object</em>) Incoming request.</p></li>
</ul>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>A proxy resource.</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p>resource (<a class="reference internal" href="#evennia.server.webserver.EvenniaReverseProxyResource" title="evennia.server.webserver.EvenniaReverseProxyResource">EvenniaReverseProxyResource</a>)</p>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.webserver.EvenniaReverseProxyResource.render">
<code class="sig-name descname">render</code><span class="sig-paren">(</span><em class="sig-param">request</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/webserver.html#EvenniaReverseProxyResource.render"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.webserver.EvenniaReverseProxyResource.render" title="Permalink to this definition"></a></dt>
<dd><p>Render a request by forwarding it to the proxied server.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><p><strong>request</strong> (<em>Request</em>) Incoming request.</p>
</dd>
<dt class="field-even">Returns</dt>
<dd class="field-even"><p>Indicator to note request not yet finished.</p>
</dd>
<dt class="field-odd">Return type</dt>
<dd class="field-odd"><p>not_done (char)</p>
</dd>
</dl>
</dd></dl>
</dd></dl>
<dl class="class">
<dt id="evennia.server.webserver.HTTPChannelWithXForwardedFor">
<em class="property">class </em><code class="sig-prename descclassname">evennia.server.webserver.</code><code class="sig-name descname">HTTPChannelWithXForwardedFor</code><a class="reference internal" href="../_modules/evennia/server/webserver.html#HTTPChannelWithXForwardedFor"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.webserver.HTTPChannelWithXForwardedFor" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">twisted.web.http.HTTPChannel</span></code></p>
<p>HTTP xforward class</p>
<dl class="method">
<dt id="evennia.server.webserver.HTTPChannelWithXForwardedFor.allHeadersReceived">
<code class="sig-name descname">allHeadersReceived</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/webserver.html#HTTPChannelWithXForwardedFor.allHeadersReceived"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.webserver.HTTPChannelWithXForwardedFor.allHeadersReceived" title="Permalink to this definition"></a></dt>
<dd><p>Check to see if this is a reverse proxied connection.</p>
</dd></dl>
</dd></dl>
<dl class="class">
<dt id="evennia.server.webserver.LockableThreadPool">
<em class="property">class </em><code class="sig-prename descclassname">evennia.server.webserver.</code><code class="sig-name descname">LockableThreadPool</code><span class="sig-paren">(</span><em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/webserver.html#LockableThreadPool"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.webserver.LockableThreadPool" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">twisted.python.threadpool.ThreadPool</span></code></p>
<p>Threadpool that can be locked from accepting new requests.</p>
<dl class="method">
<dt id="evennia.server.webserver.LockableThreadPool.__init__">
<code class="sig-name descname">__init__</code><span class="sig-paren">(</span><em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/webserver.html#LockableThreadPool.__init__"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.webserver.LockableThreadPool.__init__" title="Permalink to this definition"></a></dt>
<dd><p>Create a new threadpool.</p>
<p>&#64;param minthreads: minimum number of threads in the pool
&#64;type minthreads: L{int}</p>
<p>&#64;param maxthreads: maximum number of threads in the pool
&#64;type maxthreads: L{int}</p>
<p>&#64;param name: The name to give this threadpool; visible in log messages.
&#64;type name: native L{str}</p>
</dd></dl>
<dl class="method">
<dt id="evennia.server.webserver.LockableThreadPool.callInThread">
<code class="sig-name descname">callInThread</code><span class="sig-paren">(</span><em class="sig-param">func</em>, <em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/webserver.html#LockableThreadPool.callInThread"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.webserver.LockableThreadPool.callInThread" title="Permalink to this definition"></a></dt>
<dd><p>called in the main reactor thread. Makes sure the pool
is not locked before continuing.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.server.webserver.LockableThreadPool.lock">
<code class="sig-name descname">lock</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/webserver.html#LockableThreadPool.lock"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.webserver.LockableThreadPool.lock" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
<dl class="class">
<dt id="evennia.server.webserver.PrivateStaticRoot">
<em class="property">class </em><code class="sig-prename descclassname">evennia.server.webserver.</code><code class="sig-name descname">PrivateStaticRoot</code><span class="sig-paren">(</span><em class="sig-param">path</em>, <em class="sig-param">defaultType='text/html'</em>, <em class="sig-param">ignoredExts=()</em>, <em class="sig-param">registry=None</em>, <em class="sig-param">allowExt=0</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/webserver.html#PrivateStaticRoot"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.webserver.PrivateStaticRoot" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">twisted.web.static.File</span></code></p>
<p>This overrides the default static file resource so as to not make the
directory listings public (that is, if you go to /media or /static you
wont see an index of all static/media files on the server).</p>
<dl class="method">
<dt id="evennia.server.webserver.PrivateStaticRoot.directoryListing">
<code class="sig-name descname">directoryListing</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/webserver.html#PrivateStaticRoot.directoryListing"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.webserver.PrivateStaticRoot.directoryListing" title="Permalink to this definition"></a></dt>
<dd><p>Return a resource that generates an HTML listing of the
directory this path represents.</p>
<p>&#64;return: A resource that renders the directory to HTML.
&#64;rtype: L{DirectoryLister}</p>
</dd></dl>
</dd></dl>
<dl class="class">
<dt id="evennia.server.webserver.WSGIWebServer">
<em class="property">class </em><code class="sig-prename descclassname">evennia.server.webserver.</code><code class="sig-name descname">WSGIWebServer</code><span class="sig-paren">(</span><em class="sig-param">pool</em>, <em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/webserver.html#WSGIWebServer"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.webserver.WSGIWebServer" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">twisted.application.internet.TCPServer</span></code></p>
<p>This is a WSGI webserver. It makes sure to start
the threadpool after the service itself started,
so as to register correctly with the twisted daemon.</p>
<p>call with WSGIWebServer(threadpool, port, wsgi_resource)</p>
<dl class="method">
<dt id="evennia.server.webserver.WSGIWebServer.__init__">
<code class="sig-name descname">__init__</code><span class="sig-paren">(</span><em class="sig-param">pool</em>, <em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/webserver.html#WSGIWebServer.__init__"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.webserver.WSGIWebServer.__init__" title="Permalink to this definition"></a></dt>
<dd><p>This just stores the threadpool.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>pool</strong> (<em>ThreadPool</em>) The twisted threadpool.</p></li>
<li><p><strong>kwargs</strong> (<em>args</em><em>,</em>) Passed on to the TCPServer.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="evennia.server.webserver.WSGIWebServer.startService">
<code class="sig-name descname">startService</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/webserver.html#WSGIWebServer.startService"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.webserver.WSGIWebServer.startService" title="Permalink to this definition"></a></dt>
<dd><p>Start the pool after the service starts.</p>
</dd></dl>
<dl class="method">
<dt id="evennia.server.webserver.WSGIWebServer.stopService">
<code class="sig-name descname">stopService</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/webserver.html#WSGIWebServer.stopService"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.webserver.WSGIWebServer.stopService" title="Permalink to this definition"></a></dt>
<dd><p>Safely stop the pool after the service stops.</p>
</dd></dl>
</dd></dl>
<dl class="class">
<dt id="evennia.server.webserver.Website">
<em class="property">class </em><code class="sig-prename descclassname">evennia.server.webserver.</code><code class="sig-name descname">Website</code><span class="sig-paren">(</span><em class="sig-param">resource</em>, <em class="sig-param">requestFactory=None</em>, <em class="sig-param">*args</em>, <em class="sig-param">**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/webserver.html#Website"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.webserver.Website" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">twisted.web.server.Site</span></code></p>
<p>This class will only log http requests if settings.DEBUG is True.</p>
<dl class="method">
<dt id="evennia.server.webserver.Website.log">
<code class="sig-name descname">log</code><span class="sig-paren">(</span><em class="sig-param">request</em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/evennia/server/webserver.html#Website.log"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.webserver.Website.log" title="Permalink to this definition"></a></dt>
<dd><p>Conditional logging</p>
</dd></dl>
<dl class="method">
<dt id="evennia.server.webserver.Website.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/webserver.html#Website.logPrefix"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#evennia.server.webserver.Website.logPrefix" title="Permalink to this definition"></a></dt>
<dd><p>How to be named in logs</p>
</dd></dl>
<dl class="attribute">
<dt id="evennia.server.webserver.Website.noisy">
<code class="sig-name descname">noisy</code><em class="property"> = False</em><a class="headerlink" href="#evennia.server.webserver.Website.noisy" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
</div>
</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>
<p><h3><a href="../index.html">Table of Contents</a></h3>
<ul>
<li><a class="reference internal" href="#">evennia.server package</a><ul>
<li><a class="reference internal" href="#subpackages">Subpackages</a></li>
<li><a class="reference internal" href="#submodules">Submodules</a></li>
<li><a class="reference internal" href="#module-evennia.server.admin">evennia.server.admin module</a></li>
<li><a class="reference internal" href="#module-evennia.server.amp_client">evennia.server.amp_client module</a></li>
<li><a class="reference internal" href="#module-evennia.server.connection_wizard">evennia.server.connection_wizard module</a></li>
<li><a class="reference internal" href="#module-evennia.server.deprecations">evennia.server.deprecations module</a></li>
<li><a class="reference internal" href="#module-evennia.server.evennia_launcher">evennia.server.evennia_launcher module</a></li>
<li><a class="reference internal" href="#module-evennia.server.initial_setup">evennia.server.initial_setup module</a></li>
<li><a class="reference internal" href="#module-evennia.server.inputfuncs">evennia.server.inputfuncs module</a></li>
<li><a class="reference internal" href="#module-evennia.server.manager">evennia.server.manager module</a></li>
<li><a class="reference internal" href="#module-evennia.server.models">evennia.server.models module</a></li>
<li><a class="reference internal" href="#module-evennia.server.server">evennia.server.server module</a></li>
<li><a class="reference internal" href="#module-evennia.server.serversession">evennia.server.serversession module</a></li>
<li><a class="reference internal" href="#module-evennia.server.session">evennia.server.session module</a></li>
<li><a class="reference internal" href="#module-evennia.server.sessionhandler">evennia.server.sessionhandler module</a></li>
<li><a class="reference internal" href="#module-evennia.server.signals">evennia.server.signals module</a></li>
<li><a class="reference internal" href="#module-evennia.server.throttle">evennia.server.throttle module</a></li>
<li><a class="reference internal" href="#module-evennia.server.validators">evennia.server.validators module</a></li>
<li><a class="reference internal" href="#module-evennia.server.webserver">evennia.server.webserver module</a></li>
</ul>
</li>
</ul>
<div role="note" aria-label="source link">
<!--h3>This Page</h3-->
<ul class="this-page-menu">
<li><a href="../_sources/api/evennia.server.rst.txt"
rel="nofollow">Show Page Source</a></li>
</ul>
</div>
<h3>Versions</h3>
<ul>
<li><a href="evennia.server.html">1.0-dev (develop branch)</a></li>
<li><a href="../../0.9.1/api/evennia.server.html">0.9.1 (master 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 1.0-dev documentation</a> &#187;</li>
</ul>
</div>
<div class="footer" role="contentinfo">
&#169; Copyright 2020, The Evennia developer community.
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 2.4.4.
</div>
</body>
</html>