Browse Source

Refactoring

new_os
mh 5 months ago
parent
commit
460f79a864
  1. 93
      src/scripts/utils/dvd/dvd-storage-action
  2. 13
      src/scripts/utils/dvd/dvd-storage-action.sh
  3. 37
      src/scripts/utils/usb/usb-storage-action
  4. 13
      src/scripts/utils/usb/usb-storage-action.sh

93
src/scripts/utils/dvd/dvd-storage-action

@ -1,93 +0,0 @@
#!/bin/bash
ACTION=$1
DEVNAME=$2
SOCKET_PATH="/tmp/usb-Sono-Socket.socket"
LOG_FILE="/tmp/tmpDvd.log"
DEBOUNCE_FILE="/tmp/dvd_debounce_$(echo $DEVNAME | tr '/' '-')"
DEBOUNCE_TIME=10 # seconds
current_time=$(date +%s)
# Function to log messages
log_message() {
local message=$1
echo $message | socat - UNIX-CONNECT:$SOCKET_PATH
echo $message >> $LOG_FILE
}
# Function to get the size of the DVD
get_dvd_size() {
udisksctl info -b $DEVNAME | grep 'Size:' | awk '{print $2}' | head -n 1
}
# Function to check for debounce
check_debounce() {
SIZE=$(get_dvd_size)
if [SIZE -eq 0]; then
ATTEMPTS=3
while [ "$SIZE" -eq 0 ] && [ $ATTEMPTS -gt 0 ]; do
sleep 2
SIZE=$(get_dvd_size)
log_message "Debounced: Retried size of $DEVNAME is $SIZE"
ATTEMPTS=$((ATTEMPTS - 1))
done
elif [SIZE -eq 0]; then
log_message "exit on: Retried size of $DEVNAME is $SIZE"
exit 0
fi
if [ -f "$DEBOUNCE_FILE" ]; then
last_run_time=$(cat $DEBOUNCE_FILE)
elapsed_time=$((current_time - last_run_time))
if [ $elapsed_time -lt $DEBOUNCE_TIME ]; then
log_message "Debounced: $ACTION $DEVNAME"
exit 0
fi
fi
echo $current_time > $DEBOUNCE_FILE
}
check_debounce
if [ "$ACTION" == "change" ]; then
# Introduce a delay before checking the device
sleep 2 # Wait for 2 seconds before proceeding
# Check if the device is already mounted
MOUNTED=$(lsblk -o MOUNTPOINT -nr $DEVNAME)
if [ -z "$MOUNTED" ]; then
# Device is not mounted, check if it is a raw DVD
SIZE=$(get_dvd_size)
# Debug output for size
log_message "DEBUG: Initial size of $DEVNAME is $SIZE"
# Retry logic for getting the size
ATTEMPTS=3
while [ "$SIZE" -eq 0 ] && [ $ATTEMPTS -gt 0 ]; do
sleep 2
SIZE=$(get_dvd_size)
log_message "DEBUG: Retried size of $DEVNAME is $SIZE"
ATTEMPTS=$((ATTEMPTS - 1))
done
if [ "$SIZE" -gt 0 ]; then
log_message "success insert raw DVD $DEVNAME"
else
# Proceed to mount the device
udisksctl mount -b $DEVNAME
if [ $? -eq 0 ]; then
log_message "success mount $DEVNAME"
else
log_message "failed to mount $DEVNAME"
fi
fi
else
log_message "$DEVNAME is already mounted at $MOUNTED"
fi
log_message "success insert $DEVNAME"
fi

13
src/scripts/utils/dvd/dvd-storage-action.sh

@ -0,0 +1,13 @@
#!/bin/bash
ACTION=$1
DEVICE_NAME=$2
SOCKET_PATH="/run/dvd-Sono-Socket.socket"
if [ "$ACTION" == "add" ]; then
echo -n "success insert $DEVICE_NAME" | socat - UNIX-CONNECT:$SOCKET_PATH
echo "success insert $DEVICE_NAME with socat" >> /tmp/tmpDvd.log
elif [ "$ACTION" == "remove" ]; then
echo -n "success eject $DEVICE_NAME" | socat - UNIX-CONNECT:$SOCKET_PATH
echo "success eject $DEVICE_NAME" >> /tmp/tmpDvd.log
fi

37
src/scripts/utils/usb/usb-storage-action

@ -1,37 +0,0 @@
#!/bin/bash
# Get the action (add or remove) and the device name from the udev rule
ACTION=$1
# Get the device name from the udev rule
DEVICE_NAME=$2
SOCKET_PATH="/tmp/usb-Sono-Socket.socket"
if [ "$ACTION" == "add" ]; then
# Mount the device
udisksctl mount -b "$DEVICE_NAME"
# Check if the mount was successful
if [ $? -eq 0 ]; then
# Write a message to the socket
echo "success connect $DEVICE_NAME" | socat - UNIX-CONNECT:$SOCKET_PATH
echo "success connect $DEVICE_NAME" >> /tmp/tmp.log
else
echo "failure connect $DEVICE_NAME" | socat - UNIX-CONNECT:$SOCKET_PATH
echo "failure connect $DEVICE_NAME" >> /tmp/tmp.log
fi
elif [ "$ACTION" == "remove" ]; then
# Unmount the device
udisksctl unmount -b "$DEVICE_NAME"
# Check if the unmount was successful
if [ $? -eq 0 ]; then
# Write a message to the socket
echo "success disconnect $DEVICE_NAME" | socat - UNIX-CONNECT:$SOCKET_PATH
echo "success disconnect $DEVICE_NAME" >> /tmp/tmp.log
else
echo "failure disconnect $DEVICE_NAME" | socat - UNIX-CONNECT:$SOCKET_PATH
echo "failure disconnect $DEVICE_NAME" >> /tmp/tmp.log
fi
fi

13
src/scripts/utils/usb/usb-storage-action.sh

@ -0,0 +1,13 @@
#!/bin/bash
ACTION=$1
DEVICE_NAME=$2
SOCKET_PATH="/run/usb-Sono-Socket.socket"
if [ "$ACTION" == "add" ]; then
echo -n "success connect $DEVICE_NAME" | socat - UNIX-CONNECT:$SOCKET_PATH
echo "success connect $DEVICE_NAME with socat" >> /tmp/tmpUsb.log
elif [ "$ACTION" == "remove" ]; then
echo -n "success disconnect $DEVICE_NAME" | socat - UNIX-CONNECT:$SOCKET_PATH
echo "success disconnect $DEVICE_NAME" >> /tmp/tmpUsb.log
fi
Loading…
Cancel
Save