[IRC-Dev CVS] SF.net SVN: irc-dev: [191] ircd/trunk
Brought to you by:
zolty
|
From: <zo...@us...> - 2008-07-12 20:53:21
|
Revision: 191
http://irc-dev.svn.sourceforge.net/irc-dev/?rev=191&view=rev
Author: zolty
Date: 2008-07-12 13:53:24 -0700 (Sat, 12 Jul 2008)
Log Message:
-----------
nuevos modos usuario +ahBX y unificacion status
Modified Paths:
--------------
ircd/trunk/include/client.h
ircd/trunk/include/numeric.h
ircd/trunk/ircd/ircd_relay.c
ircd/trunk/ircd/listener.c
ircd/trunk/ircd/m_info.c
ircd/trunk/ircd/m_invite.c
ircd/trunk/ircd/m_kick.c
ircd/trunk/ircd/m_lusers.c
ircd/trunk/ircd/m_mode.c
ircd/trunk/ircd/m_notice.c
ircd/trunk/ircd/m_privmsg.c
ircd/trunk/ircd/m_server.c
ircd/trunk/ircd/m_settime.c
ircd/trunk/ircd/m_trace.c
ircd/trunk/ircd/m_userhost.c
ircd/trunk/ircd/m_userip.c
ircd/trunk/ircd/m_watch.c
ircd/trunk/ircd/m_who.c
ircd/trunk/ircd/m_whois.c
ircd/trunk/ircd/m_whowas.c
ircd/trunk/ircd/s_err.c
ircd/trunk/ircd/s_numeric.c
ircd/trunk/ircd/s_user.c
ircd/trunk/ircd/watch.c
Modified: ircd/trunk/include/client.h
===================================================================
--- ircd/trunk/include/client.h 2008-07-12 16:50:33 UTC (rev 190)
+++ ircd/trunk/include/client.h 2008-07-12 20:53:24 UTC (rev 191)
@@ -111,6 +111,8 @@
PRIV_LIST_CHAN, /**< oper can list secret channels */
PRIV_FORCE_OPMODE, /**< can hack modes on quarantined channels */
PRIV_FORCE_LOCAL_OPMODE, /**< can hack modes on quarantined local channels */
+ PRIV_UMODE_K, /**< oper can set umode +k (Channel Service) */
+ PRIV_UMODE_X, /**< oper can set umode +X (can view hidden host) */
#if defined(DDB)
PRIV_DBQ, /**< oper can use DBQ (DataBase Query) */
#endif
@@ -157,9 +159,13 @@
#elif defined(DDB) || defined(SERVICES)
FLAG_NICKREG, /**< nick registered */
FLAG_NICKSUSPEND, /**< nick suspended */
+ FLAG_HELPOPER, /**< nick is Help Operator */
+ FLAG_ADMIN, /**< nick is Services Admin */
+ FLAG_BOT, /**< nick is Services Bot */
#endif
FLAG_MSGONLYREG, /**< only privmsg/notices from +r */
FLAG_HIDDENHOST, /**< user's host is hidden */
+ FLAG_VIEWHIDDENHOST, /**< can view hiddenhost */
FLAG_SSL, /**< is a user with secure connection */
FLAG_LAST_FLAG, /**< number of flags */
FLAG_LOCAL_UMODES = FLAG_LOCOP, /**< First local mode flag */
@@ -590,6 +596,8 @@
#endif
/** Return non-zero if the client has set mode +x (hidden host). */
#define IsHiddenHost(x) HasFlag(x, FLAG_HIDDENHOST)
+/** Return non-zero if the client has set mode +X (can view hidden host). */
+#define IsViewHiddenHost(x) HasFlag(x, FLAG_VIEWHIDDENHOST)
/** Return non-zero if the client has an active PING request. */
#define IsPingSent(x) HasFlag(x, FLAG_PINGSENT)
#ifdef USE_SSL
@@ -601,6 +609,12 @@
#define IsNickRegistered(x) HasFlag(x, FLAG_NICKREG)
/** Return non-zero if the client has set mode +S (nick suspended) */
#define IsNickSuspended(x) HasFlag(x, FLAG_NICKSUSPEND)
+/** Return non-zero if the client has set mode +h (Help Operator) */
+#define IsHelpOper(x) HasFlag(x, FLAG_HELPOPER)
+/** Return non-zero if the client has set mode +a (Services Admin) */
+#define IsAdmin(x) HasFlag(x, FLAG_ADMIN)
+/** Return non-zero if the client has set mode +B (Services Bot) */
+#define IsBot(x) HasFlag(x, FLAG_BOT)
#endif
/** Return non-zero if the client has set mode +R. */
#define IsMsgOnlyReg(x) HasFlag(x, FLAG_MSGONLYREG)
@@ -654,6 +668,8 @@
#endif
/** Mark a client as having mode +x (hidden host). */
#define SetHiddenHost(x) SetFlag(x, FLAG_HIDDENHOST)
+/** Mark a client as having mode +X (can view hidden host). */
+#define SetViewHiddenHost(x) SetFlag(x, FLAG_VIEWHIDDENHOST)
/** Mark a client as having a pending PING. */
#define SetPingSent(x) SetFlag(x, FLAG_PINGSENT)
#ifdef USE_SSL
@@ -665,6 +681,12 @@
#define SetNickRegistered(x) SetFlag(x, FLAG_NICKREG)
/** Mark a client as having mode +S (nick suspended) */
#define SetNickSuspended(x) SetFlag(x, FLAG_NICKSUSPEND)
+/** Mark a client as having mode +h (Help Operator) */
+#define SetHelpOper(x) SetFlag(x, FLAG_HELPOPER)
+/** Mark a client as having mode +a (Services Admin) */
+#define SetAdmin(x) SetFlag(x, FLAG_ADMIN)
+/** Mark a client as having mode +B (Services Bot) */
+#define SetBot(x) SetFlag(x, FLAG_BOT)
#endif
/** Mark a client as having mode +R. */
#define SetMsgOnlyReg(x) SetFlag(x, FLAG_MSGONLYREG)
@@ -699,6 +721,8 @@
#define ClearServNotice(x) ClrFlag(x, FLAG_SERVNOTICE)
/** Remove mode +x (hidden host) from the client. */
#define ClearHiddenHost(x) ClrFlag(x, FLAG_HIDDENHOST)
+/** Remove mode +X (can view hidden host) from the client. */
+#define ClearViewHiddenHost(x) ClrFlag(x, FLAG_VIEWHIDDENHOST)
/** Clear the client's pending PING flag. */
#define ClearPingSent(x) ClrFlag(x, FLAG_PINGSENT)
#ifdef USE_SSL
@@ -710,6 +734,12 @@
#define ClearNickRegistered(x) ClrFlag(x, FLAG_NICKREG)
/** Remode mode +S (nick suspended) from the client */
#define ClearNickSuspended(x) ClrFlag(x, FLAG_NICKSUSPEND)
+/** Remode mode +h (Help Operator) from the client */
+#define ClearHelpOper(x) ClrFlag(x, FLAG_HELPOPER)
+/** Remode mode +A (Services Admin) from the client */
+#define ClearAdmin(x) ClrFlag(x, FLAG_ADMIN)
+/** Remode mode +B (Services Bot) from the client */
+#define ClearBot(x) ClrFlag(x, FLAG_BOT)
#endif
/** Remove mode +R from the client. */
#define ClearMsgOnlyReg(x) ClrFlag(x, FLAG_MSGONLYREG)
Modified: ircd/trunk/include/numeric.h
===================================================================
--- ircd/trunk/include/numeric.h 2008-07-12 16:50:33 UTC (rev 190)
+++ ircd/trunk/include/numeric.h 2008-07-12 20:53:24 UTC (rev 191)
@@ -224,7 +224,7 @@
/* RPL_ENDOFRULES 309 unreal */
/* RPL_WHOISHELPER 309 austnet */
/* RPL_WHOISSVCMSG 310 Dalnet */
-/* RPL_WHOISHELPOP 310 unreal */
+#define RPL_WHOISHELPOP 310 /* IRC-Dev, Unreal extension */
/* RPL_WHOISSERVICE 310 austnet */
#define RPL_WHOISUSER 311 /* See also RPL_ENDOFWHOIS */
#define RPL_WHOISSERVER 312
@@ -256,6 +256,7 @@
#define RPL_LISTUSAGE 334 /* Undernet extension */
/* RPL_COMMANDSYNTAX 334 Dalnet */
/* RPL_LISTSYNTAX 334 unreal */
+#define RPL_WHOISBOT 335 /* IRC-Dev, Unreal extension */
#define RPL_WHOISSSL 337 /* SSL */
/* RPL_CHANPASSOK 338 IRCnet extension (?)*/
#define RPL_WHOISACTUALLY 338 /* Undernet extension, dalnet */
Modified: ircd/trunk/ircd/ircd_relay.c
===================================================================
--- ircd/trunk/ircd/ircd_relay.c 2008-07-12 16:50:33 UTC (rev 190)
+++ ircd/trunk/ircd/ircd_relay.c 2008-07-12 20:53:24 UTC (rev 191)
@@ -369,7 +369,7 @@
return;
#if defined(DDB) || defined(SERVICES)
- if (IsMsgOnlyReg(acptr) && !IsNickRegistered(sptr) && !IsOper(sptr)) {
+ if (IsMsgOnlyReg(acptr) && !IsNickRegistered(sptr) && !IsAnOper(sptr)) {
send_reply(sptr, ERR_NONONREG, cli_name(acptr));
return;
}
@@ -412,7 +412,7 @@
return;
#if defined(DDB) || defined(SERVICES)
- if (IsMsgOnlyReg(acptr) && !IsNickRegistered(sptr) && !IsOper(sptr))
+ if (IsMsgOnlyReg(acptr) && !IsNickRegistered(sptr) && !IsAnOper(sptr))
return;
#endif
Modified: ircd/trunk/ircd/listener.c
===================================================================
--- ircd/trunk/ircd/listener.c 2008-07-12 16:50:33 UTC (rev 190)
+++ ircd/trunk/ircd/listener.c 2008-07-12 20:53:24 UTC (rev 191)
@@ -136,8 +136,8 @@
{
struct Listener *listener = 0;
char flags[8];
- int show_hidden = IsOper(sptr);
- int count = (IsOper(sptr) || MyUser(sptr)) ? 100 : 8;
+ int show_hidden = IsAnOper(sptr);
+ int count = (IsAnOper(sptr) || MyUser(sptr)) ? 100 : 8;
int port = 0;
int len;
Modified: ircd/trunk/ircd/m_info.c
===================================================================
--- ircd/trunk/ircd/m_info.c 2008-07-12 16:50:33 UTC (rev 190)
+++ ircd/trunk/ircd/m_info.c 2008-07-12 20:53:24 UTC (rev 191)
@@ -97,11 +97,11 @@
return 0;
while (text[212])
{
- if (!IsOper(sptr))
+ if (!IsAnOper(sptr))
send_reply(sptr, RPL_INFO, *text);
text++;
}
- if (IsOper(sptr))
+ if (IsAnOper(sptr))
{
while (*text)
send_reply(sptr, RPL_INFO, *text++);
@@ -135,11 +135,11 @@
{
while (text[212])
{
- if (!IsOper(sptr))
+ if (!IsAnOper(sptr))
send_reply(sptr, RPL_INFO, *text);
text++;
}
- if (IsOper(sptr) && (NULL != parv[1]))
+ if (IsAnOper(sptr) && (NULL != parv[1]))
{
while (*text)
send_reply(sptr, RPL_INFO, *text++);
Modified: ircd/trunk/ircd/m_invite.c
===================================================================
--- ircd/trunk/ircd/m_invite.c 2008-07-12 16:50:33 UTC (rev 190)
+++ ircd/trunk/ircd/m_invite.c 2008-07-12 20:53:24 UTC (rev 191)
@@ -116,7 +116,7 @@
/* If we get here, it was a VALID and meaningful INVITE */
#if defined(DDB) || defined(SERVICES)
- if (IsMsgOnlyReg(acptr) && !IsNickRegistered(sptr) && !IsOper(sptr)) {
+ if (IsMsgOnlyReg(acptr) && !IsNickRegistered(sptr) && !IsAnOper(sptr)) {
send_reply(sptr, ERR_NONONREG, cli_name(acptr));
return;
}
Modified: ircd/trunk/ircd/m_kick.c
===================================================================
--- ircd/trunk/ircd/m_kick.c 2008-07-12 16:50:33 UTC (rev 190)
+++ ircd/trunk/ircd/m_kick.c 2008-07-12 20:53:24 UTC (rev 191)
@@ -106,7 +106,7 @@
OpLevel(member) == OpLevel(member2) ? "the same" : "a higher");
#elif defined(DDB) || defined(SERVICES)
/* Don't allow to kick channel owner */
- if (IsChanOwner(member) && !IsOper(sptr))
+ if (IsChanOwner(member) && !IsAnOper(sptr))
return send_reply(sptr, ERR_ISCHANSERVICE, cli_name(who), chptr->chname);
#endif
Modified: ircd/trunk/ircd/m_lusers.c
===================================================================
--- ircd/trunk/ircd/m_lusers.c 2008-07-12 16:50:33 UTC (rev 190)
+++ ircd/trunk/ircd/m_lusers.c 2008-07-12 20:53:24 UTC (rev 191)
@@ -57,7 +57,7 @@
*/
int m_lusers(struct Client* cptr, struct Client* sptr, int parc, char* parv[])
{
- int longoutput = MyUser(sptr) || IsOper(sptr);
+ int longoutput = MyUser(sptr) || IsAnOper(sptr);
if (parc > 2)
if (hunt_server_cmd(sptr, CMD_LUSERS, cptr, feature_int(FEAT_HIS_REMOTE),
"%s :%C", 2, parc, parv) != HUNTED_ISME)
@@ -104,7 +104,7 @@
*/
int ms_lusers(struct Client* cptr, struct Client* sptr, int parc, char* parv[])
{
- int longoutput = MyUser(sptr) || IsOper(sptr);
+ int longoutput = MyUser(sptr) || IsAnOper(sptr);
if (parc > 2)
if (hunt_server_cmd(sptr, CMD_LUSERS, cptr, 0, "%s :%C", 2, parc, parv) !=
HUNTED_ISME)
Modified: ircd/trunk/ircd/m_mode.c
===================================================================
--- ircd/trunk/ircd/m_mode.c 2008-07-12 16:50:33 UTC (rev 190)
+++ ircd/trunk/ircd/m_mode.c 2008-07-12 20:53:24 UTC (rev 191)
@@ -117,7 +117,7 @@
return modebuf_flush(&mbuf);
#if 1 /* TRANSICION IRC-HISPANO */
- } else if (feature_bool(FEAT_TRANSICION_HISPANO) && IsOper(sptr) && strchr(parv[2], 'x')) {
+ } else if (feature_bool(FEAT_TRANSICION_HISPANO) && IsAnOper(sptr) && strchr(parv[2], 'x')) {
modebuf_init(&mbuf, sptr, cptr, chptr,
(MODEBUF_DEST_CHANNEL | /* Send MODE to channel */
MODEBUF_DEST_SERVER | /* And to server */
@@ -235,7 +235,7 @@
MODE_PARSE_FORCE), /* And force it to be accepted */
NULL);
#if 1 /* TRANSICION IRC-HISPANO */
- } else if (IsOper(sptr) && strchr(parv[2], 'x')) {
+ } else if (IsAnOper(sptr) && strchr(parv[2], 'x')) {
modebuf_init(&mbuf, sptr, cptr, chptr,
(MODEBUF_DEST_CHANNEL | /* Send MODE to channel */
MODEBUF_DEST_SERVER | /* And to server */
Modified: ircd/trunk/ircd/m_notice.c
===================================================================
--- ircd/trunk/ircd/m_notice.c 2008-07-12 16:50:33 UTC (rev 190)
+++ ircd/trunk/ircd/m_notice.c 2008-07-12 20:53:24 UTC (rev 191)
@@ -132,7 +132,7 @@
/*
* coming from another server, we have to check this here
*/
- else if ('$' == *name && IsOper(sptr)) {
+ else if ('$' == *name && IsAnOper(sptr)) {
server_relay_masked_notice(sptr, name, parv[parc - 1]);
}
else if ((server = strchr(name, '@'))) {
Modified: ircd/trunk/ircd/m_privmsg.c
===================================================================
--- ircd/trunk/ircd/m_privmsg.c 2008-07-12 16:50:33 UTC (rev 190)
+++ ircd/trunk/ircd/m_privmsg.c 2008-07-12 20:53:24 UTC (rev 191)
@@ -129,7 +129,7 @@
/*
* coming from another server, we have to check this here
*/
- else if ('$' == *name && IsOper(sptr)) {
+ else if ('$' == *name && IsAnOper(sptr)) {
server_relay_masked_message(sptr, name, parv[parc - 1]);
}
else if ((server = strchr(name, '@'))) {
Modified: ircd/trunk/ircd/m_server.c
===================================================================
--- ircd/trunk/ircd/m_server.c 2008-07-12 16:50:33 UTC (rev 190)
+++ ircd/trunk/ircd/m_server.c 2008-07-12 20:53:24 UTC (rev 191)
@@ -561,7 +561,12 @@
return exit_client_msg(cptr, sptr, &me, "Bogus protocol (%s)", parv[5]);
else if (prot < atoi(MINOR_PROTOCOL))
#if 1 /* TRANSICION IRC-HISPANO */
- prot = atoi(MINOR_PROTOCOL);
+ {
+ prot = atoi(MINOR_PROTOCOL);
+ /* Los P09 siempre son Services y hub */
+ SetService(cptr);
+ SetHub(cptr);
+ }
#else
return exit_new_server(cptr, sptr, host, timestamp,
"Incompatible protocol: %s", parv[5]);
Modified: ircd/trunk/ircd/m_settime.c
===================================================================
--- ircd/trunk/ircd/m_settime.c 2008-07-12 16:50:33 UTC (rev 190)
+++ ircd/trunk/ircd/m_settime.c 2008-07-12 20:53:24 UTC (rev 191)
@@ -161,7 +161,7 @@
static char tbuf[11];
/* Must be a global oper */
- if (!IsOper(sptr))
+ if (!IsAnOper(sptr))
return send_reply(sptr, ERR_NOPRIVILEGES);
if (parc < 2) /* verify argument count */
Modified: ircd/trunk/ircd/m_trace.c
===================================================================
--- ircd/trunk/ircd/m_trace.c 2008-07-12 16:50:33 UTC (rev 190)
+++ ircd/trunk/ircd/m_trace.c 2008-07-12 20:53:24 UTC (rev 191)
@@ -143,7 +143,7 @@
if (!(acptr = LocalClientArray[i])) /* Local Connection? */
continue;
- if (IsInvisible(acptr) && dow && !(MyConnect(sptr) && IsOper(sptr)) &&
+ if (IsInvisible(acptr) && dow && !(MyConnect(sptr) && IsAnOper(sptr)) &&
!IsAnOper(acptr) && (acptr != sptr))
continue;
if (!doall && wilds && match(tname, cli_name(acptr)))
Modified: ircd/trunk/ircd/m_userhost.c
===================================================================
--- ircd/trunk/ircd/m_userhost.c 2008-07-12 16:50:33 UTC (rev 190)
+++ ircd/trunk/ircd/m_userhost.c 2008-07-12 20:53:24 UTC (rev 191)
@@ -53,7 +53,7 @@
* of +x. If an oper wants the real host, he should go to
* /whois to get it.
*/
- HasHiddenHost(cptr) && !IsAnOper(sptr) && (sptr != cptr) ?
+ HasHiddenHost(cptr) && !IsViewHiddenHost(sptr) && (sptr != cptr) ?
cli_user(cptr)->host : cli_user(cptr)->realhost);
}
Modified: ircd/trunk/ircd/m_userip.c
===================================================================
--- ircd/trunk/ircd/m_userip.c 2008-07-12 16:50:33 UTC (rev 190)
+++ ircd/trunk/ircd/m_userip.c 2008-07-12 20:53:24 UTC (rev 191)
@@ -54,7 +54,7 @@
* of +x. If an oper wants the real IP, he should go to
* /whois to get it.
*/
- HasHiddenHost(cptr) && !IsAnOper(sptr) && (sptr != cptr) ?
+ HasHiddenHost(cptr) && !IsViewHiddenHost(sptr) && (sptr != cptr) ?
feature_str(FEAT_HIDDEN_IP) :
ircd_ntoa(&cli_ip(cptr)));
}
Modified: ircd/trunk/ircd/m_watch.c
===================================================================
--- ircd/trunk/ircd/m_watch.c 2008-07-12 16:50:33 UTC (rev 190)
+++ ircd/trunk/ircd/m_watch.c 2008-07-12 20:53:24 UTC (rev 191)
@@ -192,7 +192,7 @@
{
send_reply(sptr, RPL_NOWON, cli_name(acptr),
cli_user(acptr)->username,
- HasHiddenHost(acptr) && !IsAnOper(sptr) ?
+ HasHiddenHost(acptr) && !IsViewHiddenHost(sptr) ?
cli_user(acptr)->host : cli_user(acptr)->realhost,
cli_lastnick(acptr));
}
Modified: ircd/trunk/ircd/m_who.c
===================================================================
--- ircd/trunk/ircd/m_who.c 2008-07-12 16:50:33 UTC (rev 190)
+++ ircd/trunk/ircd/m_who.c 2008-07-12 20:53:24 UTC (rev 191)
@@ -191,7 +191,7 @@
if (fields & WHO_FIELD_NIP)
{
- const char* p2 = HasHiddenHost(acptr) && !IsAnOper(sptr) ?
+ const char* p2 = HasHiddenHost(acptr) && !IsViewHiddenHost(sptr) ?
feature_str(FEAT_HIDDEN_IP) :
ircd_ntoa(&cli_ip(acptr));
*(p1++) = ' ';
@@ -283,9 +283,17 @@
*(p1++) = 'r';
if (IsNickSuspended(acptr))
*(p1++) = 'S';
+ if (IsAdmin(acptr))
+ *(p1++) = 'a';
+ if (IsHelpOper(acptr))
+ *(p1++) = 'h';
+ if (IsBot(acptr))
+ *(p1++) = 'B';
#endif
if (HasHiddenHost(acptr))
*(p1++) = 'x';
+ if (IsViewHiddenHost(acptr))
+ *(p1++) = 'X';
}
if (!fields || (fields & WHO_FIELD_DIS))
@@ -658,12 +666,12 @@
|| matchexec(cli_user(acptr)->host, mymask, minlen))
&& ((!(matchsel & WHO_FIELD_HOS))
|| !HasHiddenHost(acptr)
- || !IsAnOper(sptr)
+ || !IsViewHiddenHost(sptr)
|| matchexec(cli_user(acptr)->realhost, mymask, minlen))
&& ((!(matchsel & WHO_FIELD_REN))
|| matchexec(cli_info(acptr), mymask, minlen))
&& ((!(matchsel & WHO_FIELD_NIP))
- || (HasHiddenHost(acptr) && !IsAnOper(sptr))
+ || (HasHiddenHost(acptr) && !IsViewHiddenHost(sptr))
|| !ipmask_check(&cli_ip(acptr), &imask, ibits))
#if defined(UNDERNET)
&& ((!(matchsel & WHO_FIELD_ACC))
@@ -699,12 +707,12 @@
|| matchexec(cli_user(acptr)->host, mymask, minlen))
&& ((!(matchsel & WHO_FIELD_HOS))
|| !HasHiddenHost(acptr)
- || !IsAnOper(sptr)
+ || !IsViewHiddenHost(sptr)
|| matchexec(cli_user(acptr)->realhost, mymask, minlen))
&& ((!(matchsel & WHO_FIELD_REN))
|| matchexec(cli_info(acptr), mymask, minlen))
&& ((!(matchsel & WHO_FIELD_NIP))
- || (HasHiddenHost(acptr) && !IsAnOper(sptr))
+ || (HasHiddenHost(acptr) && !IsViewHiddenHost(sptr))
|| !ipmask_check(&cli_ip(acptr), &imask, ibits))
#if defined(UNDERNET)
&& ((!(matchsel & WHO_FIELD_ACC))
Modified: ircd/trunk/ircd/m_whois.c
===================================================================
--- ircd/trunk/ircd/m_whois.c 2008-07-12 16:50:33 UTC (rev 190)
+++ ircd/trunk/ircd/m_whois.c 2008-07-12 20:53:24 UTC (rev 191)
@@ -103,7 +103,7 @@
chptr = chan->channel;
if (!ShowChannel(sptr, chptr)
- && !(IsOper(sptr) && IsLocalChannel(chptr->chname)))
+ && !(IsAnOper(sptr) && IsLocalChannel(chptr->chname)))
continue;
if (acptr != sptr && IsZombie(chan))
@@ -154,6 +154,8 @@
if (user)
{
+ char *modes = umode_str(acptr);
+
if (user->away)
send_reply(sptr, RPL_AWAY, name, user->away);
@@ -162,25 +164,26 @@
send_reply(sptr, RPL_WHOISREGNICK, name);
else if (IsNickSuspended(acptr))
send_reply(sptr, RPL_WHOISSUSPEND, name);
-#endif /* defined(DDB) || defined(SERVICES) */
if (SeeOper(sptr,acptr))
+ send_reply(sptr, RPL_WHOISOPERATOR, name);
+
+ if (IsBot(acptr))
+ send_reply(sptr, RPL_WHOISBOT, name, feature_str(FEAT_NETWORK));
+
+#else /* UNDERNET */
+ if (SeeOper(sptr,acptr))
send_reply(sptr, RPL_WHOISOPERATOR, name);
-#if defined(UNDERNET)
if (IsAccount(acptr))
send_reply(sptr, RPL_WHOISACCOUNT, name, user->account);
#endif
- if (IsAnOper(sptr) || (acptr == sptr))
- {
- char *modes = umode_str(acptr);
-
- if (HasHiddenHost(acptr))
+ if (HasHiddenHost(acptr) && (IsViewHiddenHost(sptr) || (acptr == sptr)))
send_reply(sptr, RPL_WHOISACTUALLY, name, user->username,
user->realhost, ircd_ntoa(&cli_ip(acptr)));
- send_reply(sptr, RPL_WHOISMODES, name, *modes ? modes : "");
- }
+
+ send_reply(sptr, RPL_WHOISMODES, name, *modes ? modes : "");
#ifdef USE_SSL
if (MyConnect(acptr) && IsSSL(acptr) && ((parc >= 3) ||
Modified: ircd/trunk/ircd/m_whowas.c
===================================================================
--- ircd/trunk/ircd/m_whowas.c 2008-07-12 16:50:33 UTC (rev 190)
+++ ircd/trunk/ircd/m_whowas.c 2008-07-12 20:53:24 UTC (rev 191)
@@ -91,10 +91,10 @@
{
send_reply(sptr, RPL_WHOWASUSER, temp->name, temp->username,
temp->hostname, temp->realname);
- if (IsAnOper(sptr) && temp->realhost)
+ if (IsViewHiddenHost(sptr) && temp->realhost)
send_reply(sptr, RPL_WHOISACTUALLY, temp->name, temp->username, temp->realhost, "<untracked>");
send_reply(sptr, RPL_WHOISSERVER, temp->name,
- (feature_bool(FEAT_HIS_WHOIS_SERVERNAME) && !IsOper(sptr)) ?
+ (feature_bool(FEAT_HIS_WHOIS_SERVERNAME) && !IsAnOper(sptr)) ?
feature_str(FEAT_HIS_SERVERNAME) :
temp->servername,
myctime(temp->logoff));
Modified: ircd/trunk/ircd/s_err.c
===================================================================
--- ircd/trunk/ircd/s_err.c 2008-07-12 16:50:33 UTC (rev 190)
+++ ircd/trunk/ircd/s_err.c 2008-07-12 20:53:24 UTC (rev 191)
@@ -663,7 +663,7 @@
/* 309 */
{ 0 },
/* 310 */
- { 0 },
+ { RPL_WHOISHELPOP, "%s :is available for help", "310" },
/* 311 */
{ RPL_WHOISUSER, "%s %s %s * :%s", "311" },
/* 312 */
@@ -717,7 +717,7 @@
/* 334 */
{ RPL_LISTUSAGE, ":%s", "334" },
/* 335 */
- { 0 },
+ { RPL_WHOISBOT, "%s :is a \2Bot\2 on %s", "335" },
/* 336 */
{ 0 },
/* 337 */
Modified: ircd/trunk/ircd/s_numeric.c
===================================================================
--- ircd/trunk/ircd/s_numeric.c 2008-07-12 16:50:33 UTC (rev 190)
+++ ircd/trunk/ircd/s_numeric.c 2008-07-12 20:53:24 UTC (rev 191)
@@ -108,7 +108,7 @@
* come from the local server
*/
if (acptr)
- sendcmdto_one((feature_bool(FEAT_HIS_REWRITE) && !IsOper(acptr)) ?
+ sendcmdto_one((feature_bool(FEAT_HIS_REWRITE) && !IsAnOper(acptr)) ?
&me : sptr,
num, num, acptr, "%C %s", acptr, parv[2]);
else
Modified: ircd/trunk/ircd/s_user.c
===================================================================
--- ircd/trunk/ircd/s_user.c 2008-07-12 16:50:33 UTC (rev 190)
+++ ircd/trunk/ircd/s_user.c 2008-07-12 20:53:24 UTC (rev 191)
@@ -529,9 +529,13 @@
#elif defined(DDB) || defined(SERVICES)
{ FLAG_NICKREG, 'r' },
{ FLAG_NICKSUSPEND, 'S' },
- { FLAG_MSGONLYREG, 'R' },
+ { FLAG_ADMIN, 'a' },
+ { FLAG_HELPOPER, 'h' },
+ { FLAG_BOT, 'B' },
+ { FLAG_MSGONLYREG, 'R' },
#endif
- { FLAG_HIDDENHOST, 'x' }
+ { FLAG_HIDDENHOST, 'x' },
+ { FLAG_VIEWHIDDENHOST, 'X' }
};
/** Length of #userModeList. */
@@ -1081,7 +1085,7 @@
return 0;
#if defined(DDB) || defined(SERVICES)
- if (IsMsgOnlyReg(dest) && !IsNickRegistered(source) && !IsOper(source)) {
+ if (IsMsgOnlyReg(dest) && !IsNickRegistered(source) && !IsAnOper(source)) {
if(!is_notice)
send_reply(source, ERR_NONONREG, cli_name(source));
return 0;
@@ -1381,7 +1385,7 @@
send_reply(sptr, RPL_UMODEIS, buf);
if (HasFlag(sptr, FLAG_SERVNOTICE) && MyConnect(sptr)
&& cli_snomask(sptr) !=
- (unsigned int)(IsOper(sptr) ? SNO_OPERDEFAULT : SNO_DEFAULT))
+ (unsigned int)(IsAnOper(sptr) ? SNO_OPERDEFAULT : SNO_DEFAULT))
send_reply(sptr, RPL_SNOMASK, cli_snomask(sptr), cli_snomask(sptr));
return 0;
}
@@ -1482,6 +1486,12 @@
if (what == MODE_ADD)
do_host_hiding = 1;
break;
+ case 'X':
+ if (what == MODE_ADD)
+ SetViewHiddenHost(sptr);
+ else
+ ClearViewHiddenHost(sptr);
+ break;
#if defined(UNDERNET)
case 'r':
if (what == MODE_ADD) {
@@ -1512,6 +1522,24 @@
else
ClearNickSuspended(sptr);
break;
+ case 'a':
+ if (what == MODE_ADD)
+ SetAdmin(sptr);
+ else
+ ClearAdmin(sptr);
+ break;
+ case 'h':
+ if (what == MODE_ADD)
+ SetHelpOper(sptr);
+ else
+ ClearHelpOper(sptr);
+ break;
+ case 'B':
+ if (what == MODE_ADD)
+ SetBot(sptr);
+ else
+ ClearBot(sptr);
+ break;
case 'R':
if (what == MODE_ADD)
SetMsgOnlyReg(sptr);
@@ -1546,8 +1574,10 @@
* new umode; servers can set it, local users cannot;
* prevents users from /kick'ing or /mode -o'ing
*/
- if (!FlagHas(&setflags, FLAG_CHSERV))
+ if (!FlagHas(&setflags, FLAG_CHSERV) && !HasPriv(sptr, PRIV_UMODE_K))
ClearChannelService(sptr);
+ if (!FlagHas(&setflags, FLAG_VIEWHIDDENHOST) && HasPriv(sptr, PRIV_UMODE_X))
+ ClearViewHiddenHost(sptr);
/*
* only send wallops to opers
*/
@@ -1572,6 +1602,12 @@
ClearNickRegistered(sptr);
if (!FlagHas(&setflags, FLAG_NICKSUSPEND) && IsNickSuspended(sptr))
ClearNickSuspended(sptr);
+ if (!FlagHas(&setflags, FLAG_ADMIN))
+ ClearAdmin(sptr);
+ if (!FlagHas(&setflags, FLAG_HELPOPER))
+ ClearHelpOper(sptr);
+ if (!FlagHas(&setflags, FLAG_BOT))
+ ClearBot(sptr);
#endif /* defined(DDB) || defined(SERVICES) */
}
if (MyConnect(sptr))
Modified: ircd/trunk/ircd/watch.c
===================================================================
--- ircd/trunk/ircd/watch.c 2008-07-12 16:50:33 UTC (rev 190)
+++ ircd/trunk/ircd/watch.c 2008-07-12 20:53:24 UTC (rev 191)
@@ -146,7 +146,7 @@
send_reply(lp->value.cptr, raw, cli_name(cptr),
IsUser(cptr) ? cli_user(cptr)->username : "<N/A>",
IsUser(cptr) ?
- (HasHiddenHost(cptr) && !IsAnOper(lp->value.cptr) ?
+ (HasHiddenHost(cptr) && !IsViewHiddenHost(lp->value.cptr) ?
cli_user(cptr)->host : cli_user(cptr)->realhost)
: "<N/A>",
wt_lasttime(wptr));
@@ -166,7 +166,7 @@
if ((acptr = FindUser(nick)))
{
send_reply(cptr, raw1, cli_name(acptr), cli_user(acptr)->username,
- HasHiddenHost(acptr) && !IsAnOper(cptr) ?
+ HasHiddenHost(acptr) && !IsViewHiddenHost(cptr) ?
cli_user(acptr)->host : cli_user(acptr)->realhost,
cli_lastnick(acptr));
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|