示例#1
0
 def func(self):
     self.caller.msg(
         "## BEGIN INFO 1.1\nName: %s\nUptime: %s\nConnected: %d\nVersion: Evennia %s\n## END INFO"
         % (settings.SERVERNAME,
            datetime.datetime.fromtimestamp(
                gametime.SERVER_START_TIME).ctime(),
            SESSIONS.account_count(), utils.get_evennia_version()))
示例#2
0
    def func(self):
        """Display information about server or target"""

        string = """
         |cEvennia|n MU* development system

         |wEvennia version|n: {version}
         |wOS|n: {os}
         |wPython|n: {python}
         |wTwisted|n: {twisted}
         |wDjango|n: {django}

         |wLicence|n https://opensource.org/licenses/BSD-3-Clause
         |wWeb|n http://www.evennia.com
         |wIrc|n #evennia on irc.freenode.net:6667
         |wForum|n http://www.evennia.com/discussions
         |wMaintainer|n (2010-)   Griatch (griatch AT gmail DOT com)
         |wMaintainer|n (2006-10) Greg Taylor

        """.format(
            version=utils.get_evennia_version(),
            os=os.name,
            python=sys.version.split()[0],
            twisted=twisted.version.short(),
            django=django.get_version(),
        )
        self.caller.msg(string)
示例#3
0
 def test_info_command(self):
     expected = "## BEGIN INFO 1.1\nName: %s\nUptime: %s\nConnected: %d\nVersion: Evennia %s\n## END INFO" % (
         settings.SERVERNAME,
         datetime.datetime.fromtimestamp(
             gametime.SERVER_START_TIME).ctime(), SESSIONS.account_count(),
         utils.get_evennia_version())
     self.call(unloggedin.CmdUnconnectedInfo(), "", expected)
示例#4
0
 def func(self):
     """Display information about server or target"""
     char = self.character
     account = self.account
     opt = self.switches
     args = unicode(self.args).strip()
     if 'last' in opt:
         if args:
             return
         recent_users = AccountDB.objects.get_recently_connected_accounts()[:10]
         account.msg(recent_users)
         return
     string = """
      |cEvennia|n %s|n
      MUD/MUX/MU* development system
      |wLicence|n https://opensource.org/licenses/BSD-3-Clause
      |wWeb|n http://evennia.com
      |wIrc|n #evennia on FreeNode
      |wForum|n http://evennia.com/discussions
      |wMaintainer|n (2010-)   Griatch (griatch AT gmail DOT com)
      |wMaintainer|n (2006-10) Greg Taylor
      |wOS|n %s
      |wPython|n %s
      |wTwisted|n %s
      |wDjango|n %s
     """ % (utils.get_evennia_version(),
            os.name,
            sys.version.split()[0],
            twisted.version.short(),
            django.get_version()) if not args else 'Target information not available.'
     char.msg(image=['https://raw.githubusercontent.com/evennia/evennia/'
                     'master/evennia/web/website/static/website/images/evennia_logo.png'])
     char.private(None, 'info', string)
示例#5
0
 def test_info_command(self):
     # instead of using SERVER_START_TIME (0), we use 86400 because Windows won't let us use anything lower
     gametime.SERVER_START_TIME = 86400
     expected = "## BEGIN INFO 1.1\nName: %s\nUptime: %s\nConnected: %d\nVersion: Evennia %s\n## END INFO" % (
                     settings.SERVERNAME,
                     datetime.datetime.fromtimestamp(gametime.SERVER_START_TIME).ctime(),
                     SESSIONS.account_count(), utils.get_evennia_version())
     self.call(unloggedin.CmdUnconnectedInfo(), "", expected)
     del gametime.SERVER_START_TIME
