|
@@ -3,715 +3,6 @@
|
|
|
*
|
|
*
|
|
|
*/
|
|
*/
|
|
|
|
|
|
|
|
-static int tcl_killban STDVAR
|
|
|
|
|
-{
|
|
|
|
|
- struct chanset_t *chan;
|
|
|
|
|
-
|
|
|
|
|
- BADARGS(2, 2, " ban");
|
|
|
|
|
- if (u_delban(NULL, argv[1], 1) > 0) {
|
|
|
|
|
- for (chan = chanset; chan; chan = chan->next)
|
|
|
|
|
- add_mode(chan, '-', 'b', argv[1]);
|
|
|
|
|
- Tcl_AppendResult(irp, "1", NULL);
|
|
|
|
|
- } else
|
|
|
|
|
- Tcl_AppendResult(irp, "0", NULL);
|
|
|
|
|
- return TCL_OK;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-static int tcl_killchanban STDVAR
|
|
|
|
|
-{
|
|
|
|
|
- struct chanset_t *chan;
|
|
|
|
|
-
|
|
|
|
|
- BADARGS(3, 3, " channel ban");
|
|
|
|
|
- chan = findchan_by_dname(argv[1]);
|
|
|
|
|
- if (!chan) {
|
|
|
|
|
- Tcl_AppendResult(irp, "invalid channel: ", argv[1], NULL);
|
|
|
|
|
- return TCL_ERROR;
|
|
|
|
|
- }
|
|
|
|
|
- if (u_delban(chan, argv[2], 1) > 0) {
|
|
|
|
|
- add_mode(chan, '-', 'b', argv[2]);
|
|
|
|
|
- Tcl_AppendResult(irp, "1", NULL);
|
|
|
|
|
- } else
|
|
|
|
|
- Tcl_AppendResult(irp, "0", NULL);
|
|
|
|
|
- return TCL_OK;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-static int tcl_killexempt STDVAR
|
|
|
|
|
-{
|
|
|
|
|
- struct chanset_t *chan;
|
|
|
|
|
-
|
|
|
|
|
- BADARGS(2, 2, " exempt");
|
|
|
|
|
- if (u_delexempt(NULL,argv[1],1) > 0) {
|
|
|
|
|
- for (chan = chanset; chan; chan = chan->next)
|
|
|
|
|
- add_mode(chan, '-', 'e', argv[1]);
|
|
|
|
|
- Tcl_AppendResult(irp, "1", NULL);
|
|
|
|
|
- } else
|
|
|
|
|
- Tcl_AppendResult(irp, "0", NULL);
|
|
|
|
|
- return TCL_OK;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-static int tcl_killchanexempt STDVAR
|
|
|
|
|
-{
|
|
|
|
|
- struct chanset_t *chan;
|
|
|
|
|
-
|
|
|
|
|
- BADARGS(3, 3, " channel exempt");
|
|
|
|
|
- chan = findchan_by_dname(argv[1]);
|
|
|
|
|
- if (!chan) {
|
|
|
|
|
- Tcl_AppendResult(irp, "invalid channel: ", argv[1], NULL);
|
|
|
|
|
- return TCL_ERROR;
|
|
|
|
|
- }
|
|
|
|
|
- if (u_delexempt(chan, argv[2],1) > 0) {
|
|
|
|
|
- add_mode(chan, '-', 'e', argv[2]);
|
|
|
|
|
- Tcl_AppendResult(irp, "1", NULL);
|
|
|
|
|
- } else
|
|
|
|
|
- Tcl_AppendResult(irp, "0", NULL);
|
|
|
|
|
- return TCL_OK;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-static int tcl_killinvite STDVAR
|
|
|
|
|
-{
|
|
|
|
|
- struct chanset_t *chan;
|
|
|
|
|
-
|
|
|
|
|
- BADARGS(2, 2, " invite");
|
|
|
|
|
- if (u_delinvite(NULL,argv[1],1) > 0) {
|
|
|
|
|
- for (chan = chanset; chan; chan = chan->next)
|
|
|
|
|
- add_mode(chan, '-', 'I', argv[1]);
|
|
|
|
|
- Tcl_AppendResult(irp, "1", NULL);
|
|
|
|
|
- } else
|
|
|
|
|
- Tcl_AppendResult(irp, "0", NULL);
|
|
|
|
|
- return TCL_OK;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-static int tcl_killchaninvite STDVAR
|
|
|
|
|
-{
|
|
|
|
|
- struct chanset_t *chan;
|
|
|
|
|
-
|
|
|
|
|
- BADARGS(3, 3, " channel invite");
|
|
|
|
|
- chan = findchan_by_dname(argv[1]);
|
|
|
|
|
- if (!chan) {
|
|
|
|
|
- Tcl_AppendResult(irp, "invalid channel: ", argv[1], NULL);
|
|
|
|
|
- return TCL_ERROR;
|
|
|
|
|
- }
|
|
|
|
|
- if (u_delinvite(chan, argv[2],1) > 0) {
|
|
|
|
|
- add_mode(chan, '-', 'I', argv[2]);
|
|
|
|
|
- Tcl_AppendResult(irp, "1", NULL);
|
|
|
|
|
- } else
|
|
|
|
|
- Tcl_AppendResult(irp, "0", NULL);
|
|
|
|
|
- return TCL_OK;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-static int tcl_stick STDVAR
|
|
|
|
|
-{
|
|
|
|
|
- struct chanset_t *chan;
|
|
|
|
|
- int ok = 0;
|
|
|
|
|
-
|
|
|
|
|
- BADARGS(2, 3, " ban ?channel?");
|
|
|
|
|
- if (argc == 3) {
|
|
|
|
|
- chan = findchan_by_dname(argv[2]);
|
|
|
|
|
- if (!chan) {
|
|
|
|
|
- Tcl_AppendResult(irp, "invalid channel: ", argv[2], NULL);
|
|
|
|
|
- return TCL_ERROR;
|
|
|
|
|
- }
|
|
|
|
|
- if (u_setsticky_ban(chan, argv[1], !strncmp(argv[0], "un", 2) ? 0 : 1))
|
|
|
|
|
- ok = 1;
|
|
|
|
|
- }
|
|
|
|
|
- if (!ok && u_setsticky_ban(NULL, argv[1],
|
|
|
|
|
- !strncmp(argv[0], "un", 2) ? 0 : 1))
|
|
|
|
|
- ok = 1;
|
|
|
|
|
- if (ok)
|
|
|
|
|
- Tcl_AppendResult(irp, "1", NULL);
|
|
|
|
|
- else
|
|
|
|
|
- Tcl_AppendResult(irp, "0", NULL);
|
|
|
|
|
- return TCL_OK;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-static int tcl_stickinvite STDVAR
|
|
|
|
|
-{
|
|
|
|
|
- struct chanset_t *chan;
|
|
|
|
|
- int ok = 0;
|
|
|
|
|
-
|
|
|
|
|
- BADARGS(2, 3, " ban ?channel?");
|
|
|
|
|
- if (argc == 3) {
|
|
|
|
|
- chan = findchan_by_dname(argv[2]);
|
|
|
|
|
- if (!chan) {
|
|
|
|
|
- Tcl_AppendResult(irp, "invalid channel: ", argv[2], NULL);
|
|
|
|
|
- return TCL_ERROR;
|
|
|
|
|
- }
|
|
|
|
|
- if (u_setsticky_invite(chan, argv[1], !strncmp(argv[0], "un", 2) ? 0 : 1))
|
|
|
|
|
- ok = 1;
|
|
|
|
|
- }
|
|
|
|
|
- if (!ok && u_setsticky_invite(NULL, argv[1],
|
|
|
|
|
- !strncmp(argv[0], "un", 2) ? 0 : 1))
|
|
|
|
|
- ok = 1;
|
|
|
|
|
- if (ok)
|
|
|
|
|
- Tcl_AppendResult(irp, "1", NULL);
|
|
|
|
|
- else
|
|
|
|
|
- Tcl_AppendResult(irp, "0", NULL);
|
|
|
|
|
- return TCL_OK;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-static int tcl_stickexempt STDVAR
|
|
|
|
|
-{
|
|
|
|
|
- struct chanset_t *chan;
|
|
|
|
|
- int ok = 0;
|
|
|
|
|
-
|
|
|
|
|
- BADARGS(2, 3, " ban ?channel?");
|
|
|
|
|
- if (argc == 3) {
|
|
|
|
|
- chan = findchan_by_dname(argv[2]);
|
|
|
|
|
- if (!chan) {
|
|
|
|
|
- Tcl_AppendResult(irp, "invalid channel: ", argv[2], NULL);
|
|
|
|
|
- return TCL_ERROR;
|
|
|
|
|
- }
|
|
|
|
|
- if (u_setsticky_exempt(chan, argv[1], !strncmp(argv[0], "un", 2) ? 0 : 1))
|
|
|
|
|
- ok = 1;
|
|
|
|
|
- }
|
|
|
|
|
- if (!ok && u_setsticky_exempt(NULL, argv[1],
|
|
|
|
|
- !strncmp(argv[0], "un", 2) ? 0 : 1))
|
|
|
|
|
- ok = 1;
|
|
|
|
|
- if (ok)
|
|
|
|
|
- Tcl_AppendResult(irp, "1", NULL);
|
|
|
|
|
- else
|
|
|
|
|
- Tcl_AppendResult(irp, "0", NULL);
|
|
|
|
|
- return TCL_OK;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-static int tcl_isban STDVAR
|
|
|
|
|
-{
|
|
|
|
|
- struct chanset_t *chan;
|
|
|
|
|
- int ok = 0;
|
|
|
|
|
-
|
|
|
|
|
- BADARGS(2, 3, " ban ?channel?");
|
|
|
|
|
- if (argc == 3) {
|
|
|
|
|
- chan = findchan_by_dname(argv[2]);
|
|
|
|
|
- if (!chan) {
|
|
|
|
|
- Tcl_AppendResult(irp, "invalid channel: ", argv[2], NULL);
|
|
|
|
|
- return TCL_ERROR;
|
|
|
|
|
- }
|
|
|
|
|
- if (u_equals_mask(chan->bans, argv[1]))
|
|
|
|
|
- ok = 1;
|
|
|
|
|
- }
|
|
|
|
|
- if (u_equals_mask(global_bans, argv[1]))
|
|
|
|
|
- ok = 1;
|
|
|
|
|
- if (ok)
|
|
|
|
|
- Tcl_AppendResult(irp, "1", NULL);
|
|
|
|
|
- else
|
|
|
|
|
- Tcl_AppendResult(irp, "0", NULL);
|
|
|
|
|
- return TCL_OK;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-static int tcl_isexempt STDVAR
|
|
|
|
|
-{
|
|
|
|
|
- struct chanset_t *chan;
|
|
|
|
|
- int ok = 0;
|
|
|
|
|
-
|
|
|
|
|
- BADARGS(2, 3, " exempt ?channel?");
|
|
|
|
|
- if (argc == 3) {
|
|
|
|
|
- chan = findchan_by_dname(argv[2]);
|
|
|
|
|
- if (!chan) {
|
|
|
|
|
- Tcl_AppendResult(irp, "invalid channel: ", argv[2], NULL);
|
|
|
|
|
- return TCL_ERROR;
|
|
|
|
|
- }
|
|
|
|
|
- if (u_equals_mask(chan->exempts, argv[1]))
|
|
|
|
|
- ok = 1;
|
|
|
|
|
- }
|
|
|
|
|
- if (u_equals_mask(global_exempts,argv[1]))
|
|
|
|
|
- ok = 1;
|
|
|
|
|
- if (ok)
|
|
|
|
|
- Tcl_AppendResult(irp, "1", NULL);
|
|
|
|
|
- else
|
|
|
|
|
- Tcl_AppendResult(irp, "0", NULL);
|
|
|
|
|
- return TCL_OK;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-static int tcl_isinvite STDVAR
|
|
|
|
|
-{
|
|
|
|
|
- struct chanset_t *chan;
|
|
|
|
|
- int ok = 0;
|
|
|
|
|
-
|
|
|
|
|
- BADARGS(2, 3, " invite ?channel?");
|
|
|
|
|
- if (argc == 3) {
|
|
|
|
|
- chan = findchan_by_dname(argv[2]);
|
|
|
|
|
- if (!chan) {
|
|
|
|
|
- Tcl_AppendResult(irp, "invalid channel: ", argv[2], NULL);
|
|
|
|
|
- return TCL_ERROR;
|
|
|
|
|
- }
|
|
|
|
|
- if (u_equals_mask(chan->invites, argv[1]))
|
|
|
|
|
- ok = 1;
|
|
|
|
|
- }
|
|
|
|
|
- if (u_equals_mask(global_invites,argv[1]))
|
|
|
|
|
- ok = 1;
|
|
|
|
|
- if (ok)
|
|
|
|
|
- Tcl_AppendResult(irp, "1", NULL);
|
|
|
|
|
- else
|
|
|
|
|
- Tcl_AppendResult(irp, "0", NULL);
|
|
|
|
|
- return TCL_OK;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-static int tcl_isbansticky STDVAR
|
|
|
|
|
-{
|
|
|
|
|
- struct chanset_t *chan;
|
|
|
|
|
- int ok = 0;
|
|
|
|
|
-
|
|
|
|
|
- BADARGS(2, 3, " ban ?channel?");
|
|
|
|
|
- if (argc == 3) {
|
|
|
|
|
- chan = findchan_by_dname(argv[2]);
|
|
|
|
|
- if (!chan) {
|
|
|
|
|
- Tcl_AppendResult(irp, "invalid channel: ", argv[2], NULL);
|
|
|
|
|
- return TCL_ERROR;
|
|
|
|
|
- }
|
|
|
|
|
- if (u_sticky_mask(chan->bans, argv[1]))
|
|
|
|
|
- ok = 1;
|
|
|
|
|
- }
|
|
|
|
|
- if (u_sticky_mask(global_bans, argv[1]))
|
|
|
|
|
- ok = 1;
|
|
|
|
|
- if (ok)
|
|
|
|
|
- Tcl_AppendResult(irp, "1", NULL);
|
|
|
|
|
- else
|
|
|
|
|
- Tcl_AppendResult(irp, "0", NULL);
|
|
|
|
|
- return TCL_OK;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-static int tcl_isexemptsticky STDVAR
|
|
|
|
|
-{
|
|
|
|
|
- struct chanset_t *chan;
|
|
|
|
|
- int ok = 0;
|
|
|
|
|
-
|
|
|
|
|
- BADARGS(2, 3, " exempt ?channel?");
|
|
|
|
|
- if (argc == 3) {
|
|
|
|
|
- chan = findchan_by_dname(argv[2]);
|
|
|
|
|
- if (!chan) {
|
|
|
|
|
- Tcl_AppendResult(irp, "invalid channel: ", argv[2], NULL);
|
|
|
|
|
- return TCL_ERROR;
|
|
|
|
|
- }
|
|
|
|
|
- if (u_sticky_mask(chan->exempts, argv[1]))
|
|
|
|
|
- ok = 1;
|
|
|
|
|
- }
|
|
|
|
|
- if (u_sticky_mask(global_exempts,argv[1]))
|
|
|
|
|
- ok = 1;
|
|
|
|
|
- if (ok)
|
|
|
|
|
- Tcl_AppendResult(irp, "1", NULL);
|
|
|
|
|
- else
|
|
|
|
|
- Tcl_AppendResult(irp, "0", NULL);
|
|
|
|
|
- return TCL_OK;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-static int tcl_isinvitesticky STDVAR
|
|
|
|
|
-{
|
|
|
|
|
- struct chanset_t *chan;
|
|
|
|
|
- int ok = 0;
|
|
|
|
|
-
|
|
|
|
|
- BADARGS(2, 3, " invite ?channel?");
|
|
|
|
|
- if (argc == 3) {
|
|
|
|
|
- chan = findchan_by_dname(argv[2]);
|
|
|
|
|
- if (!chan) {
|
|
|
|
|
- Tcl_AppendResult(irp, "invalid channel: ", argv[2], NULL);
|
|
|
|
|
- return TCL_ERROR;
|
|
|
|
|
- }
|
|
|
|
|
- if (u_sticky_mask(chan->invites, argv[1]))
|
|
|
|
|
- ok = 1;
|
|
|
|
|
- }
|
|
|
|
|
- if (u_sticky_mask(global_invites,argv[1]))
|
|
|
|
|
- ok = 1;
|
|
|
|
|
- if (ok)
|
|
|
|
|
- Tcl_AppendResult(irp, "1", NULL);
|
|
|
|
|
- else
|
|
|
|
|
- Tcl_AppendResult(irp, "0", NULL);
|
|
|
|
|
- return TCL_OK;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-static int tcl_ispermban STDVAR
|
|
|
|
|
-{
|
|
|
|
|
- struct chanset_t *chan;
|
|
|
|
|
- int ok = 0;
|
|
|
|
|
-
|
|
|
|
|
- BADARGS(2, 3, " ban ?channel?");
|
|
|
|
|
- if (argc == 3) {
|
|
|
|
|
- chan = findchan_by_dname(argv[2]);
|
|
|
|
|
- if (chan == NULL) {
|
|
|
|
|
- Tcl_AppendResult(irp, "invalid channel: ", argv[2], NULL);
|
|
|
|
|
- return TCL_ERROR;
|
|
|
|
|
- }
|
|
|
|
|
- if (u_equals_mask(chan->bans, argv[1]) == 2)
|
|
|
|
|
- ok = 1;
|
|
|
|
|
- }
|
|
|
|
|
- if (u_equals_mask(global_bans, argv[1]) == 2)
|
|
|
|
|
- ok = 1;
|
|
|
|
|
- if (ok)
|
|
|
|
|
- Tcl_AppendResult(irp, "1", NULL);
|
|
|
|
|
- else
|
|
|
|
|
- Tcl_AppendResult(irp, "0", NULL);
|
|
|
|
|
- return TCL_OK;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-static int tcl_ispermexempt STDVAR
|
|
|
|
|
-{
|
|
|
|
|
- struct chanset_t *chan;
|
|
|
|
|
- int ok = 0;
|
|
|
|
|
-
|
|
|
|
|
- BADARGS(2, 3, " exempt ?channel?");
|
|
|
|
|
- if (argc == 3) {
|
|
|
|
|
- chan = findchan_by_dname(argv[2]);
|
|
|
|
|
- if (chan == NULL) {
|
|
|
|
|
- Tcl_AppendResult(irp, "invalid channel: ", argv[2], NULL);
|
|
|
|
|
- return TCL_ERROR;
|
|
|
|
|
- }
|
|
|
|
|
- if (u_equals_mask(chan->exempts, argv[1]) == 2)
|
|
|
|
|
- ok = 1;
|
|
|
|
|
- }
|
|
|
|
|
- if (u_equals_mask(global_exempts,argv[1]) == 2)
|
|
|
|
|
- ok = 1;
|
|
|
|
|
- if (ok)
|
|
|
|
|
- Tcl_AppendResult(irp, "1", NULL);
|
|
|
|
|
- else
|
|
|
|
|
- Tcl_AppendResult(irp, "0", NULL);
|
|
|
|
|
- return TCL_OK;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-static int tcl_isperminvite STDVAR
|
|
|
|
|
-{
|
|
|
|
|
- struct chanset_t *chan;
|
|
|
|
|
- int ok = 0;
|
|
|
|
|
-
|
|
|
|
|
- BADARGS(2, 3, " invite ?channel?");
|
|
|
|
|
- if (argc == 3) {
|
|
|
|
|
- chan = findchan_by_dname(argv[2]);
|
|
|
|
|
- if (chan == NULL) {
|
|
|
|
|
- Tcl_AppendResult(irp, "invalid channel: ", argv[2], NULL);
|
|
|
|
|
- return TCL_ERROR;
|
|
|
|
|
- }
|
|
|
|
|
- if (u_equals_mask(chan->invites, argv[1]) == 2)
|
|
|
|
|
- ok = 1;
|
|
|
|
|
- }
|
|
|
|
|
- if (u_equals_mask(global_invites,argv[1]) == 2)
|
|
|
|
|
- ok = 1;
|
|
|
|
|
- if (ok)
|
|
|
|
|
- Tcl_AppendResult(irp, "1", NULL);
|
|
|
|
|
- else
|
|
|
|
|
- Tcl_AppendResult(irp, "0", NULL);
|
|
|
|
|
- return TCL_OK;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-static int tcl_matchban STDVAR
|
|
|
|
|
-{
|
|
|
|
|
- struct chanset_t *chan;
|
|
|
|
|
- int ok = 0;
|
|
|
|
|
-
|
|
|
|
|
- BADARGS(2, 3, " user!nick@host ?channel?");
|
|
|
|
|
- if (argc == 3) {
|
|
|
|
|
- chan = findchan_by_dname(argv[2]);
|
|
|
|
|
- if (chan == NULL) {
|
|
|
|
|
- Tcl_AppendResult(irp, "invalid channel: ", argv[2], NULL);
|
|
|
|
|
- return TCL_ERROR;
|
|
|
|
|
- }
|
|
|
|
|
- if (u_match_mask(chan->bans, argv[1]))
|
|
|
|
|
- ok = 1;
|
|
|
|
|
- }
|
|
|
|
|
- if (u_match_mask(global_bans, argv[1]))
|
|
|
|
|
- ok = 1;
|
|
|
|
|
- if (ok)
|
|
|
|
|
- Tcl_AppendResult(irp, "1", NULL);
|
|
|
|
|
- else
|
|
|
|
|
- Tcl_AppendResult(irp, "0", NULL);
|
|
|
|
|
- return TCL_OK;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-static int tcl_matchexempt STDVAR
|
|
|
|
|
-{
|
|
|
|
|
- struct chanset_t *chan;
|
|
|
|
|
- int ok = 0;
|
|
|
|
|
-
|
|
|
|
|
- BADARGS(2, 3, " user!nick@host ?channel?");
|
|
|
|
|
- if (argc == 3) {
|
|
|
|
|
- chan = findchan_by_dname(argv[2]);
|
|
|
|
|
- if (chan == NULL) {
|
|
|
|
|
- Tcl_AppendResult(irp, "invalid channel: ", argv[2], NULL);
|
|
|
|
|
- return TCL_ERROR;
|
|
|
|
|
- }
|
|
|
|
|
- if (u_match_mask(chan->exempts, argv[1]))
|
|
|
|
|
- ok = 1;
|
|
|
|
|
- }
|
|
|
|
|
- if (u_match_mask(global_exempts,argv[1]))
|
|
|
|
|
- ok = 1;
|
|
|
|
|
- if (ok)
|
|
|
|
|
- Tcl_AppendResult(irp, "1", NULL);
|
|
|
|
|
- else
|
|
|
|
|
- Tcl_AppendResult(irp, "0", NULL);
|
|
|
|
|
- return TCL_OK;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-static int tcl_matchinvite STDVAR
|
|
|
|
|
-{
|
|
|
|
|
- struct chanset_t *chan;
|
|
|
|
|
- int ok = 0;
|
|
|
|
|
-
|
|
|
|
|
- BADARGS(2, 3, " user!nick@host ?channel?");
|
|
|
|
|
- if (argc == 3) {
|
|
|
|
|
- chan = findchan_by_dname(argv[2]);
|
|
|
|
|
- if (chan == NULL) {
|
|
|
|
|
- Tcl_AppendResult(irp, "invalid channel: ", argv[2], NULL);
|
|
|
|
|
- return TCL_ERROR;
|
|
|
|
|
- }
|
|
|
|
|
- if (u_match_mask(chan->invites, argv[1]))
|
|
|
|
|
- ok = 1;
|
|
|
|
|
- }
|
|
|
|
|
- if (u_match_mask(global_invites,argv[1]))
|
|
|
|
|
- ok = 1;
|
|
|
|
|
- if (ok)
|
|
|
|
|
- Tcl_AppendResult(irp, "1", NULL);
|
|
|
|
|
- else
|
|
|
|
|
- Tcl_AppendResult(irp, "0", NULL);
|
|
|
|
|
- return TCL_OK;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-static int tcl_newchanban STDVAR
|
|
|
|
|
-{
|
|
|
|
|
- time_t expire_time;
|
|
|
|
|
- struct chanset_t *chan;
|
|
|
|
|
- char ban[161], cmt[MASKREASON_LEN], from[HANDLEN + 1];
|
|
|
|
|
- int sticky = 0;
|
|
|
|
|
- module_entry *me;
|
|
|
|
|
-
|
|
|
|
|
- BADARGS(5, 7, " channel ban creator comment ?lifetime? ?options?");
|
|
|
|
|
- chan = findchan_by_dname(argv[1]);
|
|
|
|
|
- if (chan == NULL) {
|
|
|
|
|
- Tcl_AppendResult(irp, "invalid channel: ", argv[1], NULL);
|
|
|
|
|
- return TCL_ERROR;
|
|
|
|
|
- }
|
|
|
|
|
- if (argc == 7) {
|
|
|
|
|
- if (!egg_strcasecmp(argv[6], "none"));
|
|
|
|
|
- else if (!egg_strcasecmp(argv[6], "sticky"))
|
|
|
|
|
- sticky = 1;
|
|
|
|
|
- else {
|
|
|
|
|
- Tcl_AppendResult(irp, "invalid option ", argv[6], " (must be one of: ",
|
|
|
|
|
- "sticky, none)", NULL);
|
|
|
|
|
- return TCL_ERROR;
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- strncpyz(ban, argv[2], sizeof ban);
|
|
|
|
|
- strncpyz(from, argv[3], sizeof from);
|
|
|
|
|
- strncpyz(cmt, argv[4], sizeof cmt);
|
|
|
|
|
- if (argc == 5) {
|
|
|
|
|
- if (chan->ban_time == 0)
|
|
|
|
|
- expire_time = 0L;
|
|
|
|
|
- else
|
|
|
|
|
- expire_time = now + (60 * chan->ban_time);
|
|
|
|
|
- }
|
|
|
|
|
- else {
|
|
|
|
|
- if (atoi(argv[5]) == 0)
|
|
|
|
|
- expire_time = 0L;
|
|
|
|
|
- else
|
|
|
|
|
- expire_time = now + (atoi(argv[5]) * 60);
|
|
|
|
|
- }
|
|
|
|
|
- if (u_addban(chan, ban, from, cmt, expire_time, sticky))
|
|
|
|
|
- if ((me = module_find("irc", 0, 0)))
|
|
|
|
|
- (me->funcs[IRC_CHECK_THIS_BAN])(chan, ban, sticky);
|
|
|
|
|
- return TCL_OK;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-static int tcl_newban STDVAR
|
|
|
|
|
-{
|
|
|
|
|
- time_t expire_time;
|
|
|
|
|
- struct chanset_t *chan;
|
|
|
|
|
- char ban[UHOSTLEN], cmt[MASKREASON_LEN], from[HANDLEN + 1];
|
|
|
|
|
- int sticky = 0;
|
|
|
|
|
- module_entry *me;
|
|
|
|
|
-
|
|
|
|
|
- BADARGS(4, 6, " ban creator comment ?lifetime? ?options?");
|
|
|
|
|
- if (argc == 6) {
|
|
|
|
|
- if (!egg_strcasecmp(argv[5], "none"));
|
|
|
|
|
- else if (!egg_strcasecmp(argv[5], "sticky"))
|
|
|
|
|
- sticky = 1;
|
|
|
|
|
- else {
|
|
|
|
|
- Tcl_AppendResult(irp, "invalid option ", argv[5], " (must be one of: ",
|
|
|
|
|
- "sticky, none)", NULL);
|
|
|
|
|
- return TCL_ERROR;
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- strncpyz(ban, argv[1], sizeof ban);
|
|
|
|
|
- strncpyz(from, argv[2], sizeof from);
|
|
|
|
|
- strncpyz(cmt, argv[3], sizeof cmt);
|
|
|
|
|
- if (argc == 4) {
|
|
|
|
|
- if (global_ban_time == 0)
|
|
|
|
|
- expire_time = 0L;
|
|
|
|
|
- else
|
|
|
|
|
- expire_time = now + (60 * global_ban_time);
|
|
|
|
|
- }
|
|
|
|
|
- else {
|
|
|
|
|
- if (atoi(argv[4]) == 0)
|
|
|
|
|
- expire_time = 0L;
|
|
|
|
|
- else
|
|
|
|
|
- expire_time = now + (atoi(argv[4]) * 60);
|
|
|
|
|
- }
|
|
|
|
|
- if (u_addban(NULL, ban, from, cmt, expire_time, sticky))
|
|
|
|
|
- if ((me = module_find("irc", 0, 0)))
|
|
|
|
|
- for (chan = chanset; chan != NULL; chan = chan->next)
|
|
|
|
|
- (me->funcs[IRC_CHECK_THIS_BAN])(chan, ban, sticky);
|
|
|
|
|
- return TCL_OK;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-static int tcl_newchanexempt STDVAR
|
|
|
|
|
-{
|
|
|
|
|
- time_t expire_time;
|
|
|
|
|
- struct chanset_t *chan;
|
|
|
|
|
- char exempt[161], cmt[MASKREASON_LEN], from[HANDLEN + 1];
|
|
|
|
|
- int sticky = 0;
|
|
|
|
|
-
|
|
|
|
|
- BADARGS(5, 7, " channel exempt creator comment ?lifetime? ?options?");
|
|
|
|
|
- chan = findchan_by_dname(argv[1]);
|
|
|
|
|
- if (chan == NULL) {
|
|
|
|
|
- Tcl_AppendResult(irp, "invalid channel: ", argv[1], NULL);
|
|
|
|
|
- return TCL_ERROR;
|
|
|
|
|
- }
|
|
|
|
|
- if (argc == 7) {
|
|
|
|
|
- if (!egg_strcasecmp(argv[6], "none"));
|
|
|
|
|
- else if (!egg_strcasecmp(argv[6], "sticky"))
|
|
|
|
|
- sticky = 1;
|
|
|
|
|
- else {
|
|
|
|
|
- Tcl_AppendResult(irp, "invalid option ", argv[6], " (must be one of: ",
|
|
|
|
|
- "sticky, none)", NULL);
|
|
|
|
|
- return TCL_ERROR;
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- strncpyz(exempt, argv[2], sizeof exempt);
|
|
|
|
|
- strncpyz(from, argv[3], sizeof from);
|
|
|
|
|
- strncpyz(cmt, argv[4], sizeof cmt);
|
|
|
|
|
- if (argc == 5) {
|
|
|
|
|
- if (chan->exempt_time == 0)
|
|
|
|
|
- expire_time = 0L;
|
|
|
|
|
- else
|
|
|
|
|
- expire_time = now + (60 * chan->exempt_time);
|
|
|
|
|
- }
|
|
|
|
|
- else {
|
|
|
|
|
- if (atoi(argv[5]) == 0)
|
|
|
|
|
- expire_time = 0L;
|
|
|
|
|
- else
|
|
|
|
|
- expire_time = now + (atoi(argv[5]) * 60);
|
|
|
|
|
- }
|
|
|
|
|
- if (u_addexempt(chan, exempt, from, cmt, expire_time,sticky))
|
|
|
|
|
- add_mode(chan, '+', 'e', exempt);
|
|
|
|
|
- return TCL_OK;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-static int tcl_newexempt STDVAR
|
|
|
|
|
-{
|
|
|
|
|
- time_t expire_time;
|
|
|
|
|
- struct chanset_t *chan;
|
|
|
|
|
- char exempt[UHOSTLEN], cmt[MASKREASON_LEN], from[HANDLEN + 1];
|
|
|
|
|
- int sticky = 0;
|
|
|
|
|
-
|
|
|
|
|
- BADARGS(4, 6, " exempt creator comment ?lifetime? ?options?");
|
|
|
|
|
- if (argc == 6) {
|
|
|
|
|
- if (!egg_strcasecmp(argv[5], "none"));
|
|
|
|
|
- else if (!egg_strcasecmp(argv[5], "sticky"))
|
|
|
|
|
- sticky = 1;
|
|
|
|
|
- else {
|
|
|
|
|
- Tcl_AppendResult(irp, "invalid option ", argv[5], " (must be one of: ",
|
|
|
|
|
- "sticky, none)", NULL);
|
|
|
|
|
- return TCL_ERROR;
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- strncpyz(exempt, argv[1], sizeof exempt);
|
|
|
|
|
- strncpyz(from, argv[2], sizeof from);
|
|
|
|
|
- strncpyz(cmt, argv[3], sizeof cmt);
|
|
|
|
|
- if (argc == 4) {
|
|
|
|
|
- if (global_exempt_time == 0)
|
|
|
|
|
- expire_time = 0L;
|
|
|
|
|
- else
|
|
|
|
|
- expire_time = now + (60 * global_exempt_time);
|
|
|
|
|
- }
|
|
|
|
|
- else {
|
|
|
|
|
- if (atoi(argv[4]) == 0)
|
|
|
|
|
- expire_time = 0L;
|
|
|
|
|
- else
|
|
|
|
|
- expire_time = now + (atoi(argv[4]) * 60);
|
|
|
|
|
- }
|
|
|
|
|
- u_addexempt(NULL,exempt, from, cmt, expire_time,sticky);
|
|
|
|
|
- for (chan = chanset; chan; chan = chan->next)
|
|
|
|
|
- add_mode(chan, '+', 'e', exempt);
|
|
|
|
|
- return TCL_OK;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-static int tcl_newchaninvite STDVAR
|
|
|
|
|
-{
|
|
|
|
|
- time_t expire_time;
|
|
|
|
|
- struct chanset_t *chan;
|
|
|
|
|
- char invite[161], cmt[MASKREASON_LEN], from[HANDLEN + 1];
|
|
|
|
|
- int sticky = 0;
|
|
|
|
|
-
|
|
|
|
|
- BADARGS(5, 7, " channel invite creator comment ?lifetime? ?options?");
|
|
|
|
|
- chan = findchan_by_dname(argv[1]);
|
|
|
|
|
- if (chan == NULL) {
|
|
|
|
|
- Tcl_AppendResult(irp, "invalid channel: ", argv[1], NULL);
|
|
|
|
|
- return TCL_ERROR;
|
|
|
|
|
- }
|
|
|
|
|
- if (argc == 7) {
|
|
|
|
|
- if (!egg_strcasecmp(argv[6], "none"));
|
|
|
|
|
- else if (!egg_strcasecmp(argv[6], "sticky"))
|
|
|
|
|
- sticky = 1;
|
|
|
|
|
- else {
|
|
|
|
|
- Tcl_AppendResult(irp, "invalid option ", argv[6], " (must be one of: ",
|
|
|
|
|
- "sticky, none)", NULL);
|
|
|
|
|
- return TCL_ERROR;
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- strncpyz(invite, argv[2], sizeof invite);
|
|
|
|
|
- strncpyz(from, argv[3], sizeof from);
|
|
|
|
|
- strncpyz(cmt, argv[4], sizeof cmt);
|
|
|
|
|
- if (argc == 5) {
|
|
|
|
|
- if (chan->invite_time == 0)
|
|
|
|
|
- expire_time = 0L;
|
|
|
|
|
- else
|
|
|
|
|
- expire_time = now + (60 * chan->invite_time);
|
|
|
|
|
- }
|
|
|
|
|
- else {
|
|
|
|
|
- if (atoi(argv[5]) == 0)
|
|
|
|
|
- expire_time = 0L;
|
|
|
|
|
- else
|
|
|
|
|
- expire_time = now + (atoi(argv[5]) * 60);
|
|
|
|
|
- }
|
|
|
|
|
- if (u_addinvite(chan, invite, from, cmt, expire_time,sticky))
|
|
|
|
|
- add_mode(chan, '+', 'I', invite);
|
|
|
|
|
- return TCL_OK;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-static int tcl_newinvite STDVAR
|
|
|
|
|
-{
|
|
|
|
|
- time_t expire_time;
|
|
|
|
|
- struct chanset_t *chan;
|
|
|
|
|
- char invite[UHOSTLEN], cmt[MASKREASON_LEN], from[HANDLEN + 1];
|
|
|
|
|
- int sticky = 0;
|
|
|
|
|
-
|
|
|
|
|
- BADARGS(4, 6, " invite creator comment ?lifetime? ?options?");
|
|
|
|
|
- if (argc == 6) {
|
|
|
|
|
- if (!egg_strcasecmp(argv[5], "none"));
|
|
|
|
|
- else if (!egg_strcasecmp(argv[5], "sticky"))
|
|
|
|
|
- sticky = 1;
|
|
|
|
|
- else {
|
|
|
|
|
- Tcl_AppendResult(irp, "invalid option ", argv[5], " (must be one of: ",
|
|
|
|
|
- "sticky, none)", NULL);
|
|
|
|
|
- return TCL_ERROR;
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- strncpyz(invite, argv[1], sizeof invite);
|
|
|
|
|
- strncpyz(from, argv[2], sizeof from);
|
|
|
|
|
- strncpyz(cmt, argv[3], sizeof cmt);
|
|
|
|
|
- if (argc == 4) {
|
|
|
|
|
- if (global_invite_time == 0)
|
|
|
|
|
- expire_time = 0L;
|
|
|
|
|
- else
|
|
|
|
|
- expire_time = now + (60 * global_invite_time);
|
|
|
|
|
- }
|
|
|
|
|
- else {
|
|
|
|
|
- if (atoi(argv[4]) == 0)
|
|
|
|
|
- expire_time = 0L;
|
|
|
|
|
- else
|
|
|
|
|
- expire_time = now + (atoi(argv[4]) * 60);
|
|
|
|
|
- }
|
|
|
|
|
- u_addinvite(NULL,invite, from, cmt, expire_time,sticky);
|
|
|
|
|
- for (chan = chanset; chan; chan = chan->next)
|
|
|
|
|
- add_mode(chan, '+', 'I', invite);
|
|
|
|
|
- return TCL_OK;
|
|
|
|
|
-}
|
|
|
|
|
|
|
|
|
|
static int tcl_channel_info(Tcl_Interp * irp, struct chanset_t *chan)
|
|
static int tcl_channel_info(Tcl_Interp * irp, struct chanset_t *chan)
|
|
|
{
|
|
{
|
|
@@ -980,7 +271,6 @@ static int tcl_channel_get(Tcl_Interp * irp, struct chanset_t *chan, char *setti
|
|
|
return(TCL_OK);
|
|
return(TCL_OK);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-
|
|
|
|
|
static int tcl_channel STDVAR
|
|
static int tcl_channel STDVAR
|
|
|
{
|
|
{
|
|
|
struct chanset_t *chan;
|
|
struct chanset_t *chan;
|
|
@@ -1559,20 +849,6 @@ static int tcl_validchan STDVAR
|
|
|
return TCL_OK;
|
|
return TCL_OK;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-static int tcl_isdynamic STDVAR
|
|
|
|
|
-{
|
|
|
|
|
- struct chanset_t *chan;
|
|
|
|
|
-
|
|
|
|
|
- BADARGS(2, 2, " channel");
|
|
|
|
|
- chan = findchan_by_dname(argv[1]);
|
|
|
|
|
- if (chan != NULL) {
|
|
|
|
|
- Tcl_AppendResult(irp, "1", NULL);
|
|
|
|
|
- return TCL_OK;
|
|
|
|
|
- }
|
|
|
|
|
- Tcl_AppendResult(irp, "0", NULL);
|
|
|
|
|
- return TCL_OK;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
static int tcl_getchaninfo STDVAR
|
|
static int tcl_getchaninfo STDVAR
|
|
|
{
|
|
{
|
|
|
char s[161];
|
|
char s[161];
|
|
@@ -1605,97 +881,6 @@ static int tcl_setchaninfo STDVAR
|
|
|
return TCL_OK;
|
|
return TCL_OK;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-static int tcl_setlaston STDVAR
|
|
|
|
|
-{
|
|
|
|
|
- time_t t = now;
|
|
|
|
|
- struct userrec *u;
|
|
|
|
|
-
|
|
|
|
|
- BADARGS(2, 4, " handle ?channel? ?timestamp?");
|
|
|
|
|
- u = get_user_by_handle(userlist, argv[1]);
|
|
|
|
|
- if (!u) {
|
|
|
|
|
- Tcl_AppendResult(irp, "No such user: ", argv[1], NULL);
|
|
|
|
|
- return TCL_ERROR;
|
|
|
|
|
- }
|
|
|
|
|
- if (argc == 4)
|
|
|
|
|
- t = (time_t) atoi(argv[3]);
|
|
|
|
|
- if (argc == 3 && ((argv[2][0] != '#') && (argv[2][0] != '&')))
|
|
|
|
|
- t = (time_t) atoi(argv[2]);
|
|
|
|
|
- if (argc == 2 || (argc == 3 && ((argv[2][0] != '#') && (argv[2][0] != '&'))))
|
|
|
|
|
- set_handle_laston("*", u, t);
|
|
|
|
|
- else
|
|
|
|
|
- set_handle_laston(argv[2], u, t);
|
|
|
|
|
- return TCL_OK;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-static int tcl_addchanrec STDVAR
|
|
|
|
|
-{
|
|
|
|
|
- struct userrec *u;
|
|
|
|
|
-
|
|
|
|
|
- BADARGS(3, 3, " handle channel");
|
|
|
|
|
- u = get_user_by_handle(userlist, argv[1]);
|
|
|
|
|
- if (!u) {
|
|
|
|
|
- Tcl_AppendResult(irp, "0", NULL);
|
|
|
|
|
- return TCL_OK;
|
|
|
|
|
- }
|
|
|
|
|
- if (!findchan_by_dname(argv[2])) {
|
|
|
|
|
- Tcl_AppendResult(irp, "0", NULL);
|
|
|
|
|
- return TCL_OK;
|
|
|
|
|
- }
|
|
|
|
|
- if (get_chanrec(u, argv[2]) != NULL) {
|
|
|
|
|
- Tcl_AppendResult(irp, "0", NULL);
|
|
|
|
|
- return TCL_OK;
|
|
|
|
|
- }
|
|
|
|
|
- add_chanrec(u, argv[2]);
|
|
|
|
|
- Tcl_AppendResult(irp, "1", NULL);
|
|
|
|
|
- return TCL_OK;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-static int tcl_delchanrec STDVAR
|
|
|
|
|
-{
|
|
|
|
|
- struct userrec *u;
|
|
|
|
|
-
|
|
|
|
|
- BADARGS(3, 3, " handle channel");
|
|
|
|
|
- u = get_user_by_handle(userlist, argv[1]);
|
|
|
|
|
- if (!u) {
|
|
|
|
|
- Tcl_AppendResult(irp, "0", NULL);
|
|
|
|
|
- return TCL_OK;
|
|
|
|
|
- }
|
|
|
|
|
- if (get_chanrec(u, argv[2]) == NULL) {
|
|
|
|
|
- Tcl_AppendResult(irp, "0", NULL);
|
|
|
|
|
- return TCL_OK;
|
|
|
|
|
- }
|
|
|
|
|
- del_chanrec(u, argv[2]);
|
|
|
|
|
- Tcl_AppendResult(irp, "1", NULL);
|
|
|
|
|
- return TCL_OK;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-static int tcl_haschanrec STDVAR
|
|
|
|
|
-{
|
|
|
|
|
- struct userrec *u;
|
|
|
|
|
- struct chanset_t *chan;
|
|
|
|
|
- struct chanuserrec *chanrec;
|
|
|
|
|
-
|
|
|
|
|
- BADARGS(3, 3, " handle channel");
|
|
|
|
|
-
|
|
|
|
|
- chan = findchan_by_dname(argv[2]);
|
|
|
|
|
- if (chan == NULL) {
|
|
|
|
|
- Tcl_AppendResult(irp, "illegal channel: ", argv[2], NULL);
|
|
|
|
|
- return TCL_ERROR;
|
|
|
|
|
- }
|
|
|
|
|
- u = get_user_by_handle(userlist, argv[1]);
|
|
|
|
|
- if (!u) {
|
|
|
|
|
- Tcl_AppendResult(irp, "No such user: ", argv[1], NULL);
|
|
|
|
|
- return TCL_ERROR;
|
|
|
|
|
- }
|
|
|
|
|
- chanrec = get_chanrec(u, chan->dname);
|
|
|
|
|
- if (chanrec) {
|
|
|
|
|
- Tcl_AppendResult(irp, "1", NULL);
|
|
|
|
|
- return TCL_OK;
|
|
|
|
|
- }
|
|
|
|
|
- Tcl_AppendResult(irp, "0", NULL);
|
|
|
|
|
- return TCL_OK;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
static void init_masklist(masklist *m)
|
|
static void init_masklist(masklist *m)
|
|
|
{
|
|
{
|
|
|
m->mask = (char *)nmalloc(1);
|
|
m->mask = (char *)nmalloc(1);
|
|
@@ -1962,51 +1147,16 @@ static int tcl_deludef STDVAR
|
|
|
|
|
|
|
|
static tcl_cmds channels_cmds[] =
|
|
static tcl_cmds channels_cmds[] =
|
|
|
{
|
|
{
|
|
|
- {"killban", tcl_killban},
|
|
|
|
|
- {"killchanban", tcl_killchanban},
|
|
|
|
|
- {"isbansticky", tcl_isbansticky},
|
|
|
|
|
- {"isban", tcl_isban},
|
|
|
|
|
- {"ispermban", tcl_ispermban},
|
|
|
|
|
- {"matchban", tcl_matchban},
|
|
|
|
|
- {"newchanban", tcl_newchanban},
|
|
|
|
|
- {"newban", tcl_newban},
|
|
|
|
|
- {"killexempt", tcl_killexempt},
|
|
|
|
|
- {"killchanexempt", tcl_killchanexempt},
|
|
|
|
|
- {"isexemptsticky", tcl_isexemptsticky},
|
|
|
|
|
- {"isexempt", tcl_isexempt},
|
|
|
|
|
- {"ispermexempt", tcl_ispermexempt},
|
|
|
|
|
- {"matchexempt", tcl_matchexempt},
|
|
|
|
|
- {"newchanexempt", tcl_newchanexempt},
|
|
|
|
|
- {"newexempt", tcl_newexempt},
|
|
|
|
|
- {"killinvite", tcl_killinvite},
|
|
|
|
|
- {"killchaninvite", tcl_killchaninvite},
|
|
|
|
|
- {"isinvitesticky", tcl_isinvitesticky},
|
|
|
|
|
- {"isinvite", tcl_isinvite},
|
|
|
|
|
- {"isperminvite", tcl_isperminvite},
|
|
|
|
|
- {"matchinvite", tcl_matchinvite},
|
|
|
|
|
- {"newchaninvite", tcl_newchaninvite},
|
|
|
|
|
- {"newinvite", tcl_newinvite},
|
|
|
|
|
{"channel", tcl_channel},
|
|
{"channel", tcl_channel},
|
|
|
{"channels", tcl_channels},
|
|
{"channels", tcl_channels},
|
|
|
{"exemptlist", tcl_exemptlist},
|
|
{"exemptlist", tcl_exemptlist},
|
|
|
{"invitelist", tcl_invitelist},
|
|
{"invitelist", tcl_invitelist},
|
|
|
{"banlist", tcl_banlist},
|
|
{"banlist", tcl_banlist},
|
|
|
{"validchan", tcl_validchan},
|
|
{"validchan", tcl_validchan},
|
|
|
- {"isdynamic", tcl_isdynamic},
|
|
|
|
|
{"getchaninfo", tcl_getchaninfo},
|
|
{"getchaninfo", tcl_getchaninfo},
|
|
|
{"setchaninfo", tcl_setchaninfo},
|
|
{"setchaninfo", tcl_setchaninfo},
|
|
|
- {"setlaston", tcl_setlaston},
|
|
|
|
|
- {"addchanrec", tcl_addchanrec},
|
|
|
|
|
- {"delchanrec", tcl_delchanrec},
|
|
|
|
|
- {"stick", tcl_stick},
|
|
|
|
|
- {"unstick", tcl_stick},
|
|
|
|
|
- {"stickinvite", tcl_stickinvite},
|
|
|
|
|
- {"unstickinvite", tcl_stickinvite},
|
|
|
|
|
- {"stickexempt", tcl_stickexempt},
|
|
|
|
|
- {"unstickexempt", tcl_stickexempt},
|
|
|
|
|
{"setudef", tcl_setudef},
|
|
{"setudef", tcl_setudef},
|
|
|
{"renudef", tcl_renudef},
|
|
{"renudef", tcl_renudef},
|
|
|
{"deludef", tcl_deludef},
|
|
{"deludef", tcl_deludef},
|
|
|
- {"haschanrec", tcl_haschanrec},
|
|
|
|
|
{NULL, NULL}
|
|
{NULL, NULL}
|
|
|
};
|
|
};
|