Lots of fixes, added player loading/ unloading, login.py custom event system, mysql_utils.columns property
This commit is contained in:
129
login.py
Normal file
129
login.py
Normal file
@@ -0,0 +1,129 @@
|
||||
from wrapper import *
|
||||
from passlib.hash import pbkdf2_sha256 as crypt
|
||||
|
||||
@event_handler("player_login","normal", utils = True)
|
||||
def player_join(*args):
|
||||
player = args[1]
|
||||
if not player.registered:
|
||||
player.authenticated = True
|
||||
player.msg("Successfully logged in!")
|
||||
|
||||
"""
|
||||
@event_handler("player.PlayerCommandPreprocessEvent", "lowest")
|
||||
def on_login_command(event):
|
||||
player = event.player
|
||||
password = event.message.replace("/login", "").replace(" ", "")
|
||||
event.message = event.player.name + " Attempting to login!"
|
||||
event.cancelled = True
|
||||
|
||||
@async(daemon = True)
|
||||
def check_pass(player, password):
|
||||
print password
|
||||
if not player.registered:
|
||||
player.msg("You are not registered! use /register <password> to register!")
|
||||
return
|
||||
else:
|
||||
if crypt.verify(password, player.password):
|
||||
player.authenticated = True
|
||||
player.msg("Successfully logged in!")
|
||||
else:
|
||||
print event.message
|
||||
player.msg("Wrong password!")
|
||||
check_pass(player, password)"""
|
||||
|
||||
@command("login")
|
||||
@async(daemon = True)
|
||||
def on_login_command(**kwargs):
|
||||
player = kwargs["sender"]
|
||||
args = kwargs["args"]
|
||||
|
||||
if not player.registered:
|
||||
player.msg("You are not registered! use /register <password> to register!")
|
||||
return
|
||||
if len(args) > 1:
|
||||
player.msg("The syntax is /login <password>")
|
||||
return
|
||||
elif len(args) is 1:
|
||||
if crypt.verify(args[0], player.password):
|
||||
player.authenticated = True
|
||||
player.msg("Successfully logged in!")
|
||||
else:
|
||||
player.msg("Wrong password!")
|
||||
|
||||
@command("changepass")
|
||||
@async(daemon = True)
|
||||
def on_changepass_command(**kwargs):
|
||||
player = kwargs["sender"]
|
||||
args = kwargs["args"]
|
||||
|
||||
if not player.registered:
|
||||
player.msg("You are not registered! use /register <password> to register!")
|
||||
return
|
||||
|
||||
if len(args) < 2:
|
||||
player.msg("The syntax is /login <current_password> <new_password>")
|
||||
return
|
||||
elif len(args) is 2:
|
||||
if crypt.verify(args[0], player.password):
|
||||
player.password = crypt.encrypt(args[1], rounds=200000, salt_size=16)
|
||||
player.msg("Successfully changed your password!")
|
||||
player.save()
|
||||
else:
|
||||
player.msg("You have entered an incorrect current password!")
|
||||
|
||||
@command("removepass")
|
||||
@async(daemon = True)
|
||||
def on_removepass_command(**kwargs):
|
||||
player = kwargs["sender"]
|
||||
args = kwargs["args"]
|
||||
|
||||
if not player.registered:
|
||||
player.msg("You are not registered! use /register <password> to register!")
|
||||
return
|
||||
|
||||
if len(args) < 1:
|
||||
player.msg("The syntax is /removepass <current_password>")
|
||||
return
|
||||
|
||||
elif len(args) is 1:
|
||||
if crypt.verify(args[0], player.password):
|
||||
player.password = "None"
|
||||
player.registered = False
|
||||
player.save()
|
||||
player.msg("Successfully removed your password!")
|
||||
else:
|
||||
player.msg("You have entered an incorrect current password!")
|
||||
|
||||
|
||||
|
||||
|
||||
@command("register")
|
||||
@async(daemon = True)
|
||||
def on_register_command(**kwargs):
|
||||
player = kwargs["sender"]
|
||||
args = kwargs["args"]
|
||||
if len(args) > 1:
|
||||
player.msg("The syntax is /register <password>")
|
||||
return
|
||||
elif len(args) is 1:
|
||||
if player.registered:
|
||||
player.msg("You are already registered!")
|
||||
return
|
||||
player.password = crypt.encrypt(args[0], rounds=200000, salt_size=16)
|
||||
player.registered = True
|
||||
print player.password
|
||||
player.save()
|
||||
player.msg("Successfully registered!")
|
||||
|
||||
|
||||
blocked_events = ["block.BlockBreakEvent", "block.BlockPlaceEvent", "player.PlayerMoveEvent",
|
||||
"player.AsyncPlayerChatEvent","player.PlayerTeleportEvent",
|
||||
"player.PlayerInteractEvent"]
|
||||
|
||||
for event in blocked_events:
|
||||
@event_handler(event_name = event, priority = "highest")
|
||||
def on_blocked_event(event):
|
||||
if not event.player.authenticated:
|
||||
event.cancelled = True
|
||||
|
||||
|
||||
71
util_events.py
Normal file
71
util_events.py
Normal file
@@ -0,0 +1,71 @@
|
||||
from thread_utils import *
|
||||
|
||||
MONITOR_PRIORITY = "monitor"
|
||||
HIGHEST_PRIORITY = "highest"
|
||||
HIGH_PRIORITY = "high"
|
||||
NORMAL_PRIORITY = "normal"
|
||||
LOW_PRIORITY = "low"
|
||||
LOWEST_PRIORITY = "lowest"
|
||||
|
||||
priorities = ["lowest","low","normal","high","highest","monitor"]
|
||||
events = []
|
||||
|
||||
class base_event():
|
||||
def __init__(self,event_name):
|
||||
self.name = event_name
|
||||
self.canceled = False
|
||||
self._handlers = [ [],[],[],[],[],[] ]
|
||||
|
||||
self.canceled_lock = threading.Lock()
|
||||
|
||||
def add_handler(self,function,priority):
|
||||
for prior in priorities:
|
||||
if prior == priority:
|
||||
self._handlers[priorities.index(prior)].append(function)
|
||||
|
||||
def fire(self,*args):
|
||||
for priority in self._handlers:
|
||||
for handler in priority:
|
||||
handler(self,*args)
|
||||
|
||||
def set_canceled(self,state):
|
||||
with self.canceled_lock:
|
||||
self.canceled = state
|
||||
|
||||
|
||||
class utils_events(base_event):
|
||||
def __init__(self,event_name):
|
||||
base_event.__init__(self,event_name)
|
||||
|
||||
|
||||
def add_event(event_name,event = base_event): #Adds a new event
|
||||
event = event(event_name)
|
||||
events.append(event)
|
||||
|
||||
def fire_event(event_name,*args): #Fires the event
|
||||
for event in events:
|
||||
if event.name == event_name:
|
||||
event.fire(*args)
|
||||
return event
|
||||
|
||||
def check_events(event_name): #Returns false if the even does not exist.
|
||||
for event in events:
|
||||
if event.name == event_name:
|
||||
return True
|
||||
return False
|
||||
|
||||
|
||||
#Decorator
|
||||
def utils_event(event_name, priority, create_event=base_event):
|
||||
def event_decorator(function):
|
||||
def wrapper(*args, **kwargs):
|
||||
pass
|
||||
|
||||
if not check_events(event_name): #Check if the event exists, if not create it.
|
||||
add_event(event_name,create_event)
|
||||
|
||||
for event in events: #Go through the list of events, find the one we need and call all of its handlers
|
||||
if event.name == event_name:
|
||||
event.add_handler(function,priority)
|
||||
return wrapper
|
||||
return event_decorator
|
||||
Reference in New Issue
Block a user