(self, to)
| 380 | |
| 381 | @flag.admin |
| 382 | def actionAnnouncerStats(self, to): |
| 383 | back = {} |
| 384 | trackers = self.site.announcer.getTrackers() |
| 385 | for site in list(self.server.sites.values()): |
| 386 | for tracker, stats in site.announcer.stats.items(): |
| 387 | if tracker not in trackers: |
| 388 | continue |
| 389 | if tracker not in back: |
| 390 | back[tracker] = {} |
| 391 | is_latest_data = bool(stats["time_request"] > back[tracker].get("time_request", 0) and stats["status"]) |
| 392 | for key, val in stats.items(): |
| 393 | if key.startswith("num_"): |
| 394 | back[tracker][key] = back[tracker].get(key, 0) + val |
| 395 | elif is_latest_data: |
| 396 | back[tracker][key] = val |
| 397 | |
| 398 | return back |
| 399 | |
| 400 | # Sign content.json |
| 401 | def actionSiteSign(self, to, privatekey=None, inner_path="content.json", remove_missing_optional=False, update_changed_files=False, response_ok=True): |
nothing calls this directly
no test coverage detected