mirror of
https://github.com/inspircd/inspircd.git
synced 2025-03-10 02:59:01 -04:00
Add <server:id> - this is optional, as stated in the example conf,
and should only be set if you are getting collisions. The comment also points out that ids where either of the last two letters are numeric are reserved for services use (e.g. 0ZZ or 5CQ) git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@7917 e03df62e-2008-0410-955e-edbf42e46eb7
This commit is contained in:
parent
6b6db59d5f
commit
8c3a4a51ff
@ -49,11 +49,23 @@
|
||||
# <server name="server.name" #
|
||||
# description="Server Description" #
|
||||
# networkemail="Email address shown on g/k/z/q lines" #
|
||||
# id="serverid" #
|
||||
# network="MyNetwork"> #
|
||||
# #
|
||||
# The server ID is optional, and if omitted or set to 0, is auto- #
|
||||
# matically calculated from the server name and description. This is #
|
||||
# similar in behaviour to the server id on ircu and charybdis ircds. #
|
||||
# You should only need to set this manually if there is a collision #
|
||||
# between two server IDs on the network. The server ID must be #
|
||||
# between 1 and 999, if it is not, it will be wrapped to this range. #
|
||||
# There is a range of server IDs which are suffixed by two letters #
|
||||
# rather than two numbers, e.g. 1AA, 2FF, 3ZZ, which are reserved #
|
||||
# for use by non-inspircd servers such as services and stats servers.#
|
||||
# #
|
||||
|
||||
<server name="penguin.omega.org.za"
|
||||
description="Waddle World"
|
||||
id="0"
|
||||
network="Omega">
|
||||
|
||||
|
||||
|
@ -603,6 +603,13 @@ class CoreExport ServerConfig : public Extensible
|
||||
*/
|
||||
unsigned int OperMaxChans;
|
||||
|
||||
/** TS6-like server ID.
|
||||
* NOTE: 000...999 are usable for InspIRCd servers. This
|
||||
* makes code simpler. 0AA, 1BB etc with letters are reserved
|
||||
* for services use.
|
||||
*/
|
||||
int sid;
|
||||
|
||||
/** Construct a new ServerConfig
|
||||
*/
|
||||
ServerConfig(InspIRCd* Instance);
|
||||
|
@ -367,6 +367,18 @@ bool ValidateInvite(ServerConfig* conf, const char* tag, const char* value, Valu
|
||||
return true;
|
||||
}
|
||||
|
||||
bool ValidateSID(ServerConfig* conf, const char* tag, const char* value, ValueItem &data)
|
||||
{
|
||||
int sid = data.GetInteger();
|
||||
if ((sid > 999) || (sid < 0))
|
||||
{
|
||||
sid = sid % 1000;
|
||||
data.Set(sid);
|
||||
conf->GetInstance()->Log(DEFAULT,"WARNING: Server ID is less than 0 or greater than 999. Set to %d", sid);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool ValidateWhoWas(ServerConfig* conf, const char* tag, const char* value, ValueItem &data)
|
||||
{
|
||||
conf->WhoWasMaxKeep = conf->GetInstance()->Duration(data.GetString());
|
||||
@ -634,6 +646,7 @@ void ServerConfig::Read(bool bail, userrec* user)
|
||||
{"server", "name", "", new ValueContainerChar (this->ServerName), DT_CHARPTR, ValidateServerName},
|
||||
{"server", "description", "Configure Me", new ValueContainerChar (this->ServerDesc), DT_CHARPTR, NoValidation},
|
||||
{"server", "network", "Network", new ValueContainerChar (this->Network), DT_CHARPTR, NoValidation},
|
||||
{"server", "id", "0", new ValueContainerInt (&this->sid), DT_INTEGER, ValidateSID},
|
||||
{"admin", "name", "", new ValueContainerChar (this->AdminName), DT_CHARPTR, NoValidation},
|
||||
{"admin", "email", "Mis@configu.red", new ValueContainerChar (this->AdminEmail), DT_CHARPTR, NoValidation},
|
||||
{"admin", "nick", "Misconfigured", new ValueContainerChar (this->AdminNick), DT_CHARPTR, NoValidation},
|
||||
|
@ -544,11 +544,20 @@ InspIRCd::InspIRCd(int argc, char** argv)
|
||||
|
||||
/* Generate SID */
|
||||
size_t sid = 0;
|
||||
for (const char* x = Config->ServerName; *x; ++x)
|
||||
sid = 5 * sid + *x;
|
||||
for (const char* y = Config->ServerDesc; *y; ++y)
|
||||
sid = 5 * sid + *y;
|
||||
sid = sid % 999;
|
||||
if (Config->sid)
|
||||
{
|
||||
sid = Config->sid;
|
||||
}
|
||||
else
|
||||
{
|
||||
for (const char* x = Config->ServerName; *x; ++x)
|
||||
sid = 5 * sid + *x;
|
||||
for (const char* y = Config->ServerDesc; *y; ++y)
|
||||
sid = 5 * sid + *y;
|
||||
sid = sid % 999;
|
||||
|
||||
Config->sid = sid;
|
||||
}
|
||||
current_uid[0] = sid / 100 + 48;
|
||||
current_uid[1] = ((sid / 10) % 10) + 48;
|
||||
current_uid[2] = sid % 10 + 48;
|
||||
|
@ -69,15 +69,13 @@ void InspIRCd::RehashServer()
|
||||
std::string InspIRCd::GetVersionString()
|
||||
{
|
||||
char versiondata[MAXBUF];
|
||||
char dnsengine[] = "singlethread-object";
|
||||
|
||||
if (*Config->CustomVersion)
|
||||
{
|
||||
snprintf(versiondata,MAXBUF,"%s %s :%s",VERSION,Config->ServerName,Config->CustomVersion);
|
||||
}
|
||||
else
|
||||
{
|
||||
snprintf(versiondata,MAXBUF,"%s %s :%s [FLAGS=%s,%s,%s]",VERSION,Config->ServerName,SYSTEM,REVISION,SE->GetName().c_str(),dnsengine);
|
||||
snprintf(versiondata,MAXBUF,"%s %s :%s [FLAGS=%s,%s,%d]",VERSION,Config->ServerName,SYSTEM,REVISION,SE->GetName().c_str(),Config->sid);
|
||||
}
|
||||
return versiondata;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user