]> jfr.im git - irc/quakenet/snircd-patchqueue.git/blame - enforceinvisible.patch
whonoidle: hide idle time of users with mode +I in non-HIS setup in WHO
[irc/quakenet/snircd-patchqueue.git] / enforceinvisible.patch
CommitLineData
05278a28 1only disallow _local_ users setting usermode -i when feature AUTOINVISIBLE is turned on
2and do not enforce this setting on remote users, leads to desynch
3
1e16022d 4diff -r 096116177219 ircd/s_user.c
05278a28 5--- a/ircd/s_user.c
6+++ b/ircd/s_user.c
1e16022d 7@@ -1252,8 +1252,7 @@
05278a28 8 if (what == MODE_ADD)
9 SetInvisible(sptr);
10 else
11- if (!feature_bool(FEAT_AUTOINVISIBLE) || IsOper(sptr)) /* Don't allow non-opers to -i if FEAT_AUTOINVISIBLE is set */
12- ClearInvisible(sptr);
13+ ClearInvisible(sptr);
14 break;
15 case 'd':
16 if (what == MODE_ADD)
1e16022d 17@@ -1368,6 +1367,12 @@
18 if (do_set_host && !hostmask && !FlagHas(&setflags, FLAG_LOCOP) && !FlagHas(&setflags, FLAG_OPER))
19 do_set_host = 0;
05278a28 20
21+ /* disallow ordinary users to do MODE -i when feature AUTOINVISIBLE is enabled */
22+ if (FlagHas(&setflags, FLAG_INVISIBLE) && !IsInvisible(sptr) && /* MODE -i */
23+ feature_bool(FEAT_AUTOINVISIBLE) && /* AUTOINVISIBLE is enabled */
24+ !FlagHas(&setflags, FLAG_OPER) && !FlagHas(&setflags, FLAG_LOCOP)) /* (was) not opered */
25+ SetInvisible(sptr);
26+
27 /*
28 * only send wallops to opers
29 */