modified: loginsecurity.py
Fixed scheduler and commands
This commit is contained in:
@@ -6,8 +6,7 @@ import threading
|
|||||||
from login_secrets import * #Don't forget to make login_secrets aswell
|
from login_secrets import * #Don't forget to make login_secrets aswell
|
||||||
import mysqlhack
|
import mysqlhack
|
||||||
from com.ziclix.python.sql import zxJDBC
|
from com.ziclix.python.sql import zxJDBC
|
||||||
import subprocess
|
from java.lang import Runnable
|
||||||
|
|
||||||
|
|
||||||
wait_time = 5 #seconds
|
wait_time = 5 #seconds
|
||||||
admin_perm = "utils.loginsecurity.admin"
|
admin_perm = "utils.loginsecurity.admin"
|
||||||
@@ -40,6 +39,8 @@ def matches_thread(password, user):
|
|||||||
senderLimit = 0,
|
senderLimit = 0,
|
||||||
helpNoargs = True)
|
helpNoargs = True)
|
||||||
def change_pass_command(sender, command, label, args):
|
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:
|
if not len(args) == 2:
|
||||||
return "&cInvalid arguments"
|
return "&cInvalid arguments"
|
||||||
password = args[0]
|
password = args[0]
|
||||||
@@ -85,6 +86,8 @@ def register_command(sender, command, label, args):
|
|||||||
amax = 0,
|
amax = 0,
|
||||||
helpNoargs = False)
|
helpNoargs = False)
|
||||||
def rmpass_command(sender, command, label, args):
|
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)):
|
if not is_registered(uid(sender)):
|
||||||
return "&cYou are not registered!"
|
return "&cYou are not registered!"
|
||||||
if not sender.getName() in logging_in:
|
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",
|
description = "Removes password of <user> and sends them a notification",
|
||||||
helpNoargs = True)
|
helpNoargs = True)
|
||||||
def rmotherpass_command(sender, command, label, args):
|
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):
|
if not sender.hasPermission(admin_perm):
|
||||||
noperm(sender)
|
noperm(sender)
|
||||||
return
|
return
|
||||||
user = server.getOfflinePlayer(args[0])
|
user = server.getOfflinePlayer(args[0])
|
||||||
if is_registered(uid(user)):
|
if is_registered(uid(user)):
|
||||||
delete_pass(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 "&aPassword of %s reset successfully" % user.getName()
|
||||||
return "&cThat player could not be found (or is not registered)"
|
return "&cThat player could not be found (or is not registered)"
|
||||||
|
|
||||||
@@ -170,24 +175,26 @@ def on_join(event):
|
|||||||
def on_quit(event):
|
def on_quit(event):
|
||||||
if event.getPlayer().getName() in logging_in:
|
if event.getPlayer().getName() in logging_in:
|
||||||
del logging_in[event.getPlayer().getName()]
|
del logging_in[event.getPlayer().getName()]
|
||||||
"""
|
|
||||||
##Threading start
|
##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():
|
def kick_thread():
|
||||||
while True:
|
while True:
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
now = time.time()
|
now = time.time()
|
||||||
for name, jointime in logging_in.iteritems():
|
for name, jointime in logging_in.iteritems():
|
||||||
if now - jointime > wait_time:
|
if now - jointime > wait_time:
|
||||||
address = server.getPlayer(name).getAddress().toString()
|
player = server.getPlayer(name)
|
||||||
address = list(address)
|
kick = kick_class(player)
|
||||||
ip = ""
|
server.getScheduler().runTask(server.getPluginManager().getPlugin("RedstonerUtils"), kick)
|
||||||
for char in address:
|
|
||||||
if not char == ":":
|
|
||||||
if not char == "/":
|
|
||||||
ip += char
|
|
||||||
else:
|
|
||||||
break
|
|
||||||
subprocess.call("tcpkill host %s" % ip, shell = True)
|
|
||||||
if name in logging_in:
|
if name in logging_in:
|
||||||
del logging_in[name]
|
del logging_in[name]
|
||||||
break
|
break
|
||||||
@@ -198,7 +205,6 @@ thread = threading.Thread(target = kick_thread)
|
|||||||
thread.daemon = True
|
thread.daemon = True
|
||||||
thread.start()
|
thread.start()
|
||||||
##Threading end
|
##Threading end
|
||||||
"""
|
|
||||||
|
|
||||||
for blocked_event in blocked_events:
|
for blocked_event in blocked_events:
|
||||||
@hook.event(blocked_event, "high")
|
@hook.event(blocked_event, "high")
|
||||||
|
|||||||
Reference in New Issue
Block a user