diff options
-rw-r--r-- | docs/inspircd.conf.example | 12 | ||||
-rw-r--r-- | include/configreader.h | 4 | ||||
-rw-r--r-- | src/command_parse.cpp | 7 | ||||
-rw-r--r-- | src/configreader.cpp | 1 |
4 files changed, 23 insertions, 1 deletions
diff --git a/docs/inspircd.conf.example b/docs/inspircd.conf.example index 303ad0833..194c422d5 100644 --- a/docs/inspircd.conf.example +++ b/docs/inspircd.conf.example @@ -564,6 +564,16 @@ # temporarily copied before loading. If not defined, # # defaults to /tmp. # # # +# nouserdns - If set to 'yes', 'true' or '1', no user dns # +# lookups will be performed for connecting users. # +# this can save a lot of resources on very busy irc # +# servers. # +# # +# syntaxhints - If et to 'yes', 'true' or '1', when a user does # +# not give enough parameters for a command, a syntax # +# hint will be given (using the RPL_TEXT numeric) # +# as well as the standard ERR_NEEDMOREPARAMS. # +# # <options prefixquit="Quit: " loglevel="default" @@ -581,6 +591,8 @@ hidewhois="" flatlinks="no" hideulines="no" + nouserdns="no" + syntaxhints="no" allowhalfop="yes"> diff --git a/include/configreader.h b/include/configreader.h index c6775bc29..e2ff1c2c9 100644 --- a/include/configreader.h +++ b/include/configreader.h @@ -348,6 +348,10 @@ class ServerConfig : public Extensible */ bool NoUserDns; + /** If set to true, provide syntax hints for unknown commands + */ + bool SyntaxHints; + ServerConfig(); /** Clears the include stack in preperation for diff --git a/src/command_parse.cpp b/src/command_parse.cpp index a90b7e4e3..3f8e87989 100644 --- a/src/command_parse.cpp +++ b/src/command_parse.cpp @@ -252,7 +252,12 @@ void CommandParser::ProcessCommand(userrec *user, std::string &cmd) { /* If syntax is given, display this as the 461 reply */ if (cm->second->syntax.length()) - WriteServ(user->fd,"461 %s %s :Not enough parameters. Syntax: %s %s", user->nick, command.c_str(), cm->second->command.c_str(), cm->second->syntax.c_str()); + { + WriteServ(user->fd,"461 %s %s :Not enough parameters.", user->nick, command.c_str()) + /* Use RPL_TEXT for this */ + if (Config->SyntaxHints) + WriteServ(user->fd,"304 %s :SYNTAX %s %s", user->nick, cm->second->command.c_str(), cm->second->syntax.c_str()); + } else WriteServ(user->fd,"461 %s %s :Not enough parameters", user->nick, command.c_str()); return; diff --git a/src/configreader.cpp b/src/configreader.cpp index b5ea8a815..d776027e7 100644 --- a/src/configreader.cpp +++ b/src/configreader.cpp @@ -568,6 +568,7 @@ void ServerConfig::Read(bool bail, userrec* user) {"options", "operspywhois", &this->OperSpyWhois, DT_BOOLEAN, NoValidation}, {"options", "tempdir", &this->TempDir, DT_CHARPTR, ValidateTempDir}, {"options", "nouserdns", &this->NoUserDns, DT_BOOLEAN, NoValidation}, + {"options", "syntaxhints", &this->SyntaxHints, DT_BOOLEAN, NoValidation}, {"pid", "file", &this->PID, DT_CHARPTR, NoValidation}, {NULL} }; |