From 38fe709cb75538f13c6a1157c5461407b8f3d76f Mon Sep 17 00:00:00 2001 From: Stephen Meier Date: Sat, 16 Jan 2021 11:05:07 -0500 Subject: [PATCH 1/6] Make use of environmental variables for superuser creation --- evennia/server/evennia_launcher.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/evennia/server/evennia_launcher.py b/evennia/server/evennia_launcher.py index dcfbbb8a7c..bfa75dcbc6 100644 --- a/evennia/server/evennia_launcher.py +++ b/evennia/server/evennia_launcher.py @@ -1423,7 +1423,21 @@ def create_superuser(): "\nCreate a superuser below. The superuser is Account #1, the 'owner' " "account of the server. Email is optional and can be empty.\n" ) - django.core.management.call_command("createsuperuser", interactive=True) + + from os import environ + if ("DJANGO_SUPERUSER_USERNAME" in environ) and ("DJANGO_SUPERUSER_EMAIL" in environ): + username, email = environ["DJANGO_SUPERUSER_USERNAME"], environ["DJANGO_SUPERUSER_EMAIL"] + django.core.management.call_command("createsuperuser", "--noinput", + "--username=" + username, + "--email=" + email, interactive=False) + if "DJANGO_SUPERUSER_PASSWORD" in environ: + password = environ["DJANGO_SUPERUSER_PASSWORD"] + from evennia.accounts.models import AccountDB + u = AccountDB.objects.get(username=username) + u.set_password(password) + u.save() + else: + django.core.management.call_command("createsuperuser", interactive=True) def check_database(always_return=False): From 6dc2b5b7672666d8706a60b3ff3cf213bd2ad890 Mon Sep 17 00:00:00 2001 From: Stephen Meier Date: Mon, 18 Jan 2021 17:10:48 -0500 Subject: [PATCH 2/6] Changing the envvars names to begin with EVENNIA instead of DJANGO --- evennia/server/evennia_launcher.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/evennia/server/evennia_launcher.py b/evennia/server/evennia_launcher.py index bfa75dcbc6..7fe5183572 100644 --- a/evennia/server/evennia_launcher.py +++ b/evennia/server/evennia_launcher.py @@ -1425,13 +1425,13 @@ def create_superuser(): ) from os import environ - if ("DJANGO_SUPERUSER_USERNAME" in environ) and ("DJANGO_SUPERUSER_EMAIL" in environ): - username, email = environ["DJANGO_SUPERUSER_USERNAME"], environ["DJANGO_SUPERUSER_EMAIL"] + if ("EVENNIA_SUPERUSER_USERNAME" in environ) and ("EVENNIA_SUPERUSER_EMAIL" in environ): + username, email = environ["EVENNIA_SUPERUSER_USERNAME"], environ["EVENNIA_SUPERUSER_EMAIL"] django.core.management.call_command("createsuperuser", "--noinput", "--username=" + username, "--email=" + email, interactive=False) - if "DJANGO_SUPERUSER_PASSWORD" in environ: - password = environ["DJANGO_SUPERUSER_PASSWORD"] + if "EVENNIA_SUPERUSER_PASSWORD" in environ: + password = environ["EVENNIA_SUPERUSER_PASSWORD"] from evennia.accounts.models import AccountDB u = AccountDB.objects.get(username=username) u.set_password(password) From 496508d4735e7fb0638b234aa42729beb27e08be Mon Sep 17 00:00:00 2001 From: Stephen Meier Date: Mon, 18 Jan 2021 17:26:57 -0500 Subject: [PATCH 3/6] Changing to a cleaner implementation to allow for empty email address --- evennia/server/evennia_launcher.py | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/evennia/server/evennia_launcher.py b/evennia/server/evennia_launcher.py index 7fe5183572..1f8b8d69ca 100644 --- a/evennia/server/evennia_launcher.py +++ b/evennia/server/evennia_launcher.py @@ -1423,19 +1423,13 @@ def create_superuser(): "\nCreate a superuser below. The superuser is Account #1, the 'owner' " "account of the server. Email is optional and can be empty.\n" ) - from os import environ - if ("EVENNIA_SUPERUSER_USERNAME" in environ) and ("EVENNIA_SUPERUSER_EMAIL" in environ): - username, email = environ["EVENNIA_SUPERUSER_USERNAME"], environ["EVENNIA_SUPERUSER_EMAIL"] - django.core.management.call_command("createsuperuser", "--noinput", - "--username=" + username, - "--email=" + email, interactive=False) - if "EVENNIA_SUPERUSER_PASSWORD" in environ: - password = environ["EVENNIA_SUPERUSER_PASSWORD"] - from evennia.accounts.models import AccountDB - u = AccountDB.objects.get(username=username) - u.set_password(password) - u.save() + if "EVENNIA_SUPERUSER_USERNAME" in environ: + from evennia.accounts.models import AccountDB + superuser = AccountDB.objects.create_superuser(os.environ.get('EVENNIA_SUPERUSER_USERNAME'), + os.environ.get('EVENNIA_SUPERUSER_EMAIL'), + os.environ.get('EVENNIA_SUPERUSER_PASSWORD')) + superuser.save() else: django.core.management.call_command("createsuperuser", interactive=True) From ec2a9c8c8f8fd4b73db2cad8ad841b67da3a39fd Mon Sep 17 00:00:00 2001 From: Stephen Meier Date: Fri, 22 Jan 2021 23:03:20 -0500 Subject: [PATCH 4/6] Adding requirement for Evennia password --- evennia/server/evennia_launcher.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/evennia/server/evennia_launcher.py b/evennia/server/evennia_launcher.py index 1f8b8d69ca..8d374b62fd 100644 --- a/evennia/server/evennia_launcher.py +++ b/evennia/server/evennia_launcher.py @@ -1424,7 +1424,7 @@ def create_superuser(): "account of the server. Email is optional and can be empty.\n" ) from os import environ - if "EVENNIA_SUPERUSER_USERNAME" in environ: + if ("EVENNIA_SUPERUSER_USERNAME" in environ) and ("EVENNIA_SUPERUSER_PASSWORD" in environ): from evennia.accounts.models import AccountDB superuser = AccountDB.objects.create_superuser(os.environ.get('EVENNIA_SUPERUSER_USERNAME'), os.environ.get('EVENNIA_SUPERUSER_EMAIL'), From ce279de7c37241fae0d327d786ec78769ecd3331 Mon Sep 17 00:00:00 2001 From: Stephen Meier Date: Fri, 22 Jan 2021 23:11:17 -0500 Subject: [PATCH 5/6] Converting single quotes to double to stay consistent --- evennia/server/evennia_launcher.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/evennia/server/evennia_launcher.py b/evennia/server/evennia_launcher.py index 8d374b62fd..e800a36ce6 100644 --- a/evennia/server/evennia_launcher.py +++ b/evennia/server/evennia_launcher.py @@ -1426,9 +1426,9 @@ def create_superuser(): from os import environ if ("EVENNIA_SUPERUSER_USERNAME" in environ) and ("EVENNIA_SUPERUSER_PASSWORD" in environ): from evennia.accounts.models import AccountDB - superuser = AccountDB.objects.create_superuser(os.environ.get('EVENNIA_SUPERUSER_USERNAME'), - os.environ.get('EVENNIA_SUPERUSER_EMAIL'), - os.environ.get('EVENNIA_SUPERUSER_PASSWORD')) + superuser = AccountDB.objects.create_superuser(os.environ.get("EVENNIA_SUPERUSER_USERNAME"), + os.environ.get("EVENNIA_SUPERUSER_EMAIL"), + os.environ.get("EVENNIA_SUPERUSER_PASSWORD")) superuser.save() else: django.core.management.call_command("createsuperuser", interactive=True) From 54ebbde3a7e4a6b5b237ab8b0015ff50991e57b3 Mon Sep 17 00:00:00 2001 From: Stephen Meier Date: Fri, 22 Jan 2021 23:22:35 -0500 Subject: [PATCH 6/6] Code clean up and check to make sure length of password is greater than 0 --- evennia/server/evennia_launcher.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/evennia/server/evennia_launcher.py b/evennia/server/evennia_launcher.py index e800a36ce6..f59091d412 100644 --- a/evennia/server/evennia_launcher.py +++ b/evennia/server/evennia_launcher.py @@ -1424,11 +1424,14 @@ def create_superuser(): "account of the server. Email is optional and can be empty.\n" ) from os import environ - if ("EVENNIA_SUPERUSER_USERNAME" in environ) and ("EVENNIA_SUPERUSER_PASSWORD" in environ): + + username = environ.get("EVENNIA_SUPERUSER_USERNAME") + email = environ.get("EVENNIA_SUPERUSER_EMAIL") + password = environ.get("EVENNIA_SUPERUSER_PASSWORD") + + if (username is not None) and (password is not None) and len(password) > 0: from evennia.accounts.models import AccountDB - superuser = AccountDB.objects.create_superuser(os.environ.get("EVENNIA_SUPERUSER_USERNAME"), - os.environ.get("EVENNIA_SUPERUSER_EMAIL"), - os.environ.get("EVENNIA_SUPERUSER_PASSWORD")) + superuser = AccountDB.objects.create_superuser(username, email, password) superuser.save() else: django.core.management.call_command("createsuperuser", interactive=True)