示例#6
0
文件: mssp.py 项目: nullwaves/evennia
    def do_mssp(self, option):
        """
        Negotiate all the information.

        Args:
            option (Option): Not used.

        """

        self.mssp_table = {

            # Required fields
            "NAME": settings.SERVERNAME,
            "PLAYERS": self.get_player_count,
            "UPTIME": self.get_uptime,
            "PORT": list(reversed(settings.TELNET_PORTS)
                         ),  # most important port should be last in list

            # Evennia auto-filled
            "CRAWL DELAY": "-1",
            "CODEBASE": utils.get_evennia_version(mode='pretty'),
            "FAMILY": "Custom",
            "ANSI": "1",
            "GMCP": "1" if settings.TELNET_OOB_ENABLED else "0",
            "ATCP": "0",
            "MCCP": "1",
            "MCP": "0",
            "MSDP": "1" if settings.TELNET_OOB_ENABLED else "0",
            "MSP": "0",
            "MXP": "1",
            "PUEBLO": "0",
            "SSL": "1" if settings.SSL_ENABLED else "0",
            "UTF-8": "1",
            "ZMP": "0",
            "VT100": "1",
            "XTERM 256 COLORS": "1",
        }

        # update the static table with the custom one
        if MSSPTable_CUSTOM:
            self.mssp_table.update(MSSPTable_CUSTOM)

        varlist = b''
        for variable, value in self.mssp_table.items():
            if callable(value):
                value = value()
            if utils.is_iter(value):
                for partval in value:
                    varlist += (MSSP_VAR + bytes(variable, 'utf-8') +
                                MSSP_VAL + bytes(partval, 'utf-8'))
            else:
                varlist += MSSP_VAR + bytes(
                    variable, 'utf-8') + MSSP_VAL + bytes(value, 'utf-8')

        # send to crawler by subnegotiation
        self.protocol.requestNegotiation(MSSP, varlist)
        self.protocol.handshake_done()
def set_game_name_and_slogan():
    """
    Sets global variables GAME_NAME and GAME_SLOGAN which are used by
    general_context.

    Notes:
        This function is used for unit testing the values of the globals.
    """
    global GAME_NAME, GAME_SLOGAN, SERVER_VERSION
    try:
        GAME_NAME = settings.SERVERNAME.strip()
    except AttributeError:
        GAME_NAME = "Evennia"
    SERVER_VERSION = get_evennia_version()
    try:
        GAME_SLOGAN = settings.GAME_SLOGAN.strip()
    except AttributeError:
        GAME_SLOGAN = SERVER_VERSION
示例#8
0
def set_game_name_and_slogan():
    """
    Sets global variables GAME_NAME and GAME_SLOGAN which are used by
    general_context.

    Notes:
        This function is used for unit testing the values of the globals.
    """
    global GAME_NAME, GAME_SLOGAN, SERVER_VERSION
    try:
        GAME_NAME = settings.SERVERNAME.strip()
    except AttributeError:
        GAME_NAME = "Evennia"
    SERVER_VERSION = get_evennia_version()
    try:
        GAME_SLOGAN = settings.GAME_SLOGAN.strip()
    except AttributeError:
        GAME_SLOGAN = SERVER_VERSION
示例#9
0
    def func(self):
        "Show the version"

        string = """
         {cEvennia{n %s{n
         MUD/MUX/MU* development system

         {wLicence{n BSD 3-Clause Licence
         {wWeb{n http://www.evennia.com
         {wIrc{n #evennia on FreeNode
         {wForum{n http://www.evennia.com/discussions
         {wMaintainer{n (2010-)   Griatch (griatch AT gmail DOT com)
         {wMaintainer{n (2006-10) Greg Taylor

         {wOS{n %s
         {wPython{n %s
         {wTwisted{n %s
         {wDjango{n %s
        """ % (utils.get_evennia_version(), os.name, sys.version.split()[0],
               twisted.version.short(), django.get_version())
        self.caller.msg(string)
