mirror of
https://github.com/evennia/evennia.git
synced 2026-03-17 05:16:31 +01:00
637 lines
30 KiB
Python
637 lines
30 KiB
Python
"""
|
|
Master configuration file for Evennia.
|
|
|
|
NOTE: NO MODIFICATIONS SHOULD BE MADE TO THIS FILE!
|
|
|
|
All settings changes should be done by copy-pasting the variable and
|
|
its value to game/settings.py. An empty game/settings.py can be
|
|
auto-generated by running game/manage.py without any arguments.
|
|
|
|
Hint: Don't copy&paste over more from this file than you actually want
|
|
to change. Anything you don't copy&paste will thus retain its default
|
|
value - which may change as Evennia is developed. This way you can
|
|
always be sure of what you have changed and what is default behaviour.
|
|
"""
|
|
|
|
import os
|
|
|
|
######################################################################
|
|
# Evennia base server config
|
|
######################################################################
|
|
|
|
# This is the name of your game. Make it catchy!
|
|
SERVERNAME = "Evennia"
|
|
# Activate telnet service
|
|
TELNET_ENABLED = True
|
|
# A list of ports the Evennia telnet server listens on Can be one or many.
|
|
TELNET_PORTS = [4000]
|
|
# Interface addresses to listen to. If 0.0.0.0, listen to all. Use :: for IPv6.
|
|
TELNET_INTERFACES = ['0.0.0.0']
|
|
# OOB (out-of-band) telnet communication allows Evennia to communicate
|
|
# special commands and data with enabled Telnet clients. This is used
|
|
# to create custom client interfaces over a telnet connection. To make
|
|
# full use of OOB, you need to prepare functions to handle the data
|
|
# server-side (see OOB_FUNC_MODULE). TELNET_ENABLED is required for this
|
|
# to work.
|
|
TELNET_OOB_ENABLED = False
|
|
# Start the evennia django+twisted webserver so you can
|
|
# browse the evennia website and the admin interface
|
|
# (Obs - further web configuration can be found below
|
|
# in the section 'Config for Django web features')
|
|
WEBSERVER_ENABLED = True
|
|
# This is a security setting protecting against host poisoning
|
|
# attacks. It defaults to allowing all. In production, make
|
|
# sure to change this to your actual host addresses/IPs.
|
|
ALLOWED_HOSTS = ["*"]
|
|
# The webserver sits behind a Portal proxy. This is a list
|
|
# of tuples (proxyport,serverport) used. The proxyports are what
|
|
# the Portal proxy presents to the world. The serverports are
|
|
# the internal ports the proxy uses to forward data to the Server-side
|
|
# webserver (these should not be publicly open)
|
|
WEBSERVER_PORTS = [(8000, 5001)]
|
|
# Interface addresses to listen to. If 0.0.0.0, listen to all. Use :: for IPv6.
|
|
WEBSERVER_INTERFACES = ['0.0.0.0']
|
|
# IP addresses that may talk to the server in a reverse proxy configuration,
|
|
# like NginX.
|
|
UPSTREAM_IPS = ['127.0.0.1']
|
|
# The webserver uses threadpool for handling requests. This will scale
|
|
# with server load. Set the minimum and maximum number of threads it
|
|
# may use as (min, max) (must be > 0)
|
|
WEBSERVER_THREADPOOL_LIMITS = (1, 20)
|
|
# Start the evennia webclient. This requires the webserver to be running and
|
|
# offers the fallback ajax-based webclient backbone for browsers not supporting
|
|
# the websocket one.
|
|
WEBCLIENT_ENABLED = True
|
|
# Activate Websocket support for modern browsers. If this is on, the
|
|
# default webclient will use this and only use the ajax version of the browser
|
|
# is too old to support websockets. Requires WEBCLIENT_ENABLED.
|
|
WEBSOCKET_CLIENT_ENABLED = True
|
|
# Server-side websocket port to open for the webclient.
|
|
WEBSOCKET_CLIENT_PORT = 8001
|
|
# Interface addresses to listen to. If 0.0.0.0, listen to all. Use :: for IPv6.
|
|
WEBSOCKET_CLIENT_INTERFACE = '0.0.0.0'
|
|
# Actual URL for webclient component to reach the websocket. The first
|
|
# port number in the WEBSOCKET_PORTS list will be automatically appended.
|
|
WEBSOCKET_CLIENT_URL = "ws://localhost"
|
|
# Activate SSH protocol communication (SecureShell)
|
|
SSH_ENABLED = False
|
|
# Ports to use for SSH
|
|
SSH_PORTS = [8022]
|
|
# Interface addresses to listen to. If 0.0.0.0, listen to all. Use :: for IPv6.
|
|
SSH_INTERFACES = ['0.0.0.0']
|
|
# Activate SSL protocol (SecureSocketLibrary)
|
|
SSL_ENABLED = False
|
|
# Ports to use for SSL
|
|
SSL_PORTS = [4001]
|
|
# Interface addresses to listen to. If 0.0.0.0, listen to all. Use :: for IPv6.
|
|
SSL_INTERFACES = ['0.0.0.0']
|
|
# Activate custom websocket support. This is unrelated to the websocket client!
|
|
# This is intended to be used by optional third-party connections/applications
|
|
# or clients.
|
|
WEBSOCKET_ENABLED = False
|
|
# Ports to use for Websockets
|
|
WEBSOCKET_PORTS = [8021]
|
|
# Interface addresses to listen to. If 0.0.0.0, listen to all. Use :: for IPv6.
|
|
WEBSOCKET_INTERFACES = ['0.0.0.0']
|
|
# This determine's whether Evennia's custom admin page is used, or if the
|
|
# standard Django admin is used.
|
|
EVENNIA_ADMIN = True
|
|
# The path that contains this settings.py file (no trailing slash).
|
|
BASE_PATH = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
|
# Path to the src directory containing the bulk of the codebase's code.
|
|
SRC_DIR = os.path.join(BASE_PATH, 'src')
|
|
# Path to the game directory (containing the database file if using sqlite).
|
|
GAME_DIR = os.path.join(BASE_PATH, 'game')
|
|
# Place to put log files
|
|
LOG_DIR = os.path.join(GAME_DIR, 'logs')
|
|
SERVER_LOG_FILE = os.path.join(LOG_DIR, 'server.log')
|
|
PORTAL_LOG_FILE = os.path.join(LOG_DIR, 'portal.log')
|
|
HTTP_LOG_FILE = os.path.join(LOG_DIR, 'http_requests.log')
|
|
# Rotate log files when server and/or portal stops. This will keep log
|
|
# file sizes down. Turn off to get ever growing log files and never
|
|
# loose log info.
|
|
CYCLE_LOGFILES = True
|
|
# Local time zone for this installation. All choices can be found here:
|
|
# http://www.postgresql.org/docs/8.0/interactive/datetime-keywords.html#DATETIME-TIMEZONE-SET-TABLE
|
|
TIME_ZONE = 'UTC'
|
|
# Authentication backends. This is the code used to authenticate a user.
|
|
AUTHENTICATION_BACKENDS = (
|
|
'src.web.utils.backends.CaseInsensitiveModelBackend',)
|
|
# Language code for this installation. All choices can be found here:
|
|
# http://www.w3.org/TR/REC-html40/struct/dirlang.html#langcodes
|
|
LANGUAGE_CODE = 'en-us'
|
|
# How long time (in seconds) a user may idle before being logged
|
|
# out. This can be set as big as desired. A user may avoid being
|
|
# thrown off by sending the empty system command 'idle' to the server
|
|
# at regular intervals. Set <=0 to deactivate idle timout completely.
|
|
IDLE_TIMEOUT = 3600
|
|
# The idle command can be sent to keep your session active without actually
|
|
# having to spam normal commands regularly. It gives no feedback, only updates
|
|
# the idle timer.
|
|
IDLE_COMMAND = "idle"
|
|
# The set of encodings tried. A Player object may set an attribute "encoding" on
|
|
# itself to match the client used. If not set, or wrong encoding is
|
|
# given, this list is tried, in order, aborting on the first match.
|
|
# Add sets for languages/regions your players are likely to use.
|
|
# (see http://en.wikipedia.org/wiki/Character_encoding)
|
|
ENCODINGS = ["utf-8", "latin-1", "ISO-8859-1"]
|
|
# The game server opens an AMP port so that the portal can
|
|
# communicate with it. This is an internal functionality of Evennia, usually
|
|
# operating between two processes on the same machine. You usually don't need to
|
|
# change this unless you cannot use the default AMP port/host for
|
|
# whatever reason.
|
|
AMP_HOST = 'localhost'
|
|
AMP_PORT = 5000
|
|
AMP_INTERFACE = '127.0.0.1'
|
|
# Database objects are cached in what is known as the idmapper. The idmapper
|
|
# caching results in a massive speedup of the server (since it dramatically
|
|
# limits the number of database accesses needed) and also allows for
|
|
# storing temporary data on objects. It is however also the main memory
|
|
# consumer of Evennia. With this setting the cache can be capped and
|
|
# flushed when it reaches a certain size. Minimum is 50 MB but it is
|
|
# not recommended to set this to less than 100 MB for a distribution
|
|
# system.
|
|
# Empirically, N_objects_in_cache ~ ((RMEM - 35) / 0.0157):
|
|
# mem(MB) | objs in cache || mem(MB) | objs in cache
|
|
# 50 | ~1000 || 800 | ~49 000
|
|
# 100 | ~4000 || 1200 | ~75 000
|
|
# 200 | ~10 000 || 1600 | ~100 000
|
|
# 500 | ~30 000 || 2000 | ~125 000
|
|
# Note that the estimated memory usage is not exact (and the cap is only
|
|
# checked every 5 minutes), so err on the side of caution if
|
|
# running on a server with limited memory. Also note that Python
|
|
# will not necessarily return the memory to the OS when the idmapper
|
|
# flashes (the memory will be freed and made available to the Python
|
|
# process only). How many objects need to be in memory at any given
|
|
# time depends very much on your game so some experimentation may
|
|
# be necessary (use @server to see how many objects are in the idmapper
|
|
# cache at any time). Setting this to None disables the cache cap.
|
|
IDMAPPER_CACHE_MAXSIZE = 200 # (MB)
|
|
|
|
######################################################################
|
|
# Evennia Database config
|
|
######################################################################
|
|
|
|
# Database config syntax for Django 1.2+.
|
|
# ENGINE - path to the the database backend. Possible choices are:
|
|
# 'django.db.backends.sqlite3', (default)
|
|
# 'django.db.backends.mysql',
|
|
# 'django.db.backends.'postgresql_psycopg2' (see Issue 241),
|
|
# 'django.db.backends.oracle' (untested).
|
|
# NAME - database name, or path to the db file for sqlite3
|
|
# USER - db admin (unused in sqlite3)
|
|
# PASSWORD - db admin password (unused in sqlite3)
|
|
# HOST - empty string is localhost (unused in sqlite3)
|
|
# PORT - empty string defaults to localhost (unused in sqlite3)
|
|
DATABASES = {
|
|
'default': {
|
|
'ENGINE': 'django.db.backends.sqlite3',
|
|
'NAME': os.path.join(GAME_DIR, 'evennia.db3'),
|
|
'USER': '',
|
|
'PASSWORD': '',
|
|
'HOST': '',
|
|
'PORT': ''
|
|
}}
|
|
|
|
######################################################################
|
|
# Evennia pluggable modules
|
|
######################################################################
|
|
# Plugin modules extend Evennia in various ways. In the cases with no
|
|
# existing default, there are examples of many of these modules
|
|
# in game/gamesrc/conf/examples.
|
|
|
|
# The command parser module to use. See the default module for which
|
|
# functions it must implement
|
|
COMMAND_PARSER = "src.commands.cmdparser.cmdparser"
|
|
# The handler that outputs errors when searching
|
|
# objects using object.search().
|
|
SEARCH_AT_RESULT = "src.commands.cmdparser.at_search_result"
|
|
# The parser used in order to separate multiple
|
|
# object matches (so you can separate between same-named
|
|
# objects without using dbrefs).
|
|
SEARCH_AT_MULTIMATCH_INPUT = "src.commands.cmdparser.at_multimatch_input"
|
|
# The module holding text strings for the connection screen.
|
|
# This module should contain one or more variables
|
|
# with strings defining the look of the screen.
|
|
CONNECTION_SCREEN_MODULE = "src.commands.connection_screen"
|
|
# An optional module that, if existing, must hold a function
|
|
# named at_initial_setup(). This hook method can be used to customize
|
|
# the server's initial setup sequence (the very first startup of the system).
|
|
# The check will fail quietly if module doesn't exist or fails to load.
|
|
AT_INITIAL_SETUP_HOOK_MODULE = ""
|
|
# Module containing your custom at_server_start(), at_server_reload() and
|
|
# at_server_stop() methods. These methods will be called every time
|
|
# the server starts, reloads and resets/stops respectively.
|
|
AT_SERVER_STARTSTOP_MODULE = ""
|
|
# List of one or more module paths to modules containing a function start_
|
|
# plugin_services(application). This module will be called with the main
|
|
# Evennia Server application when the Server is initiated.
|
|
# It will be called last in the startup sequence.
|
|
SERVER_SERVICES_PLUGIN_MODULES = []
|
|
# List of one or more module paths to modules containing a function
|
|
# start_plugin_services(application). This module will be called with the
|
|
# main Evennia Portal application when the Portal is initiated.
|
|
# It will be called last in the startup sequence.
|
|
PORTAL_SERVICES_PLUGIN_MODULES = []
|
|
# Module holding MSSP meta data. This is used by MUD-crawlers to determine
|
|
# what type of game you are running, how many players you have etc.
|
|
MSSP_META_MODULE = ""
|
|
# Tuple of modules implementing lock functions. All callable functions
|
|
# inside these modules will be available as lock functions.
|
|
LOCK_FUNC_MODULES = ("src.locks.lockfuncs",)
|
|
# Module holding OOB (Out of Band) hook objects. This allows for customization
|
|
# and expansion of which hooks OOB protocols are allowed to call on the server
|
|
# protocols for attaching tracker hooks for when various object field change
|
|
OOB_PLUGIN_MODULES = ["src.server.oob_cmds"]
|
|
|
|
######################################################################
|
|
# Default command sets
|
|
######################################################################
|
|
# Note that with the exception of the unloggedin set (which is not
|
|
# stored anywhere in the databse), changing these paths will only affect
|
|
# NEW created characters/objects, not those already in play. So if you plan to
|
|
# change this, it's recommended you do it before having created a lot of objects
|
|
# (or simply reset the database after the change for simplicity). Remember
|
|
# that you should never edit things in src/. Instead copy out the examples
|
|
# in game/gamesrc/commands/examples up one level and re-point these settings
|
|
# to point to these copies instead - these you can then change as you please
|
|
# (or copy/paste from the default modules in src/ if you prefer).
|
|
|
|
# Command set used on session before player has logged in
|
|
CMDSET_UNLOGGEDIN = "src.commands.default.cmdset_unloggedin.UnloggedinCmdSet"
|
|
# Command set used on the logged-in session
|
|
CMDSET_SESSION = "src.commands.default.cmdset_session.SessionCmdSet"
|
|
# Default set for logged in player with characters (fallback)
|
|
CMDSET_CHARACTER = "src.commands.default.cmdset_character.CharacterCmdSet"
|
|
# Command set for players without a character (ooc)
|
|
CMDSET_PLAYER = "src.commands.default.cmdset_player.PlayerCmdSet"
|
|
# Location to search for cmdsets if full path not given
|
|
CMDSET_PATHS = ["game.gamesrc.commands"]
|
|
|
|
######################################################################
|
|
# Typeclasses and other paths
|
|
######################################################################
|
|
|
|
# Server-side session class used.
|
|
SERVER_SESSION_CLASS = "src.server.serversession.ServerSession"
|
|
|
|
# Base paths for typeclassed object classes. These paths must be
|
|
# defined relative evennia's root directory. They will be searched in
|
|
# order to find relative typeclass paths.
|
|
OBJECT_TYPECLASS_PATHS = ["game.gamesrc.objects",
|
|
"game.gamesrc.objects.examples",
|
|
"contrib"]
|
|
SCRIPT_TYPECLASS_PATHS = ["game.gamesrc.scripts",
|
|
"game.gamesrc.scripts.examples",
|
|
"contrib"]
|
|
PLAYER_TYPECLASS_PATHS = ["game.gamesrc.objects", "contrib"]
|
|
CHANNEL_TYPECLASS_PATHS = ["game.gamesrc.conf", "contrib"]
|
|
|
|
# Typeclass for player objects (linked to a character) (fallback)
|
|
BASE_PLAYER_TYPECLASS = "src.players.player.Player"
|
|
# Typeclass and base for all objects (fallback)
|
|
BASE_OBJECT_TYPECLASS = "src.objects.objects.Object"
|
|
# Typeclass for character objects linked to a player (fallback)
|
|
BASE_CHARACTER_TYPECLASS = "src.objects.objects.Character"
|
|
# Typeclass for rooms (fallback)
|
|
BASE_ROOM_TYPECLASS = "src.objects.objects.Room"
|
|
# Typeclass for Exit objects (fallback).
|
|
BASE_EXIT_TYPECLASS = "src.objects.objects.Exit"
|
|
# Typeclass for Channel (fallback).
|
|
BASE_CHANNEL_TYPECLASS = "src.comms.comms.Channel"
|
|
# Typeclass for Scripts (fallback). You usually don't need to change this
|
|
# but create custom variations of scripts on a per-case basis instead.
|
|
BASE_SCRIPT_TYPECLASS = "src.scripts.scripts.DoNothing"
|
|
# The default home location used for all objects. This is used as a
|
|
# fallback if an object's normal home location is deleted. Default
|
|
# is Limbo (#2).
|
|
DEFAULT_HOME = "#2"
|
|
# The start position for new characters. Default is Limbo (#2).
|
|
# MULTISESSION_MODE = 0, 1 - used by default unloggedin create command
|
|
# MULTISESSION_MODE = 2,3 - used by default character_create command
|
|
START_LOCATION = "#2"
|
|
# Lookups of Attributes, Tags, Nicks, Aliases can be aggressively
|
|
# cached to avoid repeated database hits. This often gives noticeable
|
|
# performance gains since they are called so often. Drawback is that
|
|
# if you are accessing the database from multiple processes (such as
|
|
# from a website -not- running Evennia's own webserver) data may go
|
|
# out of sync between the processes. Keep on unless you face such
|
|
# issues.
|
|
TYPECLASS_AGGRESSIVE_CACHE = True
|
|
|
|
######################################################################
|
|
# Batch processors
|
|
######################################################################
|
|
|
|
# Python path to a directory to be searched for batch scripts
|
|
# for the batch processors (.ev and/or .py files).
|
|
BASE_BATCHPROCESS_PATHS = ['game.gamesrc.world', 'contrib']
|
|
|
|
######################################################################
|
|
# Game Time setup
|
|
######################################################################
|
|
|
|
# You don't actually have to use this, but it affects the routines in
|
|
# src.utils.gametime.py and allows for a convenient measure to
|
|
# determine the current in-game time. You can of course interpret
|
|
# "week", "month" etc as your own in-game time units as desired.
|
|
|
|
#The time factor dictates if the game world runs faster (timefactor>1)
|
|
# or slower (timefactor<1) than the real world.
|
|
TIME_FACTOR = 2.0
|
|
# These measures might or might not make sense to your game world.
|
|
TIME_SEC_PER_MIN = 60
|
|
TIME_MIN_PER_HOUR = 60
|
|
TIME_HOUR_PER_DAY = 24
|
|
TIME_DAY_PER_WEEK = 7
|
|
TIME_WEEK_PER_MONTH = 4
|
|
TIME_MONTH_PER_YEAR = 12
|
|
|
|
######################################################################
|
|
# Inlinefunc
|
|
######################################################################
|
|
# Evennia supports inline function preprocessing. This allows
|
|
# users to supply {func() ... {/func in text, performing dynamic
|
|
# text formatting and manipulation on the fly. If disabled, such
|
|
# inline functions will not be parsed.
|
|
INLINEFUNC_ENABLED = True
|
|
# Only functions defined globally (and not starting with '_') in
|
|
# these modules will be considered valid inlinefuncs. The list
|
|
# is loaded from left-to-right, same-named functions will overload
|
|
INLINEFUNC_MODULES = ["src.utils.inlinefunc"]
|
|
|
|
######################################################################
|
|
# Default Player setup and access
|
|
######################################################################
|
|
|
|
# Different Multisession modes allow a player (=account) to connect to the
|
|
# game simultaneously with multiple clients (=sessions). In modes 0,1 there is
|
|
# only one character created to the same name as the account at first login.
|
|
# In modes 2,3 no default character will be created and the MAX_NR_CHARACTERS
|
|
# value (below) defines how many characters the default char_create command
|
|
# allow per player.
|
|
# 0 - single session, one player, one character, when a new session is
|
|
# connected, the old one is disconnected
|
|
# 1 - multiple sessions, one player, one character, each session getting
|
|
# the same data
|
|
# 2 - multiple sessions, one player, many characters, one session per
|
|
# character (disconnects multiplets)
|
|
# 3 - like mode 2, except multiple sessions can puppet one character, each
|
|
# session getting the same data.
|
|
MULTISESSION_MODE = 0
|
|
# The maximum number of characters allowed for MULTISESSION_MODE 2,3. This is
|
|
# checked by the default ooc char-creation command. Forced to 1 for
|
|
# MULTISESSION_MODE 0 and 1.
|
|
MAX_NR_CHARACTERS = 1
|
|
# The access hiearchy, in climbing order. A higher permission in the
|
|
# hierarchy includes access of all levels below it. Used by the perm()/pperm()
|
|
# lock functions.
|
|
PERMISSION_HIERARCHY = ["Guests", # note-only used if GUEST_ENABLED=True
|
|
"Players",
|
|
"PlayerHelpers",
|
|
"Builders",
|
|
"Wizards",
|
|
"Immortals"]
|
|
# The default permission given to all new players
|
|
PERMISSION_PLAYER_DEFAULT = "Players"
|
|
# Default sizes for client window (in number of characters), if client
|
|
# is not supplying this on its own
|
|
CLIENT_DEFAULT_WIDTH = 78
|
|
CLIENT_DEFAULT_HEIGHT = 45 # telnet standard is 24 but does anyone use such
|
|
# low-res displays anymore?
|
|
|
|
######################################################################
|
|
# Guest accounts
|
|
######################################################################
|
|
|
|
# This enables guest logins, by default via "connect guest"
|
|
GUEST_ENABLED = False
|
|
# Typeclass for guest player objects (linked to a character)
|
|
BASE_GUEST_TYPECLASS = "src.players.player.Guest"
|
|
# The permission given to guests
|
|
PERMISSION_GUEST_DEFAULT = "Guests"
|
|
# The default home location used for guests.
|
|
GUEST_HOME = DEFAULT_HOME
|
|
# The start position used for guest characters.
|
|
GUEST_START_LOCATION = START_LOCATION
|
|
# The naming convention used for creating new guest
|
|
# players/characters. The size of this list also detemines how many
|
|
# guests may be on the game at once. The default is a maximum of nine
|
|
# guests, named Guest1 through Guest9.
|
|
GUEST_LIST = ["Guest" + str(s+1) for s in range(9)]
|
|
|
|
######################################################################
|
|
# In-game Channels created from server start
|
|
######################################################################
|
|
|
|
# Each default channel is defined by a tuple containing
|
|
# (name, aliases, description, locks)
|
|
# where aliases may be a tuple too, and locks is
|
|
# a valid lockstring definition.
|
|
# Default user channel for communication
|
|
CHANNEL_PUBLIC = ("Public", ('ooc',), 'Public discussion',
|
|
"control:perm(Wizards);listen:all();send:all()")
|
|
# General info about the server
|
|
CHANNEL_MUDINFO = ("MUDinfo", '', 'Informative messages',
|
|
"control:perm(Immortals);listen:perm(Immortals);send:false()")
|
|
# Channel showing when new people connecting
|
|
CHANNEL_CONNECTINFO = ("MUDconnections", '', 'Connection log',
|
|
"control:perm(Immortals);listen:perm(Wizards);send:false()")
|
|
|
|
######################################################################
|
|
# External Channel connections
|
|
######################################################################
|
|
|
|
# Note: You do *not* have to make your MUD open to
|
|
# the public to use the external connections, they
|
|
# operate as long as you have an internet connection,
|
|
# just like stand-alone chat clients. IRC and IMC2
|
|
# requires that you have twisted.words installed.
|
|
|
|
# Evennia can connect to external IRC channels and
|
|
# echo what is said on the channel to IRC and vice
|
|
# versa. Obs - make sure the IRC network allows bots.
|
|
# When enabled, command @irc2chan will be available in-game
|
|
IRC_ENABLED = False
|
|
# RSS allows to connect RSS feeds (from forum updates, blogs etc) to
|
|
# an in-game channel. The channel will be updated when the rss feed
|
|
# updates. Use @rss2chan in game to connect if this setting is
|
|
# active. OBS: RSS support requires the python-feedparser package to
|
|
# be installed (through package manager or from the website
|
|
# http://code.google.com/p/feedparser/)
|
|
RSS_ENABLED=False
|
|
RSS_UPDATE_INTERVAL = 60*10 # 10 minutes
|
|
|
|
# IMC (Inter-MUD communication) allows to connect an Evennia channel
|
|
# to an IMC2 server. This lets them talk to people on other MUDs also
|
|
# using IMC. Evennia's IMC2 client was developed against MudByte's
|
|
# network. You must register your MUD on the network before you can
|
|
# use it, go to http://www.mudbytes.net/imc2-intermud-join-network.
|
|
# Choose 'Other unsupported IMC2 version' from the choices and and
|
|
# enter your information there. You should enter the same 'short mud
|
|
# name' as your SERVERNAME above, then choose imc network server as
|
|
# well as client/server passwords same as below. When enabled, the
|
|
# command @imc2chan becomes available in-game and allows you to
|
|
# connect Evennia channels to IMC channels on the network. The Evennia
|
|
# discussion channel 'ievennia' is on server01.mudbytes.net:5000.
|
|
|
|
# NOTE - IMC2 is currently NOT FUNCTIONAL due to lack of testing means.
|
|
IMC2_ENABLED = False
|
|
IMC2_NETWORK = "server01.mudbytes.net"
|
|
IMC2_PORT = 5000 # this is the imc2 port, not on localhost
|
|
IMC2_CLIENT_PWD = ""
|
|
IMC2_SERVER_PWD = ""
|
|
|
|
|
|
######################################################################
|
|
# Django web features
|
|
######################################################################
|
|
|
|
# While DEBUG is False, show a regular server error page on the web
|
|
# stuff, email the traceback to the people in the ADMINS tuple
|
|
# below. If True, show a detailed traceback for the web
|
|
# browser to display. Note however that this will leak memory when
|
|
# active, so make sure to turn it off for a production server!
|
|
DEBUG = False
|
|
# While true, show "pretty" error messages for template syntax errors.
|
|
TEMPLATE_DEBUG = DEBUG
|
|
# Emails are sent to these people if the above DEBUG value is False. If you'd
|
|
# rather nobody recieve emails, leave this commented out or empty.
|
|
ADMINS = () #'Your Name', 'your_email@domain.com'),)
|
|
# These guys get broken link notifications when SEND_BROKEN_LINK_EMAILS is True.
|
|
MANAGERS = ADMINS
|
|
# Absolute path to the directory that holds file uploads from web apps.
|
|
# Example: "/home/media/media.lawrence.com"
|
|
MEDIA_ROOT = os.path.join(GAME_DIR, "gamesrc", "web", "media")
|
|
# It's safe to dis-regard this, as it's a Django feature we only half use as a
|
|
# dependency, not actually what it's primarily meant for.
|
|
SITE_ID = 1
|
|
# The age for sessions.
|
|
# Default: 1209600 (2 weeks, in seconds)
|
|
SESSION_COOKIE_AGE = 1209600
|
|
# Session cookie domain
|
|
# Default: None
|
|
SESSION_COOKIE_DOMAIN = None
|
|
# The name of the cookie to use for sessions.
|
|
# Default: 'sessionid'
|
|
SESSION_COOKIE_NAME = 'sessionid'
|
|
# Should the session expire when the browser closes?
|
|
# Default: False
|
|
SESSION_EXPIRE_AT_BROWSER_CLOSE = False
|
|
# If you set this to False, Django will make some optimizations so as not
|
|
# to load the internationalization machinery.
|
|
USE_I18N = False
|
|
# Where to find locales (no need to change this, most likely)
|
|
LOCALE_PATHS = ["../locale/"]
|
|
# This should be turned off unless you want to do tests with Django's
|
|
# development webserver (normally Evennia runs its own server)
|
|
SERVE_MEDIA = False
|
|
# The master urlconf file that contains all of the sub-branches to the
|
|
# applications. Change this to add your own URLs to the website.
|
|
ROOT_URLCONF = 'src.web.urls'
|
|
# Where users are redirected after logging in via contrib.auth.login.
|
|
LOGIN_REDIRECT_URL = '/'
|
|
# Where to redirect users when using the @login_required decorator.
|
|
LOGIN_URL = '/accounts/login'
|
|
# Where to redirect users who wish to logout.
|
|
LOGOUT_URL = '/accounts/login'
|
|
# URL that handles the media served from MEDIA_ROOT.
|
|
# Example: "http://media.lawrence.com"
|
|
MEDIA_URL = '/media/'
|
|
# URL prefix for admin media -- CSS, JavaScript and images. Make sure
|
|
# to use a trailing slash. Django1.4+ will look for admin files under
|
|
# STATIC_URL/admin.
|
|
STATIC_URL = '/static/'
|
|
|
|
STATIC_ROOT = os.path.join(GAME_DIR, "gamesrc", "web", "static")
|
|
|
|
# Directories from which static files will be gathered from.
|
|
STATICFILES_DIRS = (
|
|
os.path.join(GAME_DIR, "gamesrc", "web", "static_overrides"),
|
|
os.path.join(SRC_DIR, "web", "static"),)
|
|
# Patterns of files in the static directories. Used here to make sure that
|
|
# its readme file is preserved but unused.
|
|
STATICFILES_IGNORE_PATTERNS = ('README.md',)
|
|
# The name of the currently selected web template. This corresponds to the
|
|
# directory names shown in the webtemplates directory.
|
|
ACTIVE_TEMPLATE = 'prosimii'
|
|
# We setup the location of the website template as well as the admin site.
|
|
TEMPLATE_DIRS = (
|
|
os.path.join(GAME_DIR, "gamesrc", "web", "template_overrides"),
|
|
os.path.join(SRC_DIR, "web", "templates", ACTIVE_TEMPLATE),
|
|
os.path.join(SRC_DIR, "web", "templates"),)
|
|
# List of callables that know how to import templates from various sources.
|
|
TEMPLATE_LOADERS = (
|
|
'django.template.loaders.filesystem.Loader',
|
|
'django.template.loaders.app_directories.Loader',)
|
|
# MiddleWare are semi-transparent extensions to Django's functionality.
|
|
# see http://www.djangoproject.com/documentation/middleware/ for a more detailed
|
|
# explanation.
|
|
MIDDLEWARE_CLASSES = (
|
|
'django.middleware.common.CommonMiddleware',
|
|
'django.contrib.sessions.middleware.SessionMiddleware',
|
|
'django.contrib.messages.middleware.MessageMiddleware', # 1.4?
|
|
'django.contrib.auth.middleware.AuthenticationMiddleware',
|
|
'django.middleware.csrf.CsrfViewMiddleware',
|
|
'django.contrib.admindocs.middleware.XViewMiddleware',
|
|
'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',)
|
|
# Context processors define context variables, generally for the template
|
|
# system to use.
|
|
TEMPLATE_CONTEXT_PROCESSORS = (
|
|
'django.core.context_processors.i18n',
|
|
'django.core.context_processors.request',
|
|
'django.contrib.auth.context_processors.auth',
|
|
'django.core.context_processors.media',
|
|
'django.core.context_processors.debug',
|
|
'src.web.utils.general_context.general_context',)
|
|
|
|
######################################################################
|
|
# Evennia components
|
|
######################################################################
|
|
|
|
# Global and Evennia-specific apps. This ties everything together so we can
|
|
# refer to app models and perform DB syncs.
|
|
INSTALLED_APPS = (
|
|
'django.contrib.auth',
|
|
'django.contrib.sites',
|
|
'django.contrib.contenttypes',
|
|
'django.contrib.sessions',
|
|
'django.contrib.admin',
|
|
'django.contrib.admindocs',
|
|
'django.contrib.flatpages',
|
|
'django.contrib.staticfiles',
|
|
'src.server',
|
|
'src.typeclasses',
|
|
'src.players',
|
|
'src.objects',
|
|
'src.comms',
|
|
'src.help',
|
|
'src.scripts',
|
|
'src.web.webclient')
|
|
# The user profile extends the User object with more functionality;
|
|
# This should usually not be changed.
|
|
AUTH_USER_MODEL = "players.PlayerDB"
|
|
#AUTH_PROFILE_MODULE = "players.PlayerDB"
|
|
# Use a custom test runner that just tests Evennia-specific apps.
|
|
TEST_RUNNER = 'src.server.tests.EvenniaTestSuiteRunner'
|
|
|
|
######################################################################
|
|
# Django extensions
|
|
######################################################################
|
|
|
|
# Django extesions are useful third-party tools that are not
|
|
# always included in the default django distro.
|
|
try:
|
|
import django_extensions
|
|
INSTALLED_APPS = INSTALLED_APPS + ('django_extensions',)
|
|
except ImportError:
|
|
pass
|
|
|
|
#######################################################################
|
|
# SECRET_KEY
|
|
#######################################################################
|
|
# This is the salt for cryptographic hashing used by Django.
|
|
# It is a fallback for the SECRET_KEY setting in settings.py, which
|
|
# is randomly seeded when settings.py is first created. If copying
|
|
# from here, make sure to change it!
|
|
SECRET_KEY = 'changeme!(*#&*($&*(#*(&SDFKJJKLS*(@#KJAS'
|