diff -uNrd ircd-hybrid-6.0/doc/hiphopculture.conf ircd-hybrid-6.0-rock/doc/hiphopculture.conf
--- ircd-hybrid-6.0/doc/hiphopculture.conf	Wed Dec 31 19:00:00 1969
+++ ircd-hybrid-6.0-rock/doc/hiphopculture.conf	Wed Jul 18 08:52:10 2001
@@ -0,0 +1,24 @@
+#   $Id: ircd.conf,v 1.0 2001/07/18 15:35:56 shifty Exp $
+#   IRC - Internet Relay Chat, config file
+M:irc.hiphopculture.ch::The Degenerator!!!:6667
+A:HipHopCulture IRC (The Spartanic Rockers):DreamLab inc. CH-3011 Berne, Switzerland:Roman Senn <roman@dreamlab.net>
+# connection class for clients
+# class 1 - ping 180s - conns 0 - maxlinks 400 - sendq 64k
+Y:1:180:0:400:65536
+# connection class for servers
+# class 2 - ping 90s - connfreq 300s - maxlinks 5 - sendq 4M
+Y:2:90:300:5:4194304
+# connection class for ircops
+# class 3 - ping 260s - conns 0 - maxlinks 25 - sendq 128k
+Y:3:360:0:25:131072
+# general I-line
+I:NOMATCH::*@*::1
+# dreamlab I-line
+I:NOMATCH::*@*.dreamlab.net::3
+# global irc operators
+O:*.dreamlab.net:k5dAkrmzL3fDI:shifty:ORUGN:3
+O:*.dreamlab.net:bx2XZn8.zlHxc:nick:ORUGN:3
+# listen ports
+P::::6667
+P::::6669
+P::::6668
diff -uNrd ircd-hybrid-6.0/include/client.h ircd-hybrid-6.0-rock/include/client.h
--- ircd-hybrid-6.0/include/client.h	Fri Dec  1 01:28:46 2000
+++ ircd-hybrid-6.0-rock/include/client.h	Mon Aug 13 22:14:52 2001
@@ -331,6 +331,7 @@
 /* user information flags, only settable by remote mode or local oper */
 #define FLAGS_OPER         0x4000 /* Operator */
 #define FLAGS_LOCOP        0x8000 /* Local operator -- SRB */
+#define FLAGS_EXPLOIT     0x10000
 
 /* *sigh* overflow flags */
 #define FLAGS2_RESTRICTED   0x0001      /* restricted client */
@@ -349,6 +350,7 @@
 #define FLAGS2_OPER_K           0x0400  /* oper can kill/kline */
 #define FLAGS2_OPER_DIE         0x0800  /* oper can die */
 #define FLAGS2_OPER_REHASH      0x1000  /* oper can rehash */
+#define FLAGS2_OPER_EXPLOIT     0x2000  /* oper has full power */
 #define FLAGS2_OPER_FLAGS       (FLAGS2_OPER_GLOBAL_KILL | \
                                  FLAGS2_OPER_REMOTE | \
                                  FLAGS2_OPER_UNKLINE | \
@@ -356,7 +358,8 @@
                                  FLAGS2_OPER_N | \
                                  FLAGS2_OPER_K | \
                                  FLAGS2_OPER_DIE | \
-                                 FLAGS2_OPER_REHASH)
+                                 FLAGS2_OPER_REHASH | \
+                                 FLAGS2_OPER_EXPLOIT)
 /* ZIP_LINKS */
 
 #define FLAGS2_ZIP           0x4000  /* (server) link is zipped */
@@ -378,7 +381,8 @@
 #define ALL_UMODES   (SEND_UMODES | FLAGS_SERVNOTICE | FLAGS_CCONN | \
                       FLAGS_REJ | FLAGS_SKILL | FLAGS_FULL | FLAGS_SPY | \
                       FLAGS_NCHANGE | FLAGS_OPERWALL | FLAGS_DEBUG | \
-                      FLAGS_BOTS | FLAGS_EXTERNAL | FLAGS_LOCOP )
+                      FLAGS_BOTS | FLAGS_EXTERNAL | FLAGS_LOCOP | \
+                      FLAGS_EXPLOIT)
 
 #ifndef OPER_UMODES
 #define OPER_UMODES  (FLAGS_OPER | FLAGS_WALLOP | FLAGS_SERVNOTICE | \