示例#10
0
    def func(self):
        """Show the version"""

        string = """
         |cEvennia|n %s|n
         MUD/MUX/MU* development system

         |wLicence|n BSD 3-Clause Licence
         |wWeb|n http://www.evennia.com
         |wIrc|n #evennia on FreeNode
         |wForum|n http://www.evennia.com/discussions
         |wMaintainer|n (2010-)   Griatch (griatch AT gmail DOT com)
         |wMaintainer|n (2006-10) Greg Taylor

         |wOS|n %s
         |wPython|n %s
         |wTwisted|n %s
         |wDjango|n %s
        """ % (utils.get_evennia_version(), os.name, sys.version.split()[0],
               twisted.version.short(), django.get_version())
        self.caller.msg(string)
示例#11
0
    def func(self):
        """Display information about server or target"""

        string = """
         |cEvennia|n %s|n
         MUD/MUX/MU* development system

         |wLicence|n https://opensource.org/licenses/BSD-3-Clause
         |wWeb|n http://www.evennia.com
         |wIrc|n #evennia on FreeNode
         |wForum|n http://www.evennia.com/discussions
         |wMaintainer|n (2010-)   Griatch (griatch AT gmail DOT com)
         |wMaintainer|n (2006-10) Greg Taylor

         |wOS|n %s
         |wPython|n %s
         |wTwisted|n %s
         |wDjango|n %s
        """ % (utils.get_evennia_version(),
               os.name,
               sys.version.split()[0],
               twisted.version.short(),
               django.get_version())
        self.caller.msg(string)
示例#12
0
文件: system.py 项目: 325975/evennia
    def func(self):
        "Show the version"

        string = """
         {cEvennia{n %s{n
         MUD/MUX/MU* development system

         {wLicence{n BSD 3-Clause Licence
         {wWeb{n http://www.evennia.com
         {wIrc{n #evennia on FreeNode
         {wForum{n http://www.evennia.com/discussions
         {wMaintainer{n (2010-)   Griatch (griatch AT gmail DOT com)
         {wMaintainer{n (2006-10) Greg Taylor

         {wOS{n %s
         {wPython{n %s
         {wTwisted{n %s
         {wDjango{n %s
        """ % (utils.get_evennia_version(),
               os.name,
               sys.version.split()[0],
               twisted.version.short(),
               django.get_version())
        self.caller.msg(string)
示例#13
0
    def func(self):
        """Display information about server or target"""

        string = """
         |cEvennia|n {version}|n
         MU* development system

         |wLicence|n https://opensource.org/licenses/BSD-3-Clause
         |wWeb|n http://www.evennia.com
         |wIrc|n #evennia on irc.freenode.net:6667
         |wForum|n http://www.evennia.com/discussions
         |wMaintainer|n (2010-)   Griatch (griatch AT gmail DOT com)
         |wMaintainer|n (2006-10) Greg Taylor

         |wOS|n {os}
         |wPython|n {python}
         |wTwisted|n {twisted}
         |wDjango|n {django}
        """.format(version=utils.get_evennia_version(),
                   os=os.name,
                   python=sys.version.split()[0],
                   twisted=twisted.version.short(),
                   django=django.get_version())
        self.caller.msg(string)
示例#14
0
# modules containing plugin services
SERVER_SERVICES_PLUGIN_MODULES = [mod_import(module) for module in make_iter(settings.SERVER_SERVICES_PLUGIN_MODULES)]
try:
    WEB_PLUGINS_MODULE = mod_import(settings.WEB_PLUGINS_MODULE)
except ImportError:
    WEB_PLUGINS_MODULE = None
    print ("WARNING: settings.WEB_PLUGINS_MODULE not found - "
           "copy 'evennia/game_template/server/conf/web_plugins.py to mygame/server/conf.")

#------------------------------------------------------------
# Evennia Server settings
#------------------------------------------------------------

SERVERNAME = settings.SERVERNAME
VERSION = get_evennia_version()

AMP_ENABLED = True
AMP_HOST = settings.AMP_HOST
AMP_PORT = settings.AMP_PORT
AMP_INTERFACE = settings.AMP_INTERFACE

WEBSERVER_PORTS = settings.WEBSERVER_PORTS
WEBSERVER_INTERFACES = settings.WEBSERVER_INTERFACES

