|
| 1 | +#!/usr/bin/env bash |
| 2 | + |
| 3 | +set -x |
| 4 | + |
| 5 | +if get_os2borgerpc_config os2_product | grep --quiet kiosk; then |
| 6 | + echo "Dette script har ingen effekt på en kiosk-maskine." |
| 7 | + exit 1 |
| 8 | +fi |
| 9 | + |
| 10 | +USERCRON="/etc/os2borgerpc/usercron" |
| 11 | +USER_CLEANUP="/usr/share/os2borgerpc/bin/user-cleanup.bash" |
| 12 | +ON_OFF_SCHEDULE_SCRIPT="/usr/local/lib/os2borgerpc/set_on-off_schedule.py" |
| 13 | + |
| 14 | +# Move the current user crontab to a file |
| 15 | +if [ ! -f "$USERCRON" ]; then |
| 16 | + crontab -u user -l > $USERCRON |
| 17 | +fi |
| 18 | + |
| 19 | +chmod 700 $USERCRON |
| 20 | + |
| 21 | +# Remove all lines not containing notify-send or zenity, which all of ours do |
| 22 | +sed -i "/notify-send\|zenity/! d" $USERCRON |
| 23 | + |
| 24 | +# Check the contents of the file |
| 25 | +cat $USERCRON |
| 26 | + |
| 27 | +if ! grep --quiet "crontab" $USER_CLEANUP; then |
| 28 | + cat << EOF >> $USER_CLEANUP |
| 29 | +
|
| 30 | +# Restore user crontab |
| 31 | +crontab -u user $USERCRON |
| 32 | +EOF |
| 33 | +fi |
| 34 | + |
| 35 | +if ! grep --quiet "atq" $USER_CLEANUP; then |
| 36 | + cat << EOF >> $USER_CLEANUP |
| 37 | +
|
| 38 | +# Remove possible scheduled at commands |
| 39 | +if [ -f /usr/bin/at ]; then |
| 40 | + atq | cut --fields 1 | xargs --no-run-if-empty atrm |
| 41 | +fi |
| 42 | +EOF |
| 43 | +fi |
| 44 | + |
| 45 | +if ! grep --quiet "pkill" $USER_CLEANUP; then |
| 46 | + cat << EOF >> $USER_CLEANUP |
| 47 | +
|
| 48 | +# Kill all processes started by user |
| 49 | +pkill -KILL -u user |
| 50 | +EOF |
| 51 | +fi |
| 52 | + |
| 53 | +if ! grep --quiet "FILES_DIRS" $USER_CLEANUP; then |
| 54 | + cat << EOF >> $USER_CLEANUP |
| 55 | +
|
| 56 | +# Find all files/directories owned by user in the world-writable directories |
| 57 | +FILES_DIRS=\$(find /var/tmp/ /var/crash/ /var/metrics/ /var/lock/ -user user) |
| 58 | +rm --recursive --force /dev/shm/* /dev/shm/.??* \$FILES_DIRS |
| 59 | +EOF |
| 60 | +fi |
| 61 | + |
| 62 | +# If they're using on/off schedules, change the schedule to use the usercron-file |
| 63 | +if [ -f "$ON_OFF_SCHEDULE_SCRIPT" ] && grep --quiet "/tmp/usercron" $ON_OFF_SCHEDULE_SCRIPT; then |
| 64 | + sed -i "s@USERCRON = \"/tmp@USERCRON = \"/etc/os2borgerpc@" $ON_OFF_SCHEDULE_SCRIPT |
| 65 | + sed -i "0,/with open(USERCRON, 'w') as cronfile/{//d}" $ON_OFF_SCHEDULE_SCRIPT |
| 66 | + sed -i "/subprocess\.run(\[\"crontab\", \"-u\", \"user\", \"-l\"/d" $ON_OFF_SCHEDULE_SCRIPT |
| 67 | + sed -i "/os\.path\.exists(USERCRON)/d" $ON_OFF_SCHEDULE_SCRIPT |
| 68 | + sed -i "/os\.remove(USERCRON)/d" $ON_OFF_SCHEDULE_SCRIPT |
| 69 | +fi |
0 commit comments