feat(limit): Add clean command to reset IP limiter state
This commit is contained in:
@ -77,7 +77,7 @@ unblock_ip() {
|
|||||||
iptables -D INPUT -s "$ip_address" -j DROP
|
iptables -D INPUT -s "$ip_address" -j DROP
|
||||||
log_message "INFO" "Unblocked IP $ip_address"
|
log_message "INFO" "Unblocked IP $ip_address"
|
||||||
fi
|
fi
|
||||||
sed -i "/$ip_address,/d" "$BLOCK_LIST"
|
sed -i "/^$ip_address,/d" "$BLOCK_LIST"
|
||||||
}
|
}
|
||||||
|
|
||||||
block_all_user_ips() {
|
block_all_user_ips() {
|
||||||
@ -133,6 +133,28 @@ check_ip_limit() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
clean_all() {
|
||||||
|
log_message "WARN" "Starting cleanup of all tracked IPs and blocks..."
|
||||||
|
|
||||||
|
if [ -s "$BLOCK_LIST" ]; then
|
||||||
|
while IFS=, read -r ip _; do
|
||||||
|
if [[ -n "$ip" ]]; then
|
||||||
|
unblock_ip "$ip"
|
||||||
|
fi
|
||||||
|
done < "$BLOCK_LIST"
|
||||||
|
fi
|
||||||
|
|
||||||
|
> "$BLOCK_LIST"
|
||||||
|
log_message "INFO" "All IPs unblocked and block list file cleared."
|
||||||
|
|
||||||
|
mongosh "$DB_NAME" --quiet --eval "
|
||||||
|
db.getCollection('$CONNECTIONS_COLLECTION').drop();
|
||||||
|
"
|
||||||
|
log_message "INFO" "MongoDB collection '$CONNECTIONS_COLLECTION' has been dropped."
|
||||||
|
|
||||||
|
log_message "WARN" "Cleanup complete."
|
||||||
|
}
|
||||||
|
|
||||||
parse_log_line() {
|
parse_log_line() {
|
||||||
local log_line="$1"
|
local log_line="$1"
|
||||||
local ip_address
|
local ip_address
|
||||||
@ -251,6 +273,9 @@ case "$1" in
|
|||||||
config)
|
config)
|
||||||
change_config "$2" "$3"
|
change_config "$2" "$3"
|
||||||
;;
|
;;
|
||||||
|
clean)
|
||||||
|
clean_all
|
||||||
|
;;
|
||||||
run)
|
run)
|
||||||
log_message "INFO" "Monitoring Hysteria connections. Max IPs: $MAX_IPS, Block Duration: $BLOCK_DURATION s"
|
log_message "INFO" "Monitoring Hysteria connections. Max IPs: $MAX_IPS, Block Duration: $BLOCK_DURATION s"
|
||||||
log_message "INFO" "--------------------------------------------------------"
|
log_message "INFO" "--------------------------------------------------------"
|
||||||
@ -277,7 +302,7 @@ case "$1" in
|
|||||||
done
|
done
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "Usage: $0 {start|stop|config|run} [block_duration] [max_ips]"
|
echo "Usage: $0 {start|stop|config|run|clean} [block_duration] [max_ips]"
|
||||||
exit 1
|
exit 1
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|||||||
Reference in New Issue
Block a user