GUEST_ENABLED = settings.GUEST_ENABLED

# server-channel mappings
WEBSERVER_ENABLED = settings.WEBSERVER_ENABLED and WEBSERVER_PORTS and WEBSERVER_INTERFACES
IRC_ENABLED = settings.IRC_ENABLED
RSS_ENABLED = settings.RSS_ENABLED
示例#15
0
文件: tests.py 项目: muddery/muddery
 def test_info_command(self):
     expected = "## BEGIN INFO 1.1\nName: %s\nUptime: %s\nConnected: %d\nVersion: Evennia %s\n## END INFO" % (
                     settings.SERVERNAME,
                     datetime.datetime.fromtimestamp(gametime.SERVER_START_TIME).ctime(),
                     SESSIONS.account_count(), utils.get_evennia_version())
     self.call(unloggedin.CmdUnconnectedInfo(), "", expected)
示例#16
0
#
# This is Evennia's default connection screen. It is imported
# and run from server/conf/connection_screens.py.
#

from django.conf import settings
from evennia.utils import utils

DEFAULT_SCREEN = \
"""{b=============================================================={n
 Welcome to {g%s{n, version %s!

 If you have an existing account, connect to it by typing:
      {wconnect <username> <password>{n
 If you need to create an account, type (without the <>'s):
      {wcreate <username> <password>{n

 If you have spaces in your username, enclose it in double quotes.
 Enter {whelp{n for more info. {wlook{n will re-show this screen.
{b=============================================================={n""" \
% (settings.SERVERNAME, utils.get_evennia_version())
示例#17
0
#
# This is Evennia's default connection screen. It is imported
# and run from server/conf/connection_screens.py.
#

from django.conf import settings
from evennia.utils import utils

