mirror of
https://github.com/evennia/evennia.git
synced 2026-04-03 14:37:17 +02:00
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 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
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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')
|
||||
|
|
|
|||
|
|
@ -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')
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue