}
static struct dnrList
-chanserv_find_dnrs(const char *chan_name, struct handle_info *handle)
+chanserv_find_dnrs(const char *chan_name, const char *handle)
{
struct dnrList list;
dict_iterator_t it;
struct do_not_register *dnr;
dnrList_init(&list);
- if(handle && (dnr = dict_find(handle_dnrs, handle->handle, NULL)))
+ if(handle && (dnr = dict_find(handle_dnrs, handle, NULL)))
dnrList_append(&list, dnr);
if(chan_name && (dnr = dict_find(plain_dnrs, chan_name, NULL)))
dnrList_append(&list, dnr);
}
static unsigned int
-chanserv_show_dnrs(struct userNode *user, struct svccmd *cmd, const char *chan_name, struct handle_info *handle)
+chanserv_show_dnrs(struct userNode *user, struct svccmd *cmd, const char *chan_name, const char *handle)
{
struct dnrList list;
struct do_not_register *dnr;
reply("CSMSG_DNR_SEARCH_RESULTS");
if(*target == '*')
- matches = chanserv_show_dnrs(user, cmd, NULL, get_handle_info(target + 1));
+ matches = chanserv_show_dnrs(user, cmd, NULL, target + 1);
else
matches = chanserv_show_dnrs(user, cmd, target, NULL);
if(!matches)
if(!IsHelping(user))
reply("CSMSG_DNR_CHANNEL", chan_name);
else
- chanserv_show_dnrs(user, cmd, chan_name, handle);
+ chanserv_show_dnrs(user, cmd, chan_name, handle->handle);
return 0;
}
static CHANSERV_FUNC(cmd_move)
{
+ struct mod_chanmode change;
struct chanNode *target;
struct modeNode *mn;
struct userData *uData;
if(!IsHelping(user))
reply("CSMSG_DNR_CHANNEL_MOVE", argv[1]);
else
- chanserv_show_dnrs(user, cmd, argv[1], uData->handle);
+ chanserv_show_dnrs(user, cmd, argv[1], uData->handle->handle);
return 0;
}
}
}
+ mod_chanmode_init(&change);
if(!(target = GetChannel(argv[1])))
{
target = AddChannel(argv[1], now, NULL, NULL);
}
else if(!IsSuspended(channel->channel_info))
{
- struct mod_chanmode change;
- mod_chanmode_init(&change);
change.argc = 1;
change.args[0].mode = MODE_CHANOP;
change.args[0].u.member = AddChannelUser(chanserv, target);
mod_chanmode_announce(chanserv, target, &change);
}
+ if(chanserv_conf.use_registered_mode)
+ {
+ /* Clear MODE_REGISTERED from old channel, add it to new. */
+ change.argc = 0;
+ change.modes_clear = MODE_REGISTERED;
+ mod_chanmode_announce(chanserv, channel, &change);
+ change.modes_clear = 0;
+ change.modes_set = MODE_REGISTERED;
+ mod_chanmode_announce(chanserv, target, &change);
+ }
+
/* Move the channel_info to the target channel; it
shouldn't be necessary to clear timeq callbacks
for the old channel. */
if(!IsHelping(user))
reply("CSMSG_DNR_ACCOUNT", new_owner_hi->handle);
else
- chanserv_show_dnrs(user, cmd, NULL, new_owner_hi);
+ chanserv_show_dnrs(user, cmd, NULL, new_owner_hi->handle);
return 0;
}
if(new_owner->access >= UL_COOWNER)
struct banData *ban;
if((user->channels.list[ii]->modes & (MODE_CHANOP|MODE_VOICE))
- || !channel->channel_info)
+ || !channel->channel_info
+ || IsSuspended(channel->channel_info))
continue;
for(jj = 0; jj < channel->banlist.used; ++jj)
if(user_matches_glob(user, channel->banlist.list[jj]->ban, 1))
str = database_get_data(conf_node, KEY_INFO_DELAY, RECDB_QSTRING);
chanserv_conf.info_delay = str ? ParseInterval(str) : 180;
str = database_get_data(conf_node, KEY_MAX_GREETLEN, RECDB_QSTRING);
- chanserv_conf.greeting_length = str ? atoi(str) : 120;
+ chanserv_conf.greeting_length = str ? atoi(str) : 200;
str = database_get_data(conf_node, KEY_ADJUST_THRESHOLD, RECDB_QSTRING);
chanserv_conf.adjust_threshold = str ? atoi(str) : 15;
str = database_get_data(conf_node, KEY_ADJUST_DELAY, RECDB_QSTRING);
next_refresh = (now + chanserv_conf.refresh_period - 1) / chanserv_conf.refresh_period * chanserv_conf.refresh_period;
timeq_add(next_refresh, chanserv_refresh_topics, NULL);
}
-
+
reg_exit_func(chanserv_db_cleanup);
message_register_table(msgtab);
}