diff --git a/root/usr/libexec/apps/frigate/frigate.sh b/root/usr/libexec/apps/frigate/frigate.sh index 8fe1634..a609a15 100755 --- a/root/usr/libexec/apps/frigate/frigate.sh +++ b/root/usr/libexec/apps/frigate/frigate.sh @@ -4,7 +4,7 @@ APP_NAME="frigate" ACTION="${1}" shift 1 -#set -x +set -x fetch_and_validate_uci () { local config_name=$1 @@ -103,7 +103,8 @@ EOF # yq eval ".usbcoral = \"$usbcoral\"" -i /opt/docker2/compose/frigate/config.yml # yq eval ".hwaccel = \"$hwaccel\"" -i /opt/docker2/compose/frigate/config.yml # yq eval ".media.storage = \"$storage\"" -i /opt/docker2/compose/frigate/config.yml - yq eval '. head_comment="WARNING: Any values marked as OVERWRITTEN_BY_ROUTER are managed by Private Router. Manual changes will overwritten unless you uncheck "Overwrite Frigate Config" in the frigate app camera settings."' -i /opt/docker2/compose/frigate/config.yml + yq eval '. head_comment="WARNING: Any values marked as OVERWRITTEN_BY_ROUTER are managed by Private Router. Manual changes will overwritten unless you uncheck \"Overwrite Frigate Config\" in the frigate app camera settings."' -i /opt/docker2/compose/frigate/config.yml + yq eval ".mqtt.enabled = $mqtt" -i /opt/docker2/compose/frigate/config.yml yq eval ".mqtt.host = \"$host\"" -i /opt/docker2/compose/frigate/config.yml yq eval ".detectors.coral.type = \"$type\"" -i /opt/docker2/compose/frigate/config.yml @@ -240,8 +241,7 @@ write_camera_to_yml() { else echo "Mask is empty, ignoring." fi - yq eval ".cameras.$name.origin = \"privaterouter\"" -i /opt/docker2/compose/frigate/config.yml - yq eval ".cameras.$name.origin line_comment=\"DO NOT EDIT THIS LINE\"" -i /opt/docker2/compose/frigate/config.yml + yq eval ".cameras.$name line_comment=\"DO NOT REMOVE - Managed by PrivateRouter Script\"" -i /opt/docker2/compose/frigate/config.yml } get_camera_index_by_name() { @@ -354,19 +354,23 @@ sync_camera_config() { # Crosschecking and removing orphaned entry in YML not present in UCI config for yml_camera in $yml_cameras; do - # Get the origin of this camera - local origin=$(get_yml_value $yml_camera ".origin") + # Get the comment of this camera + local comment=$(yq eval ".cameras.$yml_camera line_comment" /opt/docker2/compose/frigate/config.yml) # Fix for word splitting set -f if ! echo $uci_cameras | grep -q -w "$yml_camera"; then - # If the origin is either non-existent or not equal to "privaterouter", keep it - if [ -z "$origin" ] || [ "$origin" != "privaterouter" ]; then - echo "Manual camera $yml_camera found in YML. Keeping it since it's manually added." - else - echo "Auto generated camera $yml_camera found in YML, but not in UCI , removing..." - yq eval "del(.cameras.$yml_camera)" -i /opt/docker2/compose/frigate/config.yml - fi + # Trim leading and trailing whitespaces and converting to all lowercase. + comment=${comment,,} + comment=${comment//[[:blank:]]/} + + # If the comment is either non-existent or doesn't contain "donotremove-managedbyprivaterouterscript", keep it + if [ -z "$comment" ] || [[ "$comment" != *"donotremove-managedbyprivaterouterscript"* ]]; then + echo "Manual camera $yml_camera found in YML. Keeping it since it's manually added." + else + echo "Auto generated camera $yml_camera found in YML, but not in UCI , removing..." + yq eval "del(.cameras.$yml_camera)" -i /opt/docker2/compose/frigate/config.yml + fi fi set +f done