[srvx-commits] CVS: services/src chanserv.c,1.340,1.341
Brought to you by:
entrope
|
From: Zoot <zo...@us...> - 2003-02-21 07:29:01
|
Update of /cvsroot/srvx/services/src
In directory sc8-pr-cvs1:/tmp/cvs-serv22386/src
Modified Files:
chanserv.c
Log Message:
Don't require the channel to exist for the unregister, cunsuspend, and info commands -- they now work on suspended channels.
Index: chanserv.c
===================================================================
RCS file: /cvsroot/srvx/services/src/chanserv.c,v
retrieving revision 1.340
retrieving revision 1.341
diff -C2 -r1.340 -r1.341
*** chanserv.c 2 Feb 2003 21:49:26 -0000 1.340
--- chanserv.c 21 Feb 2003 07:28:53 -0000 1.341
***************
*** 159,166 ****
#define CSMSG_NO_ACCESS "You lack sufficient access to use this command."
#define CSMSG_ACCESS_REQUIRED "You must have $b%s$b access in %s to use this command."
- #define CSMSG_JOINABLE_REQUIRED "You must be in that channel (or on its userlist) to use this command."
#define CSMSG_NOT_REGISTERED "$b%s$b has not been registered with $b$C$b."
#define CSMSG_STRUCTURE_LIMIT "This channel has reached the maximum %s limit of $b%d$b."
- #define CSMSG_INVALID_PROPERTY "$b%s$b is an invalid command property."
#define CSMSG_ILLEGAL_CHANNEL "$b%s$b is an illegal channel, and cannot be registered."
#define CSMSG_PUBLIC_DENY "Public commands in $b%s$b are restricted."
--- 159,164 ----
***************
*** 1884,1906 ****
char reason[MAXLEN];
struct chanData *cData;
! int suspended;
! if(IsProtected(channel->channel_info))
{
! chanserv_notice(user, CSMSG_UNREG_NODELETE, channel->name);
! return 0;
}
if(!IsPrivileged(user))
{
! if(argc < 2 || strcmp(argv[1], "CONFIRM"))
{
! chanserv_notice(user, CSMSG_CONFIRM_UNREG);
return 0;
}
}
! name = strdup(channel->name);
! cData = channel->channel_info;
suspended = IsSuspended(cData);
unregister_channel(cData);
--- 1882,1942 ----
char reason[MAXLEN];
struct chanData *cData;
! struct suspended *sChan;
! struct userData *uData;
! unsigned int suspended, confirm;
! if(channel)
{
! cData = channel->channel_info;
! name = channel->name;
! confirm = 1;
!
! if(!cData)
! {
! reply(CSMSG_NOT_REGISTERED, name);
! return 0;
! }
! }
! else if((argc > 1) && IsCSChannelName(argv[1]))
! {
! sChan = dict_find(sChannels, argv[1], NULL);
! if(!sChan)
! {
! reply(CSMSG_NOT_REGISTERED, argv[1]);
! return 0;
! }
! cData = sChan->cData;
! name = sChan->name;
! confirm = 2;
! }
! else
! {
! reply(MSG_NOT_CHANNEL_NAME);
! return 0;
! }
!
! uData = GetChannelUser(cData, user->handle_info);
! if(!uData || (uData->access < USER_LEVEL_HIGHEST))
! {
! reply(CSMSG_NO_ACCESS);
! return 0;
! }
!
! if(IsProtected(cData))
! {
! chanserv_notice(user, CSMSG_UNREG_NODELETE, name);
! return 0;
}
if(!IsPrivileged(user))
{
! if(argc < confirm + 1 || strcmp(argv[confirm], "CONFIRM"))
{
! reply(CSMSG_CONFIRM_UNREG);
return 0;
}
}
! name = strdup(name);
suspended = IsSuspended(cData);
unregister_channel(cData);
***************
*** 1910,1914 ****
DelChannelUser(chanserv, channel, reason, 0);
}
! chanserv_notice(user, CSMSG_UNREG_SUCCESS, name);
sprintf(reason, "%s unregistered by %s.", name, user->handle_info->handle);
global_message(MESSAGE_RECIPIENT_OPERS | MESSAGE_RECIPIENT_HELPERS, reason);
--- 1946,1950 ----
DelChannelUser(chanserv, channel, reason, 0);
}
! reply(CSMSG_UNREG_SUCCESS, name);
sprintf(reason, "%s unregistered by %s.", name, user->handle_info->handle);
global_message(MESSAGE_RECIPIENT_OPERS | MESSAGE_RECIPIENT_HELPERS, reason);
***************
*** 4124,4151 ****
cData = channel->channel_info;
sChan = cData->suspended;
}
! else if(argc > 1)
{
sChan = dict_find(sChannels, argv[1], NULL);
if(!sChan)
{
! chanserv_notice(user, CSMSG_NOT_REGISTERED, argv[1]);
return 0;
}
cData = sChan->cData;
}
else
{
! chanserv_notice(user, MSG_MISSING_PARAMS, argv[0]);
! return 0;
! }
!
! if(!cData)
! {
! chanserv_notice(user, CSMSG_NOT_REGISTERED, channel ? (unsigned char *)channel->name : argv[1]);
return 0;
}
- chan_name = channel ? channel->name : sChan->name;
chanserv_notice(user, CSMSG_CHANNEL_INFO, chan_name);
--- 4160,4188 ----
cData = channel->channel_info;
sChan = cData->suspended;
+ chan_name = channel->name;
+
+ if(!cData)
+ {
+ reply(CSMSG_NOT_REGISTERED, chan_name);
+ return 0;
+ }
}
! else if((argc > 1) && IsCSChannelName(argv[1]))
{
sChan = dict_find(sChannels, argv[1], NULL);
if(!sChan)
{
! reply(CSMSG_NOT_REGISTERED, argv[1]);
return 0;
}
cData = sChan->cData;
+ chan_name = sChan->name;
}
else
{
! reply(MSG_NOT_CHANNEL_NAME);
return 0;
}
chanserv_notice(user, CSMSG_CHANNEL_INFO, chan_name);
***************
*** 7233,7237 ****
DEFINE_COMMAND(removenote, 2, 0, "access", "800", NULL);
! DEFINE_COMMAND(unregister, 1, MODCMD_REQUIRE_AUTHED|MODCMD_REQUIRE_REGCHAN, "access", "owner", "flags", "+loghostmask", NULL);
DEFINE_COMMAND(merge, 2, MODCMD_REQUIRE_AUTHED|MODCMD_REQUIRE_REGCHAN, "access", "owner", NULL);
--- 7270,7274 ----
DEFINE_COMMAND(removenote, 2, 0, "access", "800", NULL);
! DEFINE_COMMAND(unregister, 1, MODCMD_REQUIRE_AUTHED|MODCMD_ACCEPT_CHANNEL, "flags", "+loghostmask", NULL);
DEFINE_COMMAND(merge, 2, MODCMD_REQUIRE_AUTHED|MODCMD_REQUIRE_REGCHAN, "access", "owner", NULL);
***************
*** 7292,7296 ****
DEFINE_COMMAND(olist, 1, MODCMD_REQUIRE_REGCHAN, "flags", "+nolog,+joinable", NULL);
DEFINE_COMMAND(plist, 1, MODCMD_REQUIRE_REGCHAN, "flags", "+nolog,+joinable", NULL);
! DEFINE_COMMAND(info, 1, MODCMD_REQUIRE_REGCHAN, "flags", "+nolog,+joinable", NULL);
DEFINE_COMMAND(seen, 2, MODCMD_REQUIRE_REGCHAN, "flags", "+nolog,+joinable", NULL);
DEFINE_COMMAND(names, 1, MODCMD_REQUIRE_REGCHAN, "flags", "+nolog,+joinable", NULL);
--- 7329,7333 ----
DEFINE_COMMAND(olist, 1, MODCMD_REQUIRE_REGCHAN, "flags", "+nolog,+joinable", NULL);
DEFINE_COMMAND(plist, 1, MODCMD_REQUIRE_REGCHAN, "flags", "+nolog,+joinable", NULL);
! DEFINE_COMMAND(info, 1, MODCMD_ACCEPT_CHANNEL, "flags", "+nolog,+joinable", NULL);
DEFINE_COMMAND(seen, 2, MODCMD_REQUIRE_REGCHAN, "flags", "+nolog,+joinable", NULL);
DEFINE_COMMAND(names, 1, MODCMD_REQUIRE_REGCHAN, "flags", "+nolog,+joinable", NULL);
|