Further refactoring towards #1176.
This commit is contained in:
parent
09245589f5
commit
a9f08760cc
4 changed files with 14 additions and 11 deletions
|
|
@ -92,7 +92,7 @@ from __future__ import print_function
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from evennia.utils import utils
|
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):
|
def _to_player(accessing_obj):
|
||||||
|
|
@ -161,7 +161,7 @@ def perm(accessing_obj, accessed_obj, *args, **kwargs):
|
||||||
gtmode = kwargs.pop("_greater_than", False)
|
gtmode = kwargs.pop("_greater_than", False)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
perm = args[0].lower()
|
permission = args[0].lower()
|
||||||
perms_object = [p.lower() for p in accessing_obj.permissions.all()]
|
perms_object = [p.lower() for p in accessing_obj.permissions.all()]
|
||||||
except (AttributeError, IndexError):
|
except (AttributeError, IndexError):
|
||||||
return False
|
return False
|
||||||
|
|
@ -171,9 +171,9 @@ def perm(accessing_obj, accessed_obj, *args, **kwargs):
|
||||||
perms_player = [p.lower() for p in player.permissions.all()]
|
perms_player = [p.lower() for p in player.permissions.all()]
|
||||||
is_quell = player.attributes.get("_quell")
|
is_quell = player.attributes.get("_quell")
|
||||||
|
|
||||||
if perm in _PERMISSION_HIERARCHY:
|
if permission in _PERMISSION_HIERARCHY:
|
||||||
# check hierarchy without allowing escalation obj->player
|
# 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 for hpos, hperm in enumerate(_PERMISSION_HIERARCHY) if hperm in perms_player]
|
||||||
hpos_player = hpos_player and hpos_player[-1] or -1
|
hpos_player = hpos_player and hpos_player[-1] or -1
|
||||||
if is_quell:
|
if is_quell:
|
||||||
|
|
@ -187,17 +187,17 @@ def perm(accessing_obj, accessed_obj, *args, **kwargs):
|
||||||
return hpos_target < hpos_player
|
return hpos_target < hpos_player
|
||||||
else:
|
else:
|
||||||
return hpos_target <= hpos_player
|
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
|
# if we get here, check player perms first, otherwise
|
||||||
# continue as normal
|
# continue as normal
|
||||||
return True
|
return True
|
||||||
|
|
||||||
if perm in perms_object:
|
if permission in perms_object:
|
||||||
# simplest case - we have direct match
|
# simplest case - we have direct match
|
||||||
return True
|
return True
|
||||||
if perm in _PERMISSION_HIERARCHY:
|
if permission in _PERMISSION_HIERARCHY:
|
||||||
# check if we have a higher hierarchy position
|
# 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)
|
return any(1 for hpos, hperm in enumerate(_PERMISSION_HIERARCHY)
|
||||||
if hperm in perms_object and hpos_target < hpos)
|
if hperm in perms_object and hpos_target < hpos)
|
||||||
return False
|
return False
|
||||||
|
|
@ -252,11 +252,11 @@ def dbref(accessing_obj, accessed_obj, *args, **kwargs):
|
||||||
if not args:
|
if not args:
|
||||||
return False
|
return False
|
||||||
try:
|
try:
|
||||||
dbref = int(args[0].strip().strip('#'))
|
dbr = int(args[0].strip().strip('#'))
|
||||||
except ValueError:
|
except ValueError:
|
||||||
return False
|
return False
|
||||||
if hasattr(accessing_obj, 'dbid'):
|
if hasattr(accessing_obj, 'dbid'):
|
||||||
return dbref == accessing_obj.dbid
|
return dbr == accessing_obj.dbid
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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)]
|
PORTAL_SERVICES_PLUGIN_MODULES = [mod_import(module) for module in make_iter(settings.PORTAL_SERVICES_PLUGIN_MODULES)]
|
||||||
LOCKDOWN_MODE = settings.LOCKDOWN_MODE
|
LOCKDOWN_MODE = settings.LOCKDOWN_MODE
|
||||||
|
|
||||||
|
PORTAL_PIDFILE = ""
|
||||||
if os.name == 'nt':
|
if os.name == 'nt':
|
||||||
# For Windows we need to handle pid files manually.
|
# For Windows we need to handle pid files manually.
|
||||||
PORTAL_PIDFILE = os.path.join(settings.GAME_DIR, "server", 'portal.pid')
|
PORTAL_PIDFILE = os.path.join(settings.GAME_DIR, "server", 'portal.pid')
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,7 @@ from evennia.server.sessionhandler import SESSIONS
|
||||||
|
|
||||||
_SA = object.__setattr__
|
_SA = object.__setattr__
|
||||||
|
|
||||||
|
SERVER_PIDFILE = ""
|
||||||
if os.name == 'nt':
|
if os.name == 'nt':
|
||||||
# For Windows we need to handle pid files manually.
|
# For Windows we need to handle pid files manually.
|
||||||
SERVER_PIDFILE = os.path.join(settings.GAME_DIR, "server", 'server.pid')
|
SERVER_PIDFILE = os.path.join(settings.GAME_DIR, "server", 'server.pid')
|
||||||
|
|
|
||||||
|
|
@ -560,7 +560,8 @@ class WebSocketProtocol(ProtocolWrapper):
|
||||||
request, chaff, self.buf = self.buf.partition("\r\n")
|
request, chaff, self.buf = self.buf.partition("\r\n")
|
||||||
try:
|
try:
|
||||||
# verb and version are never used, maybe in the future.
|
# 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:
|
except ValueError:
|
||||||
self.loseConnection()
|
self.loseConnection()
|
||||||
else:
|
else:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue