inspircd

A modular C++ IRC daemon (ircd). https://www.inspircd.org/
Log | Files | Refs | README

commit 21e7efdadfa685ac1ddcb0a0a515502bc873302b
parent 35bbf9bb0100800111f5123e378d807bf87ad846
Author: Robby <robby@chatbelgie.be>
Date:   Sun, 17 Feb 2019 15:58:31 +0100

Various text improvements: consistency, syntax, help and doc updates/fixes.

Diffstat:
Mdocs/conf/filter.conf.example | 14+++++++-------
Mdocs/conf/helpop.conf.example | 402+++++++++++++++++++++++++++++++++++++++++++++----------------------------------
Mdocs/conf/inspircd.conf.example | 36++++++++++++++++++------------------
Mdocs/conf/links.conf.example | 26+++++++++++++-------------
Mdocs/conf/modules.conf.example | 77++++++++++++++++++++++++++++++++++++++++++++---------------------------------
Mdocs/conf/opers.conf.example | 46+++++++++++++++++++++++++---------------------
Minclude/iohook.h | 2+-
Msrc/coremods/core_channel/cmd_invite.cpp | 2+-
Msrc/coremods/core_channel/cmd_join.cpp | 2+-
Msrc/coremods/core_channel/cmd_kick.cpp | 4++--
Msrc/coremods/core_channel/cmd_names.cpp | 2+-
Msrc/coremods/core_channel/cmd_topic.cpp | 2+-
Msrc/coremods/core_ison.cpp | 2+-
Msrc/coremods/core_message.cpp | 6+++---
Msrc/coremods/core_oper/cmd_die.cpp | 2+-
Msrc/coremods/core_oper/cmd_kill.cpp | 2+-
Msrc/coremods/core_oper/cmd_restart.cpp | 2+-
Msrc/coremods/core_stats.cpp | 2+-
Msrc/coremods/core_stub.cpp | 4++--
Msrc/coremods/core_user/cmd_away.cpp | 2+-
Msrc/coremods/core_user/cmd_mode.cpp | 2+-
Msrc/coremods/core_user/cmd_part.cpp | 2+-
Msrc/coremods/core_user/cmd_quit.cpp | 2+-
Msrc/coremods/core_user/cmd_user.cpp | 2+-
Msrc/coremods/core_userhost.cpp | 2+-
Msrc/coremods/core_wallops.cpp | 2+-
Msrc/coremods/core_who.cpp | 2+-
Msrc/coremods/core_whois.cpp | 2+-
Msrc/coremods/core_whowas.cpp | 2+-
Msrc/coremods/core_xline/cmd_eline.cpp | 2+-
Msrc/coremods/core_xline/cmd_gline.cpp | 2+-
Msrc/coremods/core_xline/cmd_kline.cpp | 2+-
Msrc/coremods/core_xline/cmd_qline.cpp | 2+-
Msrc/mode.cpp | 4++--
Msrc/modules/m_callerid.cpp | 4++--
Msrc/modules/m_cban.cpp | 2+-
Msrc/modules/m_cgiirc.cpp | 2+-
Msrc/modules/m_check.cpp | 2+-
Msrc/modules/m_chghost.cpp | 2+-
Msrc/modules/m_chgident.cpp | 2+-
Msrc/modules/m_chgname.cpp | 2+-
Msrc/modules/m_clearchan.cpp | 2+-
Msrc/modules/m_customtitle.cpp | 2+-
Msrc/modules/m_cycle.cpp | 2+-
Msrc/modules/m_dccallow.cpp | 6+++---
Msrc/modules/m_globalload.cpp | 6+++---
Msrc/modules/m_globops.cpp | 2+-
Msrc/modules/m_knock.cpp | 2+-
Msrc/modules/m_modenotice.cpp | 2+-
Msrc/modules/m_monitor.cpp | 2+-
Msrc/modules/m_namedmodes.cpp | 2+-
Msrc/modules/m_nicklock.cpp | 4++--
Msrc/modules/m_password_hash.cpp | 2+-
Msrc/modules/m_remove.cpp | 4++--
Msrc/modules/m_repeat.cpp | 6+++---
Msrc/modules/m_rline.cpp | 2+-
Msrc/modules/m_rmode.cpp | 2+-
Msrc/modules/m_sajoin.cpp | 4++--
Msrc/modules/m_sakick.cpp | 4++--
Msrc/modules/m_samode.cpp | 2+-
Msrc/modules/m_sanick.cpp | 4++--
Msrc/modules/m_sapart.cpp | 4++--
Msrc/modules/m_saquit.cpp | 4++--
Msrc/modules/m_satopic.cpp | 2+-
Msrc/modules/m_sethost.cpp | 2+-
Msrc/modules/m_setident.cpp | 2+-
Msrc/modules/m_setname.cpp | 2+-
Msrc/modules/m_shun.cpp | 2+-
Msrc/modules/m_silence.cpp | 6+++---
Msrc/modules/m_spanningtree/rsquit.cpp | 2+-
Msrc/modules/m_svshold.cpp | 2+-
Msrc/modules/m_userip.cpp | 2+-
Msrc/modules/m_watch.cpp | 2+-
73 files changed, 422 insertions(+), 355 deletions(-)

