nand2 / libvmod-throttle

Varnish: Reject or delay requests after given tresholds are reached. (Think API rate limit, or per-ip MISS rate limit)
Other
100 stars 22 forks source link

"Explicit" rules #13

Open hanshuebner opened 10 years ago

hanshuebner commented 10 years ago

Hi,

this pull request implements some changes to implement explicit rules. Before, rules were always created implicitly by the is_allowed call. This is suitable for the rate limiting use case that motivated the module in the first case, i.e. limiting specific clients. I need the module to put a (dynamic) limit on the backend, though, in order to prevent overload situations.

With these changes, it is possible to change the windows definition for a rule after it has been initially created (that would not work before). Also, a new call set_windows has been added that can be used to create a rule or re-set the limits for a certain rule.

As changes to such explicit rules are an administrative measure, I have added code to log rule changes for explicit rules. Also, the module now logs errors arising from invalid window definition strings using syslog.

Thanks for the module, it works great! Hans

nand2 commented 10 years ago

Hello!

Sorry it's been so long on my mailbox! Unfortunately I'm having a unexpected project which is eating all my free time :-/ Your modifications seem quite interesting and substantial, and I would need to review and test everything with those, but I cannot right now :-/ I'm seeing forks of libvmod-throttle, for Varnish 4.0, and with more bugfixes, which seems to be taking the lead, maybe it would be good to merge on these forks.

Sorry about that! Nand