Compare commits

..

No commits in common. "2127d2156a51db86801e77c9828840d815503a46" and "c3dcc6c59f3b111142f7da972dc73205173baf82" have entirely different histories.

3 changed files with 29 additions and 26 deletions

View file

@ -4,4 +4,4 @@ extend-ignore = E203, W503
per-file-ignores = per-file-ignores =
configuration/*:E131,E251,E266,E302,E305,E501,E722 configuration/*:E131,E251,E266,E302,E305,E501,E722
startup_scripts/startup_script_utils/__init__.py:F401 startup_scripts/startup_script_utils/__init__.py:F401
docker/*:E266,E722,E501 docker/*:E266,E722

View file

@ -54,8 +54,25 @@ fi
if [ "$SKIP_SUPERUSER" == "true" ]; then if [ "$SKIP_SUPERUSER" == "true" ]; then
echo "↩️ Skip creating the superuser" echo "↩️ Skip creating the superuser"
else else
./manage.py shell --no-startup --no-imports --interface python \ if [ -z ${SUPERUSER_NAME+x} ]; then
</opt/netbox/super_user.py SUPERUSER_NAME='admin'
fi
if [ -z ${SUPERUSER_EMAIL+x} ]; then
SUPERUSER_EMAIL='admin@example.com'
fi
if [ -f "/run/secrets/superuser_password" ]; then
SUPERUSER_PASSWORD="$(</run/secrets/superuser_password)"
elif [ -z ${SUPERUSER_PASSWORD+x} ]; then
SUPERUSER_PASSWORD='admin'
fi
if [ -f "/run/secrets/superuser_api_token" ]; then
SUPERUSER_API_TOKEN="$(</run/secrets/superuser_api_token)"
elif [ -z ${SUPERUSER_API_TOKEN+x} ]; then
SUPERUSER_API_TOKEN='0123456789abcdef0123456789abcdef01234567'
fi
./manage.py shell --interface python < /opt/netbox/super_user.py
fi fi
echo "✅ Initialisation is done." echo "✅ Initialisation is done."

View file

@ -1,28 +1,12 @@
from os import environ from os import environ
from django.conf import settings
from users.choices import TokenVersionChoices
from users.models import Token, User from users.models import Token, User
from users.choices import TokenVersionChoices
from django.conf import settings
su_name = environ.get("SUPERUSER_NAME")
# Read secret from file su_email = environ.get("SUPERUSER_EMAIL")
def _read_secret(secret_name: str, default: str | None = None) -> str | None: su_password = environ.get("SUPERUSER_PASSWORD")
try: su_api_token = environ.get("SUPERUSER_API_TOKEN")
f = open("/run/secrets/" + secret_name, "r", encoding="utf-8")
except EnvironmentError:
return default
else:
with f:
return f.readline().strip()
su_name = environ.get("SUPERUSER_NAME", "admin")
su_email = environ.get("SUPERUSER_EMAIL", "admin@example.com")
su_password = _read_secret("superuser_password", environ.get("SUPERUSER_PASSWORD", "admin"))
su_api_token = _read_secret(
"superuser_api_token",
environ.get("SUPERUSER_API_TOKEN", "0123456789abcdef0123456789abcdef01234567"),
)
if not User.objects.filter(username=su_name): if not User.objects.filter(username=su_name):
u = User.objects.create_superuser(su_name, su_email, su_password) u = User.objects.create_superuser(su_name, su_email, su_password)
@ -31,6 +15,8 @@ if not User.objects.filter(username=su_name):
print("⚠️ No API token will be created as API_TOKEN_PEPPERS is not set") print("⚠️ No API token will be created as API_TOKEN_PEPPERS is not set")
msg = f"💡 Superuser Username: {su_name}, E-Mail: {su_email}" msg = f"💡 Superuser Username: {su_name}, E-Mail: {su_email}"
else: else:
t = Token.objects.create(user=u, token=su_api_token, version=TokenVersionChoices.V2) t = Token.objects.create(
user=u, token=su_api_token, version=TokenVersionChoices.V2
)
msg = f"💡 Superuser Username: {su_name}, E-Mail: {su_email}, API Token: {t} (use with '{t.get_auth_header_prefix()}<Your token>')" msg = f"💡 Superuser Username: {su_name}, E-Mail: {su_email}, API Token: {t} (use with '{t.get_auth_header_prefix()}<Your token>')"
print(msg) print(msg)