11#! /bin/sh
2+
3+ # Handle PUID/PGID
4+ if [ " $PUID " != " 0" ] && [ " $PGID " != " 0" ]; then
5+ echo " [setup] Setting up user with PUID=$PUID and PGID=$PGID "
6+
7+ # Create group if it doesn't exist
8+ if ! getent group explo > /dev/null 2>&1 ; then
9+ groupadd -g " $PGID " explo
10+ fi
11+
12+ # Create user if it doesn't exist
13+ if ! getent passwd explo > /dev/null 2>&1 ; then
14+ useradd -u " $PUID " -g " $PGID " -d /opt/explo -s /bin/sh explo
15+ fi
16+
17+ # Ensure explo user owns the working directory and data directory
18+ chown -R explo:explo /opt/explo
19+ [ -d /data ] && chown -R explo:explo /data
20+
21+ # If running as non-root, exec as the explo user
22+ if [ " $( id -u) " = " 0" ]; then
23+ exec su-exec explo " $0 " " $@ "
24+ fi
25+ fi
26+
227echo " [setup] Initializing cron jobs..."
328
29+ # Determine which user to run cron jobs as
30+ CRON_USER=" root"
31+ if [ " $PUID " != " 0" ] && [ " $PGID " != " 0" ]; then
32+ CRON_USER=" explo"
33+ # Create crontab directory for explo user if it doesn't exist
34+ mkdir -p /var/spool/cron/crontabs
35+ touch " /var/spool/cron/crontabs/$CRON_USER "
36+ chown " $CRON_USER :$CRON_USER " " /var/spool/cron/crontabs/$CRON_USER "
37+ fi
38+
439if [ -n " $CRON_SCHEDULE " ]; then
5- echo " $CRON_SCHEDULE apk add --upgrade yt-dlp && cd /opt/explo && ./explo >> /proc/1/fd/1 2>&1" > /etc/crontabs/root
6- chmod 600 /etc/crontabs/root
40+ cmd=" apk add --upgrade yt-dlp && cd /opt/explo && ./explo >> /proc/1/fd/1 2>&1"
41+ echo " $CRON_SCHEDULE $cmd " > " /var/spool/cron/crontabs/$CRON_USER "
42+ chmod 600 " /var/spool/cron/crontabs/$CRON_USER "
743 echo " [setup] Registered single CRON_SCHEDULE job: $CRON_SCHEDULE "
844 crond -f -l 2
945fi
@@ -23,13 +59,13 @@ for var in $(env | grep "_SCHEDULE=" | cut -d= -f1); do
2359 # Default: just run explo if flags are empty
2460 cmd=" apk add --upgrade yt-dlp && cd /opt/explo && ./explo $flags >> /proc/1/fd/1 2>&1"
2561
26- echo " $schedule $cmd " >> /etc/ crontabs/root
62+ echo " $schedule $cmd " >> " /var/spool/cron/ crontabs/$CRON_USER "
2763 echo " [setup] Registered job: $job "
2864 echo " Schedule: $schedule "
2965 echo " Command : ./explo $flags "
3066done
3167
32- chmod 600 /etc/ crontabs/root
68+ chmod 600 " /var/spool/cron/ crontabs/$CRON_USER "
3369
3470echo " [setup] Starting cron..."
3571crond -f -l 2
0 commit comments