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()))
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)
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)
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)
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
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
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)
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)
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)
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)
# 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
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)
# # 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())
# # 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(), )
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"}))
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()))