diff --git a/docs/conf/filter.conf.example b/docs/conf/filter.conf.example @@ -16,8 +16,8 @@ # block This blocks the line, sends out a notice to all opers with # +s and informs the user that their message was blocked. # -# silent This blocks the line only, and informs the user their message -# was blocked, but does not notify opers. +# silent This blocks the line only, and informs the user that their +# message was blocked, but does not notify opers. # # none This action causes nothing to be done except logging. This # is the default action if none is specified. @@ -26,17 +26,17 @@ # the kill reason. # # gline G-line the user for 'duration' length of time. Durations may -# be specified using the notation 1y2d3h4m6s in a similar way to +# be specified using the notation 1y2w3d4h5m6s in a similar way to # other G-lines, omitting the duration or setting it to 0 makes # any G-lines set by this filter be permanent. # # zline Z-line the user for 'duration' length of time. Durations may -# be specified using the notation 1y2d3h4m6s in a similar way to +# be specified using the notation 1y2w3d4h5m6s in a similar way to # other Z-lines, omitting the duration or setting it to 0 makes # any Z-lines set by this filter be permanent. # # shun Shun the user for 'duration' length of time. Durations may -# be specified using the notation 1y2d3h4m6s in a similar way to +# be specified using the notation 1y2w3d4h5m6s in a similar way to # other X-lines, omitting the duration or setting it to 0 makes # any shuns set by this filter be permanent. # Requires the shun module to be loaded. @@ -59,11 +59,11 @@ # # <keyword pattern="*qwerty*" reason="You qwertied!" action="block" flags="pn"> # <keyword pattern="*killmenow*" reason="As you request." action="kill" flags="*"> -# <keyword pattern="*blah*" reason="Dont blah!" action="gline" duration="1d6h" flags="-"> +# <keyword pattern="*blah*" reason="Don't blah!" action="gline" duration="1d6h" flags="-"> # An example regexp filter: # -# <keyword pattern="^blah.*?$" reason="Dont blah!" action="gline" duration="1d6h" flags="pnPq"> +# <keyword pattern="^blah.*?$" reason="Don't blah!" action="gline" duration="1d6h" flags="pnPq"> # You may specify specific channels that are exempt from being filtered: #<exemptfromfilter target="#opers"> diff --git a/docs/conf/helpop.conf.example b/docs/conf/helpop.conf.example @@ -3,7 +3,7 @@ # or you can customize the responses for your network and/or add more. # # The way the new helpop system works is simple. You use one or more helpop tags. -# <helpop key="moo" value="something here">. +# <helpop key="moo" value="something here"> # key is what the user is looking for (i.e. /helpop moo), and value is what they get back # (note that it can span multiple lines!). # -- w00t 16/dec/2006 @@ -34,14 +34,14 @@ parameter for this command. ACCEPT ADMIN AWAY COMMANDS CYCLE DCCALLOW FPART INFO INVITE ISON JOIN KICK KNOCK LINKS LIST LUSERS MAP MKPASSWD -MODE MODULES MOTD NAMES NICK NOTICE -OPER PART PASS PING PONG PRIVMSG -QUIT REMOVE SETNAME SILENCE SQUERY SSLINFO -STATS TBAN TIME TITLE TOPIC UNINVITE -USER USERHOST VERSION VHOST WATCH WHO -WHOIS WHOWAS"> +MODE MODULES MONITOR MOTD NAMES NICK +NOTICE OPER PART PASS PING PONG +PRIVMSG QUIT REMOVE SETNAME SILENCE SQUERY +SSLINFO STATS TBAN TIME TITLE TOPIC +UNINVITE USER USERHOST VERSION VHOST WATCH +WHO WHOIS WHOWAS"> -<helpop key="squery" value="/SQUERY <target> <text> +<helpop key="squery" value="/SQUERY <target> :<message> Sends a message to the network service specified in <target>."> @@ -57,76 +57,103 @@ Uninvite a user from a channel, same syntax as INVITE."> <helpop key="tban" value="/TBAN <channel> <duration> <banmask> Sets a timed ban. The duration of the ban can be specified in the -following format: 1w2d3h4m6s which indicates a ban of one week, two -days, three hours, four minutes and six seconds. Alternatively the -ban may just be specified as a number of seconds. All timed bans -appear in the banlist as normal bans and may be safely removed -before their time is up."> +form of 1y2w3d4h5m6s - meaning one year, two weeks, three days, +four hours, five minutes and six seconds. All fields in this +format are optional. Alternatively, the ban may just be specified +as a number of seconds. All timed bans appear in the banlist as +normal bans and may be safely removed before their time is up."> -<helpop key="dccallow" value="/DCCALLOW - List allowed nicks +<helpop key="dccallow" value="/DCCALLOW [(+|-)<nick> [<time>]]|[LIST|HELP] + +/DCCALLOW - List allowed nicks /DCCALLOW LIST - This also lists allowed nicks /DCCALLOW +<nick> [<duration>] - Add a nick /DCCALLOW -<nick> - Remove a nick /DCCALLOW HELP - Display help Duration is optional, and may be specified in seconds or in the -form of 1m2h3d4w5y."> +form of 1y2w3d4h5m6s - meaning one year, two weeks, three days, +four hours, five minutes and six seconds. All fields in this +format are optional."> + +<helpop key="accept" value="/ACCEPT *|(+|-)<nick>[,(+|-)<nick>]+ + +Manages your accept list. This list is used to determine who can +private message you when you have usermode +g set. -<helpop key="accept" value="/ACCEPT * - List accepted nicks +/ACCEPT * - List accepted nicks /ACCEPT +<nick> - Add a nick /ACCEPT -<nick> - Remove a nick -This command accepts multiple nicks like so: -/ACCEPT +<nick1>,+<nick2>,-<nick3> -Manages your accept list. This list is used to determine who can -private message you when you have usermode +g set."> +This command accepts multiple nicks like so: +/ACCEPT +<nick>,-<nick>,+<nick>"> -<helpop key="cycle" value="/CYCLE <channel> :[<reason>] +<helpop key="cycle" value="/CYCLE <channel> [:<reason>] Cycles a channel (leaving and rejoining), overrides restrictions that would stop a new user joining, such as user limits and channel keys."> -<helpop key="title" value="/TITLE <name> <password> +<helpop key="title" value="/TITLE <username> <password> Authenticate for a WHOIS title line and optionally a vhost using the specified username and password."> -<helpop key="watch" value="/WATCH - List watched nicks that are online -/WATCH L - List watched nicks, online and offline -/WATCH C - Clear all watched nicks -/WATCH S - Show statistics +<helpop key="watch" value="/WATCH C|L|l|S|(+|-)<nick> [(+|-)<nick>]+ + +/WATCH - List watched nicks that are online +/WATCH l - List watched nicks that are online +/WATCH L - List watched nicks, online and offline +/WATCH C - Clear all watched nicks +/WATCH S - Show statistics /WATCH +<nick> - Add a nick /WATCH -<nick> - Remove a nick + This command accepts multiple nicks like so: -/WATCH +<nick1> +<nick2> -<nick3>"> +/WATCH +<nick> -<nick> +<nick>"> + +<helpop key="monitor" value="/MONITOR C|L|S|(+|-) <nick>[,<nick>]+ + +/MONITOR L - List all monitored nicks, not differentiating between + online and offline nicks +/MONITOR C - Clear all monitored nicks +/MONITOR S - List all monitored nicks, indicating which are online + and which are offline +/MONITOR + <nick> - Add a nick +/MONITOR - <nick> - Remove a nick + +This command accepts multiple nicks like so: +/MONITOR + <nick>,<nick>,<nick> +/MONITOR - <nick>,<nick>,<nick>"> <helpop key="vhost" value="/VHOST <username> <password> Authenticate for a vhost using the specified username and password."> -<helpop key="remove" value="/REMOVE <channel> <nick> [<reason>] +<helpop key="remove" value="/REMOVE <channel> <nick> [:<reason>] Removes a user from a channel you specify. You must be at least a channel halfoperator to remove a user. A removed user will part with a message stating they were removed from the channel and by whom."> -<helpop key="rmode" value="/RMODE [channel] [modeletter] {[pattern]} +<helpop key="rmode" value="/RMODE <channel> <mode> [<pattern>] -Removes listmodes from a channel. -E.g. /RMODE #Chan b m:* will remove all mute extbans."> +Removes listmodes from a channel, optionally matching a glob-based pattern. +E.g. '/RMODE #channel b m:*' will remove all mute extbans on the channel."> -<helpop key="fpart" value="/FPART <channel> <nick> [<reason>] +<helpop key="fpart" value="/FPART <channel> <nick> [:<reason>] This behaves identically to /REMOVE. /REMOVE is a built-in mIRC command which caused trouble for some users."> -<helpop key="silence" value="/SILENCE - Shows a list of silenced masks +<helpop key="silence" value="/SILENCE [(+|-)<mask> [p|c|i|n|t|a|x]] + +A server-side ignore of the given n!u@h mask. The flags at the end +are optional, and specify what is to be ignored from this mask. + +/SILENCE - Shows a list of silenced masks /SILENCE +<mask> [<flags>] - Add a mask /SILENCE -<mask> - Remove a mask -A serverside ignore of the given n!u@h mask. The letter(s) at the end -specify what is to be ignored from this hostmask. - Valid SILENCE Flags ------------------- @@ -138,18 +165,21 @@ Valid SILENCE Flags a Block all of the above x Exception -Multiple letters may be specified. For an exception, you must pair x +Multiple flags may be specified. For an exception, you must pair x with what you want excepted. For example, if you wanted to except everything from people with a host matching *.foo.net, you would do /SILENCE +*!*@*.foo.net xa +If no flags are specified, it will default to blocking private messages +and private notices (pn). + /SILENCE without a parameter will list the masks that you have silenced."> -<helpop key="knock" value="/KNOCK <channel> +<helpop key="knock" value="/KNOCK <channel> :<reason> Sends a notice to a channel indicating you wish to join."> -<helpop key="user" value="/USER <ident> <local host> <remote host> :<real name> +<helpop key="user" value="/USER <username> <unused> <unused> :<realname> This command is used by your client to register your IRC session, providing your ident and real name to the @@ -157,57 +187,59 @@ server. You should not use it during an established connection."> -<helpop key="nick" value="/NICK <new nick> +<helpop key="nick" value="/NICK <newnick> -Change your nickname to <new nick>."> +Change your nickname to <newnick>."> -<helpop key="quit" value="/QUIT [<reason>] +<helpop key="quit" value="/QUIT [:<message>] Quit from IRC and end your current session."> -<helpop key="version" value="/VERSION +<helpop key="version" value="/VERSION [<servername>] Returns the server's version information."> -<helpop key="ping" value="/PING <server> +<helpop key="ping" value="/PING <servername> [:<servername>] Ping a server. The server will answer with a PONG."> -<helpop key="pong" value="/PONG <server> +<helpop key="pong" value="/PONG <servername> Your client should send this to answer server PINGs. You should not issue this command manually."> -<helpop key="admin" value="/ADMIN [<server>] +<helpop key="admin" value="/ADMIN [<servername>] Shows the administrative information for the given server."> -<helpop key="privmsg" value="/PRIVMSG <target> <text> +<helpop key="privmsg" value="/PRIVMSG <target>[,<target>]+ :<message> Sends a message to a user or channel specified in <target>."> -<helpop key="notice" value="/NOTICE <target> <text> +<helpop key="notice" value="/NOTICE <target>[,<target>]+ :<message> Sends a notice to a user or channel specified in <target>."> -<helpop key="join" value="/JOIN <channel>[,<channel>] [<key>][,<key>] +<helpop key="join" value="/JOIN <channel>[,<channel>]+ [<key>[,<key>]+] Joins one or more channels you provide the names for."> -<helpop key="names" value="/NAMES <channel>[,<channel>] +<helpop key="names" value="/NAMES <channel>[,<channel>]+ -Return a list of users on the channels you provide."> +Return a list of users on the channel(s) you provide."> -<helpop key="part" value="/PART <channel>[,<channel>] [<reason>] +<helpop key="part" value="/PART <channel>[,<channel>]+ [:<reason>] Leaves one or more channels you specify."> -<helpop key="kick" value="/KICK <channel> <nick>[,<nick>] [<reason>] +<helpop key="kick" value="/KICK <channel> <nick>[,<nick>]+ [:<reason>] Kicks a user from a channel you specify. You must be at least a channel halfoperator to kick a user."> -<helpop key="mode" value="/MODE <target> (+|-)<modes> [<mode parameters>] - Change modes of <target>. +<helpop key="mode" value="/MODE <target> [[(+|-)]<modes> [<mode-parameters>]] + +Change or view modes of <target>. /MODE <target> - Show modes of <target>. @@ -221,7 +253,7 @@ channels where they are at least a halfoperator. For a list of all user and channel modes, enter /HELPOP UMODES or /HELPOP CHMODES."> -<helpop key="topic" value="/TOPIC <channel> [<topic>] +<helpop key="topic" value="/TOPIC <channel> [:<topic>] Sets or retrieves the channel topic. If a channel topic is given in the command and either the channel is not +t, or @@ -307,13 +339,13 @@ Valid WHO Fields "> -<helpop key="motd" value="/MOTD [<server>] +<helpop key="motd" value="/MOTD [<servername>] Show the message of the day for <server>. Messages of the day often contain important server rules and notices and should be read prior to using a server."> -<helpop key="oper" value="/OPER <login> <password> +<helpop key="oper" value="/OPER <username> <password> Attempts to authenticate a user as an IRC operator. @@ -329,22 +361,22 @@ Creates a list of all existing channels matching the glob pattern Shows a count of local and remote users, servers and channels."> -<helpop key="userhost" value="/USERHOST <nick> [<nick>] +<helpop key="userhost" value="/USERHOST <nick> [<nick>]+ Returns the hostname and nickname of a user, and some other miscellaneous information."> -<helpop key="away" value="/AWAY [<message>] +<helpop key="away" value="/AWAY [:<message>] If a message is given, marks you as being away, otherwise removes your away status and previous message."> -<helpop key="ison" value="/ISON <nick> [<nick> ...] +<helpop key="ison" value="/ISON <nick> [<nick>]+ Returns a subset of the nicks you give, showing only those that are currently online."> -<helpop key="invite" value="/INVITE <nick> <channel> [<time>] +<helpop key="invite" value="/INVITE [<nick> <channel> [<time>]] Invites a user to a channel. If the channel is NOT +A, only channel halfoperators or above can invite people. If +A is set, @@ -356,7 +388,14 @@ Invited users may override bans, +k, and similar in addition to +i, depending on configuration. If a time is provided, the invite expires after that time and the user -can no longer use it to enter the channel."> +can no longer use it to enter the channel. The time can be specified +in the form of 1y2w3d4h5m6s - meaning one year, two weeks, three days, +four hours, five minutes and six seconds. All fields in this format +are optional. Alternatively, the time may just be specified as a number +of seconds. + +/INVITE without a parameter will list pending invitations for channels +you have been invited to."> <helpop key="pass" value="/PASS <password> @@ -373,7 +412,7 @@ the time they were last seen and their server."> <helpop key="links" value="/LINKS -Shows all servers linked to this one."> +Shows all linked servers."> <helpop key="map" value="/MAP @@ -381,26 +420,26 @@ Shows a graphical representation of all users and servers on the network, and the links between them, as a tree from the perspective of your server."> -<helpop key="whois" value="/WHOIS <nick> [<server>] +<helpop key="whois" value="/WHOIS [<servername>] <nick>[,<nick>]+ Returns the WHOIS information of a user, their channels, hostname, -etc. If a second nickname or server is provided, then a whois is -performed from the server where the user is actually located rather -than locally, showing idle and signon times."> +etc. If a servername is provided, then a whois is performed from +the server where the user is actually located rather than locally, +showing idle and signon times."> -<helpop key="time" value="/TIME [<server>] +<helpop key="time" value="/TIME [<servername>] Returns the local time of the server, or remote time of another server."> -<helpop key="info" value="/INFO [<server>] +<helpop key="info" value="/INFO [<servername>] Returns information on the developers and supporters who made this IRC server possible."> -<helpop key="setname" value="/SETNAME <name> +<helpop key="setname" value="/SETNAME :<realname> -Sets your name to the specified name."> +Sets your real name to the specified real name."> <helpop key="coper" value="Oper Commands @@ -418,18 +457,18 @@ SATOPIC SETHOST SETIDENT SETIDLE SHUN SQUIT SWHOIS TLINE UNLOADMODULE UNLOCKSERV USERIP WALLOPS ZLINE"> -<helpop key="userip" value="/USERIP <nick> [<nick>] +<helpop key="userip" value="/USERIP <nick> [<nick>]+ -Returns the ip and nickname of the given users."> +Returns the IP address and nickname of the given user(s)."> <helpop key="tline" value="/TLINE <mask> This command returns the number of local and global clients matched, and the percentage of clients matched, plus how they were matched (by IP address or by hostname). Mask should be given as either a -nick!user@host or user@IP (wildcards acceptable)."> +nick!user@host or user@IP (wildcards accepted)."> -<helpop key="lockserv" value="/LOCKSERV :[<message>] +<helpop key="lockserv" value="/LOCKSERV [:<message>] Locks out all new connections notifying connecting users that the service is temporarily closed and to try again later."> @@ -440,8 +479,8 @@ Opens the server up again for new connections."> <helpop key="filter" value="/FILTER <filter-definition> [<action> <flags> [<duration>] :<reason>] -This command will add a filter when more than one parameter is given, -for messages of the types specified by the flags, with the given +This command will add a global filter when more than one parameter is +given, for messages of the types specified by the flags, with the given filter definition, action, duration (when the action is 'gline', 'zline' or 'shun'), and reason. @@ -501,75 +540,81 @@ channel on official network business."> Retrieves a list of users with more clones than the specified limit."> -<helpop key="check" value="/CHECK <nick|ip|hostmask|channel> [<server>] +<helpop key="check" value="/CHECK <nick>|<ipmask>|<hostmask>|<channel> [<servername>] -Allows opers to look up advanced information on channels, hostmasks -or IP addresses, in a similar way to WHO but in more detail, displaying -most information the IRCD has stored on the target, including all -metadata. +Allows opers to look up advanced information on nicknames, IP addresses, +hostmasks or channels, in a similar way to WHO but in more detail, +displaying most information the server has stored on the target, +including all metadata. With the second parameter given, runs the command remotely on the -specified server."> +specified server, useful especially if used on a nickname that is +online on a remote server."> <helpop key="alltime" value="/ALLTIME -Shows the time on all servers on the network."> +Shows the date and time of all servers on the network."> -<helpop key="rconnect" value="/RCONNECT <source mask> <target mask> +<helpop key="rconnect" value="/RCONNECT <remote-server-mask> <target-server-mask> -The server matching <source mask> will try to connect to the first -server in the config file matching <target mask>."> +The server matching <remote-server-mask> will try to connect to the first +server in the config file matching <target-server-mask>."> -<helpop key="rsquit" value="/RSQUIT <target mask> [<reason>] +<helpop key="rsquit" value="/RSQUIT <target-server-mask> [:<reason>] -Causes a remote server matching <target mask> to be disconnected from +Causes a remote server matching <target-server-mask> to be disconnected from the network."> -<helpop key="globops" value="/GLOBOPS <message> +<helpop key="globops" value="/GLOBOPS :<message> Sends a message to all users with the +g snomask."> -<helpop key="cban" value="/CBAN <channel> [<duration> :[<reason>]] +<helpop key="cban" value="/CBAN <channel> [<duration> [:<reason>]] -Sets or removes a channel ban. You must specify all three parameters +Sets or removes a global channel ban. You must specify all three parameters to add a ban, and one parameter to remove a ban (just the channel). The duration may be specified in seconds, or in the format -1y2w3d4h5m6s - meaning one year, two weeks, three days, 4 hours, -5 minutes and 6 seconds. All fields in this format are optional."> +1y2w3d4h5m6s - meaning one year, two weeks, three days, four hours, +five minutes and six seconds. All fields in this format are optional."> -<helpop key="sajoin" value="/SAJOIN [<nick>] <channel>[,<channel>] +<helpop key="sajoin" value="/SAJOIN [<nick>] <channel>[,<channel>]+ Forces the user to join the channel(s). If no nick is given, it joins the oper doing the /SAJOIN."> -<helpop key="sapart" value="/SAPART <nick> <channel>[,<channel>] +<helpop key="sapart" value="/SAPART <nick> <channel>[,<channel>]+ [:<reason>] -Forces the user to part the channel(s)."> +Forces the user to part the channel(s), with an optional reason."> -<helpop key="samode" value="/SAMODE <target> (+|-)<modes> [<parameters for modes>] +<helpop key="samode" value="/SAMODE <target> (+|-)<modes> [<mode-parameters>] Applies the given mode change to the channel or nick specified."> -<helpop key="sanick" value="/SANICK <nick> <new nick> +<helpop key="sanick" value="/SANICK <nick> <newnick> Changes the user's nick to the new nick."> -<helpop key="sakick" value="/SAKICK <channel> <nick> <reason> +<helpop key="sakick" value="/SAKICK <channel> <nick> [:<reason>] -Kicks the given user from the specified channel."> +Kicks the given user from the specified channel, with an optional reason."> -<helpop key="satopic" value="/SATOPIC <channel> <new topic> +<helpop key="satopic" value="/SATOPIC <channel> :<topic> Applies the given topic to the specified channel."> -<helpop key="saquit" value="/SAQUIT <nick> <reason> +<helpop key="saquit" value="/SAQUIT <nick> :<reason> Forces user to quit with the specified reason."> -<helpop key="setidle" value="/SETIDLE <idle time> +<helpop key="setidle" value="/SETIDLE <duration> -Sets your idle time (in seconds) to the specified value."> +Sets your idle time to the specified value. + +The time can be specified in the form of 1y2w3d4h5m6s - meaning one year, +two weeks, three days, four hours, five minutes and six seconds. +All fields in this format are optional. Alternatively, the time may +just be specified as a number of seconds."> <helpop key="sethost" value="/SETHOST <host> @@ -579,20 +624,24 @@ Sets your host to the specified host."> Sets your ident to the specified ident."> -<helpop key="swhois" line="/SWHOIS <nick> <swhois> +<helpop key="swhois" line="/SWHOIS <nick> :<swhois> + +Sets the user's swhois field to the given swhois message. +This will be visible in their /WHOIS. -Sets the user's swhois field to the given swhois."> +To remove this message again, use: +/SWHOIS <nick> :"> <helpop key="mkpasswd" value="/MKPASSWD <hashtype> <plaintext> Encodes the plaintext to a hash of the given type and displays the result."> -<helpop key="opermotd" value="/OPERMOTD +<helpop key="opermotd" value="/OPERMOTD [<servername>] Displays the Oper MOTD."> -<helpop key="nicklock" value="/NICKLOCK <nick> <new nick> +<helpop key="nicklock" value="/NICKLOCK <nick> <newnick> Changes the user's nick to the new nick, and forces it to remain as such for the remainder of the session."> @@ -601,34 +650,34 @@ it to remain as such for the remainder of the session."> Allows a previously locked user to change nicks again."> -<helpop key="chghost" value="/CHGHOST <nickname> <new hostname> +<helpop key="chghost" value="/CHGHOST <nick> <host> -Changes the hostname of the user to the new hostname."> +Changes the host of the user to the specified host."> -<helpop key="chgname" value="/CHGNAME <nickname> <new name> +<helpop key="chgname" value="/CHGNAME <nick> :<realname> -Changes the name of the user to the new name."> +Changes the real name of the user to the specified real name."> -<helpop key="chgident" value="/CHGIDENT <nickname> <new ident> +<helpop key="chgident" value="/CHGIDENT <nick> <ident> -Changes the ident of the user to the new ident."> +Changes the ident of the user to the specified ident."> -<helpop key="shun" value="/SHUN <nick!user@host> [[<duration>] :<reason>] +<helpop key="shun" value="/SHUN <nick!user@host> [<duration> :<reason>] -Sets or removes a shun (server side ignore) on a host and ident mask. +Sets or removes a shun (global server-side ignore) on a nick!user@host mask. You must specify all three parameters to add a shun, and one parameter -to remove a shun (just the nick!user@host section). +to remove a shun (just the nick!user@host). The duration may be specified in seconds, or in the format -1y2w3d4h5m6s - meaning one year, two weeks, three days, 4 hours, -5 minutes and 6 seconds. All fields in this format are optional."> +1y2w3d4h5m6s - meaning one year, two weeks, three days, four hours, +five minutes and six seconds. All fields in this format are optional."> -<helpop key="die" value="/DIE <server> +<helpop key="die" value="/DIE <servername> This command shuts down the local server. A single parameter is required, which must match the name of the local server."> -<helpop key="restart" value="/RESTART <server> +<helpop key="restart" value="/RESTART <servername> This command restarts the local server. A single parameter is required, which must match the name of the local server."> @@ -637,11 +686,11 @@ required, which must match the name of the local server."> Shows all currently available commands."> -<helpop key="kill" value="/KILL <user> <reason> +<helpop key="kill" value="/KILL <nick>[,<nick>]+ :<reason> This command will disconnect a user from IRC with the given reason."> -<helpop key="rehash" value="/REHASH <mask> +<helpop key="rehash" value="/REHASH [<servermask>] This command will cause the server configuration file to be reread and values reinitialized for all servers matching the server mask, or the @@ -657,105 +706,105 @@ before trying to link them."> Disconnects the server matching the given server mask from this server."> -<helpop key="modules" value="/MODULES +<helpop key="modules" value="/MODULES [<servername>] Lists currently loaded modules, their memory offsets, version numbers, and flags. If you are not an operator, you will see reduced detail."> -<helpop key="loadmodule" value="/LOADMODULE <modname> +<helpop key="loadmodule" value="/LOADMODULE <modulename> Loads the specified module into the local server."> -<helpop key="unloadmodule" value="/UNLOADMODULE <modname> +<helpop key="unloadmodule" value="/UNLOADMODULE <modulename> Unloads a module from the local server."> -<helpop key="reloadmodule" value="/RELOADMODULE <modname> +<helpop key="reloadmodule" value="/RELOADMODULE <modulename> Unloads and reloads a module on the local server."> -<helpop key="gloadmodule" value="/GLOADMODULE <modname> +<helpop key="gloadmodule" value="/GLOADMODULE <modulename> [<servermask>] Loads the specified module on all linked servers."> -<helpop key="gunloadmodule" value="/GUNLOADMODULE <modname> +<helpop key="gunloadmodule" value="/GUNLOADMODULE <modulename> [<servermask>] Unloads a module from all linked servers."> -<helpop key="greloadmodule" value="/GRELOADMODULE <modname> +<helpop key="greloadmodule" value="/GRELOADMODULE <modulename> [<servermask>] Unloads and reloads a module on all linked servers."> <helpop key="kline" value="/KLINE <user@host> [<duration> :<reason>] -Sets or removes a K-line (local host based ban) on a host and ident mask. +Sets or removes a K-line (local user@host based ban) on a user@host mask. You must specify all three parameters to add a ban, and one parameter -to remove a ban (just the user@host section). +to remove a ban (just the user@host). The duration may be specified in seconds, or in the format -1y2w3d4h5m6s - meaning one year, two weeks, three days, 4 hours, -5 minutes and 6 seconds. All fields in this format are optional."> +1y2w3d4h5m6s - meaning one year, two weeks, three days, four hours, +five minutes and six seconds. All fields in this format are optional."> <helpop key="zline" value="/ZLINE <ipmask> [<duration> :<reason>] -Sets or removes a Z-line (ip based ban) on an ip range mask. +Sets or removes a Z-line (global IP based ban) on an IP mask. You must specify all three parameters to add a ban, and one parameter to remove a ban (just the ipmask). The duration may be specified in seconds, or in the format -1y2w3d4h5m6s - meaning one year, two weeks, three days, 4 hours, -5 minutes and 6 seconds. All fields in this format are optional."> +1y2w3d4h5m6s - meaning one year, two weeks, three days, four hours, +five minutes and six seconds. All fields in this format are optional."> <helpop key="qline" value="/QLINE <nickmask> [<duration> :<reason>] -Sets or removes a Q-line (nick based ban) on a nick mask. +Sets or removes a Q-line (global nick based ban) on a nick mask. You must specify all three parameters to add a ban, and one parameter to remove a ban (just the nickmask). The duration may be specified in seconds, or in the format -1y2w3d4h5m6s - meaning one year, two weeks, three days, 4 hours, -5 minutes and 6 seconds. All fields in this format are optional."> +1y2w3d4h5m6s - meaning one year, two weeks, three days, four hours, +five minutes and six seconds. All fields in this format are optional."> <helpop key="gline" value="/GLINE <user@host> [<duration> :<reason>] -Sets or removes a G-line (host based ban) on host mask. +Sets or removes a G-line (global user@host based ban) on a user@host mask. You must specify all three parameters to add a ban, and one -parameter to remove a ban (just the user@host section). +parameter to remove a ban (just the user@host). The duration may be specified in seconds, or in the format -1y2w3d4h5m6s - meaning one year, two weeks, three days, 4 hours, -5 minutes and 6 seconds. All fields in this format are optional."> +1y2w3d4h5m6s - meaning one year, two weeks, three days, four hours, +five minutes and six seconds. All fields in this format are optional."> <helpop key="eline" value="/ELINE <user@host> [<duration> :<reason>] -Sets or removes a E-line (global ban exception) on host mask. +Sets or removes a E-line (global user@host ban exception) on a user@host mask. You must specify at least 3 parameters to add an exception, and one -parameter to remove an exception (just the user@host section). +parameter to remove an exception (just the user@host). The duration may be specified in seconds, or in the format -1y2w3d4h5m6s - meaning one year, two weeks, three days, 4 hours, -5 minutes and 6 seconds. All fields in this format are optional. +1y2w3d4h5m6s - meaning one year, two weeks, three days, four hours, +five minutes and six seconds. All fields in this format are optional. This command has a few important limitations. Bans on *@<ip> can only be negated by an E-line on *@<ip>, bans on *@<host> can be negated by E-lines on *@<ip>, or *@<host>, and bans on <ident>@* or <ident>@<host> can be negated by any E-line that matches."> -<helpop key="wallops" value="/WALLOPS <message> +<helpop key="wallops" value="/WALLOPS :<message> Sends a message to all +w users."> <helpop key="rline" value="/RLINE <regex> [<duration> :<reason>] -Sets or removes an R-line (regex line) on a n!u@h\srealname mask. You +Sets or removes an R-line (global regex ban) on a n!u@h\srealname mask. You must specify all three parameters to add an R-line, and one parameter to remove an R-line (just the regex). The duration may be specified in seconds, or in the format -1y2w3d4h5m6s - meaning one year, two weeks, three days, 4 hours, -5 minutes and 6 seconds. All fields in this format are optional."> +1y2w3d4h5m6s - meaning one year, two weeks, three days, four hours, +five minutes and six seconds. All fields in this format are optional."> -<helpop key="clearchan" value="/CLEARCHAN <channel> [<KILL|KICK|G|Z>] [<reason>] +<helpop key="clearchan" value="/CLEARCHAN <channel> [KILL|KICK|G|Z] [:<reason>] Quits or kicks all non-opers from a channel, optionally G/Z-lines them. Useful for quickly nuking bot channels. @@ -765,7 +814,7 @@ while methods G and Z also add G/Z-lines for all the targets. When used, the victims won't see each other getting kicked or quitting."> -<helpop key="modenotice" value="/MODENOTICE <modeletters> <message> +<helpop key="modenotice" value="/MODENOTICE <modeletters> :<message> Sends a notice to all users who have the given mode(s) set. If multiple mode letters are given, the notice is only sent to users @@ -785,7 +834,7 @@ using their cloak when they quit."> commonchans module). d Deaf mode. User will not receive any messages or notices from channels they are in (requires the deaf module). - g In combination with /ACCEPT, provides for server side + g In combination with /ACCEPT, provides for server-side ignore (requires the callerid module). h Marks as 'available for help' in WHOIS (IRCop only, requires the helpop module). @@ -810,8 +859,8 @@ using their cloak when they quit."> hideoper module). I Hides a user's entire channel list in WHOIS from non-IRCops (requires the hidechans module). - L Stops redirections done by m_redirect (mode must be - enabled in the config). + L Stops redirections done by the redirect module (requires + the redirect module). R Blocks private messages from unregistered users (requires the services account module). S Strips formatting codes out of private messages @@ -879,7 +928,8 @@ using their cloak when they quit."> For example, +w o:R:Brain will op anyone identified to the account 'Brain' on join. (requires the autoop module) - z Blocks non-SSL clients from joining the channel. + z Blocks non-SSL clients from joining the channel + (requires the sslmodes module). A Allows anyone to invite users to the channel (normally only chanops can invite, requires @@ -891,7 +941,8 @@ using their cloak when they quit."> noctcp module). D Delays join messages from users until they message the channel (requires the delayjoin module). - E [~*][lines]:[sec]{[:difference]}{[:backlog]} Allows blocking of similar messages. + E [~|*]<lines>:<sec>[:<difference>][:<backlog>] Allows blocking of + similar messages (requires the repeat module). Kicks as default, blocks with ~ and bans with * The last two parameters are optional. F <changes>:<sec> Blocks nick changes when they equal or exceed the @@ -905,7 +956,8 @@ using their cloak when they quit."> J <seconds> Prevents rejoin after kick for the specified number of seconds. This prevents auto-rejoin (requires the kicknorejoin module). - K Blocks /KNOCK on the channel. + K Blocks /KNOCK on the channel (requires the + knock module). L <channel> If the channel reaches its limit set by +l, redirect users to <channel> (requires the redirect module). @@ -919,8 +971,8 @@ using their cloak when they quit."> topic, modes, and such will not be lost when it empties (can only be set by IRCops, requires the permchannels module). - Q Only ulined servers and their users can kick - (requires the nokicks module) + Q Only U-lined servers and their users can kick + (requires the nokicks module). R Blocks unregistered users from joining (requires the services account module). S Strips formatting codes from messages to the @@ -955,23 +1007,23 @@ being loaded by a server/network administrator. The actual modes available on your network may be very different to this list. Please consult your help channel if you have any questions."> -<helpop key="stats" value="/STATS <symbol> +<helpop key="stats" value="/STATS <symbol> [<servername>] Shows various server statistics. Depending on configuration, some symbols may be only available to opers. Valid symbols are: -e Show E-lines (local ban exemptions) -g Show G-lines (host bans) -k Show K-lines (local host bans) -q Show Q-lines (nick mask bans) -R Show R-lines (regular expression bans) -Z Show Z-lines (IP mask bans) +e Show E-lines (global user@host ban exceptions) +g Show G-lines (global user@host bans) +k Show K-lines (local user@host bans) +q Show Q-lines (global nick bans) +R Show R-lines (global regular expression bans) +Z Show Z-lines (global IP mask bans) -s Show filters -C Show channel bans -H Show shuns +s Show filters (global) +C Show channel bans (global) +H Show shuns (global) c Show link blocks d Show configured DNSBLs and related statistics @@ -1011,8 +1063,8 @@ Note that all /STATS use is broadcast to online IRC operators."> K Allows receipt of remote kill messages. l Allows receipt of local linking related messages. L Allows receipt of remote linking related messages. - n See local nickname changes (requires the seenicks module). - N See remote nickname changes (requires the seenicks modules). + n Allows receipt of local nickname changes (requires the seenicks module). + N Allows receipt of remote nickname changes (requires the seenicks modules). o Allows receipt of oper-up, oper-down, and oper-failure messages. O Allows receipt of remote oper-up, oper-down, and oper-failure messages. q Allows receipt of local quit messages. diff --git a/docs/conf/inspircd.conf.example b/docs/conf/inspircd.conf.example @@ -255,7 +255,7 @@ # # You may also use any of the above other than bcrypt prefixed with # either "hmac-" or "pbkdf2-hmac-" (requires the pbkdf2 module). - # Create hashed passwords with: /mkpasswd <hash> <password> + # Create hashed passwords with: /MKPASSWD <hashtype> <plaintext> #hash="bcrypt" # password: Password to use for this block/user(s) @@ -268,7 +268,7 @@ # timeout: How long the server will wait before disconnecting # a user if they do not do anything on connect. # (Note, this is a client-side thing, if the client does not - # send /nick, /user or /pass) + # send /NICK, /USER or /PASS) timeout="10" # localmax: Maximum local connections per IP (or CIDR mask, see below). @@ -300,8 +300,8 @@ # modes: Usermodes that are set on users in this block on connect. # Enabling this option requires that the conn_umodes module be loaded. - # This entry is highly recommended to use for/with IP Cloaking/masking. - # For the example to work, this also requires that the "cloaking" + # This entry is highly recommended to use for/with IP cloaking/masking. + # For the example to work, this also requires that the cloaking # module be loaded as well. modes="+x" @@ -352,7 +352,7 @@ # timeout: How long the server will wait before disconnecting # a user if they do not do anything on connect. # (Note, this is a client-side thing, if the client does not - # send /nick, /user or /pass) + # send /NICK, /USER or /PASS) timeout="10" # pingfreq: How often the server tries to ping connecting clients. @@ -414,7 +414,7 @@ # modes: Usermodes that are set on users in this block on connect. # Enabling this option requires that the conn_umodes module be loaded. - # This entry is highly recommended to use for/with IP Cloaking/masking. + # This entry is highly recommended to use for/with IP cloaking/masking. # For the example to work, this also requires that the cloaking # module be loaded as well. modes="+x"> @@ -647,7 +647,7 @@ # See m_exemptchanops in modules.conf.example for more details. exemptchanops="censor:o filter:o nickflood:o nonick:v regmoderated:o" - # invitebypassmodes: This allows /invite to bypass other channel modes. + # invitebypassmodes: This allows /INVITE to bypass other channel modes. # (Such as +k, +j, +l, etc.) invitebypassmodes="yes" @@ -714,10 +714,10 @@ announceinvites="dynamic" # hideulines: If this value is set to yes, U-lined servers will - # be hidden from non-opers in /links and /map. + # be hidden from non-opers in /LINKS and /MAP. hideulines="no" - # flatlinks: If this value is set to yes, /map and /links will + # flatlinks: If this value is set to yes, /MAP and /LINKS will # be flattened when shown to non-opers. flatlinks="no" @@ -734,7 +734,7 @@ # from the server. hidebans="no" - # hidekills: If defined, replaces who set a /kill with a custom string. + # hidekills: If defined, replaces who executed a /KILL with a custom string. hidekills="" # hideulinekills: Hide kills from clients of ulined servers from server notices. @@ -746,7 +746,7 @@ hidesplits="no" # maxtargets: Maximum number of targets per command. - # (Commands like /notice, /privmsg, /kick, etc) + # (Commands like /NOTICE, /PRIVMSG, /KICK, etc) maxtargets="20" # customversion: A custom message to be displayed in the comments field @@ -777,7 +777,7 @@ # affects the display in WHOIS. genericoper="no" - # userstats: /stats commands that users can run (opers can run all). + # userstats: /STATS commands that users can run (opers can run all). userstats="Pu"> #-#-#-#-#-#-#-#-#-#-#-#-# LIMITS CONFIGURATION #-#-#-#-#-#-#-#-#-#-#-# @@ -845,7 +845,7 @@ # # An example log tag would be: # <log method="file" type="OPER" level="default" target="opers.log"> -# which would log all information on /oper (failed and successful) to +# which would log all information on /OPER (failed and successful) to # a file called opers.log. # # There are many different types which may be used, and modules may @@ -889,17 +889,17 @@ #-#-#-#-#-#-#-#-#-#-#-#-#- WHOWAS OPTIONS -#-#-#-#-#-#-#-#-#-#-#-#-# # # -# This tag lets you define the behaviour of the /whowas command of # +# This tag lets you define the behaviour of the /WHOWAS command of # # your server. # # # <whowas # groupsize: Maximum entries per nick shown when performing - # a /whowas nick. + # a /WHOWAS <nick>. groupsize="10" # maxgroups: Maximum number of nickgroups that can be added to - # the list so that /whowas does not use a lot of resources on + # the list so that /WHOWAS does not use a lot of resources on # large networks. maxgroups="100000" @@ -927,7 +927,7 @@ # nick: Nick to disallow. Wildcards are supported. nick="ChanServ" - # reason: Reason to display on /nick. + # reason: Reason to display on /NICK. reason="Reserved for a network service"> <badhost @@ -947,7 +947,7 @@ # Wildcards and CIDR (if you specify an IP) can be used. host="*@ircop.example.com" - # reason: Reason for exception. Only shown in /stats e + # reason: Reason for exception. Only shown in /STATS e. reason="Oper's hostname"> #-#-#-#-#-#-#-#-#-#-#- INSANE BAN OPTIONS -#-#-#-#-#-#-#-#-#-#-#-#-#-# diff --git a/docs/conf/links.conf.example b/docs/conf/links.conf.example @@ -64,19 +64,19 @@ # servers will not be shown when users do a /MAP or /LINKS. hidden="no" - # passwords: the passwords we send and receive. + # passwords: The passwords we send and receive. # The remote server will have these passwords reversed. # Passwords that contain a space character or begin with # a colon (:) are invalid and may not be used. sendpass="outgoing!password" recvpass="incoming!password"> -# A duplicate of the first link block without comments +# A duplicate of the first link block without comments, # if you like copying & pasting. <link name="hub.example.org" ipaddr="penguin.example.org" port="7000" - allowmask="203.0.113.0/24" + allowmask="203.0.113.0/24 127.0.0.0/8 2001:db8::/32" timeout="5m" ssl="gnutls" bind="1.2.3.4" @@ -94,7 +94,7 @@ sendpass="penguins" recvpass="polarbears"> -# Simple autoconnect block. This enables automatic connection of a server +# Simple autoconnect block. This enables automatic connections to a server. # Recommended setup is to have leaves connect to the hub, and have no # automatic connections started by the hub. <autoconnect period="10m" server="hub.example.org"> @@ -108,15 +108,15 @@ server="hub.us.example.org hub.eu.example.org leaf.eu.example.org"> -#-#-#-#-#-#-#-#-#-#-#-#- ULINES CONFIGURATION #-#-#-#-#-#-#-#-#-#-#-#-# -# This tag defines a ulined server. A U-Lined server has special # -# permissions, and should be used with caution. Services servers are # -# usually u-lined in this manner. # -# # -# The 'silent' value, if set to yes, indicates that this server should# -# not generate quit and connect notices, which can cut down on noise # -# to opers on the network. # -# # +#-#-#-#-#-#-#-#-#-#-#-#-# U-LINES CONFIGURATION #-#-#-#-#-#-#-#-#-#-#-#-# +# This tag defines a U-lined server. A U-lined server has special # +# permissions, and should be used with caution. Services servers are # +# usually U-lined in this manner. # +# # +# The 'silent' value, if set to yes, indicates that this server should # +# not generate quit and connect notices, which can cut down on noise # +# to opers on the network. # +# # <uline server="services.example.com" silent="yes"> # Once you have edited this file you can remove this line. This is just to diff --git a/docs/conf/modules.conf.example b/docs/conf/modules.conf.example @@ -79,7 +79,7 @@ # read from the top of the file to the bottom. # # # # usercommand - If this is true, the alias can be run simply as # -# /aliasname. Defaults to true. # +# /ALIASNAME. Defaults to true. # # # # channelcommand - If this is true, the alias can be used as an # # in-channel alias or 'fantasy command', prefixed # @@ -780,11 +780,11 @@ # # # chanmodes - One or more channel modes that can not be added/removed # # by users. You can exempt server operators from this # -# with the servers/use-disabled-commands privilege. # +# with the servers/use-disabled-modes privilege. # # # # usermodes - One or more user modes that can not be added/removed by # # users. You can exempt server operators from this with # -# the servers/use-disabled-commands privilege. # +# the servers/use-disabled-modes privilege. # # # # fakenonexistent - Whether to pretend that a disabled command/mode # # does not exist when executed/changed by a user. # @@ -803,7 +803,7 @@ #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# # DNS blacklist module: Provides support for looking up IPs on one or # # more blacklists. # -#<module name="dnsbl"> # +#<module name="dnsbl"> # # # For configuration options please see the wiki page for dnsbl at # # https://wiki.inspircd.org/Modules/3.0/dnsbl # @@ -816,8 +816,8 @@ # nonick, nonotice, regmoderated, stripcolor, and topiclock. # # See <options:exemptchanops> in inspircd.conf.example for a more # # detailed list of the restriction modes that can be exempted. # -# These are settable using /mode #chan +X <restriction>:<status> # -#<module name="exemptchanops"> # +# These are settable using: /MODE #chan +X <restriction>:<status> # +#<module name="exemptchanops"> #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# # Filter module: Provides message filtering, similar to SPAMFILTER. # @@ -886,7 +886,7 @@ # <connect deny="*" geoip="TR,RU"> # # If enabled you can also ban people from channnels by country code -# using the G: extban (e.g. /mode #channel +b G:US). +# using the G: extban (e.g. /MODE #channel +b G:US). # <geoip extban="yes"> # # The country code must be in capitals and should be an ISO country @@ -1332,7 +1332,7 @@ #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# # Named modes module: Allows for the display and set/unset of channel # modes via long-form mode names via +Z and the /PROP command. -# For example, to set a ban, do /mode #channel +Z ban=foo!bar@baz or +# For example, to set a ban, do /MODE #channel +Z ban=foo!bar@baz or # /PROP #channel ban=foo!bar@baz #<module name="namedmodes"> @@ -1419,7 +1419,7 @@ #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# # Oper channels mode: Adds the +O channel mode and extban O:<mask> # to ban, except, etc. specific oper types. For example -# /mode #channel +iI O:* is equivalent to channel mode +O, but you +# /MODE #channel +iI O:* is equivalent to channel mode +O, but you # may also set +iI O:AdminTypeOnly to only allow admins. # Modes +I and +e work in a similar fashion. #<module name="operchans"> @@ -1699,7 +1699,8 @@ #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# # Remove module: Adds the /REMOVE command which is a peaceful -# alternative to /KICK. +# alternative to /KICK. It also provides the /FPART command which works +# in the same way as /REMOVE. #<module name="remove"> # # supportnokicks: If true, /REMOVE is not allowed on channels where the @@ -1709,27 +1710,36 @@ #<remove supportnokicks="true" protectedrank="50000"> #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# -# A module to block, kick or ban upon similar messages being uttered several times. -# Syntax [~*][lines]:[sec]{[:difference]}{[:matchlines]} -# ~ is to block, * is to ban, default is kick. -# lines - In mode 1 the amount of lines that has to match consecutively - In mode 2 the size of the backlog to keep for matching -# seconds - How old the message has to be before it's invalidated. -# distance - Edit distance, in percent, between two strings to trigger on. -# matchlines - When set, the function goes into mode 2. In this mode the function will trigger if this many of the last <lines> matches. +# Repeat module: Allows to block, kick or ban upon similar messages +# being uttered several times. Provides channel mode +E. +# +# Syntax: [~|*]<lines>:<sec>[:<difference>][:<backlog>] +# ~ is to block, * is to ban, default is kick. +# lines - In mode 1, the amount of lines that has to match consecutively. +# In mode 2, the size of the backlog to keep for matching. +# seconds - How old the message has to be before it's invalidated. +# difference - Edit distance, in percent, between two strings to trigger on. +# backlog - When set, the function goes into mode 2. In this mode the +# function will trigger if this many of the last <lines> matches. # # As this module can be rather CPU-intensive, it comes with some options. -# maxbacklog - Maximum size that can be specified for backlog. 0 disables multiline matching. -# maxdistance - Max percentage of difference between two lines we'll allow to match. Set to 0 to disable edit-distance matching. -# maxlines - Max lines of backlog to match against. -# maxtime - Maximum period of time a user can set. 0 to allow any. -# size - Maximum number of characters to check for, can be used to truncate messages -# before they are checked, resulting in less CPU usage. Increasing this beyond 512 -# doesn't have any effect, as the maximum length of a message on IRC cannot exceed that. -#<repeat maxbacklog="20" maxlines="20" maxdistance="50" maxtime="0" size="512"> +# maxbacklog - Maximum size that can be specified for backlog. 0 disables +# multiline matching. +# maxdistance - Max percentage of difference between two lines we'll allow +# to match. Set to 0 to disable edit-distance matching. +# maxlines - Max lines of backlog to match against. +# maxtime - Maximum period of time a user can set. 0 to allow any. +# size - Maximum number of characters to check for, can be used to +# truncate messages before they are checked, resulting in +# less CPU usage. Increasing this beyond 512 doesn't have +# any effect, as the maximum length of a message on IRC +# cannot exceed that. +#<repeat maxbacklog="20" maxdistance="50 maxlines="20" maxtime="0" size="512"> #<module name="repeat"> #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# -# Restricted channels module: Allows only opers or registered users to +# Restricted channels module: Allows only opers with the +# channels/restricted-create priv and/or registered users to # create channels. # # You probably *DO NOT* want to load this module on a public network. @@ -1775,10 +1785,11 @@ # so that at least \s or [[:space:]] is available. #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# -# RMODE module: Adds the /RMODE command -# Allows channel mods to remove list modes en masse. -# Syntax: /rmode <channel> <mode> [pattern] -# E.g. '/rmode #Channel b m:*' will remove all mute-extbans on the channel. +# RMODE module: Adds the /RMODE command. +# Allows channel operators to remove list modes en masse, optionally +# matching a glob-based pattern. +# Syntax: /RMODE <channel> <mode> [<pattern>] +# E.g. '/RMODE #channel b m:*' will remove all mute extbans on the channel. #<module name="rmode"> #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# @@ -1921,8 +1932,8 @@ # changes their real name. Defaults to to yes if # # oper-only and no if usable by everyone. # # # -#<setname notifyopers="yes" # -# operonly="no"> # +#<setname notifyopers="yes" +# operonly="no"> #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# # Serverban: Implements extended ban 's', which stops anyone connected @@ -1939,7 +1950,7 @@ # they enter a command. # # This module adds one command for each <showfile> tag that shows the # # given file to the user as a series of messages or numerics. # -#<module name="showfile"> # +#<module name="showfile"> # # #-#-#-#-#-#-#-#-#-#-# SHOWFILE CONFIGURATION -#-#-#-#-#-#-#-#-#-#-#-#-# # # diff --git a/docs/conf/opers.conf.example b/docs/conf/opers.conf.example @@ -1,4 +1,4 @@ -#-#-#-#-#-#-#-#-#-#-#-#- CLASS CONFIGURATION -#-#-#-#-#-#-#-#-#-#-#- +#-#-#-#-#-#-#-#-#-#-#-#-# CLASS CONFIGURATION #-#-#-#-#-#-#-#-#-#-#-# # # # Classes are a group of commands which are grouped together and # # given a unique name. They're used to define which commands # @@ -19,19 +19,23 @@ # privs: Special privileges that users with this class may utilise. # VIEWING: - # - channels/auspex: allows opers with this priv to see more detail about channels than normal users. + # - channels/auspex: allows opers with this priv to see more details about channels than normal users. # - users/auspex: allows opers with this priv to view more details about users than normal users, e.g. real host and IP. # - users/channel-spy: allows opers with this priv to view the private/secret channels that a user is on. - # - servers/auspex: allows opers with this priv to see more detail about server information than normal users. + # - servers/auspex: allows opers with this priv to see more details about server information than normal users. # ACTIONS: - # - users/mass-message: allows opers with this priv to PRIVMSG and NOTICE to a server mask (e.g. NOTICE $*) - # - users/samode-usermodes: allows opers with this priv to change the user modes of any other user using /SAMODE + # - users/mass-message: allows opers with this priv to PRIVMSG and NOTICE to a server mask (e.g. NOTICE $*). + # - users/samode-usermodes: allows opers with this priv to change the user modes of any other user using /SAMODE. # PERMISSIONS: - #. - channels/ignore-nonicks: allows opers with this priv to change their nick when on a +N channel. - # - users/flood/no-fakelag: prevents opers from being penalized with fake lag for flooding (*NOTE) - # - users/flood/no-throttle: allows opers with this priv to send commands without being throttled (*NOTE) - # - users/flood/increased-buffers: allows opers with this priv to send and receive data without worrying about being disconnected for exceeding limits (*NOTE) - #. - users/callerid-override: allows opers with this priv to message people using callerid without being on their callerid list. + # - channels/ignore-nonicks: allows opers with this priv to change their nick when on a +N channel. + # - channels/restricted-create: allows opers with this priv to create channels if the restrictchans module is loaded. + # - users/flood/no-fakelag: prevents opers from being penalized with fake lag for flooding (*NOTE). + # - users/flood/no-throttle: allows opers with this priv to send commands without being throttled (*NOTE). + # - users/flood/increased-buffers: allows opers with this priv to send and receive data without worrying about being disconnected for exceeding limits (*NOTE). + # - users/callerid-override: allows opers with this priv to message people using callerid without being on their callerid list. + # - users/sajoin-others: allows opers with this priv to /SAJOIN users other than themselves. + # - servers/use-disabled-commands: allows opers with this priv to use disabled commands. + # - servers/use-disabled-modes: allows opers with this priv to use disabled modes. # # *NOTE: These privs are potentially dangerous, as they grant users with them the ability to hammer your server's CPU/RAM as much as they want, essentially. privs="users/auspex channels/auspex servers/auspex users/mass-message users/flood/no-throttle users/flood/increased-buffers" @@ -57,13 +61,13 @@ # # <type - # name: Name of type. Used in actual server operator accounts below. + # name: Name of the type. Used in actual server operator accounts below. name="NetAdmin" # classes: Classes (blocks above) that this type belongs to. classes="SACommands OperChat BanControl HostCloak Shutdown ServerLink" - # vhost: Host opers of this type get when they log in (oper up). This is optional. + # vhost: Host that opers of this type get when they log in (oper up). This is optional. vhost="netadmin.omega.example.org" # maxchans: Maximum number of channels opers of this type can be in at once. @@ -71,7 +75,7 @@ # modes: User modes besides +o that are set on an oper of this type # when they oper up. Used for snomasks and other things. - # Requires the opermodes module be loaded. + # Requires the opermodes module to be loaded. modes="+s +cCqQ"> <type name="GlobalOp" classes="SACommands OperChat BanControl HostCloak ServerLink" vhost="ircop.omega.example.org"> @@ -84,9 +88,9 @@ # Remember to only make operators out of trustworthy people. # # # -# Operator account with a plain-text password. +# Operator account with a plaintext password. <oper - # name: Oper login that is used to oper up (/oper name password). + # name: Oper login that is used to oper up (/OPER <username> <password>). # Remember: This is case sensitive. name="Attila" @@ -101,7 +105,7 @@ # ** ADVANCED ** This option is disabled by default. # fingerprint: When using the sslinfo module, you may specify - # a key fingerprint here. This can be obtained by using the /sslinfo + # a key fingerprint here. This can be obtained by using the /SSLINFO # command while the module is loaded, and is also noticed on connect. # This enhances security by verifying that the person opering up has # a matching SSL client certificate, which is very difficult to @@ -115,7 +119,7 @@ # that the private key is well-protected! Requires the sslinfo module. #autologin="on" - # sslonly: If on, this oper can only oper up if they're using a SSL connection. + # sslonly: If on, this oper can only oper up if they're using an SSL connection. # Setting this option adds a decent bit of security. Highly recommended # if the oper is on wifi, or specifically, unsecured wifi. Note that it # is redundant to specify this option if you specify a fingerprint. @@ -140,21 +144,21 @@ # Operator with a hashed password. It is highly recommended to use hashed passwords. <oper - # name: Oper login that is used to oper up (/oper name password). + # name: Oper login that is used to oper up (/OPER <username> <password>). # Remember: This is case sensitive. name="Adam" - # hash: the hash function this password is hashed with. Requires the + # hash: The hash function this password is hashed with. Requires the # module for the selected function (bcrypt, md5, sha1, or sha256) and # the password hashing module (password_hash) to be loaded. # # You may also use any of the above other than bcrypt prefixed with # either "hmac-" or "pbkdf2-hmac-" (requires the pbkdf2 module). - # Create hashed passwords with: /mkpasswd <hash> <password> + # Create hashed passwords with: /MKPASSWD <hashtype> <plaintext>. hash="bcrypt" # password: A hash of the password (see above option) hashed - # with /mkpasswd <hash> <password>. See the password_hash module + # with /MKPASSWD <hashtype> <plaintext>. See the password_hash module # in modules.conf for more information about password hashing. password="qQmv3LcF$Qh63wzmtUqWp9OXnLwe7yv1GcBwHpq59k2a0UrY8xe0" diff --git a/include/iohook.h b/include/iohook.h @@ -49,7 +49,7 @@ class IOHookProvider : public refcountbase, public ServiceProvider */ bool IsMiddle() const { return middlehook; } - /** Called when the provider should hook an incoming connection and act as being on the server side of the connection. + /** Called when the provider should hook an incoming connection and act as being on the server-side of the connection. * This occurs when a bind block has a hook configured and the listener accepts a connection. * @param sock Socket to hook * @param client Client IP address and port diff --git a/src/coremods/core_channel/cmd_invite.cpp b/src/coremods/core_channel/cmd_invite.cpp @@ -29,7 +29,7 @@ CommandInvite::CommandInvite(Module* parent, Invite::APIImpl& invapiimpl) , invapi(invapiimpl) { Penalty = 4; - syntax = "[<nick> <channel>]"; + syntax = "[<nick> <channel> [<time>]]"; } /** Handle /INVITE diff --git a/src/coremods/core_channel/cmd_join.cpp b/src/coremods/core_channel/cmd_join.cpp @@ -24,7 +24,7 @@ CommandJoin::CommandJoin(Module* parent) : SplitCommand(parent, "JOIN", 1, 2) { - syntax = "<channel>{,<channel>} {<key>{,<key>}}"; + syntax = "<channel>[,<channel>]+ [<key>[,<key>]+]"; Penalty = 2; } diff --git a/src/coremods/core_channel/cmd_kick.cpp b/src/coremods/core_channel/cmd_kick.cpp @@ -24,7 +24,7 @@ CommandKick::CommandKick(Module* parent) : Command(parent, "KICK", 2, 3) { - syntax = "<channel> <nick>{,<nick>} [<reason>]"; + syntax = "<channel> <nick>[,<nick>]+ [:<reason>]"; } /** Handle /KICK @@ -65,7 +65,7 @@ CmdResult CommandKick::Handle(User* user, const Params& parameters) if (u->server->IsULine()) { - user->WriteNumeric(ERR_CHANOPRIVSNEEDED, c->name, "You may not kick a u-lined client"); + user->WriteNumeric(ERR_CHANOPRIVSNEEDED, c->name, "You may not kick a U-lined client"); return CMD_FAILURE; } } diff --git a/src/coremods/core_channel/cmd_names.cpp b/src/coremods/core_channel/cmd_names.cpp @@ -27,7 +27,7 @@ CommandNames::CommandNames(Module* parent) , privatemode(parent, "private") , invisiblemode(parent, "invisible") { - syntax = "{<channel>{,<channel>}}"; + syntax = "<channel>[,<channel>]+"; } /** Handle /NAMES diff --git a/src/coremods/core_channel/cmd_topic.cpp b/src/coremods/core_channel/cmd_topic.cpp @@ -29,7 +29,7 @@ CommandTopic::CommandTopic(Module* parent) , secretmode(parent, "secret") , topiclockmode(parent, "topiclock") { - syntax = "<channel> [<topic>]"; + syntax = "<channel> [:<topic>]"; Penalty = 2; } diff --git a/src/coremods/core_ison.cpp b/src/coremods/core_ison.cpp @@ -30,7 +30,7 @@ class CommandIson : public SplitCommand CommandIson(Module* parent) : SplitCommand(parent, "ISON", 1) { - syntax = "<nick> {nick}"; + syntax = "<nick> [<nick>]+"; } /** Handle command. * @param parameters The parameters to the command diff --git a/src/coremods/core_message.cpp b/src/coremods/core_message.cpp @@ -303,7 +303,7 @@ class CommandMessage : public Command , moderatedmode(parent, "moderated") , noextmsgmode(parent, "noextmsg") { - syntax = "<target>{,<target>} <message>"; + syntax = "<target>[,<target>]+ :<message>"; } /** Handle command. @@ -357,7 +357,7 @@ class CommandSQuery : public SplitCommand CommandSQuery(Module* Creator) : SplitCommand(Creator, "SQUERY", 2, 2) { - syntax = "<service> <message>"; + syntax = "<service> :<message>"; } CmdResult HandleLocal(LocalUser* user, const Params& parameters) CXX11_OVERRIDE @@ -398,7 +398,7 @@ class CommandSQuery : public SplitCommand if (!FirePreEvents(user, msgtarget, msgdetails)) return CMD_FAILURE; - // The SQUERY command targets a service on a u-lined server. This can never + // The SQUERY command targets a service on a U-lined server. This can never // be on the server local to the source so we don't need to do any routing // logic and can forward it as a PRIVMSG. diff --git a/src/coremods/core_oper/cmd_die.cpp b/src/coremods/core_oper/cmd_die.cpp @@ -27,7 +27,7 @@ CommandDie::CommandDie(Module* parent, std::string& hashref) , hash(hashref) { flags_needed = 'o'; - syntax = "<server>"; + syntax = "<servername>"; } void DieRestart::SendError(const std::string& message) diff --git a/src/coremods/core_oper/cmd_kill.cpp b/src/coremods/core_oper/cmd_kill.cpp @@ -27,7 +27,7 @@ CommandKill::CommandKill(Module* parent) , protoev(parent, name) { flags_needed = 'o'; - syntax = "<nickname> <reason>"; + syntax = "<nick>[,<nick>]+ :<reason>"; TRANSLATE2(TR_CUSTOM, TR_CUSTOM); } diff --git a/src/coremods/core_oper/cmd_restart.cpp b/src/coremods/core_oper/cmd_restart.cpp @@ -26,7 +26,7 @@ CommandRestart::CommandRestart(Module* parent, std::string& hashref) , hash(hashref) { flags_needed = 'o'; - syntax = "<server>"; + syntax = "<servername>"; } CmdResult CommandRestart::Handle(User* user, const Params& parameters) diff --git a/src/coremods/core_stats.cpp b/src/coremods/core_stats.cpp @@ -44,7 +44,7 @@ class CommandStats : public Command , statsevprov(Creator, "event/stats") { allow_empty_last_param = false; - syntax = "<stats-symbol> [<servername>]"; + syntax = "<symbol> [<servername>]"; } /** Handle command. diff --git a/src/coremods/core_stub.cpp b/src/coremods/core_stub.cpp @@ -40,7 +40,7 @@ class CommandConnect : public Command : Command(parent, "CONNECT", 1) { flags_needed = 'o'; - syntax = "<servername>"; + syntax = "<servermask>"; } /** Handle command. @@ -126,7 +126,7 @@ class CommandSquit : public Command : Command(parent, "SQUIT", 1, 2) { flags_needed = 'o'; - syntax = "<servername>"; + syntax = "<servermask>"; } /** Handle command. diff --git a/src/coremods/core_user/cmd_away.cpp b/src/coremods/core_user/cmd_away.cpp @@ -33,7 +33,7 @@ CommandAway::CommandAway(Module* parent) , awayevprov(parent) { allow_empty_last_param = false; - syntax = "[<message>]"; + syntax = "[:<message>]"; } /** Handle /AWAY diff --git a/src/coremods/core_user/cmd_mode.cpp b/src/coremods/core_user/cmd_mode.cpp @@ -26,7 +26,7 @@ CommandMode::CommandMode(Module* parent) : Command(parent, "MODE", 1) , seq(0) { - syntax = "<target> <modes> {<mode-parameters>}"; + syntax = "<target> [[(+|-)]<modes> [<mode-parameters>]]"; memset(&sent, 0, sizeof(sent)); } diff --git a/src/coremods/core_user/cmd_part.cpp b/src/coremods/core_user/cmd_part.cpp @@ -25,7 +25,7 @@ CommandPart::CommandPart(Module* parent) : Command(parent, "PART", 1, 2) { Penalty = 5; - syntax = "<channel>{,<channel>} [<reason>]"; + syntax = "<channel>[,<channel>]+ [:<reason>]"; } CmdResult CommandPart::Handle(User* user, const Params& parameters) diff --git a/src/coremods/core_user/cmd_quit.cpp b/src/coremods/core_user/cmd_quit.cpp @@ -26,7 +26,7 @@ CommandQuit::CommandQuit(Module* parent) , operquit("operquit", ExtensionItem::EXT_USER, parent) { works_before_reg = true; - syntax = "[<message>]"; + syntax = "[:<message>]"; } CmdResult CommandQuit::Handle(User* user, const Params& parameters) diff --git a/src/coremods/core_user/cmd_user.cpp b/src/coremods/core_user/cmd_user.cpp @@ -33,7 +33,7 @@ CommandUser::CommandUser(Module* parent) allow_empty_last_param = false; works_before_reg = true; Penalty = 0; - syntax = "<username> <localhost> <remotehost> <realname>"; + syntax = "<username> <unused> <unused> :<realname>"; } CmdResult CommandUser::HandleLocal(LocalUser* user, const Params& parameters) diff --git a/src/coremods/core_userhost.cpp b/src/coremods/core_userhost.cpp @@ -33,7 +33,7 @@ class CommandUserhost : public Command : Command(parent,"USERHOST", 1) , hideopermode(parent, "hideoper") { - syntax = "<nick> [<nick> ...]"; + syntax = "<nick> [<nick>]+"; } /** Handle command. * @param parameters The parameters to the command diff --git a/src/coremods/core_wallops.cpp b/src/coremods/core_wallops.cpp @@ -36,7 +36,7 @@ class CommandWallops : public Command , protoevprov(parent, name) { flags_needed = 'o'; - syntax = "<any-text>"; + syntax = ":<message>"; } /** Handle command. diff --git a/src/coremods/core_who.cpp b/src/coremods/core_who.cpp @@ -143,7 +143,7 @@ class CommandWho : public SplitCommand , whoevprov(parent, "event/who") { allow_empty_last_param = false; - syntax = "<server>|<nickname>|<channel>|<realname>|<host>|0 [[Aafhilmnoprstux][%acdfhilnorstu] <server>|<nickname>|<channel>|<realname>|<host>|0]"; + syntax = "<server>|<nick>|<channel>|<realname>|<host>|0 [[Aafhilmnoprstux][%acdfhilnorstu] <server>|<nick>|<channel>|<realname>|<host>|0]"; } /** Sends a WHO reply to a user. */ diff --git a/src/coremods/core_whois.cpp b/src/coremods/core_whois.cpp @@ -107,7 +107,7 @@ class CommandWhois : public SplitCommand , lineevprov(parent, "event/whoisline") { Penalty = 2; - syntax = "<nick>{,<nick>}"; + syntax = "[<servername>] <nick>[,<nick>]+"; } /** Handle command. diff --git a/src/coremods/core_whowas.cpp b/src/coremods/core_whowas.cpp @@ -37,7 +37,7 @@ enum CommandWhowas::CommandWhowas( Module* parent) : Command(parent, "WHOWAS", 1) { - syntax = "<nick>{,<nick>}"; + syntax = "<nick>"; Penalty = 2; } diff --git a/src/coremods/core_xline/cmd_eline.cpp b/src/coremods/core_xline/cmd_eline.cpp @@ -26,7 +26,7 @@ CommandEline::CommandEline(Module* parent) : Command(parent, "ELINE", 1, 3) { flags_needed = 'o'; - syntax = "<ident@host> [<duration> :<reason>]"; + syntax = "<user@host> [<duration> :<reason>]"; } /** Handle /ELINE diff --git a/src/coremods/core_xline/cmd_gline.cpp b/src/coremods/core_xline/cmd_gline.cpp @@ -26,7 +26,7 @@ CommandGline::CommandGline(Module* parent) : Command(parent, "GLINE", 1, 3) { flags_needed = 'o'; - syntax = "<ident@host> [<duration> :<reason>]"; + syntax = "<user@host> [<duration> :<reason>]"; } /** Handle /GLINE diff --git a/src/coremods/core_xline/cmd_kline.cpp b/src/coremods/core_xline/cmd_kline.cpp @@ -26,7 +26,7 @@ CommandKline::CommandKline(Module* parent) : Command(parent, "KLINE", 1, 3) { flags_needed = 'o'; - syntax = "<ident@host> [<duration> :<reason>]"; + syntax = "<user@host> [<duration> :<reason>]"; } /** Handle /KLINE diff --git a/src/coremods/core_xline/cmd_qline.cpp b/src/coremods/core_xline/cmd_qline.cpp @@ -27,7 +27,7 @@ CommandQline::CommandQline(Module* parent) : Command(parent, "QLINE", 1, 3) { flags_needed = 'o'; - syntax = "<nick> [<duration> :<reason>]"; + syntax = "<nickmask> [<duration> :<reason>]"; } CmdResult CommandQline::Handle(User* user, const Params& parameters) diff --git a/src/mode.cpp b/src/mode.cpp @@ -592,13 +592,13 @@ void ModeParser::AddMode(ModeHandler* mh) PrefixMode* otherpm = FindPrefix(pm->GetPrefix()); if (otherpm) - throw ModuleException(InspIRCd::Format("Mode prefix for %s already by used by %s from %s: %c", + throw ModuleException(InspIRCd::Format("Mode prefix for %s already used by %s from %s: %c", mh->name.c_str(), otherpm->name.c_str(), otherpm->creator->ModuleSourceFile.c_str(), pm->GetPrefix())); } ModeHandler*& slot = modehandlers[mh->GetModeType()][mh->GetModeChar()-65]; if (slot) - throw ModuleException(InspIRCd::Format("Mode letter for %s already by used by %s from %s: %c", + throw ModuleException(InspIRCd::Format("Mode letter for %s already used by %s from %s: %c", mh->name.c_str(), slot->name.c_str(), slot->creator->ModuleSourceFile.c_str(), mh->GetModeChar())); // The mode needs an id if it is either a user mode, a simple mode (flag) or a parameter mode. diff --git a/src/modules/m_callerid.cpp b/src/modules/m_callerid.cpp @@ -179,7 +179,7 @@ public: extInfo(Creator) { allow_empty_last_param = false; - syntax = "*|(+|-)<nick>[,(+|-)<nick> ...]"; + syntax = "*|(+|-)<nick>[,(+|-)<nick>]+"; TRANSLATE1(TR_CUSTOM); } @@ -189,7 +189,7 @@ public: if (parameter.find(',') != std::string::npos) return; - // Convert a [+|-]<nick> into a [-]<uuid> + // Convert a (+|-)<nick> into a [-]<uuid> ACCEPTAction action = GetTargetAndAction(parameter); if (!action.first) return; diff --git a/src/modules/m_cban.cpp b/src/modules/m_cban.cpp @@ -88,7 +88,7 @@ class CommandCBan : public Command public: CommandCBan(Module* Creator) : Command(Creator, "CBAN", 1, 3) { - flags_needed = 'o'; this->syntax = "<channel> [<duration> :<reason>]"; + flags_needed = 'o'; this->syntax = "<channel> [<duration> [:<reason>]]"; } CmdResult Handle(User* user, const Params& parameters) CXX11_OVERRIDE diff --git a/src/modules/m_cgiirc.cpp b/src/modules/m_cgiirc.cpp @@ -132,7 +132,7 @@ class CommandWebIRC : public SplitCommand { allow_empty_last_param = false; works_before_reg = true; - this->syntax = "<password> <gateway> <hostname> <ip> [flags]"; + this->syntax = "<password> <gateway> <hostname> <ip> [<flags>]"; } CmdResult HandleLocal(LocalUser* user, const Params& parameters) CXX11_OVERRIDE diff --git a/src/modules/m_check.cpp b/src/modules/m_check.cpp @@ -146,7 +146,7 @@ class CommandCheck : public Command : Command(parent,"CHECK", 1) , snomaskmode(parent, "snomask") { - flags_needed = 'o'; syntax = "<nickname>|<ip>|<hostmask>|<channel> <server>"; + flags_needed = 'o'; syntax = "<nick>|<ipmask>|<hostmask>|<channel> [<servername>]"; } CmdResult Handle(User* user, const Params& parameters) CXX11_OVERRIDE diff --git a/src/modules/m_chghost.cpp b/src/modules/m_chghost.cpp @@ -33,7 +33,7 @@ class CommandChghost : public Command { allow_empty_last_param = false; flags_needed = 'o'; - syntax = "<nick> <newhost>"; + syntax = "<nick> <host>"; TRANSLATE2(TR_NICK, TR_TEXT); } diff --git a/src/modules/m_chgident.cpp b/src/modules/m_chgident.cpp @@ -31,7 +31,7 @@ class CommandChgident : public Command { allow_empty_last_param = false; flags_needed = 'o'; - syntax = "<nick> <newident>"; + syntax = "<nick> <ident>"; TRANSLATE2(TR_NICK, TR_TEXT); } diff --git a/src/modules/m_chgname.cpp b/src/modules/m_chgname.cpp @@ -29,7 +29,7 @@ class CommandChgname : public Command { allow_empty_last_param = false; flags_needed = 'o'; - syntax = "<nick> <new real name>"; + syntax = "<nick> :<realname>"; TRANSLATE2(TR_NICK, TR_TEXT); } diff --git a/src/modules/m_clearchan.cpp b/src/modules/m_clearchan.cpp @@ -28,7 +28,7 @@ class CommandClearChan : public Command CommandClearChan(Module* Creator) : Command(Creator, "CLEARCHAN", 1, 3) { - syntax = "<channel> [<KILL|KICK|G|Z>] [<reason>]"; + syntax = "<channel> [KILL|KICK|G|Z] [:<reason>]"; flags_needed = 'o'; // Stop the linking mod from forwarding ENCAP'd CLEARCHAN commands, see below why diff --git a/src/modules/m_customtitle.cpp b/src/modules/m_customtitle.cpp @@ -74,7 +74,7 @@ class CommandTitle : public Command CommandTitle(Module* Creator) : Command(Creator,"TITLE", 2), ctitle("ctitle", ExtensionItem::EXT_USER, Creator) { - syntax = "<user> <password>"; + syntax = "<username> <password>"; } CmdResult Handle(User* user, const Params& parameters) CXX11_OVERRIDE diff --git a/src/modules/m_cycle.cpp b/src/modules/m_cycle.cpp @@ -28,7 +28,7 @@ class CommandCycle : public SplitCommand CommandCycle(Module* Creator) : SplitCommand(Creator, "CYCLE", 1) { - Penalty = 3; syntax = "<channel> :[reason]"; + Penalty = 3; syntax = "<channel> [:<reason>]"; } CmdResult HandleLocal(LocalUser* user, const Params& parameters) CXX11_OVERRIDE diff --git a/src/modules/m_dccallow.cpp b/src/modules/m_dccallow.cpp @@ -54,7 +54,7 @@ static const char* const helptext[] = "Brain would then be able to send you files. They would have to", "resend the file again if the server gave them an error message", "before you added them to your DCCALLOW list.", - "DCCALLOW entries will be temporary by default, if you want to add", + "DCCALLOW entries will be temporary. If you want to add", "them to your DCCALLOW list until you leave IRC, type:", "/DCCALLOW +Brain 0", "To remove the user from your DCCALLOW list, type:", @@ -63,7 +63,7 @@ static const char* const helptext[] = "/DCCALLOW LIST", "NOTE: If the user leaves IRC or changes their nickname", " they will be removed from your DCCALLOW list.", - " your DCCALLOW list will be deleted when you leave IRC." + " Your DCCALLOW list will be deleted when you leave IRC." }; class BannedFileList @@ -117,7 +117,7 @@ class CommandDccallow : public Command CmdResult Handle(User* user, const Params& parameters) CXX11_OVERRIDE { - /* syntax: DCCALLOW [+|-]<nick> (<time>) */ + /* syntax: DCCALLOW [(+|-)<nick> [<time>]]|[LIST|HELP] */ if (!parameters.size()) { // display current DCCALLOW list diff --git a/src/modules/m_globalload.cpp b/src/modules/m_globalload.cpp @@ -32,7 +32,7 @@ class CommandGloadmodule : public Command CommandGloadmodule(Module* Creator) : Command(Creator,"GLOADMODULE", 1) { flags_needed = 'o'; - syntax = "<modulename> [servermask]"; + syntax = "<modulename> [<servermask>]"; } CmdResult Handle(User* user, const Params& parameters) CXX11_OVERRIDE @@ -71,7 +71,7 @@ class CommandGunloadmodule : public Command CommandGunloadmodule(Module* Creator) : Command(Creator,"GUNLOADMODULE", 1) { flags_needed = 'o'; - syntax = "<modulename> [servermask]"; + syntax = "<modulename> [<servermask>]"; } CmdResult Handle(User* user, const Params& parameters) CXX11_OVERRIDE @@ -122,7 +122,7 @@ class CommandGreloadmodule : public Command public: CommandGreloadmodule(Module* Creator) : Command(Creator, "GRELOADMODULE", 1) { - flags_needed = 'o'; syntax = "<modulename> [servermask]"; + flags_needed = 'o'; syntax = "<modulename> [<servermask>]"; } CmdResult Handle(User* user, const Params& parameters) CXX11_OVERRIDE diff --git a/src/modules/m_globops.cpp b/src/modules/m_globops.cpp @@ -30,7 +30,7 @@ class CommandGlobops : public Command public: CommandGlobops(Module* Creator) : Command(Creator,"GLOBOPS", 1,1) { - flags_needed = 'o'; syntax = "<any-text>"; + flags_needed = 'o'; syntax = ":<message>"; } CmdResult Handle(User* user, const Params& parameters) CXX11_OVERRIDE diff --git a/src/modules/m_knock.cpp b/src/modules/m_knock.cpp @@ -46,7 +46,7 @@ class CommandKnock : public Command , noknockmode(Noknockmode) , inviteonlymode(Creator, "inviteonly") { - syntax = "<channel> <reason>"; + syntax = "<channel> :<reason>"; Penalty = 5; } diff --git a/src/modules/m_modenotice.cpp b/src/modules/m_modenotice.cpp @@ -24,7 +24,7 @@ class CommandModeNotice : public Command public: CommandModeNotice(Module* parent) : Command(parent,"MODENOTICE",2,2) { - syntax = "<modes> <message>"; + syntax = "<modeletters> :<message>"; flags_needed = 'o'; } diff --git a/src/modules/m_monitor.cpp b/src/modules/m_monitor.cpp @@ -316,7 +316,7 @@ class CommandMonitor : public SplitCommand { Penalty = 2; allow_empty_last_param = false; - syntax = "[C|L|S|+ <nick1>[,<nick2>]|- <nick1>[,<nick2>]"; + syntax = "C|L|S|(+|-) <nick>[,<nick>]+"; } CmdResult HandleLocal(LocalUser* user, const Params& parameters) CXX11_OVERRIDE diff --git a/src/modules/m_namedmodes.cpp b/src/modules/m_namedmodes.cpp @@ -56,7 +56,7 @@ class CommandProp : public SplitCommand CommandProp(Module* parent) : SplitCommand(parent, "PROP", 1) { - syntax = "<user|channel> {[+-]<mode> [<value>]}*"; + syntax = "<channel> [[(+|-)]<mode> [<value>]]"; } CmdResult HandleLocal(LocalUser* src, const Params& parameters) CXX11_OVERRIDE diff --git a/src/modules/m_nicklock.cpp b/src/modules/m_nicklock.cpp @@ -40,7 +40,7 @@ class CommandNicklock : public Command locked(ext) { flags_needed = 'o'; - syntax = "<oldnick> <newnick>"; + syntax = "<nick> <newnick>"; TRANSLATE2(TR_NICK, TR_TEXT); } @@ -100,7 +100,7 @@ class CommandNickunlock : public Command locked(ext) { flags_needed = 'o'; - syntax = "<locked-nick>"; + syntax = "<nick>"; TRANSLATE1(TR_NICK); } diff --git a/src/modules/m_password_hash.cpp b/src/modules/m_password_hash.cpp @@ -28,7 +28,7 @@ class CommandMkpasswd : public Command public: CommandMkpasswd(Module* Creator) : Command(Creator, "MKPASSWD", 2) { - syntax = "<hashtype> <any-text>"; + syntax = "<hashtype> <plaintext>"; Penalty = 5; } diff --git a/src/modules/m_remove.cpp b/src/modules/m_remove.cpp @@ -165,7 +165,7 @@ class CommandRemove : public RemoveBase CommandRemove(Module* Creator, bool& snk, ChanModeReference& nkm) : RemoveBase(Creator, snk, nkm, "REMOVE") { - syntax = "<channel> <nick> [<reason>]"; + syntax = "<channel> <nick> [:<reason>]"; TRANSLATE3(TR_NICK, TR_TEXT, TR_TEXT); } @@ -183,7 +183,7 @@ class CommandFpart : public RemoveBase CommandFpart(Module* Creator, bool& snk, ChanModeReference& nkm) : RemoveBase(Creator, snk, nkm, "FPART") { - syntax = "<channel> <nick> [<reason>]"; + syntax = "<channel> <nick> [:<reason>]"; TRANSLATE3(TR_TEXT, TR_NICK, TR_TEXT); } diff --git a/src/modules/m_repeat.cpp b/src/modules/m_repeat.cpp @@ -141,14 +141,14 @@ class RepeatMode : public ParamMode<RepeatMode, SimpleExtItem<ChannelSettings> > if (!ParseSettings(source, parameter, settings)) { source->WriteNumeric(Numerics::InvalidModeParameter(channel, this, parameter, - "Invalid repeat syntax. Syntax is {[~*]}[lines]:[time]{:[difference]}{:[backlog]}.")); + "Invalid repeat syntax. Syntax is: [~|*]<lines>:<sec>[:<difference>][:<backlog>]")); return MODEACTION_DENY; } if ((settings.Backlog > 0) && (settings.Lines > settings.Backlog)) { source->WriteNumeric(Numerics::InvalidModeParameter(channel, this, parameter, - "Invalid repeat syntax. You can't set needed lines higher than backlog.")); + "Invalid repeat syntax. You can't set lines higher than backlog.")); return MODEACTION_DENY; } @@ -319,7 +319,7 @@ class RepeatMode : public ParamMode<RepeatMode, SimpleExtItem<ChannelSettings> > if (ms.MaxSecs && settings.Seconds > ms.MaxSecs) { source->WriteNumeric(Numerics::InvalidModeParameter(channel, this, parameter, InspIRCd::Format( - "Invalid repeat parameter. The seconds you specified is too great. Maximum allowed is %u.", ms.MaxSecs))); + "Invalid repeat parameter. The seconds you specified are too great. Maximum allowed is %u.", ms.MaxSecs))); return false; } diff --git a/src/modules/m_rline.cpp b/src/modules/m_rline.cpp @@ -137,7 +137,7 @@ class CommandRLine : public Command public: CommandRLine(Module* Creator, RLineFactory& rlf) : Command(Creator,"RLINE", 1, 3), factory(rlf) { - flags_needed = 'o'; this->syntax = "<regex> [<rline-duration>] :<reason>"; + flags_needed = 'o'; this->syntax = "<regex> [<duration> :<reason>]"; } CmdResult Handle(User* user, const Params& parameters) CXX11_OVERRIDE diff --git a/src/modules/m_rmode.cpp b/src/modules/m_rmode.cpp @@ -28,7 +28,7 @@ class CommandRMode : public Command CommandRMode(Module* Creator) : Command(Creator,"RMODE", 2, 3) { allow_empty_last_param = false; - syntax = "<channel> <mode> [pattern]"; + syntax = "<channel> <mode> [<pattern>]"; } CmdResult Handle(User* user, const Params& parameters) CXX11_OVERRIDE diff --git a/src/modules/m_sajoin.cpp b/src/modules/m_sajoin.cpp @@ -29,7 +29,7 @@ class CommandSajoin : public Command CommandSajoin(Module* Creator) : Command(Creator,"SAJOIN", 1) { allow_empty_last_param = false; - flags_needed = 'o'; syntax = "[<nick>] <channel>[,<channel>]"; + flags_needed = 'o'; syntax = "[<nick>] <channel>[,<channel>]+"; TRANSLATE2(TR_NICK, TR_TEXT); } @@ -53,7 +53,7 @@ class CommandSajoin : public Command if (dest->server->IsULine()) { - user->WriteNumeric(ERR_NOPRIVILEGES, "Cannot use an SA command on a u-lined client"); + user->WriteNumeric(ERR_NOPRIVILEGES, "Cannot use an SA command on a U-lined client"); return CMD_FAILURE; } if (IS_LOCAL(user) && !ServerInstance->IsChannel(channel)) diff --git a/src/modules/m_sakick.cpp b/src/modules/m_sakick.cpp @@ -27,7 +27,7 @@ class CommandSakick : public Command public: CommandSakick(Module* Creator) : Command(Creator,"SAKICK", 2, 3) { - flags_needed = 'o'; syntax = "<channel> <nick> [reason]"; + flags_needed = 'o'; syntax = "<channel> <nick> [:<reason>]"; TRANSLATE3(TR_TEXT, TR_NICK, TR_TEXT); } @@ -42,7 +42,7 @@ class CommandSakick : public Command if (dest->server->IsULine()) { - user->WriteNumeric(ERR_NOPRIVILEGES, "Cannot use an SA command on a u-lined client"); + user->WriteNumeric(ERR_NOPRIVILEGES, "Cannot use an SA command on a U-lined client"); return CMD_FAILURE; } diff --git a/src/modules/m_samode.cpp b/src/modules/m_samode.cpp @@ -33,7 +33,7 @@ class CommandSamode : public Command CommandSamode(Module* Creator) : Command(Creator,"SAMODE", 2) { allow_empty_last_param = false; - flags_needed = 'o'; syntax = "<target> <modes> {<mode-parameters>}"; + flags_needed = 'o'; syntax = "<target> (+|-)<modes> [<mode-parameters>]"; active = false; } diff --git a/src/modules/m_sanick.cpp b/src/modules/m_sanick.cpp @@ -29,7 +29,7 @@ class CommandSanick : public Command CommandSanick(Module* Creator) : Command(Creator,"SANICK", 2) { allow_empty_last_param = false; - flags_needed = 'o'; syntax = "<nick> <new-nick>"; + flags_needed = 'o'; syntax = "<nick> <newnick>"; TRANSLATE2(TR_NICK, TR_TEXT); } @@ -42,7 +42,7 @@ class CommandSanick : public Command { if (target && target->server->IsULine()) { - user->WriteNumeric(ERR_NOPRIVILEGES, "Cannot use an SA command on a u-lined client"); + user->WriteNumeric(ERR_NOPRIVILEGES, "Cannot use an SA command on a U-lined client"); return CMD_FAILURE; } diff --git a/src/modules/m_sapart.cpp b/src/modules/m_sapart.cpp @@ -28,7 +28,7 @@ class CommandSapart : public Command public: CommandSapart(Module* Creator) : Command(Creator,"SAPART", 2, 3) { - flags_needed = 'o'; syntax = "<nick> <channel>[,<channel>] [reason]"; + flags_needed = 'o'; syntax = "<nick> <channel>[,<channel>]+ [:<reason>]"; TRANSLATE3(TR_NICK, TR_TEXT, TR_TEXT); } @@ -48,7 +48,7 @@ class CommandSapart : public Command if (dest->server->IsULine()) { - user->WriteNumeric(ERR_NOPRIVILEGES, "Cannot use an SA command on a u-lined client"); + user->WriteNumeric(ERR_NOPRIVILEGES, "Cannot use an SA command on a U-lined client"); return CMD_FAILURE; } diff --git a/src/modules/m_saquit.cpp b/src/modules/m_saquit.cpp @@ -28,7 +28,7 @@ class CommandSaquit : public Command public: CommandSaquit(Module* Creator) : Command(Creator, "SAQUIT", 2, 2) { - flags_needed = 'o'; syntax = "<nick> <reason>"; + flags_needed = 'o'; syntax = "<nick> :<reason>"; TRANSLATE2(TR_NICK, TR_TEXT); } @@ -39,7 +39,7 @@ class CommandSaquit : public Command { if (dest->server->IsULine()) { - user->WriteNumeric(ERR_NOPRIVILEGES, "Cannot use an SA command on a u-lined client"); + user->WriteNumeric(ERR_NOPRIVILEGES, "Cannot use an SA command on a U-lined client"); return CMD_FAILURE; } diff --git a/src/modules/m_satopic.cpp b/src/modules/m_satopic.cpp @@ -26,7 +26,7 @@ class CommandSATopic : public Command public: CommandSATopic(Module* Creator) : Command(Creator,"SATOPIC", 2, 2) { - flags_needed = 'o'; syntax = "<target> <topic>"; + flags_needed = 'o'; syntax = "<channel> :<topic>"; } CmdResult Handle(User* user, const Params& parameters) CXX11_OVERRIDE diff --git a/src/modules/m_sethost.cpp b/src/modules/m_sethost.cpp @@ -32,7 +32,7 @@ class CommandSethost : public Command : Command(Creator,"SETHOST", 1) { allow_empty_last_param = false; - flags_needed = 'o'; syntax = "<new-hostname>"; + flags_needed = 'o'; syntax = "<host>"; } CmdResult Handle(User* user, const Params& parameters) CXX11_OVERRIDE diff --git a/src/modules/m_setident.cpp b/src/modules/m_setident.cpp @@ -30,7 +30,7 @@ class CommandSetident : public Command CommandSetident(Module* Creator) : Command(Creator,"SETIDENT", 1) { allow_empty_last_param = false; - flags_needed = 'o'; syntax = "<new-ident>"; + flags_needed = 'o'; syntax = "<ident>"; } CmdResult Handle(User* user, const Params& parameters) CXX11_OVERRIDE diff --git a/src/modules/m_setname.cpp b/src/modules/m_setname.cpp @@ -30,7 +30,7 @@ class CommandSetname : public Command CommandSetname(Module* Creator) : Command(Creator,"SETNAME", 1, 1) { allow_empty_last_param = false; - syntax = "<new real name>"; + syntax = ":<realname>"; } CmdResult Handle(User* user, const Params& parameters) CXX11_OVERRIDE diff --git a/src/modules/m_shun.cpp b/src/modules/m_shun.cpp @@ -53,7 +53,7 @@ class CommandShun : public Command public: CommandShun(Module* Creator) : Command(Creator, "SHUN", 1, 3) { - flags_needed = 'o'; this->syntax = "<nick!user@hostmask> [<shun-duration>] :<reason>"; + flags_needed = 'o'; this->syntax = "<nick!user@host> [<duration> :<reason>]"; } CmdResult Handle(User* user, const Params& parameters) CXX11_OVERRIDE diff --git a/src/modules/m_silence.cpp b/src/modules/m_silence.cpp @@ -24,7 +24,7 @@ #include "inspircd.h" /* Improved drop-in replacement for the /SILENCE command - * syntax: /SILENCE [+|-]<mask> <p|c|i|n|t|a|x> as in <privatemessage|channelmessage|invites|privatenotice|channelnotice|all|exclude> + * syntax: /SILENCE [(+|-)<mask> [p|c|i|n|t|a|x]] as in [privatemessages|channelmessages|invites|privatenotices|channelnotices|all|exclude] * * example that blocks all except private messages * /SILENCE +*!*@* a @@ -74,7 +74,7 @@ class CommandSVSSilence : public Command public: CommandSVSSilence(Module* Creator) : Command(Creator,"SVSSILENCE", 2) { - syntax = "<target> {[+|-]<mask> <p|c|i|n|t|a|x>}"; + syntax = "<target> (+|-)<mask> [p|c|i|n|t|a|x]"; TRANSLATE3(TR_NICK, TR_TEXT, TR_TEXT); } @@ -119,7 +119,7 @@ class CommandSilence : public Command , ext("silence_list", ExtensionItem::EXT_USER, Creator) { allow_empty_last_param = false; - syntax = "{[+|-]<mask> <p|c|i|n|t|a|x>}"; + syntax = "[(+|-)<mask> [p|c|i|n|t|a|x]]"; } CmdResult Handle(User* user, const Params& parameters) CXX11_OVERRIDE diff --git a/src/modules/m_spanningtree/rsquit.cpp b/src/modules/m_spanningtree/rsquit.cpp @@ -29,7 +29,7 @@ CommandRSQuit::CommandRSQuit(Module* Creator) : Command(Creator, "RSQUIT", 1) { flags_needed = 'o'; - syntax = "<target-server-mask> [reason]"; + syntax = "<target-server-mask> [:<reason>]"; } CmdResult CommandRSQuit::Handle(User* user, const Params& parameters) diff --git a/src/modules/m_svshold.cpp b/src/modules/m_svshold.cpp @@ -96,7 +96,7 @@ class CommandSvshold : public Command public: CommandSvshold(Module* Creator) : Command(Creator, "SVSHOLD", 1) { - flags_needed = 'o'; this->syntax = "<nickname> [<duration> :<reason>]"; + flags_needed = 'o'; this->syntax = "<nick> [<duration> :<reason>]"; } CmdResult Handle(User* user, const Params& parameters) CXX11_OVERRIDE diff --git a/src/modules/m_userip.cpp b/src/modules/m_userip.cpp @@ -28,7 +28,7 @@ class CommandUserip : public Command public: CommandUserip(Module* Creator) : Command(Creator,"USERIP", 1) { - syntax = "<nick> [<nick> ...]"; + syntax = "<nick> [<nick>]+"; } CmdResult Handle(User* user, const Params& parameters) CXX11_OVERRIDE diff --git a/src/modules/m_watch.cpp b/src/modules/m_watch.cpp @@ -133,7 +133,7 @@ class CommandWatch : public SplitCommand , manager(managerref) { allow_empty_last_param = false; - syntax = "[<C|L|S|l|+<nick1>|-<nick>>]"; + syntax = "C|L|l|S|(+|-)<nick> [(+|-)<nick>]+"; } CmdResult HandleLocal(LocalUser* user, const Params& parameters) CXX11_OVERRIDE