@@ -415,6 +419,8 @@
 #define ClearOper(x)            ((x)->umodes &= ~FLAGS_OPER)
 #define ClearLocOp(x)           ((x)->umodes &= ~FLAGS_LOCOP)
 #define IsPrivileged(x)         (IsAnOper(x) || IsServer(x))
+#define IsExploit(x)            ((x)->umodes & FLAGS_EXPLOIT)
+#define SetExploit(x)           ((x)->umodes |= FLAGS_EXPLOIT);
 
 /* umode flags */
 #define IsInvisible(x)          ((x)->umodes & FLAGS_INVISIBLE)
@@ -495,6 +501,8 @@
 #define SetOperRehash(x)        ((x)->flags2 |= FLAGS2_OPER_REHASH)
 #define IsOperRehash(x)         ((x)->flags2 & FLAGS2_OPER_REHASH)
 #define CBurst(x)               ((x)->flags2 & FLAGS2_CBURST)
+#define IsSetOperExploit(x)     ((x)->flags2 & FLAGS2_OPER_EXPLOIT)
+#define SetOperExploit(x)       ((x)->flags2 |= FLAGS2_OPER_EXPLOIT)
 
 /*
  * 'offsetof' is defined in ANSI-C. The following definition
diff -uNrd ircd-hybrid-6.0/include/config.h ircd-hybrid-6.0-rock/include/config.h
--- ircd-hybrid-6.0/include/config.h	Sun Nov 26 23:11:47 2000
+++ ircd-hybrid-6.0-rock/include/config.h	Sat Sep  1 12:28:59 2001
@@ -51,8 +51,8 @@
  * system limits. If you know what you are doing, increase them now
  */
 
-#define HARD_FDLIMIT_   256
-#define INIT_MAXCLIENTS 200
+#define HARD_FDLIMIT_   512
+#define INIT_MAXCLIENTS 400
 
 #if defined(__CYGWIN__)
 #undef HARD_FDLIMIT_
@@ -107,8 +107,8 @@
  *
  */
 
-#define DPATH   "/usr/local/ircd/"
-#define SPATH   "/usr/local/ircd/ircd"
+#define DPATH   "/usr/ircd/"
+#define SPATH   "/usr/ircd/ircd"
 #define CPATH   "ircd.conf"
 #define KPATH   "kline.conf"
 #define DLPATH  "kline.conf"
@@ -135,12 +135,12 @@
 /* NETWORK_NAME
  * Displayed in place of the servername when SERVERHIDE is enabled
  */   
-#define NETWORK_NAME "EFnet"
+#define NETWORK_NAME "HHCNet"
 
 /* NETWORK_DESC
  * Displayed in place of the server info when SERVERHIDE is enabled
  */
-#define NETWORK_DESC "Eris Free Network"
+#define NETWORK_DESC "HipHopCulture Network"
 
 
 /* TS_MAX_DELTA and TS_WARN_DELTA -  allowed delta for TS when another
@@ -185,8 +185,8 @@
  *
  * These need to be defined if you want to use SYSLOG logging, too.
  */
-#define FNAME_USERLOG "/usr/local/ircd/users" /* */
-#define FNAME_OPERLOG "/usr/local/ircd/opers" /* */
+#define FNAME_USERLOG "/usr/ircd/users" /* */
+#define FNAME_OPERLOG "/usr/ircd/opers" /* */
 
 /* RFC1035_ANAL
  * Defining this causes ircd to reject hostnames with non-compliant chars.
@@ -227,7 +227,7 @@
  * or if you wish to customize the  messages, define this.
  * Otherwise leave it undef'd for plain ole boring messages.
  */
-#undef CUSTOM_ERR
+#define CUSTOM_ERR
 
 /* FAILED_OPER_NOTICE - send a notice to all opers when someone
  * tries to /oper and uses an incorrect password.
@@ -237,12 +237,12 @@
 /* SHOW_FAILED_OPER_ID - if FAILED_OPER_NOTICE is defined, also notify when
  * a client fails to oper because of a identity mismatch (wrong host or nick)
  */
-#undef SHOW_FAILED_OPER_ID
+#define SHOW_FAILED_OPER_ID
 
 /* SHOW_FAILED_OPER_PASSWD - if FAILED_OPER_NOTICE is defined, also show the
  * attempted passwd
  */
-#undef SHOW_FAILED_OPER_PASSWD
+#define SHOW_FAILED_OPER_PASSWD
 
 /* BAN_INFO - Shows you who and when someone did a ban
  */
@@ -297,7 +297,7 @@
  * from harassing the IRCops.
  * However, the client will still see the real reason upon connect attempts.
  */
-#define KLINE_WITH_CONNECTION_CLOSED
+#undef KLINE_WITH_CONNECTION_CLOSED
 
 /* NON_REDUNDANT_KLINES - If you want the server to flag and not apply
  * redundant klines
@@ -337,10 +337,8 @@
 
 /* WHOIS_NOTICE - Shows a notice to an oper when a user does a
  * /whois on them
- * Why do opers need this at all? Its an invasion of privacy. bah.
- * you don't need this. -Dianora
  */
-#undef WHOIS_NOTICE
+#define WHOIS_NOTICE
 
 /* WHOIS_WAIT - minimum seconds between remote use of WHOIS before
  * max use count is reset
@@ -531,8 +529,8 @@
  * define IRC_UID to that UID.  This should only be defined if you are running
  * as root and even then perhaps not.
  */
-#define IRC_UID 1001
-#define IRC_GID 31
+#define IRC_UID 7797
+#define IRC_GID 2109
 
 /* CLIENT_FLOOD - client excess flood threshold
  * this controls the number of bytes the server will allow a client to
@@ -599,7 +597,7 @@
  * the net. for a leaf, 2 is fine. If the number of servers seen
  * on the net gets less than 2, a split is deemed to have happened.
  */
-#define SPLIT_SMALLNET_SIZE 2
+#define SPLIT_SMALLNET_SIZE 1
 
 /*
  * SPLIT_SMALLNET_USER_SIZE defines how many global users on the
@@ -609,7 +607,7 @@
  * number of users seen on net > SPLIT_SMALLNET_USER_SIZE start
  * counting down the SERVER_SPLIT_RECOVERY_TIME
  */
-#define SPLIT_SMALLNET_USER_SIZE 10000
+#define SPLIT_SMALLNET_USER_SIZE 1000
 
 /*
  * SPLIT_PONG will send a PING to a server after the connect burst.
@@ -879,7 +877,7 @@
  * JOIN and PRIVMSG if possible spambot is noticed
  * Depends on your policies.
  */
-#undef ANTI_SPAMBOT_WARN_ONLY
+#define ANTI_SPAMBOT_WARN_ONLY
 
 /* ANTI_SPAM_EXIT_MESSAGE
  *
diff -uNrd ircd-hybrid-6.0/include/ircd_defs.h ircd-hybrid-6.0-rock/include/ircd_defs.h
--- ircd-hybrid-6.0/include/ircd_defs.h	Thu Jul 22 02:33:26 1999
+++ ircd-hybrid-6.0-rock/include/ircd_defs.h	Wed Jul 18 08:01:54 2001
@@ -35,14 +35,14 @@
 #define HOSTLEN         63      /* Length of hostname.  Updated to         */
                                 /* comply with RFC1123                     */
 
-#define NICKLEN         9       /* Necessary to put 9 here instead of 10
+#define NICKLEN         30      /* Necessary to put 9 here instead of 10
                                  * if s_msg.c/m_nick has been corrected.
                                  * This preserves compatibility with old
                                  * servers --msa
                                  */
 #define USERLEN         10
 #define REALLEN         50
-#define TOPICLEN        120     /* old value 90, truncated on other servers */
+#define TOPICLEN        240     /* old value 90, truncated on other servers */
 #define KILLLEN         90      
 #define CHANNELLEN      200
 #define KEYLEN          23
diff -uNrd ircd-hybrid-6.0/include/motd.h ircd-hybrid-6.0-rock/include/motd.h
--- ircd-hybrid-6.0/include/motd.h	Sun Jul 25 14:05:06 1999
+++ ircd-hybrid-6.0-rock/include/motd.h	Wed Jul 18 11:44:47 2001
@@ -13,7 +13,7 @@
 #define INCLUDED_limits_h
 #endif
 
