# evennia.server.portal.telnet

This module implements the telnet protocol.

This depends on a generic session module that implements the actual login procedure of the game, tracks sessions etc.

class `evennia.server.portal.telnet.``TelnetServerFactory`

  Bases: `twisted.internet.protocol.ServerFactory`

  This exists only to name this better in logs.

  `noisy` = False
  `logPrefix`()

    Describe this factory for log messages.

class `evennia.server.portal.telnet.``TelnetProtocol`(*args, **kwargs)

  Bases: `twisted.conch.telnet.Telnet`, `twisted.conch.telnet.StatefulTelnetProtocol`, `evennia.server.session.Session`

  Each player connecting over telnet (ie using most traditional mud clients) gets a telnet protocol instance assigned to them. All communication between game and player goes through here.

  `__init__`(*args, **kwargs)

    Initialize self. See help(type(self)) for accurate signature.

  `dataReceived`(data)

    Unused by default, but a good place to put debug printouts of incoming data.

  `connectionMade`()

    This is called when the connection is first established.

  `toggle_nop_keepalive`()

    Allow to toggle the NOP keepalive for those sad clients that can’t even handle a NOP instruction. This is turned off by the protocol_flag NOPKEEPALIVE (settable e.g. by the default option command).

  `handshake_done`(timeout=False)

    This is called by all telnet extensions once they are finished. When all have reported, a sync with the server is performed. The system will force-call this sync after a small time to handle clients that don’t reply to handshakes at all.

  `at_login`()

    Called when this session gets authenticated by the server.

  `enableRemote`(option)

    This sets up the remote-activated options we allow for this protocol.

    Parameters

      option (char) – The telnet option to enable.

    Returns

      enable (bool) – If this option should be enabled.

  `disableRemote`(option)

    Signal a programming error by raising an exception.

    L{enableRemote} must return true for the given value of C{option} in order for this method to be called. If a subclass of L{Telnet} overrides enableRemote to allow certain options to be enabled, it must also override disableRemote tto disable those options.

    @raise NotImplementedError: Always raised.

  `enableLocal`(option)

    Call to allow the activation of options for this protocol

    Parameters

      option (char) – The telnet option to enable locally.

    Returns

      enable (bool) – If this option should be enabled.

  `disableLocal`(option)

    Disable a given option locally.

    Parameters

      option (char) – The telnet option to disable locally.

  `connectionLost`(reason)

    this is executed when the connection is lost for whatever reason. it can also be called directly, from the disconnect method

    Parameters

      reason (str) – Motivation for losing connection.

  `applicationDataReceived`(data)

    Telnet method called when non-telnet-command data is coming in over the telnet connection. We pass it on to the game engine directly.

    Parameters

      data (str) – Incoming data.

  `sendLine`(line)

    Hook overloading the one used by linereceiver.

    Parameters

      line (str) – Line to send.

  `disconnect`(reason='')

    Generic hook for the engine to call in order to disconnect this protocol.

    Parameters

      reason (str, optional) – Reason for disconnecting.

  `data_in`(**kwargs)

    Data User -> Evennia

    Keyword Arguments

      kwargs (any) – Options from the protocol.

  `data_out`(**kwargs)

    Data Evennia -> User

    Keyword Arguments

      kwargs (any) – Options to the protocol

  `send_text`(*args, **kwargs)

    Send text data. This is an in-band telnet operation.

    Parameters

      text (str) – The first argument is always the text string to send. No other arguments are considered.

    Keyword Arguments

      options (dict) –

      Send-option flags

      - mxp: Enforce MXP link support.

      - ansi: Enforce no ANSI colors.

      - xterm256: Enforce xterm256 colors, regardless of TTYPE.

      - noxterm256: Enforce no xterm256 color support, regardless of TTYPE.

      - nocolor: Strip all Color, regardless of ansi/xterm256 setting.

      - raw: Pass string through without any ansi processing

          (i.e. include Evennia ansi markers but do not convert them into ansi tokens)

      - echo: Turn on/off line echo on the client. Turn

          off line echo for client, for example for password. Note that it must be actively turned back on again!

  `send_prompt`(*args, **kwargs)

    Send a prompt - a text without a line end. See send_text for argument options.

  `send_default`(cmdname, *args, **kwargs)

    Send other oob data