|
7 | 7 | DEFAULT_UID=1000 |
8 | 8 | DEFAULT_GID=1000 |
9 | 9 |
|
| 10 | +DEFAULT_RUNTIME_DIR=/data |
| 11 | +runtime_dir=$DEFAULT_RUNTIME_DIR |
| 12 | + |
| 13 | +if [ ! -w "$runtime_dir" ]; then |
| 14 | + echo "Runtime dir [$runtime_dir] is not writable, switching to /tmp ..." |
| 15 | + runtime_dir=/tmp |
| 16 | +fi |
| 17 | + |
| 18 | +echo "Creating config directory [$runtime_dir/.config/yams] ..." |
| 19 | +mkdir -p $runtime_dir/.config/yams |
| 20 | +echo "Creating state directory [$runtime_dir/.local/state/yams] ..." |
| 21 | +mkdir -p $runtime_dir/.local/state/yams |
| 22 | +echo "Finished creating directories." |
| 23 | + |
| 24 | +#CMD_LINE="XDG_RUNTIME_DIR=$runtime_dir yams --keep-alive --no-daemon" |
10 | 25 | CMD_LINE="yams --keep-alive --no-daemon" |
| 26 | +echo "CMD_LINE=[$CMD_LINE]" |
11 | 27 |
|
12 | 28 | if [[ -n "${MPD_HOST}" ]]; then |
13 | 29 | CMD_LINE="$CMD_LINE -m $MPD_HOST" |
@@ -40,6 +56,31 @@ if [[ -n "$STARTUP_DELAY_SEC" ]]; then |
40 | 56 | fi |
41 | 57 | fi |
42 | 58 |
|
| 59 | +# add session file path? |
| 60 | +use_custom_session_file=0 |
| 61 | +if [[ -n "${SESSION_FILE}" ]]; then |
| 62 | + echo "SESSION_FILE=[$SESSION_FILE]" |
| 63 | + if [ -f "$SESSION_FILE" ]; then |
| 64 | + echo "SESSION_FILE [$SESSION_FILE] exists" |
| 65 | + use_custom_session_file=1 |
| 66 | + CMD_LINE="$CMD_LINE --session-file-path $SESSION_FILE" |
| 67 | + fi |
| 68 | +fi |
| 69 | + |
| 70 | +if [ $use_custom_session_file -eq 0 ]; then |
| 71 | + echo "Creating directory for session file [$runtime_dir/.config/yams] ..." |
| 72 | + mkdir -p $runtime_dir/.config/yams |
| 73 | + echo "Setting default session file to [$runtime_dir/.config/yams/.lastfm_session] ..." |
| 74 | + CMD_LINE="$CMD_LINE --session-file-path $runtime_dir/.config/yams/.lastfm_session" |
| 75 | +fi |
| 76 | + |
| 77 | +uid=$(id -u) |
| 78 | +if [[ $uid -ne 0 ]]; then |
| 79 | + echo "This container must be run as root." |
| 80 | + exit 1 |
| 81 | +fi |
| 82 | + |
| 83 | +echo "Running with uid=[$uid] ..." |
43 | 84 | # Create user and group |
44 | 85 | if [[ -n "{${PUID}" || -z "${USER_MODE}" || "${USER_MODE^^}" == "YES" ]]; then |
45 | 86 | echo "User mode enabled" |
@@ -72,22 +113,25 @@ if [[ -n "{${PUID}" || -z "${USER_MODE}" || "${USER_MODE^^}" == "YES" ]]; then |
72 | 113 | echo "Created $USER_NAME (group: $GROUP_NAME)" |
73 | 114 | cat /etc/passwd|grep $USER_NAME |
74 | 115 | echo "Creating home directory ..." |
75 | | - mkdir -p /data |
| 116 | + mkdir -p $runtime_dir |
76 | 117 | echo "Setting ownership ..." |
77 | 118 | chown -R yams-user:yams-group /app/log |
78 | | - chown -R yams-user:yams-group /data |
| 119 | + chown -R yams-user:yams-group $runtime_dir |
79 | 120 | echo "Setting home directory ..." |
80 | | - usermod --home /data yams-user |
81 | | - cat /etc/passwd|grep $USER_NAME |
82 | | - # this should not be needed |
83 | | - CMD_LINE="$CMD_LINE --session-file-path /data/.config/yams/.lastfm_session" |
84 | | - if [ -f /data/.config/yams/yams.pid ]; then |
| 121 | + usermod --home $runtime_dir yams-user |
| 122 | + cat /etc/passwd | grep $USER_NAME |
| 123 | + if [ ! -f $runtime_dir/.config/yams/yams.yml ]; then |
| 124 | + echo "Configuration file not found, generating ..." |
| 125 | + exec su - $USER_NAME -c "XDG_RUNTIME_DIR=$runtime_dir yams --generate-config" |
| 126 | + fi |
| 127 | + if [ -f $runtime_dir/.config/yams/yams.pid ]; then |
85 | 128 | echo "Removing pid ..." |
86 | | - rm /data/.config/yams/yams.pid |
| 129 | + rm $runtime_dir/.config/yams/yams.pid |
87 | 130 | echo "Removed pid" |
88 | 131 | fi |
89 | | - echo "Executing [$CMD_LINE]..." |
90 | | - su - $USER_NAME -c "$CMD_LINE" |
| 132 | + echo "Executing [$CMD_LINE] with runtime_dir=[$runtime_dir] ..." |
| 133 | + exec su - $USER_NAME -c "XDG_RUNTIME_DIR=$runtime_dir $CMD_LINE" |
91 | 134 | else |
92 | | - eval "$CMD_LINE" |
| 135 | + echo "This container must be run in user mode." |
| 136 | + exit 1 |
93 | 137 | fi |
0 commit comments