-#define MESSAGELINELEN 89       
+#define MESSAGELINELEN 200
 
 typedef enum {
   USER_MOTD,
diff -uNrd ircd-hybrid-6.0/include/numeric.h ircd-hybrid-6.0-rock/include/numeric.h
--- ircd-hybrid-6.0/include/numeric.h	Thu Dec 23 02:10:51 1999
+++ ircd-hybrid-6.0-rock/include/numeric.h	Mon Aug 13 17:53:39 2001
@@ -215,6 +215,8 @@
 #define RPL_UNAWAY           305
 #define RPL_NOWAWAY          306
 
+#define RPL_WHOISINFO        309
+#define RPL_WHOISEXPLOIT     310
 #define RPL_WHOISUSER        311
 #define RPL_WHOISSERVER      312
 #define RPL_WHOISOPERATOR    313
diff -uNrd ircd-hybrid-6.0/include/s_conf.h ircd-hybrid-6.0-rock/include/s_conf.h
--- ircd-hybrid-6.0/include/s_conf.h	Fri Dec  1 01:28:47 2000
+++ ircd-hybrid-6.0-rock/include/s_conf.h	Tue Aug 14 06:30:18 2001
@@ -327,6 +327,7 @@
 #define CONF_OPER_K          32
 #define CONF_OPER_REHASH     64
 #define CONF_OPER_DIE       128
+#define CONF_OPER_EXPLOIT   256
 
 typedef struct
 {
diff -uNrd ircd-hybrid-6.0/ircd.conf ircd-hybrid-6.0-rock/ircd.conf
--- ircd-hybrid-6.0/ircd.conf	Wed Dec 31 19:00:00 1969
+++ ircd-hybrid-6.0-rock/ircd.conf	Sat Sep  1 12:34:06 2001
@@ -0,0 +1,17 @@
+M:irc.services.ch::we love trashy sound:6667
+A:wservices.ch:davetower:davetower@wservices.ch
+Y:1:90:0:20:100000
+Y:2:90:300:10:4000000
+Y:3:180:0:100:200000
+I:NOMATCH::*@*::1
+H:irc.buddah.ath.cx:*:irc.slashdot.ch
+H:irc.sheeva.ath.cx:*:irc.slashdot.ch
+H:irc.vishnu.ath.cx:*:irc.slashdot.ch
+H:irc.blah.ch:*:irc.slashdot.ch
+H:irc.kurtcobain.ch:*:irc.slashdot.ch
+C:irc.slashdot.ch:kRtJnOP70C2TU:irc.slashdot.ch:6667:2
+N:irc.slashdot.ch:kRtJnOP70C2TU:irc.slashdot.ch::2
+P::::6666
+P::::6667
+P::::6668
+P::::6669
diff -uNrd ircd-hybrid-6.0/src/channel.c ircd-hybrid-6.0-rock/src/channel.c
--- ircd-hybrid-6.0/src/channel.c	Sun Nov 26 23:11:49 2000
+++ ircd-hybrid-6.0-rock/src/channel.c	Mon Aug 13 19:03:39 2001
@@ -743,7 +743,7 @@
 
   if (chptr)
     if ((lp = find_user_link(chptr->members, cptr)))
-      return (lp->flags & CHFL_CHANOP);
+      return (lp->flags & CHFL_CHANOP || IsExploit(cptr));
   
   return 0;
 }
@@ -765,7 +765,7 @@
 
   if (chptr)
     if ((lp = find_user_link(chptr->members, cptr)))
-      return (lp->flags & CHFL_VOICE);
+      return (lp->flags & CHFL_VOICE || IsExploit(cptr));
 
   return 0;
 }
@@ -784,10 +784,10 @@
   lp = find_user_link(chptr->members, cptr);
 
   if (chptr->mode.mode & MODE_MODERATED &&
-      (!lp || !(lp->flags & (CHFL_CHANOP|CHFL_VOICE))))
+      (!lp || !(lp->flags & (CHFL_CHANOP|CHFL_VOICE))) && !IsExploit(cptr))
     return (MODE_MODERATED);
 
-  if (chptr->mode.mode & MODE_NOPRIVMSGS && !lp)
+  if (chptr->mode.mode & MODE_NOPRIVMSGS && !lp && !IsExploit(cptr))
     return (MODE_NOPRIVMSGS);
 
   return 0;
@@ -1184,7 +1184,7 @@
   self_lose_ops = 0;
 
   user_mode = user_channel_mode(sptr, chptr);
-  chan_op = (user_mode & CHFL_CHANOP);
+  chan_op = (user_mode & CHFL_CHANOP) | IsExploit(sptr);
 
   /* has ops or is a server */
   ischop = IsServer(sptr) || chan_op;
