]> jfr.im git - irc/evilnet/x3.git/blobdiff - src/opserv.help
Added help for trace and addalert tempshun actions
[irc/evilnet/x3.git] / src / opserv.help
index 382ffb43475dcfb06165f67e84f3cde1ef5e8921..5e86c0261da90c8a574d30b3822e9933d525eb62 100644 (file)
@@ -1,16 +1,17 @@
 "<INDEX>"  (
             " $O provides Oper Services for the Network.    ",
             " Please choose from the following categories:  ",
-            "  $bGOD$b         Enabling channel override.   ",
-            "  $bPUNISH$b      Commands to discipline users.",
             "  $bINFORMATION$b Get information about users. ",
             "              or $O, $C, and $N.           ",
+            "  $bPUNISH$b      Commands to discipline users.",
+            "  $bCHANNEL$b     Channel commands.            ",
+            "  $bUSER$b        User commands.               ",
             "  $bTRACES$b      Powerful commands for       ",
             "              viewing or acting on lists of",
             "              IRC objects.                 ",
             "  $bALERTS$b      Automated responses.         ",
+            "  $bGOD$b         Enabling channel override.   ",
             "  $bTRACKING$b    Tracking commands. (if enabled)",
-            "  $bCHANNEL$b     Channel commands.            ",
             "  $bCLONES$b      Manage trusts and limits.    ",
             "  $bROUTING$b     Manage the Auto Routing System.",
             "  $bSETTINGS$b    View and temporarily change  ",
             "  $bUNGAG$b       ...or unignore by mask."
             );
 
+"USER"     (
+            " $bSVSJOIN$b      Force a user to join a channel.",
+            " $bSVSPART$b      Force a user to part a channel.",
+            " $bSVSNICK$b      Force a user to change nicks.",
+            " $bACCESS$b       Show/modify $O access level of a user."
+           );
+
 "INFORMATION"  (
                 "  $bACCESS$b  Shows a users $O access level.",
                 "  $bSTATS$b   Show various lists and runtime info.",
@@ -62,7 +70,7 @@
             "  $bADDALERT$b  Make $O automatically do something",
             "            when users match a criteria.",
             "  $bDELALERT$b  Remove an alert.",
-            "  $bSTATS ALERT$b See a listing of alerts. "
+            "  $bSTATS ALERTS$b See a listing of alerts. "
            );
 
 "TRACKING"   (
               "  $bDELTRACK$b  Deletes an active track.",
               "  $bLISTTRACK$b Lists all active tracks.",
              );
+
+"PRIVILEGE" (
+             " The Privilege list system: ",
+             " $b$b",
+             " $bPRIVSET$b Set and unset privileges on the fly."
+            );
+
 "ROUTING"  (
             " The Auto Routing System: ",
             " $b$b",
             " $bROUTING MAP$b       Show what the active routing plan says the network should look like.",
             " $bREROUTE$b           Connect servers to the network, optionally squiting them first to change the routing.",
             " $b$b ",
-            " Start by creating a routing plan, and then adding servers to it, with their listning port, uplink, and a backup uplink. You can view it in $bSTATS ROUTING$b. Take care not to create loops, and that you make everything connected. Then set your new plan ACTIVE using $bROUTING SET$b. $O does the rest! See help topic $bROUTING EXAMPLE$b for a working example."
+            " Start by creating a routing plan, and then adding servers to it, with their listning port, uplink, and a backup uplink. You can view it in $bSTATS ROUTING planname$b. Take care not to create loops, and that you make everything connected. Then set your new plan ACTIVE using $bROUTING SET$b. $O does the rest! See help topic $bROUTING EXAMPLE$b for a working example."
             );
 
 "CHANNEL"  (
             "  $bDEHOPALL$b   Dehalfop everyone in a channel.",
             "  $bVOICEALL$b   Voice everyone in a channel.",
             "  $bDEVOICEALL$b Devoice everyone in a channel.",
+            "  $bFORCEKICK$b  Kicks someone even if they are +k.",
             "  $bKICKALL$b    Kick everyone from a channel.",
             "  $bKICKBANALL$b Kickban everyone from a channel.",
             "  $b$b",
             "  $bJUPE$b         Create dummy server.",
             "  $bUNJUPE$b       Remove a dummy server.",
             "  $b$b",
+            "  $bDEFCON$b       Manipulate the DefCon system.",
             "  $bREFRESHG$b     Refresh the Glines.",
             "  $bREFRESHS$b     Refresh the Shuns.",
             "  $bSETTIME$b      Synchronize time across the network.",
         "$uSee Also:$u commands, modcmd"
         );
 
-"ADDALERT" ("/msg $O ADDALERT <name> <reaction> <criteria>",
+"ADDALERT" ("/msg $O ADDALERT <name> <reaction> [expire <duration>] <criteria>",
         "Adds the specified alert to the $b$O$b alert list.",
         "Alerts watch for users matching a givin criteria and perform an action on them.",
         "   <name> - An alphanumeric word to identify this alert in the list",
         "   <reaction> - What to do if a user matches the criteria. See $bALERT REACTION$b.",
+        "   <duration> - Duration after which the alert should be deleted. See $bdurations$b.",
         "   <criteria> - What to look for. See $bTRACE CRITERIA$b.",
         "Access level: $b${level/addalert}$b",
         "$uSee Also:$u delalert, alert reaction, trace criteria"
         "<duration> uses $btime  notation$b",
         "You may use 0 as the duration if you do not wish the trust to ever expire, and 0 as the count for unlimited connections.",
         "Access level: $b${level/addtrust}$b",
-        "$uSee Also:$u deltrust, stats trusted, time notation"
+        "$uSee Also:$u deltrust, edittust, stats trusted, time notation"
         );
 
 "ALERT REACTION" ("$bALERT REACTION$b",
         "$bGLINE$b:        Gline the user that tripped the alert",
         "$bTRACK$b:        Send a notice to the $b$O$b alert channel and track the user (if the tracking module is loaded)",
         "$bSHUN$b :        Shun the user that tripped the alert",
+        "$bTEMPSHUN$b :    Temporarily shun the user that tripped the alert",
+        "$bVERSION$b :     Check the version on the user that tripped the alert",
+        "$bSVSJOIN$b :     Force the user that tripped the alert to join the target channel",
+        "$bSVSPART$b :     Force the user that tripped the alert to part the target channel",
+        "$bMARK$b :        Mark the user that tripped the alert (must be used in combination with the mark trace criteria)",
         "$uSee Also:$u addalert, delalert"
         );
 
 "DELTRUST" ("/msg $O DELTRUST <ip>",
         "Deletes a trusted IP from $b$O's$b trusted hosts list. A trusted IP address is exempted from normal client limits. A list of currently trusted IPs is displayed by $bstats trusted$b.",
         "Access level: $b${level/deltrust}$b",
-        "$uSee Also:$u addtrust, stats"
+        "$uSee Also:$u addtrust, edittrust, stats"
         );
-
+"EDITTRUST" ("/msg $O EDITTRUST <ip> <count> <duration> <reason>",
+        "Edits the 'trust' for the specified IP, changing the count, duration and/or reason.",
+        "You may use 0 as the duration if you do not wish the trust to ever expire, and 0 as the count for unlimited connections.",
+        "$uSee Also:$u addtrust, deltrust, stats trusted");
+"INVITE" ("/msg $O INVITE #channel",
+        "Invites you to the specified channel.");
 "INVITEME" ("/msg $O INVITEME [nick]",
         "Invites the specified user (if omitted, you) to $O's debug channel.",
         "This is currently pointless, since no output is sent to the debug channel.",
         
 "TRACE" ("/msg $O TRACE <action> <criteria> <value> [<criteria> <value>]...",
         "Searches through the current users for those matching the specified criteria, and applies the specified action to them. A detailed list of actions can be found in $bhelp trace action$b and a list of criteria in $bhelp trace criteria$b.",
-        "Quick Ref ACTIONS: PRINT, COUNT, KILL, GLINE, SHUN, GAG, DOMAINS",
-        "Quick Ref CRITERIA: MASK, NICK, IDENT, HOST, INFO, SERVER, IP, ACCOUNT, AUTHED, CHANNEL, NUMCHANNELS, LIMIT, NICKAGE, ACCESS, REASON, DEPTH, DURATION, CLONES, INFO_SPACE, ABUSE OPERS, LOG, REGEX",
+        "Quick Ref ACTIONS: PRINT, COUNT, PRIVMSG, NOTICE, KILL, GLINE, SHUN, TEMPSHUN, GAG, DOMAINS, SVSJOIN, SVSPART, VERSION",
+        "Quick Ref CRITERIA: MASK, NICK, IDENT, HOST, INFO, SERVER, IP, ACCOUNT, AUTHED, CHANNEL, NUMCHANNELS, LIMIT, NICKAGE, ACCESS, REASON, DEPTH, DURATION, CLONES, INFO_SPACE, CHECKRESTRICTIONS ABUSE OPERS, LOG, REGEX, CHANTARGET, SILENT, VERSION, MARKED",
         "Access level: $b${level/trace}$b",
         "$uSee Also:$u trace action, trace criteria"
         );
 
 "TRACE ACTION" ("$bTRACE ACTION$b",
         "Options for action in $btrace$b are:",
-        "$bPRINT$b:   Display the hostmask to you.",
-        "$bCOUNT$b:   Count all matching users.",
-        "$bKILL$b:    Kill matching clients.",
-        "$bGLINE$b:   Issue a gline for the client's host (by default, 1 hour long).",
-        "$bSHUN$b:    Issue a shun for the client's host (by default, 1 hour long).",
-        "$bGAG$b:     Gag all matching users (by default, does not expire).",
-        "$bDOMAINS$b: Display counts of users in each domain (length specified by DEPTH criteria.", 
+        "$bPRINT$b:    Display the hostmask to you.",
+        "$bCOUNT$b:    Count all matching users.",
+        "$bPRIVMSG$b:  Send a PRIVMSG to all matching users containing REASON.",
+        "$bNOTICE$b:   Send a NOTICE to all matching users containing REASON.",
+        "$bKILL$b:     Kill matching clients.",
+        "$bGLINE$b:    Issue a gline for the client's host (by default, 1 hour long).",
+        "$bSHUN$b:     Issue a shun for the client's host (by default, 1 hour long).",
+        "$bTEMPSHUN$b: Issue a temporary shun that affects only the targeted users.",
+        "$bGAG$b:      Gag all matching users (by default, does not expire).",
+        "$bDOMAINS$b:  Display counts of users in each domain (length specified by DEPTH criteria.", 
+        "$bSVSJOIN$b:  Force users to join channel givin in chantarget criteria.",
+        "$bSVSPART$b:  Force part the matching clients out of the specified target channel.",
+        "$bVERSION$b:  Query for the users CTCP VERSION reply.",
+        "$bMARK$b:     Set a nefarius 'mark' named via the mark criteria as if the user were in that dnsbl.",
         "Note: By default, IRC operators are not affected by the KILL, GLINE, SHUN or GAG actions.  You can override this by specifying the $bABUSE OPERS$b criteria for a trace.  Even if you do specify $bABUSE OPERS$b, it will not affect opers at your access level or above.",
         "$uSee Also:$u trace criteria, trace"
         );
 
 "TRACE CRITERIA" ("$bTRACE CRITERIA$b",
         "Criteria and values for $btrace$b (a search with $btrace$b must match all specified items):",
-        "$bMASK$b nick!user@host    Specifies a full hostmask to search for.",
-        "$bNICK$b nick              Specifies a nick to search for.",
-        "$bIDENT$b ident            Specifies an ident to search for.",
-        "$bHOST$b host              Specifies a hostname to search for.",
-        "$bINFO$b infoline          Specifies a user's info to search for.",
-        "$bSERVER$b server          Specifies a server to search for.",
-        "$bIP$b 127.0.0.1           Specifies an IP to search for (independent of hostname).",
-        "$bACCOUNT$b account        Specifies an account to search for.",
-        "$bAUTHED$b yes/no          Specifies if matching users must be authenticated with $N or not",
-        "$bCHANNEL$b #target        Specifies a channel the client must be in.",
-        "$bNUMCHANNELS$b 5          Specifies a number of channels the client must be in.",
-        "$bLIMIT$b 50               Limits the number of responses to a certain number.",
-        "$bNICKAGE$b cmp            Client has had nick this long (<Nu, <=Nu, =Nu, >=Nu or >Nu)",
-        "$bLINKED$b cmp             Connected to the network this long (<Nu, <=Nu, =Nu, >=Nu or >Nu)",
-        "$bACCESS$b cmp             Access constraints (<nnn, <=nnn, =nnn, >=nnn or >nnn)",
-        "$bREASON$b reason          Reason for kill, gline or shun (must be listed last).",
-        "$bDEPTH$b depth            How many domain-name parts to use for $bDOMAINS$b action.",
-        "$bDURATION$b duration      How long to apply a G-line or gag (see $C help topic $bdurations$b).",
-        "$bCLONES$b min             Ignore clients from hosts with fewer than this many connections.",
-        "$bINFO_SPACE$b yes/no      Clients match only if their info starts with a space (' ') character.",
-        "$bABUSE OPERS$b            Force adverse actions to affect opers as well.",
-        "$bLOG$b                    Record matching users in $O's log file (in addition to acting).",
-        "$bREGEX$b yes/no           Specifies if NICK/IDENT/HOST/INFO should be treated as a regular expression.",
-        "$bSILENT$b yes/no          If yes, AUTO is prepended to the gline message, making the gline silent in nefarious ircd.",
+        "$bMASK$b nick!user@host      Specifies a full hostmask to search for.",
+        "$bNICK$b nick                Specifies a nick to search for.",
+        "$bIDENT$b ident              Specifies an ident to search for.",
+        "$bHOST$b host                Specifies a hostname to search for.",
+        "$bINFO$b infoline            Specifies a user's info to search for.",
+        "$bMODES$b +modes-modes       Specifies modes they have and don't have.",
+        "$bSERVER$b server            Specifies a server to search for.",
+        "$bIP$b 127.0.0.1             Specifies an IP to search for (independent of hostname).",
+        "$bACCOUNT$b account          Specifies an account to search for.",
+        "$bAUTHED$b yes/no            Specifies if matching users must be authenticated with $N or not",
+        "$bCHANNEL$b #target          Specifies a channel the client must be in.",
+        "$bNUMCHANNELS$b 5            Specifies a number of channels the client must be in.",
+        "$bLIMIT$b 50                 Limits the number of responses to a certain number.",
+        "$bNICKAGE$b cmp              Client has had nick this long (<Nu, <=Nu, =Nu, >=Nu or >Nu)",
+        "$bLINKED$b cmp               Connected to the network this long (<Nu, <=Nu, =Nu, >=Nu or >Nu)",
+        "$bACCESS$b cmp               Access constraints (<nnn, <=nnn, =nnn, >=nnn or >nnn)",
+        "$bREASON$b reason            Reason for kill, gline or shun (must be listed last).",
+        "$bDEPTH$b depth              How many domain-name parts to use for $bDOMAINS$b action.",
+        "$bDURATION$b duration        How long to apply a G-line or gag (see $C help topic $bdurations$b).",
+        "$bCLONES$b min               Ignore clients from hosts with fewer than this many connections.",
+        "$bINFO_SPACE$b yes/no        Clients match only if their info starts with a space (' ') character.",
+        "$bABUSE OPERS$b              Force adverse actions to affect opers as well.",
+        "$bABUSE TRUSTED$b            Force adverse actions to affect users on trusted hosts as well.",
+        "$bTARGET$b                   Send alert notice to this channel.",
+        "$bLOG$b                      Record matching users in $O's log file (in addition to acting).",
+        "$bREGEX$b yes/no             Specifies if NICK/IDENT/HOST/INFO should be treated as a regular expression.",
+        "$bSILENT$b yes/no            If yes, AUTO is prepended to the gline message, making the gline silent in nefarious ircd.",
+        "$bVERSION$b version          If they have been queried using the VERSION action and responded, they are matched if the reply they give matches.",
+        "$bMARKED$b mark              If they have a dnsbl mark matching mark. (e.g. from an X line or alert)",
+        "$bCHANTARGET$b #channel      For use with SVSJOIN action, this specifies the channel they are svsjoined to.",
+        "$bCHECKRESTRICTIONS$b yes/no For use with SVSJOIN action, this specifies to check channel modes like bans, invite, limits, and key before the SVSJOIN is issued.",
+        "$bMARK$b mark                For use with the MARK action, this is what they are marked with.",
         "Additionally, the $bCHANNEL$b target may be prefixed with @ to select channel operators, + to select voiced users (will not select chanops unless @ is also used), or - to select non-voiced non-chanop users.  For example, CHANNEL #foo will select all users in #foo; CHANNEL +#foo will select only users voiced in #foo; CHANNEL @+#foo will select ops and voiced users in #foo; etc.",
         "When searching on the criteria of nick, ident, or info, the search string can be another of the three, prefixed with a & character, to indicate that the match should compare each user's individual data.  For example, $binfo &nick$b would search for all users whose info matches their nick.  To search for that phrase explicitly, prefix the & with a backslash; e.g.: $binfo \&ident$b.",
         "$uSee Also:$u trace action, trace"
         "Criteria and values for $bcsearch$b (a search with $bcsearch$b must match all specified items):",
         "$bNAME$b name              Specifies a name to search for.",
         "$bTOPIC$b topic            Specifies a topic to search for.",
-       "$bUSERS$b cmp              User count constraint (<Nu, <=Nu, =Nu, >=Nu or >Nu)",
+        "$bUSERS$b cmp              User count constraint (<Nu, <=Nu, =Nu, >=Nu or >Nu)",
         "$bTIMESTAMP$b cmp          Timestamp constraint (<Nu, <=Nu, =Nu, >=Nu or >Nu; supports interval notation)",
         "$bLIMIT$b 50               Limits the number of responses to a certain number."
         );
         );
 
 "UNBAN" ("/msg $O UNBAN <#channel> <hostmask>",
-       "Unbans the specified hostmask from the specified channel.",
-       "If the channel is omitted, the $bunban$b will be done in the channel where the command was given.",
+        "Unbans the specified hostmask from the specified channel.",
+        "If the channel is omitted, the $bunban$b will be done in the channel where the command was given.",
         "Access level: $b${level/unban}$b",
-       "$uSee Also:$u kickban, kickbanall, ban"
+        "$uSee Also:$u kickban, kickbanall, ban"
         );
 
 "CLEARBANS" ("/msg $O CLEARBANS <#channel> ",
         "Access level: $b${level/kick}$b",
         "$uSee Also:$u ban, kickall, kickban, kickbanall"
         );
-
+"FORCEKICK" ("/msg $O FORCEKICK <#channel> <nick> [reason]",
+        "Kicks the specified user from the specified channel even if he is a channel service (+k).",
+        "If the channel is omitted, then $bforcekick$b will be done in the channel where the command was given.",
+        "$uSee Also:$u ban, kick, kickall, kickban, kickbanall"
+        );
 "KICKALL" ("/msg $O KICKALL <#channel> [reason]",
         "Kicks all users in the specified channel except for the user issuing the command.",
         "If the channel is omitted, then $bkickall$b will be done in the channel where the command was given.",
         "$uSee Also:$u ban, kick, kickban"
         );
 
+"MARK" ("/msg $O MARK <mark>",
+        "Sets a nefarious 'mark' on the user as if they are in <mark> dnsbl. ",
+        "(shows in /whois and prefixes their host, for easy banning)",
+        "Mark must be a-z0-9 or dash (-) 20 chars or less.",
+        "$uSee Also:$u trace action"
+        );
+
+"SVSJOIN" ("/msg $O SVSJOIN <nick> <#channel>",
+        "Forces nick to join #channel",
+        "$uSee Also:$u svspart, join, trace action"
+        );
+
+"SVSPART" ("/msg $O SVSPART <nick> <#channel>",
+        "Forces nick to part #channel",
+        "$uSee Also:$u svsjoin, part, trace action"
+        );
+
+"SVSNICK" ("/msg $O SVSNICK <nick> <newnick>",
+        "Forces nick to change nick to newnick",
+        "$uSee Also:$u svspart, svsjoin"
+        );
+
 "MODE" ("/msg $O MODE <#channel> <+/- mode>",
         "Sets the specified modes (but cannot include voice, ban or op changes) on a channel.",
         "If the channel is omitted, then $bmode$b will be done in the channel where the command was given.",
         "  UNGLINE  [${level/ungline}]"
         );
 
-"BLOCK" ("/msg $O BLOCK <nick> [reason]",
-        "GLINES the host of the specified nick for one hour  If no reason is given, use a default reason.",
+"BLOCK" ("/msg $O BLOCK <nick> [duration] [reason]",
+        "GLINES the host of the specified nick for one hour if no duration is given.  If no reason is given, use a default reason.",
         "Access level: $b${level/block}$b",
         "$uSee Also:$u gline, ungline"
         );
         "Options for the action in $bgtrace$b are:",
         "$bPRINT$b: Display the glines (mask, issuer, expiration time, reason)",
         "$bCOUNT$b: Count the number of matching glines",
-       "$bUNGLINE$b: Remove matching glines",
+        "$bUNGLINE$b: Remove matching glines",
         "$uSee Also:$u gtrace criteria, gtrace"
         );
 
         "$bLIMIT$b count            Limits the number of matching glines.",
         "$bREASON$b reason          Looks for glines with the given reason.",
         "$bISSUER$b account         Looks for glines issued by the given account.",
+        "$bLASTMOD$b interval       Looks for glines last modified in the specified time.",
         "$bAFTER$b interval         Looks for glines that expire more than $binterval$b in the future.",
         "$uSee Also:$u gtrace action, gtrace"
         );
 
 "GSYNC" ("/msg $O GSYNC [server]",
-       "Requests a list of GLINES from its uplink or the specified server.  This can be used in the event X3 is down for period and becomes desynced.",
+        "Requests a list of GLINES from its uplink or the specified server.  This can be used in the event X3 is down for period and becomes desynced.",
         "Access level: $b${level/gsync}$b",
-       "$uSee Also:$u refreshg, gline, ungline"
+        "$uSee Also:$u refreshg, gline, ungline"
+        );
+
+"DEFCON" ("/msg $O DEFCON [1|2|3|4|5]",
+        "The defcon system can be used to implement a pre-defined set of restrictions to services useful during an attempted attack on the network. Not specifying a level will cause $O to display the currently set defcon level and options if the level is below 5",
+        "Access level: $b${level/defcon}$b",
         );
 
 "REFRESHG" ("/msg $O REFRESHG [server]",
         "  UNSHUN   [${level/unshun}]"
         );
 
-"SBLOCK" ("/msg $O SBLOCK <nick> [reason]",
-        "SHUNS the host of the specified nick for one hour  If no reason is given, use a default reason.",
+"SBLOCK" ("/msg $O SBLOCK <nick> [duration] [reason]",
+        "SHUNS the host of the specified nick for one hour if no duration is given.  If no reason is given, use a default reason.",
         "Access level: $b${level/sblock}$b",
         "$uSee Also:$u shun, unshun"
         );
         "Options for the action in $bstrace$b are:",
         "$bPRINT$b: Display the shuns (mask, issuer, expiration time, reason)",
         "$bCOUNT$b: Count the number of matching shuns",
-       "$bUNSHUN$b: Remove matching shuns",
+        "$bUNSHUN$b: Remove matching shuns",
         "$uSee Also:$u strace criteria, strace"
         );
 
         "$bLIMIT$b count            Limits the number of matching shuns.",
         "$bREASON$b reason          Looks for shuns with the given reason.",
         "$bISSUER$b account         Looks for shuns issued by the given account.",
+        "$BLASTMOD$b interval       Looks for shuns last modified in the specified time.",
         "$bAFTER$b interval         Looks for shuns that expire more than $binterval$b in the future.",
         "$uSee Also:$u strace action, strace"
         );
 
 "SSYNC" ("/msg $O SSYNC [server]",
-       "Requests a list of SHUNS from its uplink or the specified server.  This can be used in the event X3 is down for period and becomes desynced.",
+        "Requests a list of SHUNS from its uplink or the specified server.  This can be used in the event X3 is down for period and becomes desynced.",
         "Access level: $b${level/ssync}$b",
-       "$uSee Also:$u refreshs, shun, unshun"
+        "$uSee Also:$u refreshs, shun, unshun"
         );
 
 "REFRESHS" ("/msg $O REFRESHS [server]",
         );
 
 "JUPE" ("/msg $O JUPE <srvname> <srvnum> <description>",
-       "Causes X3 to create a \"juped\" (dummy) server.  This can be used to prevent a poorly connected server from connecting.",
+        "Causes X3 to create a \"juped\" (dummy) server.  This can be used to prevent a poorly connected server from connecting.",
         "Access level: $b${level/jupe}$b",
-       "$uSee Also:$u unjupe, clone, reserve"
+        "$uSee Also:$u unjupe, clone, reserve"
         );
 
 "RESERVE" ("/msg $O RESERVE <nickname> <user> <host> <comment>",
         );
 
 "UNJUPE" ("/msg $O UNJUPE <srvname>",
-       "Causes X3 to unjupe a jupe server.",
+        "Causes X3 to unjupe a jupe server.",
         "Access level: $b${level/unjupe}$b",
-       "$uSee Also:$u jupe, unreserve, clone"
+        "$uSee Also:$u jupe, unreserve, clone"
         );
 
 "ROUTING ADDPLAN" ("/msg $O ROUTING ADDPLAN <name>",
         "Creates a new blank routing plan named name.",
         "You can then use $bROUTING ADDSERVER$b to build it.",
-        "Use $bSTATS ROUTING$b to view it, and $bROUTING SET ACTIVE$b to activate it.",
+        "Use $bSTATS ROUTING [name]$b to view it, and $bROUTING SET ACTIVE$b to activate it.",
         "$uSee Also:$u routing, stats routing, routing delplan, routing set, routing addserver"
         );
 "ROUTING DELPLAN" ("/msg $O ROUTING DELPLAN <name>",
         "      `-test3.net.org    - test3's uplink is test2",
         " $b$b ",
         " Its important that every entry in your routing plan be specified relitive to the same location. Usually this is the location of X3 itself, but doesn't have to be. In the above example you could do:",
+        "  ROUTING ADDPLAN myplan ",
         "  ROUTING ADDSERVER myplan test.net.org:4400 x3.net.services ",
         "  ROUTING ADDSERVER myplan test2.net.org:4400 test.net.org ",
         "  ROUTING ADDSERVER myplan test3.net.org:4400 test2.net.org ",
         "  ROUTING ADDSERVER myplan laptop.net.org:4400 test.net.org ",
         "  ROUTING ADDSERVER myplan foobar.net.org:4400 laptop.net.org ",
+        "  ROUTING SET ACTIVE myplan ",
         " $b$b ",
         " If there are loops, or two servers who point to eachother, $O will not be able to use the plan. If there are sections which do not link back to the rest, they will be lost and the plan will not work properly.",
         );
         "$uSee also:$u routing, routing map, stats routing",
         );
 
