{"action":"opened","issue":{"url":"https://api.github.com/repos/GLolol/PyLink/issues/23","labels_url":"https://api.github.com/repos/GLolol/PyLink/issues/23/labels{/name}","comments_url":"https://api.github.com/repos/GLolol/PyLink/issues/23/comments","events_url":"https://api.github.com/repos/GLolol/PyLink/issues/23/events","html_url":"https://github.com/GLolol/PyLink/issues/23","id":89853274,"number":23,"title":"Kick/mode/kill war detection","user":{"login":"GLolol","id":4644601,"avatar_url":"https://avatars.githubusercontent.com/u/4644601?v=3","gravatar_id":"","url":"https://api.github.com/users/GLolol","html_url":"https://github.com/GLolol","followers_url":"https://api.github.com/users/GLolol/followers","following_url":"https://api.github.com/users/GLolol/following{/other_user}","gists_url":"https://api.github.com/users/GLolol/gists{/gist_id}","starred_url":"https://api.github.com/users/GLolol/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GLolol/subscriptions","organizations_url":"https://api.github.com/users/GLolol/orgs","repos_url":"https://api.github.com/users/GLolol/repos","events_url":"https://api.github.com/users/GLolol/events{/privacy}","received_events_url":"https://api.github.com/users/GLolol/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/GLolol/PyLink/labels/enhancement","name":"enhancement","color":"207de5"},{"url":"https://api.github.com/repos/GLolol/PyLink/labels/priority:medium","name":"priority:medium","color":"fbca04"}],"state":"open","locked":false,"assignee":null,"milestone":{"url":"https://api.github.com/repos/GLolol/PyLink/milestones/2","html_url":"https://github.com/GLolol/PyLink/milestones/v0.2","labels_url":"https://api.github.com/repos/GLolol/PyLink/milestones/2/labels","id":1153179,"number":2,"title":"v0.2","description":"","creator":{"login":"GLolol","id":4644601,"avatar_url":"https://avatars.githubusercontent.com/u/4644601?v=3","gravatar_id":"","url":"https://api.github.com/users/GLolol","html_url":"https://github.com/GLolol","followers_url":"https://api.github.com/users/GLolol/followers","following_url":"https://api.github.com/users/GLolol/following{/other_user}","gists_url":"https://api.github.com/users/GLolol/gists{/gist_id}","starred_url":"https://api.github.com/users/GLolol/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GLolol/subscriptions","organizations_url":"https://api.github.com/users/GLolol/orgs","repos_url":"https://api.github.com/users/GLolol/repos","events_url":"https://api.github.com/users/GLolol/events{/privacy}","received_events_url":"https://api.github.com/users/GLolol/received_events","type":"User","site_admin":false},"open_issues":6,"closed_issues":0,"state":"open","created_at":"2015-06-07T06:09:45Z","updated_at":"2015-06-21T02:45:41Z","due_on":null,"closed_at":null},"comments":0,"created_at":"2015-06-21T02:45:41Z","updated_at":"2015-06-21T02:45:41Z","closed_at":null,"body":"There should be [some sort of cache](https://pypi.python.org/pypi/expiringdict/1.1.2) that tracks the amount of kicks/modes/kills sent to a PyLink client to X per Y seconds. If the limit is reached, it should either squit (in the event of kills), or part the client from the channel in the case of mode or kick wars. As far as I'm concerned, atheme services already does this with kills.\r\n\r\nFor PyLink-Relay, this would allow for behaviour quite similar to Janus' CLAIM: but instead of flooding a channel when services start applying DEFCON modes or killing over session limits, it will just delink the problematic networks in question.\r\n\r\n"}}