DEFAULT_SCREEN = """{b=============================================================={n
 Welcome to {g%s{n, version %s!

 If you have an existing account, connect to it by typing:
      {wconnect <username> <password>{n
 If you need to create an account, type (without the <>'s):
      {wcreate <username> <password>{n

 If you have spaces in your username, enclose it in quotes.
 Enter {whelp{n for more info. {wlook{n will re-show this screen.
{b=============================================================={n""" % (
    settings.SERVERNAME,
    utils.get_evennia_version(),
)
示例#18
0
文件: about.py 项目: tricuspa/current
 def func(self):
     """Display information about server or target"""
     sessions = self.account.sessions.get()
     session = sessions[-1] if sessions else None
     account = self.account
     char = self.character or account.db._last_puppet
     if not char:
         if account.db._playable_characters[0]:
             char = account.db._playable_characters[0]
         else:
             self.msg('You must have a character to interact with objects.')
             return
     cmd = self.cmdstring
     opt = self.switches
     args = unicode(self.args).strip()
     message = ''
     if args:
         obj = char.search(args, global_search=True)
         if obj:
             display_name = obj.get_display_name(char)
             object_summary = ''
             if obj.db.desc_brief or obj.db.messages and obj.db.messages.get(
                     'summary'):
                 object_summary = '|w' + (
                     obj.db.desc_brief or obj.db.messages
                     and obj.db.messages.get('summary', ''))
             object_name = (display_name + ' is |w' + repr(obj) + ' ' +
                            object_summary +
                            (('|wAliases: |C' +
                              '|w, |C'.join(str(obj.aliases).split(',')))
                             if str(obj.aliases) else '') +
                            ' |gcreated on |g' +
                            str(obj.db_date_created)[:10])
             last_on = 0
             on_count = 0
             if obj.db.puppeted:
                 times_awake = []
                 times_asleep = []
                 for each in obj.db.puppeted.values():
                     times_awake.append(each[0])
                     times_asleep.append(each[1])
                     on_count += each[2]
                 time_awake = max(times_awake) if times_awake else None
                 time_asleep = max(times_asleep) if times_asleep else None
                 last_on_value = abs(time_awake - time_asleep) if (
                     time_awake and time_asleep) else 0
                 last_on = utils.time_format(last_on_value,
                                             2) if last_on_value else 'None'
                 if time_asleep:
                     last_asleep = utils.time_format(
                         int(time.time()) - time_asleep, 2) + ' ago'
                 else:
                     last_asleep = 'and is awake now' if obj.has_account else 'unknown'
             else:
                 last_awake, last_asleep = 'unknown', 'unknown'
             if obj.has_account:  # Object is awake:
                 message = '{} is currently awake.'.format(
                     obj.get_display_name(char))
             elif obj.db.puppeted:
                 message = '{} was last awake {} for {}.'.format(
                     obj.get_display_name(char), last_asleep, last_on)
             else:
                 message = '{} has no known last awake time.'.format(
                     obj.get_display_name(char))
             if 'last' in opt or 'last' in cmd:
                 char.msg(message)
                 return
             # If object has never been puppeted, use a different template that
             # does not include Awake count, awake times, and CPU use.
             from evennia import EvForm, EvTable
             if obj.db.puppeted:
                 time_summary = (message + ' Awake ' + str(on_count) +
                                 ' time' + ('' if on_count == 1 else 's') +
                                 '. CPU use: ' +
                                 str(round(obj.traits.ct.current, 4)) +
                                 ' seconds, ' + str(obj.traits.cc.current) +
                                 ' commands, average ' + str(
                                     round(
                                         obj.traits.ct.current /
                                         obj.traits.cc.current, 4)) +
                                 ' sec each.')
                 form_file = 'awakeformunicode' if session.protocol_flags[
                     'ENCODING'] == 'utf-8' else 'awakeform'
                 form = EvForm('commands/forms/{}.py'.format(form_file))
                 form.map(
                     cells={
                         1:
                         object_name,
                         2:
                         time_summary,
                         3:
                         obj.db.messages
                         and obj.db.messages.get('species', ''),
                         4:
                         obj.db.messages
                         and obj.db.messages.get('gender', ''),
                         5:
                         obj.db.desc
                     })
             else:
                 form_file = 'objectformunicode' if session.protocol_flags[
                     'ENCODING'] == 'utf-8' else 'objectform'
                 form = EvForm('commands/forms/{}.py'.format(form_file))
                 form.map(
                     cells={
                         1:
                         object_name,
                         2:
                         obj.db.messages
                         and obj.db.messages.get('species', ''),
                         3:
                         obj.db.messages
                         and obj.db.messages.get('gender', ''),
                         4:
                         obj.db.desc
                     })
             message = unicode(form)
     else:
         if 'last' in opt or 'last' in cmd:
             message = 'Usage: last <character name>'
         else:
             message = """
             |cEvennia|n %s|n
             MUD/MUX/MU* development system
             |wLicense|n https://opensource.org/licenses/BSD-3-Clause
             |wWeb|n http://evennia.com
             |wIrc|n #evennia on FreeNode
             |wForum|n http://evennia.com/discussions
             |wMaintainer|n (2010-)   Griatch (griatch AT gmail DOT com)
             |wMaintainer|n (2006-10) Greg Taylor
             |wOS|n %s
             |wPython|n %s
             |wTwisted|n %s
             |wDjango|n %s
             """ % (utils.get_evennia_version(), os.name,
                    sys.version.split()[0], twisted.version.short(),
                    django.get_version())
     # char.msg(image=['https://raw.githubusercontent.com/evennia/evennia/'
     #                 'master/evennia/web/website/static/website/images/evennia_logo.png'])
     self.msg((message, {"type": "help"}))
示例#19
0
 def func(self):
     self.caller.msg("## BEGIN INFO 1.1\nName: %s\nUptime: %s\nConnected: %d\nVersion: Evennia %s\n## END INFO" % (
                     settings.SERVERNAME,
                     datetime.datetime.fromtimestamp(gametime.SERVER_START_TIME).ctime(),
                     SESSIONS.account_count(), utils.get_evennia_version()))