X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=ircd%2Fclient.c;h=16367d15af183655ecc2a65a37da4ed9d41db0e5;hb=refs%2Fheads%2Fupstream;hp=6aca8db4a761fe8bff7fd5110a35c8cadb4deef3;hpb=7c57a8f02f5802286ef43b0be65a5c731b7df4cf;p=ircu2.10.12-pk.git diff --git a/ircd/client.c b/ircd/client.c index 6aca8db..16367d1 100644 --- a/ircd/client.c +++ b/ircd/client.c @@ -152,6 +152,11 @@ client_set_privs(struct Client *client, struct ConfItem *oper) if (!privs_defaults_set) { memset(&privs_global, -1, sizeof(privs_global)); + FlagClr(&privs_global, PRIV_WALK_LCHAN); + FlagClr(&privs_global, PRIV_UNLIMIT_QUERY); + FlagClr(&privs_global, PRIV_SET); + FlagClr(&privs_global, PRIV_BADCHAN); + FlagClr(&privs_global, PRIV_LOCAL_BADCHAN); FlagClr(&privs_global, PRIV_APASS_OPMODE); memset(&privs_local, 0, sizeof(privs_local)); @@ -259,3 +264,19 @@ client_report_privs(struct Client *to, struct Client *client) return 0; } + +int client_get_priv(struct Client* client, enum Priv priv) { + struct Privs *privs = &cli_privs(client); + struct SLink* list; + if(FlagHas(privs, priv)) + return 1; + + for (list = cli_confs(client); list != NULL; list = list->next) { + struct ConfItem *aconf; + aconf = list->value.aconf; + if (FlagHas(&aconf->privs, priv)) + return 1; + } + return 0; +} +