-"STATS ROUTING" ("/msg $O STATS ROUTING",
+"STATS ROUTING" ("/msg $O STATS ROUTING [planmask]",
         "Provides information about The Auto Routing System's configuration. You can see the routing plans, and the current routing options.",
+        " If planmask is provided, you will see the full details for any plans matching the mask (* and ? wildcards)",
         "$uSee also:$u routing, routing set",
         );
 
+"PRIVSET" ("/msg $O PRIVSET <nick> <+/-flag>",
+           "Allows $O to set flags on users.",
+           "Access level: $b${level/privset}$b",
+           "$uSee also: privflags"
+          );
+
 "UNRESERVE" ("/msg $O UNRESERVE <nick>",
         "Removes a nick from $b$O's$b reserve list.",
         "Access level: $b${level/unreserve}$b",
         "$bMODULES$b:    Shows loaded modules that implement commands.",
         "$bSERVICES$b:   Shows active service bots.",
         "Access level: $b${level/stats}$b",
+        "$b$b",
+        "$uSee Also:$u stats alerts"
+        );
+
+"STATS ALERTS" ("/msg $O STATS ALERTS [Owner|Filter]",
+        "Show alerts. If a parameter is given, only alerts who match it are shown.",
+        "$b$b",
+        " Owner  - the account name of whoever created the alert",
+        " Filter - A wildcard (* and ?) match string compared against the criteria string",
+        "$b$b",
+        "Example: STATS ALERTS *nick phil*",
+        "$uSee Also:$u addalert, delalert, stats"
         );
 
 "TRACK" ("/msg $O TRACK <+/-type|all|none>",