diff options
author | NEMESIS13cz <seke94@seznam.cz> | 2015-07-23 01:20:07 +0200 |
---|---|---|
committer | NEMESIS13cz <seke94@seznam.cz> | 2015-07-23 01:20:07 +0200 |
commit | 09e0d761f53e25ad025dbf06b032766f9b94d6e7 (patch) | |
tree | bdf29a6d431c0cfd463f5bfb30d3f85e81ad2dfe /loginsecurity.py | |
parent | f64d3074e17c4556b6c71d68617b8e787f37eb01 (diff) |
modified: loginsecurity.py
Fixed scheduler and commands
Diffstat (limited to 'loginsecurity.py')
-rw-r--r-- | loginsecurity.py | 36 |
1 files changed, 21 insertions, 15 deletions
diff --git a/loginsecurity.py b/loginsecurity.py index 57455cc..b35bba5 100644 --- a/loginsecurity.py +++ b/loginsecurity.py @@ -6,8 +6,7 @@ import threading from login_secrets import * #Don't forget to make login_secrets aswell import mysqlhack from com.ziclix.python.sql import zxJDBC -import subprocess - +from java.lang import Runnable wait_time = 5 #seconds admin_perm = "utils.loginsecurity.admin" @@ -40,6 +39,8 @@ def matches_thread(password, user): senderLimit = 0, helpNoargs = True) def change_pass_command(sender, command, label, args): + if sender.getName() in logging_in: + return "&cYou are not logged in" if not len(args) == 2: return "&cInvalid arguments" password = args[0] @@ -85,6 +86,8 @@ def register_command(sender, command, label, args): amax = 0, helpNoargs = False) def rmpass_command(sender, command, label, args): + if sender.getName() in logging_in: + return "&cYou are not logged in" if not is_registered(uid(sender)): return "&cYou are not registered!" if not sender.getName() in logging_in: @@ -98,13 +101,15 @@ def rmpass_command(sender, command, label, args): description = "Removes password of <user> and sends them a notification", helpNoargs = True) def rmotherpass_command(sender, command, label, args): + if sender.getName() in logging_in: + return "&cYou are not logged in" if not sender.hasPermission(admin_perm): noperm(sender) return user = server.getOfflinePlayer(args[0]) if is_registered(uid(user)): delete_pass(uid(user)) - runas(server.getConsoleSender(), colorify("mail send %s &cYour password was reset by a staff member. Use &6/register&c to set a new one." % sender.getName())) + runas(server.getConsoleSender(), colorify("mail send %s &cYour password was reset by a staff member. Use &6/register&c to set a new one." % user.getName())) return "&aPassword of %s reset successfully" % user.getName() return "&cThat player could not be found (or is not registered)" @@ -170,24 +175,26 @@ def on_join(event): def on_quit(event): if event.getPlayer().getName() in logging_in: del logging_in[event.getPlayer().getName()] -""" + ##Threading start +class kick_class(Runnable): + + def __init__(self, player): + self.player = player + + def run(self): + if player.isOnline(): + self.player.kickPlayer(colorify("&aLogin timed out")) + def kick_thread(): while True: time.sleep(1) now = time.time() for name, jointime in logging_in.iteritems(): if now - jointime > wait_time: - address = server.getPlayer(name).getAddress().toString() - address = list(address) - ip = "" - for char in address: - if not char == ":": - if not char == "/": - ip += char - else: - break - subprocess.call("tcpkill host %s" % ip, shell = True) + player = server.getPlayer(name) + kick = kick_class(player) + server.getScheduler().runTask(server.getPluginManager().getPlugin("RedstonerUtils"), kick) if name in logging_in: del logging_in[name] break @@ -198,7 +205,6 @@ thread = threading.Thread(target = kick_thread) thread.daemon = True thread.start() ##Threading end -""" for blocked_event in blocked_events: @hook.event(blocked_event, "high") |