38 lines
1.0 KiB
Python
38 lines
1.0 KiB
Python
import logging
|
|
|
|
from django.conf import settings
|
|
from django.shortcuts import render
|
|
|
|
from authentications.decorators import authenticated_user
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
# Function that generates a token depending on unsername and masterpassword
|
|
# The masterpassword must be 32 characters long!
|
|
def create_token(username, masterpassword):
|
|
padded_username = username.ljust(32, ":")
|
|
token = bytearray()
|
|
|
|
# xor connect with masterpassword to create token
|
|
for i in range(32):
|
|
token.append(ord(padded_username[i]) ^ ord(masterpassword[i]))
|
|
|
|
return token.hex()
|
|
|
|
|
|
@authenticated_user
|
|
def index(request):
|
|
context = {"mctoken": "", "valid_master_pwd": True}
|
|
|
|
masterpassword = settings.MC_MASTERPASSWORD
|
|
|
|
if len(masterpassword) != 32:
|
|
context["valid_master_pwd"] = False
|
|
logger.error("Masterpassword must be 32 characters long")
|
|
else:
|
|
token = create_token(str(request.user), masterpassword)
|
|
context["mctoken"] = token
|
|
|
|
return render(request, "minecraft/index.html", context)
|