1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
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
|