fix(script): resolve parameter verification errors

- Add new update_all_tags() function to properly handle container/VM lists
- Fix missing vmid parameter error that was causing "type check ('integer') failed"
- Replace direct update_tags calls with update_all_tags calls in check() function
- Ensure proper iteration over all containers and VMs during tag updates
- Simplify conditional logic for force updates
This commit is contained in:
Desert Gamer 2025-04-06 16:35:04 +03:00 committed by GitHub
parent 866f486336
commit 39362c76c3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -119,6 +119,11 @@ update_installation() {
msg_info "Updating IP-Tag Scripts"
systemctl stop iptag.service &>/dev/null
# Create directory if it doesn't exist
if [[ ! -d "/opt/iptag" ]]; then
mkdir -p /opt/iptag
fi
# Migrate config if needed
migrate_config
@ -287,6 +292,22 @@ check_status_changed() {
return 0
}
# Update tags for all containers/VMs of specified type
update_all_tags() {
local type="$1"
local vmid_list=""
if [[ "$type" == "lxc" ]]; then
vmid_list=$(pct list 2>/dev/null | grep -v VMID | awk '{print $1}')
else
vmid_list=$(qm list 2>/dev/null | grep -v VMID | awk '{print $1}')
fi
for vmid in $vmid_list; do
update_tags "$type" "$vmid"
done
}
check() {
current_time=$(date +%s)
@ -297,7 +318,7 @@ check() {
echo "Checking lxc status..."
last_lxc_status_check_time=${current_time}
if check_status_changed "lxc"; then
update_tags "lxc" "${vmid}"
update_all_tags "lxc"
last_update_lxc_time=${current_time}
fi
fi
@ -309,7 +330,7 @@ check() {
echo "Checking vm status..."
last_vm_status_check_time=${current_time}
if check_status_changed "vm"; then
update_tags "vm" "${vmid}"
update_all_tags "vm"
last_update_vm_time=${current_time}
fi
fi
@ -321,8 +342,8 @@ check() {
echo "Checking fw net interface..."
last_fw_net_interface_check_time=${current_time}
if check_status_changed "fw"; then
update_tags "lxc" "${vmid}"
update_tags "vm" "${vmid}"
update_all_tags "lxc"
update_all_tags "vm"
last_update_lxc_time=${current_time}
last_update_vm_time=${current_time}
fi
@ -334,10 +355,7 @@ check() {
local time_since_last_update=$((current_time - ${!last_update_var}))
if [ ${time_since_last_update} -ge ${FORCE_UPDATE_INTERVAL} ]; then
echo "Force updating ${type} iptags..."
case "$type" in
"lxc") update_tags "lxc" "${vmid}" ;;
"vm") update_tags "vm" "${vmid}" ;;
esac
update_all_tags "$type"
eval "${last_update_var}=${current_time}"
fi
done
@ -614,7 +632,7 @@ check() {
echo "Checking lxc status..."
last_lxc_status_check_time=${current_time}
if check_status_changed "lxc"; then
update_tags "lxc" "${vmid}"
update_all_tags "lxc"
last_update_lxc_time=${current_time}
fi
fi
@ -626,7 +644,7 @@ check() {
echo "Checking vm status..."
last_vm_status_check_time=${current_time}
if check_status_changed "vm"; then
update_tags "vm" "${vmid}"
update_all_tags "vm"
last_update_vm_time=${current_time}
fi
fi
@ -638,8 +656,8 @@ check() {
echo "Checking fw net interface..."
last_fw_net_interface_check_time=${current_time}
if check_status_changed "fw"; then
update_tags "lxc" "${vmid}"
update_tags "vm" "${vmid}"
update_all_tags "lxc"
update_all_tags "vm"
last_update_lxc_time=${current_time}
last_update_vm_time=${current_time}
fi
@ -651,10 +669,7 @@ check() {
local time_since_last_update=$((current_time - ${!last_update_var}))
if [ ${time_since_last_update} -ge ${FORCE_UPDATE_INTERVAL} ]; then
echo "Force updating ${type} iptags..."
case "$type" in
"lxc") update_tags "lxc" "${vmid}" ;;
"vm") update_tags "vm" "${vmid}" ;;
esac
update_all_tags "$type"
eval "${last_update_var}=${current_time}"
fi
done