32
32
33
33
ModuleHeader MOD_HEADER = {
34
34
"third/nicklock" ,
35
- "1.0 " ,
35
+ "1.1 " ,
36
36
"Adds the /NICKLOCK command which allows server operators to prevent a user from changing their nick during their session." ,
37
37
"Valware" ,
38
38
"unrealircd-6" ,
@@ -54,6 +54,7 @@ CMD_OVERRIDE_FUNC(nick_override);
54
54
void nicklock_free (ModData * m );
55
55
const char * nicklock_serialize (ModData * m );
56
56
void nicklock_unserialize (const char * str , ModData * m );
57
+ int nicklock_whois (Client * requester , Client * client , NameValuePrioList * * list );
57
58
58
59
ModDataInfo * nicklock_md ;
59
60
@@ -76,6 +77,7 @@ MOD_INIT() {
76
77
return MOD_FAILED ;
77
78
}
78
79
80
+ HookAdd (modinfo -> handle , HOOKTYPE_WHOIS , 0 , nicklock_whois );
79
81
CommandAdd (modinfo -> handle , NLOCK , NICKLOCK , 2 , CMD_OPER );
80
82
CommandAdd (modinfo -> handle , RNLOCK , NICKUNLOCK , 1 , CMD_OPER );
81
83
@@ -118,9 +120,6 @@ CMD_FUNC(NICKLOCK)
118
120
char oldnickname [NICKLEN + 1 ];
119
121
MessageTag * mtags = NULL ;
120
122
121
- if (hunt_server (client , NULL , "NICKLOCK" , 1 , parc , parv ) != HUNTED_ISME )
122
- return ;
123
-
124
123
if (!IsOper (client ))
125
124
{
126
125
sendnumeric (client , ERR_NOPRIVILEGES );
@@ -132,6 +131,24 @@ CMD_FUNC(NICKLOCK)
132
131
return ;
133
132
}
134
133
134
+ /* the oper wants to see a list of nicklocked nicks =] */
135
+ if (!strcasecmp (parv [1 ],"-list" ))
136
+ {
137
+ int listnum = 1 ;
138
+ sendnotice (client , "Listing NICKLOCK'd users:" );
139
+ list_for_each_entry (target , & client_list , client_node )
140
+ {
141
+ if (IsNickLock (target ))
142
+ {
143
+ sendnotice (client ,"%d) %s" , listnum , target -> name ); /* show them */
144
+ listnum ++ ;
145
+ }
146
+ }
147
+ return ;
148
+ }
149
+ if (hunt_server (client , NULL , "NICKLOCK" , 1 , parc , parv ) != HUNTED_ISME )
150
+ return ;
151
+
135
152
if (!(target = find_user (parv [1 ], NULL ))) {
136
153
sendnumeric (client , ERR_NOSUCHNICK , parv [1 ]);
137
154
return ;
@@ -237,3 +254,11 @@ CMD_OVERRIDE_FUNC(nick_override)
237
254
CallCommandOverride (ovr , client , recv_mtags , parc , parv );
238
255
return ;
239
256
}
257
+
258
+ int nicklock_whois (Client * requester , Client * client , NameValuePrioList * * list )
259
+ {
260
+ if (IsOper (requester ) && IsNickLock (client ))
261
+ add_nvplist_numeric_fmt (list , 0 , "nicklock" , client , 320 , "%s :has been locked from changing nicks" , client -> name );
262
+
263
+ return 0 ;
264
+ }
0 commit comments