summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/inspircd.conf.example9
-rw-r--r--include/inspircd_io.h4
-rw-r--r--src/inspircd.cpp9
-rw-r--r--src/inspircd_io.cpp3
4 files changed, 23 insertions, 2 deletions
diff --git a/docs/inspircd.conf.example b/docs/inspircd.conf.example
index d1dee96ca..c7dd5994e 100644
--- a/docs/inspircd.conf.example
+++ b/docs/inspircd.conf.example
@@ -487,6 +487,14 @@
# oper-only independent of if they are in a module #
# or the core. #
# #
+# customversion - If you specify this configuration item, and it is #
+# not set to an empty value, then when a user does #
+# a /VERSION command on the ircd, this string will #
+# be displayed as the second portion of the output, #
+# replacing the system 'uname', compile flags and #
+# socket engine/dns engine names. You may use this #
+# to enhance security, or simply for vanity. #
+# #
<options prefixquit="Quit: "
loglevel="default"
@@ -496,6 +504,7 @@
somaxconn="128"
softlimit="128"
operonlystats="oclgkz"
+ customversion=""
allowhalfop="yes">
diff --git a/include/inspircd_io.h b/include/inspircd_io.h
index c8dd1a112..1e3b24fb6 100644
--- a/include/inspircd_io.h
+++ b/include/inspircd_io.h
@@ -278,6 +278,10 @@ class ServerConfig : public classbase
*/
std::string logpath;
+ /** Custom version string, which if defined can replace the system info in VERSION.
+ */
+ char CustomVersion[MAXBUF];
+
ServerConfig();
/** Clears the include stack in preperation for
diff --git a/src/inspircd.cpp b/src/inspircd.cpp
index 5ab7ac4db..b7324a167 100644
--- a/src/inspircd.cpp
+++ b/src/inspircd.cpp
@@ -225,7 +225,14 @@ std::string InspIRCd::GetVersionString()
#else
char dnsengine[] = "singlethread";
#endif
- snprintf(versiondata,MAXBUF,"%s Rev. %s %s :%s [FLAGS=%lu,%s,%s]",VERSION,GetRevision().c_str(),Config->ServerName,SYSTEM,(unsigned long)OPTIMISATION,SE->GetName().c_str(),dnsengine);
+ if (*Config->CustomVersion)
+ {
+ snprintf(versiondata,MAXBUF,"%s Rev. %s %s :%s",VERSION,GetRevision().c_str(),Config->ServerName,Config->CustomVersion);
+ }
+ else
+ {
+ snprintf(versiondata,MAXBUF,"%s Rev. %s %s :%s [FLAGS=%lu,%s,%s]",VERSION,GetRevision().c_str(),Config->ServerName,SYSTEM,(unsigned long)OPTIMISATION,SE->GetName().c_str(),dnsengine);
+ }
return versiondata;
}
diff --git a/src/inspircd_io.cpp b/src/inspircd_io.cpp
index 2307091c3..64b74a2b9 100644
--- a/src/inspircd_io.cpp
+++ b/src/inspircd_io.cpp
@@ -43,7 +43,7 @@ ServerConfig::ServerConfig()
this->ClearStack();
*ServerName = *Network = *ServerDesc = *AdminName = '\0';
*AdminEmail = *AdminNick = *diepass = *restartpass = '\0';
- *motd = *rules = *PrefixQuit = *DieValue = *DNSServer = '\0';
+ *CustomVersion = *motd = *rules = *PrefixQuit = *DieValue = *DNSServer = '\0';
*OperOnlyStats = *ModPath = *MyExecutable = *DisabledCommands = *PID = '\0';
log_file = NULL;
nofork = false;
@@ -159,6 +159,7 @@ void ServerConfig::Read(bool bail, userrec* user)
ConfValue("options","somaxconn",0,MCON,&Config->config_f);
ConfValue("options","softlimit",0,SLIMT,&Config->config_f);
ConfValue("options","operonlystats",0,Config->OperOnlyStats,&Config->config_f);
+ ConfValue("options","customversion",0,Config->CustomVersion,&Config->config_f);
Config->SoftLimit = atoi(SLIMT);
if ((Config->SoftLimit < 1) || (Config->SoftLimit > MAXCLIENTS))