Compare commits

..

1 commit

Author SHA1 Message Date
Tobias Genannt ce67a1cca1
Merge c3dcc6c59f into c0ead010ec 2026-01-07 18:43:19 +00:00
4 changed files with 31 additions and 28 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)

View file

@ -1,7 +1,7 @@
django-auth-ldap==5.3.0 django-auth-ldap==5.3.0
dulwich==0.25.0 dulwich==0.25.0
granian[uvloop]==2.6.1 granian[uvloop]==2.6.0
python3-saml==1.16.0 python3-saml==1.16.0
--no-binary lxml --no-binary lxml
--no-binary xmlsec --no-binary xmlsec
sentry-sdk[django]==2.49.0 sentry-sdk[django]==2.48.0