Further refactoring towards #1176.

This commit is contained in:
Griatch 2017-02-02 00:02:58 +01:00
parent 09245589f5
commit a9f08760cc
4 changed files with 14 additions and 11 deletions

View file

@ -92,7 +92,7 @@ from __future__ import print_function
from django.conf import settings
from evennia.utils import utils
_PERMISSION_HIERARCHY = [p.lower() for p in settings.PERMISSION_HIERARCHY]
_PERMISSION_HIERARCHY = [pe.lower() for pe in settings.PERMISSION_HIERARCHY]
def _to_player(accessing_obj):
@ -161,7 +161,7 @@ def perm(accessing_obj, accessed_obj, *args, **kwargs):
gtmode = kwargs.pop("_greater_than", False)
try:
perm = args[0].lower()
permission = args[0].lower()
perms_object = [p.lower() for p in accessing_obj.permissions.all()]
except (AttributeError, IndexError):
return False
@ -171,9 +171,9 @@ def perm(accessing_obj, accessed_obj, *args, **kwargs):
perms_player = [p.lower() for p in player.permissions.all()]
is_quell = player.attributes.get("_quell")
if perm in _PERMISSION_HIERARCHY:
if permission in _PERMISSION_HIERARCHY:
# check hierarchy without allowing escalation obj->player
hpos_target = _PERMISSION_HIERARCHY.index(perm)
hpos_target = _PERMISSION_HIERARCHY.index(permission)
hpos_player = [hpos for hpos, hperm in enumerate(_PERMISSION_HIERARCHY) if hperm in perms_player]
hpos_player = hpos_player and hpos_player[-1] or -1
if is_quell:
@ -187,17 +187,17 @@ def perm(accessing_obj, accessed_obj, *args, **kwargs):
return hpos_target < hpos_player
else:
return hpos_target <= hpos_player
elif not is_quell and perm in perms_player:
elif not is_quell and permission in perms_player:
# if we get here, check player perms first, otherwise
# continue as normal
return True
if perm in perms_object:
if permission in perms_object:
# simplest case - we have direct match
return True
if perm in _PERMISSION_HIERARCHY:
if permission in _PERMISSION_HIERARCHY:
# check if we have a higher hierarchy position
hpos_target = _PERMISSION_HIERARCHY.index(perm)
hpos_target = _PERMISSION_HIERARCHY.index(permission)
return any(1 for hpos, hperm in enumerate(_PERMISSION_HIERARCHY)
if hperm in perms_object and hpos_target < hpos)
return False
@ -252,11 +252,11 @@ def dbref(accessing_obj, accessed_obj, *args, **kwargs):
if not args:
return False
try:
dbref = int(args[0].strip().strip('#'))
dbr = int(args[0].strip().strip('#'))
except ValueError:
return False
if hasattr(accessing_obj, 'dbid'):
return dbref == accessing_obj.dbid
return dbr == accessing_obj.dbid
return False

View file

@ -32,6 +32,7 @@ from evennia.server.webserver import EvenniaReverseProxyResource
PORTAL_SERVICES_PLUGIN_MODULES = [mod_import(module) for module in make_iter(settings.PORTAL_SERVICES_PLUGIN_MODULES)]
LOCKDOWN_MODE = settings.LOCKDOWN_MODE
PORTAL_PIDFILE = ""
if os.name == 'nt':
# For Windows we need to handle pid files manually.
PORTAL_PIDFILE = os.path.join(settings.GAME_DIR, "server", 'portal.pid')

View file

@ -38,6 +38,7 @@ from evennia.server.sessionhandler import SESSIONS
_SA = object.__setattr__
SERVER_PIDFILE = ""
if os.name == 'nt':
# For Windows we need to handle pid files manually.
SERVER_PIDFILE = os.path.join(settings.GAME_DIR, "server", 'server.pid')

View file

@ -560,7 +560,8 @@ class WebSocketProtocol(ProtocolWrapper):
request, chaff, self.buf = self.buf.partition("\r\n")
try:
# verb and version are never used, maybe in the future.
verb, self.location, version = request.split(" ")
#verb, self.location, version
_, self.location, _ = request.split(" ")
except ValueError:
self.loseConnection()
else: