X-Git-Url: https://jfr.im/git/irc/evilnet/x3.git/blobdiff_plain/412b1e16431d0eafbe1bacb0d7e610971144035c..fa3c07bbce89332ed1f96313aad55bbea81f9718:/src/proto-p10.c diff --git a/src/proto-p10.c b/src/proto-p10.c index aa44db5..7e85830 100644 --- a/src/proto-p10.c +++ b/src/proto-p10.c @@ -1633,6 +1633,7 @@ static CMD_FUNC(cmd_burst) static char exemptlist[MAXLEN], banlist[MAXLEN]; unsigned int next = 3, res = 1; int ctype = 0, echeck = 0, bcheck = 0; + struct chanData *cData; struct chanNode *cNode; struct userNode *un; struct modeNode *mNode; @@ -1716,6 +1717,15 @@ static CMD_FUNC(cmd_burst) irc_burst(cNode); } cNode = AddChannel(argv[1], in_timestamp, modes, banlist, exemptlist); + cData = cNode->channel_info; + + if (!cData) { + if (cNode->modes & MODE_REGISTERED) { + irc_join(opserv, cNode); + irc_mode(opserv, cNode, "-z"); + irc_part(opserv, cNode, ""); + } + } /* Burst channel members in now. */ for (user = members, sep = *members, mode = 0; sep; user = end) { @@ -1780,13 +1790,32 @@ static CMD_FUNC(cmd_mark) /* DNSBL_DATA name */ target = GetUserH(argv[1]); if(!target) { - log_module(MAIN_LOG, LOG_ERROR, "Unable to find user %s whose mark is changing.", argv[1]); + log_module(MAIN_LOG, LOG_ERROR, "Unable to find user %s whose dnsbl mark is changing.", argv[1]); return 0; } target->mark = strdup(argv[3]); return 1; } + else if(!strcasecmp(argv[2], "CVERSION")) { + /* DNSBL_DATA name */ + target = GetUserH(argv[1]); + if(!target) { + log_module(MAIN_LOG, LOG_ERROR, "Unable to find user %s whose version mark is changing.", argv[1]); + return 0; + } + + char *version = unsplit_string(argv + 3, argc - 3, NULL); + if(!version) + version = ""; + + target->version_reply = strdup(version); + + if(match_ircglob(version, "WebTV;*")) + target->no_notice = true; /* webbies cant see notices */ + + return 1; + } /* unknown type of mark */ return 1; }