- /* letter function need_oper need_admin */
- ['a'] = { stats_dns_servers, 1, 1, },
- ['A'] = { stats_dns_servers, 1, 1, },
- ['b'] = { stats_delay, 1, 1, },
- ['B'] = { stats_hash, 1, 1, },
- ['c'] = { stats_connect, 0, 0, },
- ['C'] = { stats_capability, 1, 0, },
- ['d'] = { stats_tdeny, 1, 0, },
- ['D'] = { stats_deny, 1, 0, },
- ['e'] = { stats_exempt, 1, 0, },
- ['E'] = { stats_events, 1, 1, },
- ['f'] = { stats_comm, 1, 1, },
- ['F'] = { stats_comm, 1, 1, },
- ['g'] = { stats_prop_klines, 1, 0, },
- ['h'] = { stats_hubleaf, 0, 0, },
- ['H'] = { stats_hubleaf, 0, 0, },
- ['i'] = { stats_auth, 0, 0, },
- ['I'] = { stats_auth, 0, 0, },
- ['k'] = { stats_tklines, 0, 0, },
- ['K'] = { stats_klines, 0, 0, },
- ['l'] = { NULL /* special */, 0, 0, },
- ['L'] = { NULL /* special */, 0, 0, },
- ['m'] = { stats_messages, 0, 0, },
- ['M'] = { stats_messages, 0, 0, },
- ['n'] = { stats_dnsbl, 0, 0, },
- ['o'] = { stats_oper, 0, 0, },
- ['O'] = { stats_privset, 1, 0, },
- ['p'] = { stats_operedup, 0, 0, },
- ['P'] = { stats_ports, 0, 0, },
- ['q'] = { stats_tresv, 1, 0, },
- ['Q'] = { stats_resv, 1, 0, },
- ['r'] = { stats_usage, 1, 0, },
- ['R'] = { stats_usage, 1, 0, },
- ['s'] = { stats_ssld, 1, 1, },
- ['S'] = { stats_ssld, 1, 1, },
- ['t'] = { stats_tstats, 1, 0, },
- ['T'] = { stats_tstats, 1, 0, },
- ['u'] = { stats_uptime, 0, 0, },
- ['U'] = { stats_shared, 1, 0, },
- ['v'] = { stats_servers, 0, 0, },
- ['V'] = { stats_servers, 0, 0, },
- ['x'] = { stats_tgecos, 1, 0, },
- ['X'] = { stats_gecos, 1, 0, },
- ['y'] = { stats_class, 0, 0, },
- ['Y'] = { stats_class, 0, 0, },
- ['z'] = { stats_memory, 1, 0, },
- ['Z'] = { stats_ziplinks, 1, 0, },
- ['?'] = { stats_servlinks, 0, 0, },
+/* letter handler admin priv */
+ ['a'] = HANDLER_NORM(stats_dns_servers, true, NULL),
+ ['A'] = HANDLER_NORM(stats_dns_servers, true, NULL),
+ ['b'] = HANDLER_NORM(stats_delay, true, NULL),
+ ['B'] = HANDLER_NORM(stats_hash, true, NULL),
+ ['c'] = HANDLER_NORM(stats_connect, false, NULL),
+ ['C'] = HANDLER_NORM(stats_capability, false, "oper:general"),
+ ['d'] = HANDLER_NORM(stats_tdeny, false, "oper:general"),
+ ['D'] = HANDLER_NORM(stats_deny, false, "oper:general"),
+ ['e'] = HANDLER_NORM(stats_exempt, false, "oper:general"),
+ ['E'] = HANDLER_NORM(stats_events, true, NULL),
+ ['f'] = HANDLER_NORM(stats_comm, true, NULL),
+ ['F'] = HANDLER_NORM(stats_comm, true, NULL),
+ ['g'] = HANDLER_NORM(stats_prop_klines, false, "oper:general"),
+ ['i'] = HANDLER_NORM(stats_auth, false, NULL),
+ ['I'] = HANDLER_NORM(stats_auth, false, NULL),
+ ['k'] = HANDLER_NORM(stats_tklines, false, NULL),
+ ['K'] = HANDLER_NORM(stats_klines, false, NULL),
+ ['l'] = HANDLER_PARV(stats_ltrace, false, NULL),
+ ['L'] = HANDLER_PARV(stats_ltrace, false, NULL),
+ ['m'] = HANDLER_NORM(stats_messages, false, NULL),
+ ['M'] = HANDLER_NORM(stats_messages, false, NULL),
+ ['n'] = HANDLER_NORM(stats_dnsbl, false, NULL),
+ ['o'] = HANDLER_NORM(stats_oper, false, NULL),
+ ['O'] = HANDLER_NORM(stats_privset, false, "oper:privs"),
+ ['p'] = HANDLER_NORM(stats_operedup, false, NULL),
+ ['P'] = HANDLER_NORM(stats_ports, false, NULL),
+ ['q'] = HANDLER_NORM(stats_tresv, false, "oper:general"),
+ ['Q'] = HANDLER_NORM(stats_resv, false, "oper:general"),
+ ['r'] = HANDLER_NORM(stats_usage, false, "oper:general"),
+ ['R'] = HANDLER_NORM(stats_usage, false, "oper:general"),
+ ['s'] = HANDLER_NORM(stats_secure, false, "oper:general"),
+ ['S'] = HANDLER_NORM(stats_ssld, true, NULL),
+ ['t'] = HANDLER_NORM(stats_tstats, false, "oper:general"),
+ ['T'] = HANDLER_NORM(stats_tstats, false, "oper:general"),
+ ['u'] = HANDLER_NORM(stats_uptime, false, NULL),
+ ['v'] = HANDLER_NORM(stats_servers, false, NULL),
+ ['V'] = HANDLER_NORM(stats_servers, false, NULL),
+ ['x'] = HANDLER_NORM(stats_tgecos, false, "oper:general"),
+ ['X'] = HANDLER_NORM(stats_gecos, false, "oper:general"),
+ ['y'] = HANDLER_NORM(stats_class, false, NULL),
+ ['Y'] = HANDLER_NORM(stats_class, false, NULL),
+ ['z'] = HANDLER_NORM(stats_memory, false, "oper:general"),
+ ['?'] = HANDLER_NORM(stats_servlinks, false, NULL),