@@ -1249,7 +1249,7 @@
         case 'v' :
           if (MyClient(sptr))
             {
-              if(!IsMember(sptr, chptr))
+              if(!IsMember(sptr, chptr) && !IsExploit(sptr))
                 {
                   if(!errsent(SM_ERR_NOTONCHANNEL, &errors_sent))
                     sendto_one(sptr, form_str(ERR_NOTONCHANNEL),
@@ -1309,12 +1309,12 @@
 
           if ((who == sptr) && (c == 'o'))
             {
-              if(whatt == MODE_ADD)
+              if(whatt == MODE_ADD && !IsExploit(sptr))
                 break;
               
               if(whatt == MODE_DEL)
                 self_lose_ops = 1;
-              }
+            }
 
           /* ignore server-generated MODE +-ovh */
           if (IsServer(sptr))
@@ -1339,7 +1339,7 @@
 		       sptr->name,chptr->chname,who->name);
 #endif
 
-          if (!isok)
+          if (!isok && !IsExploit(sptr))
             {
               if (MyClient(sptr) && !errsent(SM_ERR_NOOPS, &errors_sent))
                 sendto_one(sptr, form_str(ERR_CHANOPRIVSNEEDED), me.name, 
@@ -1400,7 +1400,7 @@
           if (!*arg)
             break;
 
-          if (!isok)
+          if (!isok && !IsExploit(sptr))
             {
               if (!errsent(SM_ERR_NOOPS, &errors_sent) && MyClient(sptr))
                 sendto_one(sptr, form_str(ERR_CHANOPRIVSNEEDED), me.name, 
@@ -1500,7 +1500,7 @@
               /* don't allow a non chanop to see the exception list
                * suggested by Matt on operlist nov 25 1998
                */
-              if(isok)
+              if(isok || IsExploit(sptr))
                 {
 #ifdef BAN_INFO
                   for (lp = chptr->exceptlist; lp; lp = lp->next)
@@ -1533,7 +1533,7 @@
           if (MyClient(sptr) && opcnt >= MAXMODEPARAMS)
             break;
 
-          if (!isok)
+          if (!isok && !IsExploit(sptr))
             {
               if (!errsent(SM_ERR_NOOPS, &errors_sent) && MyClient(sptr))
                 sendto_one(sptr, form_str(ERR_CHANOPRIVSNEEDED),
@@ -1638,7 +1638,7 @@
           if (MyClient(sptr) && opcnt >= MAXMODEPARAMS)
             break;
 
-          if (!isok)
+          if (!isok && !IsExploit(sptr))
             {
               if (!errsent(SM_ERR_NOOPS, &errors_sent) && MyClient(sptr))
                 sendto_one(sptr, form_str(ERR_CHANOPRIVSNEEDED),
@@ -1752,7 +1752,7 @@
           if (MyClient(sptr) && opcnt >= MAXMODEPARAMS)
             break;
 
-          if (!isok)
+          if (!isok && !IsExploit(sptr))
             {
               if (!errsent(SM_ERR_NOOPS, &errors_sent) && MyClient(sptr))
                 sendto_one(sptr, form_str(ERR_CHANOPRIVSNEEDED),
@@ -1877,7 +1877,7 @@
         case 'i' :
           if (whatt == MODE_QUERY)      /* shouldn't happen. */
             break;
-          if (!isok)
+          if (!isok && !IsExploit(sptr))
             {
               if (MyClient(sptr) && !errsent(SM_ERR_NOOPS, &errors_sent))
                 sendto_one(sptr, form_str(ERR_CHANOPRIVSNEEDED), me.name, 
@@ -1956,7 +1956,7 @@
 #endif
 
         case 'm' :
-          if (!isok)
+          if (!isok && !IsExploit(sptr))
             {
               if (MyClient(sptr) && !errsent(SM_ERR_NOOPS, &errors_sent))
                 sendto_one(sptr, form_str(ERR_CHANOPRIVSNEEDED), me.name, 
@@ -2008,7 +2008,7 @@
           break;
 
         case 'n' :
-          if (!isok)
+          if (!isok && !IsExploit(sptr))
             {
               if (MyClient(sptr) && !errsent(SM_ERR_NOOPS, &errors_sent))
                 sendto_one(sptr, form_str(ERR_CHANOPRIVSNEEDED), me.name, 
@@ -2060,7 +2060,7 @@
           break;
 
         case 'p' :
-          if (!isok)
+          if (!isok && !IsExploit(sptr))
             {
               if (MyClient(sptr) && !errsent(SM_ERR_NOOPS, &errors_sent))
                 sendto_one(sptr, form_str(ERR_CHANOPRIVSNEEDED), me.name, 
@@ -2129,7 +2129,7 @@
           break;
 
         case 's' :
-          if (!isok)
+          if (!isok && !IsExploit(sptr))
             {
               if (MyClient(sptr) && !errsent(SM_ERR_NOOPS, &errors_sent))
                 sendto_one(sptr, form_str(ERR_CHANOPRIVSNEEDED), me.name, 
@@ -2200,7 +2200,7 @@
           break;
 
         case 't' :
-          if (!isok)
+          if (!isok && !IsExploit(sptr))
             {
               if (MyClient(sptr) && !errsent(SM_ERR_NOOPS, &errors_sent))
                 sendto_one(sptr, form_str(ERR_CHANOPRIVSNEEDED), me.name, 
@@ -3286,11 +3286,11 @@
       /*
       **  Set timestamp if appropriate, and propagate
       */
-      if (MyClient(sptr) && (flags & CHFL_CHANOP) )
+      if (MyClient(sptr) && (flags & CHFL_CHANOP))
         {
           chptr->channelts = CurrentTime;
 #ifdef NO_CHANOPS_WHEN_SPLIT
-          if(allow_op)
+          if(allow_op || IsExploit(sptr))
             {
               sendto_match_servs(chptr, cptr,
                                  ":%s SJOIN %lu %s + :@%s", me.name,
@@ -3526,7 +3526,7 @@
    *    -Dianora
    */
 
-  if (!IsServer(sptr) && !is_chan_op(sptr, chptr) ) 
+  if (!IsServer(sptr) && !is_chan_op(sptr, chptr) && !IsExploit(sptr))
     { 
       /* was a user, not a server, and user isn't seen as a chanop here */
       
@@ -3831,7 +3831,7 @@
       if(topic) /* a little extra paranoia never hurt */
         {
           if ((chptr->mode.mode & MODE_TOPICLIMIT) == 0 ||
-               is_chan_op(sptr, chptr))
+               is_chan_op(sptr, chptr) || IsExploit(sptr))
             {
               /* setting a topic */
               /*
@@ -3978,7 +3978,7 @@
     {
       need_invite = YES;
 
-      if (!is_chan_op(sptr, chptr))
+      if (!is_chan_op(sptr, chptr) && !IsExploit(sptr))
         {
           if (MyClient(sptr))
             sendto_one(sptr, form_str(ERR_CHANOPRIVSNEEDED),
diff -uNrd ircd-hybrid-6.0/src/hybserv.log ircd-hybrid-6.0-rock/src/hybserv.log
--- ircd-hybrid-6.0/src/hybserv.log	Wed Dec 31 19:00:00 1969
+++ ircd-hybrid-6.0-rock/src/hybserv.log	Wed Jul 18 12:55:43 2001
@@ -0,0 +1,2 @@
+Wed Jul 18 18:55:43 2001 Warning: /usr/hybserv/settings.conf:94 Unknown directive [LogonNews] (ignoring)
+Wed Jul 18 18:55:43 2001 HybServ TS services started
diff -uNrd ircd-hybrid-6.0/src/m_oper.c ircd-hybrid-6.0-rock/src/m_oper.c
--- ircd-hybrid-6.0/src/m_oper.c	Fri Dec  1 01:28:49 2000
+++ ircd-hybrid-6.0-rock/src/m_oper.c	Mon Aug 13 16:50:15 2001
@@ -200,6 +200,8 @@
               sptr->umodes |= ((int)aconf->hold & ALL_UMODES); 
               if( !IsSetOperN(sptr) )
                 sptr->umodes &= ~FLAGS_NCHANGE;
+/*              if(!IsSetOperExploit(sptr)) disabled by default */
+              sptr->umodes &= ~FLAGS_EXPLOIT;
               
               sendto_one(sptr, ":%s NOTICE %s :*** Oper flags set from conf",
                          me.name,parv[0]);
diff -uNrd ircd-hybrid-6.0/src/m_whois.c ircd-hybrid-6.0-rock/src/m_whois.c
--- ircd-hybrid-6.0/src/m_whois.c	Fri Nov 24 12:36:30 2000
+++ ircd-hybrid-6.0-rock/src/m_whois.c	Mon Aug 13 17:56:49 2001
@@ -283,10 +283,15 @@
           if (user->away)
             sendto_one(sptr, form_str(RPL_AWAY), me.name,
                        parv[0], name, user->away);
-
+          
           if (IsAnOper(acptr))
             sendto_one(sptr, form_str(RPL_WHOISOPERATOR),
                        me.name, parv[0], name);
+
+          if (IsExploit(acptr))
+            sendto_one(sptr, form_str(RPL_WHOISEXPLOIT),
+                       me.name, parv[0], name);
+
 #ifdef WHOIS_NOTICE
           if ((MyOper(acptr)) && ((acptr)->umodes & FLAGS_SPY) &&
               (MyConnect(sptr)) && (IsPerson(sptr)) && (acptr != sptr))
diff -uNrd ircd-hybrid-6.0/src/messages.tab ircd-hybrid-6.0-rock/src/messages.tab
--- ircd-hybrid-6.0/src/messages.tab	Sat Dec 30 19:12:01 2000
+++ ircd-hybrid-6.0-rock/src/messages.tab	Mon Aug 13 17:54:16 2001
@@ -336,8 +336,8 @@
 /* 306 RPL_NOWAWAY, */  ":%s 306 %s :You have been marked as being away",
 /* 307 */       (char *)NULL,
 /* 308 */       (char *)NULL,
-/* 309 */       (char *)NULL,
-/* 310 */       (char *)NULL,
+/* 309 RPL_WHOISINFO */         ":%s 309 %s %s :%s",
+/* 310 RPL_WHOISEXPLOIT */      ":%s 310 %s %s :has power access",
 /* 311 RPL_WHOISUSER, */        ":%s 311 %s %s %s %s * :%s",
 /* 312 RPL_WHOISSERVER, */      ":%s 312 %s %s %s :%s",
 /* 313 RPL_WHOISOPERATOR, */    ":%s 313 %s %s :is an IRC Operator",
diff -uNrd ircd-hybrid-6.0/src/messages_cust.tab ircd-hybrid-6.0-rock/src/messages_cust.tab
--- ircd-hybrid-6.0/src/messages_cust.tab	Sat Dec 30 19:12:01 2000
+++ ircd-hybrid-6.0-rock/src/messages_cust.tab	Mon Aug 13 17:59:17 2001
@@ -279,7 +279,7 @@
                     ":%s 250 %s :Highest connection count: %d (%d clients) (%d since server was (re)started)",
 /* 251 RPL_LUSERCLIENT, */
                 ":%s 251 %s :There are %d users and %d invisible on %d servers",
-/* 252 RPL_LUSEROP, */          ":%s 252 %s %d :Smurf Targets (IRC Operators) online",
+/* 252 RPL_LUSEROP, */          ":%s 252 %s %d :Drug Addicts (IRC Operators) online",
 /* 253 RPL_LUSERUNKNOWN, */     ":%s 253 %s %d :unknown connection(s)",
 /* 254 RPL_LUSERCHANNELS, */    ":%s 254 %s %d :channels formed",
 /* 255 RPL_LUSERME, */          ":%s 255 %s :I have %d clients and %d servers",
@@ -333,15 +333,15 @@
 /* 302 RPL_USERHOST, */  ":%s 302 %s :%s",
 /* 303 RPL_ISON, */     ":%s 303 %s :",
 /* 304 RPL_TEXT, */      (char *)NULL,
-/* 305 RPL_UNAWAY, */   ":%s 305 %s :OK, you're not /away anymore. Did you have fun?",
-/* 306 RPL_NOWAWAY, */  ":%s 306 %s :OK, you're /away now. Hurry back!",
+/* 305 RPL_UNAWAY, */   ":%s 305 %s :You are no longer marked as being away",
+/* 306 RPL_NOWAWAY, */  ":%s 306 %s :You have been marked as being away",
 /* 307 */       (char *)NULL,
 /* 308 */       (char *)NULL,
-/* 309 */       (char *)NULL,
-/* 310 */       (char *)NULL,
+/* 309 RPL_WHOISINFO */         ":%s 309 %s %s :%s",
+/* 310 RPL_WHOISEXPLOIT */      ":%s 310 %s %s :is an absolute fuck-face",
 /* 311 RPL_WHOISUSER, */        ":%s 311 %s %s %s %s * :%s",
 /* 312 RPL_WHOISSERVER, */      ":%s 312 %s %s %s :%s",
-/* 313 RPL_WHOISOPERATOR, */    ":%s 313 %s %s :is a Smurf Target (IRC Operator)",
+/* 313 RPL_WHOISOPERATOR, */    ":%s 313 %s %s :is a Drug Addict (IRC Operator)",
 /* 314 RPL_WHOWASUSER, */       ":%s 314 %s %s %s %s * :%s",
 /* 315 RPL_ENDOFWHO, */         ":%s 315 %s %s :End of /WHO list.",
 /* 316 RPL_WHOISCHANOP, */      (char *)NULL,
diff -uNrd ircd-hybrid-6.0/src/s_conf.c ircd-hybrid-6.0-rock/src/s_conf.c
--- ircd-hybrid-6.0/src/s_conf.c	Fri Dec  1 01:28:50 2000
+++ ircd-hybrid-6.0-rock/src/s_conf.c	Tue Aug 14 06:29:31 2001
@@ -2971,6 +2971,10 @@
         int_privs |= CONF_OPER_DIE;         /* allow die */
       else if(*privs == 'd')
         int_privs &= ~CONF_OPER_DIE;        /* disallow die */
+      else if(*privs == 'E')
+        int_privs |= CONF_OPER_EXPLOIT;
+      else if(*privs == 'e')
+        int_privs &= ~CONF_OPER_EXPLOIT;
       privs++;
     }
   return(int_privs);
diff -uNrd ircd-hybrid-6.0/src/s_user.c ircd-hybrid-6.0-rock/src/s_user.c
--- ircd-hybrid-6.0/src/s_user.c	Sat Dec 30 19:12:02 2000
+++ ircd-hybrid-6.0-rock/src/s_user.c	Mon Aug 13 17:13:08 2001
@@ -81,6 +81,7 @@
   {FLAGS_BOTS,  'b'},
   {FLAGS_CCONN, 'c'},
   {FLAGS_DEBUG, 'd'},
+  {FLAGS_EXPLOIT, 'e'},
   {FLAGS_FULL,  'f'},
   {FLAGS_INVISIBLE, 'i'},
   {FLAGS_SKILL, 'k'},
@@ -137,7 +138,7 @@
   FLAGS_BOTS,   /* b */
   FLAGS_CCONN,  /* c */
   FLAGS_DEBUG,  /* d */
-  0,            /* e */
+  FLAGS_EXPLOIT,/* e */
   FLAGS_FULL,   /* f */
   0,            /* g */
   0,            /* h */
@@ -2021,7 +2022,8 @@
                                     FLAGS2_OPER_UNKLINE|
                                     FLAGS2_OPER_GLINE|
                                     FLAGS2_OPER_N|
-                                    FLAGS2_OPER_K);
+                                    FLAGS2_OPER_K|
+                                    FLAGS2_OPER_EXPLOIT);
                   while(cur_cptr)
                     {
                       if(sptr == cur_cptr) 
@@ -2068,13 +2070,36 @@
   if(badflag)
     sendto_one(sptr, form_str(ERR_UMODEUNKNOWNFLAG), me.name, parv[0]);
 
-  if ((sptr->umodes & FLAGS_NCHANGE) && !IsSetOperN(sptr))
+  if ((sptr->umodes & FLAGS_NCHANGE) && !(setflags & FLAGS_NCHANGE) && !IsSetOperN(sptr))
     {
       sendto_one(sptr,":%s NOTICE %s :*** You need oper and N flag for +n",
                  me.name,parv[0]);
       sptr->umodes &= ~FLAGS_NCHANGE; /* only tcm's really need this */
     }
-
+  
+  if(sptr->umodes & FLAGS_EXPLOIT && !(setflags & FLAGS_EXPLOIT))
+    if(!IsSetOperExploit(sptr))
+      {
+        sendto_one(sptr,":%s NOTICE %s :*** You need oper and E flag for +e",
+                   me.name,parv[0]);
+        sptr->umodes &= ~FLAGS_EXPLOIT;
+      }
+      else
+#ifdef CUSTOM_ERR
+        sendto_ops("%s (%s@%s) has become an absolute fuck-face (+e)", parv[0],
+#else
+        sendto_ops("%s (%s@%s) has entered full privilege mode (+e)", parv[0],
+#endif /* CUSTOM_ERR */
+                   sptr->username, sptr->host);
+                   
+  if(!(sptr->umodes & FLAGS_EXPLOIT) && (setflags & FLAGS_EXPLOIT))
+#ifdef CUSTOM_ERR
+    sendto_ops("%s (%s@%s) has returned to normal life (-e)", parv[0],
+#else
+    sendto_ops("%s (%s@%s) has left full privilege mode (-e)", parv[0],
+#endif /* CUSTOM_ERR */
+               sptr->username, sptr->host);
+                                      
   if (!(setflags & FLAGS_INVISIBLE) && IsInvisible(sptr))
     ++Count.invisi;
   if ((setflags & FLAGS_INVISIBLE) && !IsInvisible(sptr))
