From 17d40711e0458baf026770c75e8202252ff1d42d Mon Sep 17 00:00:00 2001 From: Simon Date: Wed, 8 May 2024 12:34:07 +0200 Subject: [PATCH] add kimai saml integration --- .env.sample | 6 ++++++ abra.sh | 5 +---- compose.kimai.yml | 14 +++++++++++++ icons/kimai_logo.png | Bin 0 -> 31168 bytes kimai.yaml.tmpl | 48 +++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 69 insertions(+), 4 deletions(-) create mode 100644 compose.kimai.yml create mode 100644 icons/kimai_logo.png create mode 100644 kimai.yaml.tmpl diff --git a/.env.sample b/.env.sample index 676b690..cda8f2a 100644 --- a/.env.sample +++ b/.env.sample @@ -89,6 +89,12 @@ AUTHENTIK_COLOR_BACKGROUND_LIGHT=#1c1e21 # SECRET_OUTLINE_SECRET_VERSION=v1 # APP_ICONS="$APP_ICONS outline:~/.abra/recipes/authentik/icons/outline.png" +# COMPOSE_FILE="$COMPOSE_FILE:compose.kimai.yml" +# KIMAI_DOMAIN=kimai.example.com +# SECRET_KIMAI_ID_VERSION=v1 +# SECRET_KIMAI_SECRET_VERSION=v1 +# APP_ICONS="$APP_ICONS kimai:~/.abra/recipes/authentik/icons/kimai.png" + # COMPOSE_FILE="$COMPOSE_FILE:compose.monitoring.yml" # MONITORING_DOMAIN=monitoring.example.com # SECRET_MONITORING_ID_VERSION=v1 diff --git a/abra.sh b/abra.sh index 08b2439..9f5446a 100644 --- a/abra.sh +++ b/abra.sh @@ -11,6 +11,7 @@ export MATRIX_CONFIG_VERSION=v1 export WEKAN_CONFIG_VERSION=v3 export VIKUNJA_CONFIG_VERSION=v1 export OUTLINE_CONFIG_VERSION=v2 +export KIMAI_CONFIG_VERSION=v1 export RALLLY_CONFIG_VERSION=v2 export HEDGEDOC_CONFIG_VERSION=v1 export MONITORING_CONFIG_VERSION=v1 @@ -55,19 +56,15 @@ with open('/tmp/$1', newline='') as file: email = row[2].strip() groups = row[3].split(';') if User.objects.filter(username=username): - print(f'{username} already exists') continue new_user = User.objects.create(name=name, username=username, email=email) - print(f'{username} created') for group_name in groups: group_name = group_name.strip() if Group.objects.filter(name=group_name): group = Group.objects.get(name=group_name) else: group = Group.objects.create(name=group_name) - print(f'{group_name} created') group.users.add(new_user) - print(f'add {username} to group {group_name}') """ 2>&1 | quieten } diff --git a/compose.kimai.yml b/compose.kimai.yml new file mode 100644 index 0000000..83db73d --- /dev/null +++ b/compose.kimai.yml @@ -0,0 +1,14 @@ +version: "3.8" +services: + worker: + environment: + - KIMAI_DOMAIN + configs: + - source: kimai + target: /blueprints/kimai.yaml + +configs: + kimai: + name: ${STACK_NAME}_kimai_${KIMAI_CONFIG_VERSION} + file: kimai.yaml.tmpl + template_driver: golang diff --git a/icons/kimai_logo.png b/icons/kimai_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..a0335a0967ae4b4ae3a601658f586971f6707c19 GIT binary patch literal 31168 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%0DUcP$o=l)YM7l`Ud*y;@ zPXl_RaWY7UQ+U-~D%6c0*_6g@1BvwFa6%UypAbvM#+uA`{s%yf3MGMD_VA+X3$~d# z8s*Cr>;Xt{uNG^74}Uk;zv5?=ONRB%cDD#7!${(Y+k)!b8Fq&X25CpcwgJGcYwIU| zVzd^7gWB5&E}mb-nC3|q5!703dT<|f5>A+@B87dPO)?w~=bEo88YXZl%~+gCHJ zL%a^;5kQ>La6vAMZZv}b+0z7>?F7J425TK#-V4-b+b9Bi;c-9&Oh<-4K4% zax6?RdFg z`$6>U