]>
jfr.im git - irc/quakenet/newserv.git/blob - noperserv/noperserv_commands.c
7 #include "../control/control.h"
8 #include "../nick/nick.h"
9 #include "../localuser/localuserchannel.h"
11 int controlkill(void *sender
, int cargc
, char **cargv
);
12 int controlopchan(void *sender
, int cargc
, char **cargv
);
13 int controlkick(void *sender
, int cargc
, char **cargv
);
16 registercontrolhelpcmd("kill",NO_OPER
,2,&controlkill
,"Usage: kill nick <reason>\nKill specificed user.");
17 registercontrolhelpcmd("opchan",NO_OPER
,2,&controlopchan
,"Usage: opchan channel nick\nGive user +o on channel.");
18 registercontrolhelpcmd("kick",NO_OPER
,3,&controlkick
,"Usage: kick channel user <reason>\nKick a user from the given channel");
22 deregistercontrolcmd("kill",controlkill
);
23 deregistercontrolcmd("opchan",controlopchan
);
24 deregistercontrolcmd("kick",controlkick
);
27 int controlkick(void *sender
, int cargc
, char **cargv
) {
28 nick
*np
=(nick
*)sender
;
35 controlreply(sender
,"Usage: kick channel user <reason>");
39 if ((cp
=findchannel(cargv
[0]))!=NULL
) {
40 if (cargv
[1][0]=='#') {
41 if (!(target
=getnickbynumericstr(cargv
[1]+1))) {
42 controlreply(np
,"Sorry, couldn't find numeric %s",cargv
[0]+1);
46 if ((target
=getnickbynick(cargv
[1]))==NULL
) {
47 controlreply(np
,"Sorry, couldn't find that user");
53 irc_send("%s K %s %s :%s",mynumeric
->content
,cp
->index
->name
->content
,longtonumeric(target
->numeric
,5),cargv
[2]);
55 irc_send("%s K %s %s :Kicked",mynumeric
->content
,cp
->index
->name
->content
,longtonumeric(target
->numeric
,5));
57 delnickfromchannel(cp
, target
->numeric
, 1);
59 controlreply(sender
,"Put Kick for %s from %s.", target
->nick
, cp
->index
->name
->content
);
60 controlwall(NO_OPER
, NL_KICKS
, "%s/%s sent KICK for %s!%s@%s from %s", np
->nick
, np
->authname
, target
->nick
, target
->ident
, target
->host
->name
->content
,cp
->index
->name
->content
);
63 controlreply(np
,"Couldn't find channel %s.",cargv
[0]);
70 int controlopchan(void *source
, int cargc
, char **cargv
) {
71 nick
*sender
=(nick
*)source
;
79 controlreply(sender
,"Usage: opchan channel user");
83 if ((cp
=findchannel(cargv
[0]))!=NULL
) {
84 if (cargv
[1][0]=='#') {
85 if (!(target
=getnickbynumericstr(cargv
[1]+1))) {
86 controlreply(sender
,"Sorry, couldn't find numeric %s",cargv
[0]+1);
90 if ((target
=getnickbynick(cargv
[1]))==NULL
) {
91 controlreply((nick
*)sender
,"Sorry, couldn't find that user");
96 if ((lp
=getnumerichandlefromchanhash(cp
->users
,target
->numeric
))==NULL
) {
97 controlreply((nick
*)sender
,"Sorry, User not on channel");
102 irc_send("%s OM %s +o %s",mynumeric
->content
,cp
->index
->name
->content
,longtonumeric(target
->numeric
,5));
103 controlreply(sender
,"Put mode +o %s on %s.", target
->nick
, cp
->index
->name
->content
);
105 controlreply(sender
,"Couldn't find channel %s.",cargv
[0]);
112 int controlkill(void *sender
, int cargc
, char **cargv
) {
116 nick
*np
= (nick
*)sender
;
119 controlreply(np
,"Usage: kill <user> <reason>");
123 if (cargv
[0][0]=='#') {
124 if (!(target
=getnickbynumericstr(cargv
[0]+1))) {
125 controlreply(np
,"Sorry, couldn't find numeric %s",cargv
[0]+1);
129 if ((target
=getnickbynick(cargv
[0]))==NULL
) {
130 controlreply(np
,"Sorry, couldn't find that user");
135 killuser(NULL
, target
, (cargc
>1)?cargv
[1]:"Killed");
136 controlreply(np
,"KILL sent.");
137 controlwall(NO_OPER
, NL_KILLS
, "%s/%s sent KILL for %s!%s@%s (%s)", np
->nick
, np
->authname
, target
->nick
, target
->ident
, target
->host
->name
->content
,(cargc
>1)?cargv
[1]:"Killed");