this is the *REAL* 0.9.3 with my todo done for 0.9.3...

for Eggy:
Epona lives at http://www.neostats.net/epona-1.4.14.neoircd.tar.gz
This commit is contained in:
fishwaldo 2002-09-23 04:39:32 +00:00
parent 830a454a11
commit 5f5a194b12
4 changed files with 29 additions and 17 deletions

View file

@ -18,6 +18,9 @@ Symbols are:
(F) - /userhost displays your vhost, not real host..
(F) - Timed Glines now possible. /gline ident@host 12 reason (12 is minutes atm, if 0, uses the default from config files)
(F) - Dlines are now network wide.
(F) - svsmode now works
(F) - a few minor bug fixes with glines
(F) - topic bursting on net join is now enabled
* NeoIRCd Version 0.9.2 - 17th Sept, 2002 - Fish
(F) - Fixed a problem with servers setting modes

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: m_smo.c,v 1.2 2002/09/16 07:56:55 fishwaldo Exp $
* $Id: m_smo.c,v 1.3 2002/09/23 04:39:32 fishwaldo Exp $
*/
/* List of ircd includes from ../include/ */
@ -81,7 +81,7 @@ _moddeinit(void)
/* When we last modified the file (shown in /modlist), this is usually:
*/
const char *_version = "$Revision: 1.2 $";
const char *_version = "$Revision: 1.3 $";
#endif
/*
@ -101,11 +101,6 @@ static void ms_smo(struct Client *client_p, struct Client *source_p,
/* this is just a double check for servers that *DONT* set the right flags */
flags &= ~FLAGS_REMOTE;
/* if its not from a server, or a Services Client drop the message */
if (!IsServer(source_p))
return;
if (IsClient(source_p) && (!IsServices(source_p)))
return;
sendto_realops_flags(flags, atoi(parv[2]), "From %s: %s", source_p->name, parv[3]);

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: m_svscmds.c,v 1.5 2002/09/17 11:03:21 fishwaldo Exp $
* $Id: m_svscmds.c,v 1.6 2002/09/23 04:39:32 fishwaldo Exp $
*/
/* List of ircd includes from ../include/ */
@ -63,7 +63,8 @@ static void ms_svsjoin(struct Client *client_p, struct Client *source_p,
int parc, char *parv[]);
static void ms_svspart(struct Client *client_p, struct Client *source_p,
int parc, char *parv[]);
static void ms_svsmode(struct Client *client_p, struct Client *source_p,
int parc, char *parv[]);
@ -96,6 +97,10 @@ struct Message svspart_msgtab = {
{m_ignore, m_ignore, ms_svspart, m_ignore}
};
struct Message svsmode_msgtab = {
"SVSMODE", 0, 0, 3, 0, MFLG_SLOW, 0,
{m_ignore, m_ignore, ms_svsmode, m_ignore}
};
/* Thats the msgtab finished */
@ -110,6 +115,7 @@ _modinit(void)
mod_add_cmd(&svsid_msgtab);
mod_add_cmd(&svsjoin_msgtab);
mod_add_cmd(&svspart_msgtab);
mod_add_cmd(&svsmode_msgtab);
}
/* here we tell it what to do when the module is unloaded */
@ -122,11 +128,12 @@ _moddeinit(void)
mod_del_cmd(&svsid_msgtab);
mod_del_cmd(&svsjoin_msgtab);
mod_del_cmd(&svspart_msgtab);
mod_del_cmd(&svsmode_msgtab);
}
/* When we last modified the file (shown in /modlist), this is usually:
*/
const char *_version = "$Revision: 1.5 $";
const char *_version = "$Revision: 1.6 $";
#endif
/*
@ -525,3 +532,12 @@ static void ms_svspart(struct Client *client_p, struct Client *source_p,
remove_user_from_channel(chptr, target_p);
}
static void ms_svsmode(struct Client *client_p, struct Client *source_p,
int parc, char *parv[])
{
if (!IsUlined(source_p))
return;
user_mode(client_p, source_p, parc, parv);
}

View file

@ -19,7 +19,7 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA
*
* $Id: s_user.c,v 1.16 2002/09/20 09:05:18 fishwaldo Exp $
* $Id: s_user.c,v 1.17 2002/09/23 04:39:32 fishwaldo Exp $
*/
#include "stdinc.h"
@ -954,14 +954,14 @@ user_mode(struct Client *client_p, struct Client *source_p, int parc, char *parv
* put them back using new sendto() funcs
*/
if (IsServer(source_p))
if (IsServer(source_p) && !IsUlined(source_p))
{
sendto_realops_flags(FLAGS_ALL|FLAGS_REMOTE, L_ADMIN, "*** Mode for User %s from %s",
parv[1], source_p->name);
return 0;
}
if ((source_p != target_p || target_p->from != source_p->from) && !IsServices(source_p))
if ((source_p != target_p || target_p->from != source_p->from) && !IsUlined(source_p))
{
sendto_one(source_p, form_str(ERR_USERSDONTMATCH), me.name, parv[0]);
return 0;
@ -1043,14 +1043,12 @@ user_mode(struct Client *client_p, struct Client *source_p, int parc, char *parv
*/
SetHidden(target_p);
if (!MyClient(target_p)) {
ilog(L_WARN, "set exit");
break;
}
make_virthost(target_p->host, target_p->vhost, 0);
} else {
ClearHidden(target_p);
if (!MyClient(target_p)) {
ilog(L_WARN, "exit");
break;
}
strncpy(target_p->vhost, target_p->host, HOSTLEN);
@ -1113,7 +1111,7 @@ user_mode(struct Client *client_p, struct Client *source_p, int parc, char *parv
me.name, parv[0]);
target_p->umodes &= ~FLAGS_SERVICES;
}
if ((!IsServer(client_p) || !IsUlined(client_p)) && ((target_p->umodes & FLAGS_REGNICK) || setflags & FLAGS_REGNICK))
if ((!IsServer(source_p) || !IsUlined(source_p)) && ((target_p->umodes & FLAGS_REGNICK) || setflags & FLAGS_REGNICK))
{
sendto_one(source_p, ":%s NOTICE %s :*** Only Services can set +r",
me.name, parv[0]);
@ -1207,7 +1205,7 @@ send_umode_out(struct Client *client_p,
char buf[BUFSIZE];
dlink_node *ptr;
send_umode(NULL, source_p, old, SEND_UMODES, buf);
send_umode(source_p, source_p, old, ALL_UMODES, buf);
for(ptr = serv_list.head; ptr; ptr = ptr->next)
{