Skip to content
This repository was archived by the owner on Jun 6, 2021. It is now read-only.

Commit d9bb187

Browse files
committed
is_ircop/is_admin/is_service: allow protocol-specific check
Adapted from upstream commit 7790fdb.
1 parent 26731f0 commit d9bb187

File tree

4 files changed

+37
-27
lines changed

4 files changed

+37
-27
lines changed

include/phandler.h

+10
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,13 @@ E void (*topiclock_sts)(channel_t *c);
241241
E void (*quarantine_sts)(user_t *source, user_t *victim, long duration, const char *reason);
242242
/* Ask the proto module if this is valid as an extban */
243243
E bool (*is_extban)(const char *mask);
244+
/* previously located in libathemecore/function.c; used for various
245+
* things that need to know whether a given user has ircd privs */
246+
E bool (*is_ircop)(user_t *u);
247+
/* as above; not used for much */
248+
E bool (*is_admin)(user_t *u);
249+
/* as above; used to respect external services clients */
250+
E bool (*is_service)(user_t *u);
244251

245252
E unsigned int generic_server_login(void);
246253
E void generic_introduce_nick(user_t *u);
@@ -286,6 +293,9 @@ E void generic_mlock_sts(channel_t *c);
286293
E void generic_topiclock_sts(channel_t *c);
287294
E void generic_quarantine_sts(user_t *source, user_t *victim, long duration, const char *reason);
288295
E bool generic_is_extban(const char *mask);
296+
E bool generic_is_ircop(user_t *u);
297+
E bool generic_is_admin(user_t *u);
298+
E bool generic_is_service(user_t *u);
289299

290300
E struct cmode_ *mode_list;
291301
E struct extmode *ignore_mode_list;

include/users.h

-3
Original file line numberDiff line numberDiff line change
@@ -69,11 +69,8 @@ typedef struct {
6969
} hook_user_delete_t;
7070

7171
/* function.c */
72-
E bool is_ircop(user_t *user);
73-
E bool is_admin(user_t *user);
7472
E bool is_internal_client(user_t *user);
7573
E bool is_autokline_exempt(user_t *user);
76-
E bool is_service(user_t *user);
7774

7875
/* users.c */
7976
E mowgli_patricia_t *userlist;

libathemecore/function.c

-24
Original file line numberDiff line numberDiff line change
@@ -781,22 +781,6 @@ bool is_founder(mychan_t *mychan, myentity_t *mt)
781781
return false;
782782
}
783783

784-
bool is_ircop(user_t *user)
785-
{
786-
if (UF_IRCOP & user->flags)
787-
return true;
788-
789-
return false;
790-
}
791-
792-
bool is_admin(user_t *user)
793-
{
794-
if (UF_ADMIN & user->flags)
795-
return true;
796-
797-
return false;
798-
}
799-
800784
bool is_autokline_exempt(user_t *user)
801785
{
802786
mowgli_node_t *n;
@@ -811,14 +795,6 @@ bool is_autokline_exempt(user_t *user)
811795
return false;
812796
}
813797

814-
bool is_service(user_t *user)
815-
{
816-
if (UF_SERVICE & user->flags)
817-
return true;
818-
819-
return false;
820-
}
821-
822798
char *sbytes(float x)
823799
{
824800
if (x > 1073741824.0)

libathemecore/phandler.c

+27
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,9 @@ void (*mlock_sts)(channel_t *c) = generic_mlock_sts;
6868
void (*topiclock_sts)(channel_t *c) = generic_topiclock_sts;
6969
void (*quarantine_sts)(user_t *source, user_t *victim, long duration, const char *reason) = generic_quarantine_sts;
7070
bool (*is_extban)(const char *mask) = generic_is_extban;
71+
bool (*is_ircop)(user_t *u) = generic_is_ircop;
72+
bool (*is_admin)(user_t *u) = generic_is_admin;
73+
bool (*is_service)(user_t *u) = generic_is_service;
7174

7275
unsigned int generic_server_login(void)
7376
{
@@ -397,6 +400,30 @@ bool generic_is_extban(const char *mask)
397400
return false;
398401
}
399402

403+
bool generic_is_ircop(user_t *u)
404+
{
405+
if (UF_IRCOP & u->flags)
406+
return true;
407+
408+
return false;
409+
}
410+
411+
bool generic_is_admin(user_t *u)
412+
{
413+
if (UF_ADMIN & u->flags)
414+
return true;
415+
416+
return false;
417+
}
418+
419+
bool generic_is_service(user_t *u)
420+
{
421+
if (UF_SERVICE & u->flags)
422+
return true;
423+
424+
return false;
425+
}
426+
400427
/* vim:cinoptions=>s,e0,n0,f0,{0,}0,^0,=s,ps,t0,c3,+s,(2s,us,)20,*30,gs,hs
401428
* vim:ts=8
402429
* vim:sw=8

0 commit comments

Comments
 (0)