Browse Source

entrypoint: unset processed env vars

Fabian Peter Hammerle 3 years ago
parent
commit
61ce3306d2
1 changed files with 10 additions and 6 deletions
  1. 10 6
      entrypoint.sh

+ 10 - 6
entrypoint.sh

@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
 
 set -eu
 
@@ -8,6 +8,7 @@ fi
 if [ ! -f "$SSHD_HOST_KEYS_DIR/ed25519" ]; then
     ssh-keygen -t ed25519 -N '' -f "$SSHD_HOST_KEYS_DIR/ed25519"
 fi
+unset SSHD_HOST_KEYS_DIR
 
 if [ ! -d "$HOME/.gitolite" ]; then
     # > First run: either the pubkey or the admin name is *required*, [...]
@@ -15,13 +16,16 @@ if [ ! -d "$HOME/.gitolite" ]; then
 fi
 unset GITOLITE_INITIAL_ADMIN_NAME
 
-printenv | cut -d = -f 1 | while IFS= read -r var_name; do
-    if [ "$(echo "$var_name" | cut -d _ -f -4)" = "GITOLITE_USER_PUBLIC_KEY" ]; then
-        user="$(echo "$var_name" | cut -d _ -f 5-)"
-        key_path="$HOME/container-entrypoint-user-public-keys/${user}.pub"
-        mkdir --parents "$(dirname "$key_path")"
+key_dir_path="$HOME/.container-entrypoint/users/public-keys"
+mkdir --parents "$key_dir_path"
+for var_name in $(compgen -e); do
+    if [[ $var_name =~ ^GITOLITE_USER_PUBLIC_KEY_ ]]; then
+        user="${var_name#GITOLITE_USER_PUBLIC_KEY_}"
+        # https://github.com/sitaramc/gitolite/blob/v3.6.11/src/lib/Gitolite/Setup.pm#L93
+        key_path="${key_dir_path}/${user}.pub"
         printenv "$var_name" > "$key_path"
         (set -x; gitolite setup --pubkey "$key_path")
+        unset "$var_name"
     fi
 done