112 lines
3.1 KiB
Python
112 lines
3.1 KiB
Python
from helpers import *
|
|
from secrets import *
|
|
import mysqlhack
|
|
from com.ziclix.python.sql import zxJDBC
|
|
|
|
"""
|
|
WORK IN PROGRESS
|
|
"""
|
|
|
|
#-----------------------Config--------------------------
|
|
|
|
config_file = "website-roles"
|
|
|
|
ranks = {
|
|
"member" : 3,
|
|
"builder" : 7,
|
|
"trusted" : 8,
|
|
"helper" : 9,
|
|
"trainingmod" : 10,
|
|
"mod" : 4,
|
|
"admin" : 5
|
|
}
|
|
|
|
ranks = open_json_file(config_file, ranks)
|
|
|
|
def save_ranks():
|
|
save_json_file(config_file, ranks)
|
|
|
|
#-----------------------Event---------------------------
|
|
|
|
@hook.event("player.PlayerJoinEvent", "normal")
|
|
def on_player_join(event):
|
|
user = event.getPlayer()
|
|
uuid = uid(player).replace("-", "")
|
|
|
|
sql_instruction
|
|
|
|
def callback_thing(role, args):
|
|
|
|
if role in [1, 2, 6]: #Disabled/Banned/Superadmin
|
|
return
|
|
if role != None:
|
|
for rank in ranks:
|
|
if user.hasPermission("group." + rank):
|
|
if role != ranks[rank]:
|
|
set_role(uuid, ranks[rank])
|
|
elif user.hasPlayedBefore():
|
|
msg(user, "&cYou haven't registed yet! Make sure to do so on redstoner.com")
|
|
|
|
|
|
def get_role(uuid):
|
|
results = execute_query("SELECT `role_id` FROM users WHERE `uuid` = ? LIMIT 1;", uuid)
|
|
return results[0][0]
|
|
# Returns a table with 1 row (LIMIT 1) and 1 column (SELECT `role_id`), so we're looking for the first row of the first column.
|
|
|
|
|
|
def set_role(uuid, role_id):
|
|
execute_update("UPDATE users SET `role_id` = ? WHERE `uuid` = ?;", (role_id, uuid,))
|
|
# %d is like %s for integers (unlogically, you'd expect something like %i), though %s also works here.
|
|
|
|
|
|
def execute_query(query, uuid):
|
|
conn = zxJDBC.connect(mysql_database, mysql_user, mysql_pass, "com.mysql.jdbc.Driver")
|
|
curs = conn.cursor()
|
|
curs.execute(query, (uuid,))
|
|
results = curs.fetchall()
|
|
curs.close()
|
|
conn.close()
|
|
return results
|
|
|
|
|
|
def execute_update(update, uuid):
|
|
conn = zxJDBC.connect(mysql_database, mysql_user, mysql_pass, "com.mysql.jdbc.Driver")
|
|
curs = conn.cursor()
|
|
curs.execute(update, (uuid,))
|
|
conn.commit()
|
|
curs.close()
|
|
conn.close()
|
|
|
|
def get_role(uuid):
|
|
sql_instruction()
|
|
|
|
#--------------------------------Queries / Updates----------------------------
|
|
|
|
def sql_instruction(instruction, args, fetch = True, callback_func = ignored_func, callback_args = tuple()):
|
|
thread = threading.Thread(target = curs_instruction, args = (instruction_executor, instruction, fetch, callback_func, callback_args))
|
|
thread.start()
|
|
|
|
|
|
def curs_instruction(func, instruction, fetch, callback_func, callback_args):
|
|
conn = zxJDBC.connect(mysql_database, mysql_user, mysql_pass, "com.mysql.jdbc.Driver")
|
|
curs = conn.getCursor()
|
|
|
|
if fetch:
|
|
returned = func(curs, instruction, fetch)
|
|
curs.close()
|
|
conn.close()
|
|
callback_func(returned, callback_args)
|
|
|
|
else:
|
|
func(curs, instruction, fetch)
|
|
conn.commit()
|
|
curs.close()
|
|
conn.close()
|
|
|
|
|
|
def instruction_executor(curs, instruction, fetch):
|
|
curs.execute(instruction)
|
|
return curs.fetchall() if fetch else None
|
|
|
|
def ignored_func(*args):
|
|
pass |