topic fixes, userhost fixes, services through +g fixes, can't deop services, and a bunch others...

This commit is contained in:
fishwaldo 2002-09-21 06:26:13 +00:00
parent a6ccab59c9
commit 19b410a8a8
8 changed files with 52 additions and 18 deletions

View file

@ -4,6 +4,7 @@ Symbols are:
(F) - Fish (fish@dynam.ac)
(S) - Shmad (shmad@#neostats.net)
(HP) - Hybrid Team Patches to Hybrid Source
* NeoIRCd Version 0.9.3 - 19th Sept, 2002 - Fish
(HP) - Merged in Hybrid rc4 Patches (including Rc3 and Rc3 fixes)
(F) - Fixed up Persistant Channels.
@ -11,6 +12,10 @@ Symbols are:
(F) - Fixed up services problem
(F) - Fixed up aliases
(F) - Fixed up a /who bug after the merge of HybirdRC4
(F) - Services can send through +g usermode
(F) - Services can set topics or kick
(F) - you can not deop/admin/voice/halfop a services client regardless of who you are.
(F) - /userhost displays your vhost, not real host..
* NeoIRCd Version 0.9.2 - 17th Sept, 2002 - Fish
(F) - Fixed a problem with servers setting modes

7
TODO
View file

@ -1,10 +1,15 @@
$Id: TODO,v 1.7 2002/09/13 16:30:02 fishwaldo Exp $
$Id: TODO,v 1.8 2002/09/21 06:26:12 fishwaldo Exp $
NeoStats HostServ should accept /privmsg hostserv login <username> <password> for NeoIRCD vhost support!
*Services (+S) can bypass +g
POST 1.0
*Umode +b (Bots) to identify bots (iEf2002)
*it would be nice if we could pass message handlers the actuall command that triggered the handler
*Umode +a (Services Root) and +N (Network Admin)
*SSL Client Support (Still not sure how to do this)
*Implement servlink so it can either be a seperate process, or linked to the ircd. (for shells with a process limit, its baaaad)
*Channel mode +M (un-registered users can't talk)
*channel modes in /list
*add IsMyAdmin to replace IsAdmin (currently server admins have admin axs to all servers)

View file

@ -19,7 +19,7 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA
*
* $Id: numeric.h,v 1.8 2002/09/19 05:41:10 fishwaldo Exp $
* $Id: numeric.h,v 1.9 2002/09/21 06:26:12 fishwaldo Exp $
*/
#ifndef INCLUDED_numeric_h
@ -377,7 +377,7 @@ extern const char* form_str(int);
#define ERR_YOUREBANNEDCREEP 465
#define ERR_YOUWILLBEBANNED 466
#define ERR_KEYSET 467
/* ERR_ONLYSERVERSCANCHANGE 468 Dalnet,unreal */
#define ERR_ONLYSERVERSCANCHANGE 468
/* ERR_LINKSET 469 unreal */
/* ERR_LINKCHANNEL 470 unreal */
/* ERR_KICKEDFROMCHAN 470 aircd */

View file

@ -19,7 +19,7 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA
*
* $Id: m_message.c,v 1.7 2002/09/13 16:30:04 fishwaldo Exp $
* $Id: m_message.c,v 1.8 2002/09/21 06:26:12 fishwaldo Exp $
*/
#include "stdinc.h"
@ -122,7 +122,7 @@ _moddeinit(void)
mod_del_cmd(&notice_msgtab);
}
const char *_version = "$Revision: 1.7 $";
const char *_version = "$Revision: 1.8 $";
#endif
/*
@ -591,8 +591,8 @@ msg_client(int p_or_n, char *command,
if (MyClient(target_p))
{
/* XXX Controversial? allow opers always to send through a +g */
if (!IsServer(source_p) && IsSetCallerId(target_p))
/* XXX Controversial? allow opers and services always to send through a +g */
if ((!IsServices(source_p) || !IsServer(source_p)) && IsSetCallerId(target_p))
{
/* Here is the anti-flood bot/spambot code -db */
if (accept_message(source_p, target_p) || IsOper(source_p))

View file

@ -19,7 +19,7 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA
*
* $Id: m_topic.c,v 1.4 2002/09/13 06:50:07 fishwaldo Exp $
* $Id: m_topic.c,v 1.5 2002/09/21 06:26:12 fishwaldo Exp $
*/
#include "stdinc.h"
@ -61,7 +61,7 @@ _moddeinit(void)
mod_del_cmd(&topic_msgtab);
}
const char *_version = "$Revision: 1.4 $";
const char *_version = "$Revision: 1.5 $";
#endif
/*
* m_topic
@ -113,14 +113,14 @@ static void m_topic(struct Client *client_p,
/* setting topic */
if (parc > 2)
{
if (!IsMember(source_p, chptr))
if (!IsMember(source_p, chptr) && !IsServices(source_p))
{
sendto_one(source_p, form_str(ERR_NOTONCHANNEL), me.name, parv[0],
parv[1]);
return;
}
if ((chptr->mode.mode & MODE_TOPICLIMIT) == 0 ||
is_any_op(chptr,source_p))
(is_any_op(chptr,source_p) || IsServices(source_p)))
{
char topic_info[USERHOST_REPLYLEN];
ircsprintf(topic_info, "%s!%s@%s",

View file

@ -19,7 +19,7 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA
*
* $Id: m_userhost.c,v 1.3 2002/09/13 06:50:07 fishwaldo Exp $
* $Id: m_userhost.c,v 1.4 2002/09/21 06:26:12 fishwaldo Exp $
*/
#include "stdinc.h"
@ -57,7 +57,7 @@ _moddeinit(void)
mod_del_cmd(&userhost_msgtab);
}
const char *_version = "$Revision: 1.3 $";
const char *_version = "$Revision: 1.4 $";
#endif
/*
* m_userhost added by Darren Reed 13/8/91 to aid clients and reduce
@ -106,7 +106,7 @@ static void m_userhost(struct Client *client_p,
IsOper(target_p) ? "*" : "",
(target_p->user->away) ? '-' : '+',
target_p->username,
target_p->localClient->sockhost);
target_p->vhost);
}
else
{
@ -115,7 +115,7 @@ static void m_userhost(struct Client *client_p,
IsOper(target_p) ? "*" : "",
(target_p->user->away) ? '-' : '+',
target_p->username,
IsOper(source_p) ? target_p->host: target_p->vhost);
target_p->vhost);
};
if((rl + cur_len) < (BUFSIZE-10))

View file

@ -19,7 +19,7 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA
*
* $Id: channel_mode.c,v 1.16 2002/09/19 05:41:11 fishwaldo Exp $
* $Id: channel_mode.c,v 1.17 2002/09/21 06:26:13 fishwaldo Exp $
*/
#include "stdinc.h"
@ -1074,6 +1074,12 @@ chm_admin(struct Client *client_p, struct Client *source_p,
*errors |= SM_ERR_NOTONCHANNEL;
return;
}
if (IsServices(targ_p) && (!IsUlined(source_p)))
{
sendto_one(source_p, ":%s NOTICE %s :Access Denied. Services Client (%s)", me.name, source_p->name, targ_p->name);
*errors |= SM_ERR_NOOPS;
return;
}
if (((dir == MODE_ADD) && t_admin) || ((dir == MODE_DEL) && !t_admin))
return;
@ -1208,6 +1214,12 @@ chm_op(struct Client *client_p, struct Client *source_p,
*errors |= SM_ERR_NOTONCHANNEL;
return;
}
if (IsServices(targ_p) && !IsUlined(source_p))
{
sendto_one(source_p, ":%s NOTICE %s :Access Denied. Services Client (%s)", me.name, source_p->name, targ_p->name);
*errors |= SM_ERR_NOOPS;
return;
}
mode_get_status(chptr, targ_p, &t_op, &t_hop, &t_voice, &t_admin, 1);
@ -1356,6 +1368,12 @@ chm_halfop(struct Client *client_p, struct Client *source_p,
{
return;
}
if (IsServices(targ_p) && !IsUlined(source_p))
{
sendto_one(source_p, ":%s NOTICE %s :Access Denied. Services Client (%s)", me.name, source_p->name, targ_p->name);
*errors |= SM_ERR_NOOPS;
return;
}
mode_get_status(chptr, targ_p, &t_op, &t_hop, &t_voice, &t_admin, 1);
@ -1458,6 +1476,12 @@ chm_voice(struct Client *client_p, struct Client *source_p,
*errors |= SM_ERR_NOTONCHANNEL;
return;
}
if (IsServices(targ_p) && !IsUlined(source_p))
{
sendto_one(source_p, ":%s NOTICE %s :Access Denied. Services Client (%s)", me.name, source_p->name, targ_p->name);
*errors |= SM_ERR_NOOPS;
return;
}
mode_get_status(chptr, targ_p, &t_op, &t_hop, &t_voice, &t_admin, 1);

View file

@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* $Id: messages.tab,v 1.6 2002/09/19 05:41:11 fishwaldo Exp $
* $Id: messages.tab,v 1.7 2002/09/21 06:26:13 fishwaldo Exp $
*/
static char * replies[] = {
@ -493,7 +493,7 @@ static char * replies[] = {
/* 465 ERR_YOUREBANNEDCREEP, */ ":%s 465 %s :You are banned from this server- %s",
/* 466 ERR_YOUWILLBEBANNED, */ NULL,
/* 467 ERR_KEYSET, */ ":%s 467 %s %s :Channel key already set",
/* 468 */ NULL,
/* 468 ERR_ONLYSERVERSCANCHANGE*/NULL,
/* 469 */ NULL,
/* 470 */ NULL,
/* 471 ERR_CHANNELISFULL, */ ":%s 471 %s %s :Cannot join channel (+l)",