]>
jfr.im git - irc/quakenet/newserv.git/blob - chanserv/chanservstdcmds.c
2 * This contains Q9's "built in" commands and CTCP handlers
6 #include "../core/schedule.h"
7 #include "../lib/irc_string.h"
11 int cs_dorehash(void *source
, int cargc
, char **cargv
) {
13 Command
*cmdlist
[200];
16 /* Reload the response text first */
19 /* Now the commands */
20 n
=getcommandlist(cscommands
, cmdlist
, 200);
23 loadcommandsummary(cmdlist
[i
]);
25 chanservstdmessage(sender
, QM_DONE
);
30 int cs_doquit(void *source
, int cargc
, char **cargv
) {
31 char *reason
="Leaving";
32 nick
*sender
=(nick
*)source
;
38 chanservstdmessage(sender
, QM_DONE
);
40 deregisterlocaluser(chanservnick
, reason
);
41 scheduleoneshot(time(NULL
)+1,&chanservreguser
,NULL
);
46 int cs_dorename(void *source
, int cargc
, char **cargv
) {
47 char newnick
[NICKLEN
+1];
51 chanservstdmessage(sender
, QM_NOTENOUGHPARAMS
, "rename");
55 strncpy(newnick
,cargv
[0],NICKLEN
);
56 newnick
[NICKLEN
]='\0';
58 renamelocaluser(chanservnick
, newnick
);
59 chanservstdmessage(sender
, QM_DONE
);
64 int cs_doshowcommands(void *source
, int cargc
, char **cargv
) {
67 Command
*cmdlist
[200];
73 n
=getcommandlist(cscommands
, cmdlist
, 200);
74 rup
=getreguserfromnick(sender
);
81 chanservstdmessage(sender
, QM_COMMANDLIST
);
84 if (cargc
>0 && !match2strings(cargv
[0],cmdlist
[i
]->command
->content
))
87 /* Don't list aliases */
88 if (cmdlist
[i
]->level
& QCMD_ALIAS
)
91 /* Check that this user can use this command.. */
92 if ((cmdlist
[i
]->level
& QCMD_AUTHED
) && !rup
)
95 if ((cmdlist
[i
]->level
& QCMD_NOTAUTHED
) && rup
)
98 if ((cmdlist
[i
]->level
& QCMD_HELPER
) &&
99 (!rup
|| !UHasHelperPriv(rup
)))
102 if ((cmdlist
[i
]->level
& QCMD_OPER
) &&
103 (!rup
|| !UHasOperPriv(rup
) || !IsOper(sender
)))
106 if ((cmdlist
[i
]->level
& QCMD_ADMIN
) &&
107 (!rup
|| !UHasAdminPriv(rup
) || !IsOper(sender
)))
110 if ((cmdlist
[i
]->level
& QCMD_DEV
) &&
111 (!rup
|| !UIsDev(rup
) || !IsOper(sender
)))
114 summary
=(cmdsummary
*)cmdlist
[i
]->ext
;
116 if (summary
->bylang
[lang
]) {
117 message
=summary
->bylang
[lang
]->content
;
118 } else if (summary
->bylang
[0]) {
119 message
=summary
->bylang
[0]->content
;
121 message
=summary
->def
->content
;
124 chanservsendmessage(sender
, "%-20s %s",cmdlist
[i
]->command
->content
, message
);
127 chanservstdmessage(sender
, QM_ENDOFLIST
);
132 int cs_dohelp(void *source
, int cargc
, char **cargv
) {
137 return cs_doshowcommands(source
,cargc
,cargv
);
139 if (!(cmd
=findcommandintree(cscommands
, cargv
[0], 1))) {
140 chanservstdmessage(sender
, QM_UNKNOWNCMD
, cargv
[0]);
144 csdb_dohelp(sender
, cmd
);
148 int cs_doctcpping(void *source
, int cargc
, char **cargv
) {
149 char *nullbuf
="\001";
151 sendnoticetouser(chanservnick
, source
, "%cPING %s",
152 1, cargc
?cargv
[0]:nullbuf
);
157 int cs_doctcpversion(void *source
, int cargc
, char **cargv
) {
158 sendnoticetouser(chanservnick
, source
, "\01VERSION Q9 version 0.75. (C) 2002-3 David Mansell (splidge)\01");
159 sendnoticetouser(chanservnick
, source
, "\01VERSION Built on newserv version 1.00. (C) 2002-3 David Mansell (splidge)\01");
164 int cs_doctcpgender(void *source
, int cargc
, char **cargv
) {
165 sendnoticetouser(chanservnick
, source
, "\1GENDER Anyone who has a bitch mode has to be female ;)\1");