]> jfr.im git - irc/quakenet/snircd-patchqueue.git/blame - paranoid.patch
rename patch files
[irc/quakenet/snircd-patchqueue.git] / paranoid.patch
CommitLineData
edb26b39 1# HG changeset patch
6fe1b135 2# Parent 4a99caecf4d0ac2dccf921617dd974f66f8ad9b4
edb26b39 3
6fe1b135
P
4diff -r 4a99caecf4d0 include/client.h
5--- a/include/client.h Sat Jul 20 14:46:36 2013 +0100
6+++ b/include/client.h Sat Jul 20 14:47:02 2013 +0100
edb26b39
P
7@@ -90,7 +90,7 @@
8 #define FlagClr(set,flag) ((set)->bits[FLAGSET_INDEX(flag)] &= ~FLAGSET_MASK(flag))
9
10 /** String containing valid user modes, in no particular order. */
6fe1b135
P
11-#define infousermodes "diOoswkgxRXIn"
12+#define infousermodes "diOoswkgxRXInP"
edb26b39
P
13
14 /** Operator privileges. */
15 enum Priv
16@@ -167,6 +167,7 @@
17 FLAG_ACCOUNT, /**< account name has been set */
18 FLAG_ACCOUNTONLY, /**< ASUKA_R: hide privmsgs/notices if
19 user is not authed or opered */
20+ FLAG_PARANOID, /**< ASUKA_P: sends notices on whois */
21 FLAG_HIDDENHOST, /**< user's host is hidden */
22 FLAG_SETHOST, /**< ASUKA_h: oper's host is changed */
23 FLAG_NOCHAN, /**< user's channels are hidden */
6fe1b135 24@@ -599,6 +600,9 @@
edb26b39
P
25 /** Return non-zero if the client should not receive privmsgs/notices
26 * from unauthed users */
27 #define IsAccountOnly(x) HasFlag(x, FLAG_ACCOUNTONLY)
28+/** Return non-zero if the client should receive notices when someone
29+ * does a whois on it. */
30+#define IsParanoid(x) HasFlag(x, FLAG_PARANOID)
31
32 /** Return non-zero if the client has operator or server privileges. */
33 #define IsPrivileged(x) (IsAnOper(x) || IsServer(x))
6fe1b135 34@@ -658,6 +662,8 @@
edb26b39
P
35 #define SetPingSent(x) SetFlag(x, FLAG_PINGSENT)
36 /** Mark a client as having mode +R (account only). */
37 #define SetAccountOnly(x) SetFlag(x, FLAG_ACCOUNTONLY)
38+/** Mark a client as having mode +P (paranoid). */
39+#define SetParanoid(x) SetFlag(x, FLAG_PARANOID)
40
41 /** Return non-zero if \a sptr sees \a acptr as an operator. */
42 #define SeeOper(sptr,acptr) (IsAnOper(acptr) && (HasPriv(acptr, PRIV_DISPLAY) \
6fe1b135 43@@ -703,6 +709,8 @@
edb26b39
P
44 #define ClearHub(x) ClrFlag(x, FLAG_HUB)
45 /** Remove mode +R (account only) from a client */
46 #define ClearAccountOnly(x) ClrFlag(x, FLAG_ACCOUNTONLY)
47+/** Remove mode +P (paranoid) from a client */
48+#define ClearParanoid(x) ClrFlag(x, FLAG_PARANOID)
49
50 /* free flags */
51 #define FREEFLAG_SOCKET 0x0001 /**< socket needs to be freed */
6fe1b135
P
52diff -r 4a99caecf4d0 ircd/m_whois.c
53--- a/ircd/m_whois.c Sat Jul 20 14:46:36 2013 +0100
54+++ b/ircd/m_whois.c Sat Jul 20 14:47:02 2013 +0100
edb26b39
P
55@@ -215,6 +215,9 @@
56 send_reply(sptr, RPL_WHOISACTUALLY, name, user->realusername,
57 user->realhost, ircd_ntoa(&cli_ip(acptr)));
58
59+ if (!IsAnOper(sptr) && IsParanoid(acptr) && IsAnOper(acptr))
60+ sendcmdto_one(&me, CMD_NOTICE, acptr, "%C :whois: %s performed a /WHOIS on you.", acptr, cli_name(sptr));
61+
62 /* Hint: if your looking to add more flags to a user, eg +h, here's
63 * probably a good place to add them :)
64 */
6fe1b135
P
65diff -r 4a99caecf4d0 ircd/s_user.c
66--- a/ircd/s_user.c Sat Jul 20 14:46:36 2013 +0100
67+++ b/ircd/s_user.c Sat Jul 20 14:47:02 2013 +0100
68@@ -518,7 +518,8 @@
edb26b39
P
69 { FLAG_XTRAOP, 'X' },
70 { FLAG_NOCHAN, 'n' },
71 { FLAG_NOIDLE, 'I' },
72- { FLAG_SETHOST, 'h' }
73+ { FLAG_SETHOST, 'h' },
74+ { FLAG_PARANOID, 'P' }
75 };
76
77 /** Length of #userModeList. */
6fe1b135 78@@ -1339,6 +1340,12 @@
edb26b39
P
79 else
80 ClearAccountOnly(sptr);
81 break;
82+ case 'P':
83+ if (what == MODE_ADD)
84+ SetParanoid(sptr);
85+ else
86+ ClearParanoid(sptr);
87+ break;
88 default:
89 send_reply(sptr, ERR_UMODEUNKNOWNFLAG, *m);
90 break;
6fe1b135 91@@ -1369,6 +1376,8 @@
edb26b39
P
92 ClearNoChan(sptr);
93 if (!FlagHas(&setflags, FLAG_NOIDLE) && !IsOper(sptr))
94 ClearNoIdle(sptr);
95+ if (!FlagHas(&setflags, FLAG_PARANOID) && !IsOper(sptr))
96+ ClearParanoid(sptr);
97
98 /*
99 * only send wallops to opers