User::User(InspIRCd* Instance, const std::string &uid) : ServerInstance(Instance)
{
- *host = 0;
server = (char*)Instance->FindServerNamePtr(Instance->Config->ServerName);
reset_due = ServerInstance->Time();
age = ServerInstance->Time();
memset(snomasks,0,sizeof(snomasks));
if (uid.empty())
- uuid.assign(Instance->GetUID(), 0, UUID_LENGTH);
+ uuid.assign(Instance->GetUID(), 0, UUID_LENGTH - 1);
else
- uuid.assign(uid, 0, UUID_LENGTH);
+ uuid.assign(uid, 0, UUID_LENGTH - 1);
ServerInstance->Logs->Log("USERS", DEBUG,"New UUID for user: %s (%s)", uuid.c_str(), uid.empty() ? "allocated new" : "used remote");
for(const char* n = ident.c_str(); *n; n++)
*t++ = *n;
*t++ = '@';
- for(const char* n = host; *n; n++)
+ for(const char* n = host.c_str(); *n; n++)
*t++ = *n;
*t = 0;
for(const char* n = ident.c_str(); *n; n++)
*t++ = *n;
*t++ = '@';
- for(char* n = host; *n; n++)
+ for(const char* n = host.c_str(); *n; n++)
*t++ = *n;
*t = 0;
this->modes[UM_OPERATOR] = 1;
this->WriteServ("MODE %s :+o", this->nick.c_str());
FOREACH_MOD(I_OnOper, OnOper(this, opertype));
- ServerInstance->Logs->Log("OPER", DEFAULT, "%s!%s@%s opered as type: %s", this->nick.c_str(), this->ident.c_str(), this->host, opertype.c_str());
- this->oper.assign(opertype, 0, NICKMAX - 1);
+ ServerInstance->Logs->Log("OPER", DEFAULT, "%s!%s@%s opered as type: %s", this->nick.c_str(), this->ident.c_str(), this->host.c_str(), opertype.c_str());
+ this->oper.assign(opertype, 0, 512);
ServerInstance->Users->all_opers.push_back(this);
opertype_t::iterator iter_opertype = ServerInstance->Config->opertypes.find(this->oper.c_str());
CheckLines();
this->WriteServ("NOTICE Auth :Welcome to \002%s\002!",ServerInstance->Config->Network);
- this->WriteNumeric(001, "%s :Welcome to the %s IRC Network %s!%s@%s",this->nick.c_str(), ServerInstance->Config->Network, this->nick.c_str(), this->ident.c_str(), this->host);
+ this->WriteNumeric(001, "%s :Welcome to the %s IRC Network %s!%s@%s",this->nick.c_str(), ServerInstance->Config->Network, this->nick.c_str(), this->ident.c_str(), this->host.c_str());
this->WriteNumeric(002, "%s :Your host is %s, running version InspIRCd-1.2",this->nick.c_str(),ServerInstance->Config->ServerName);
this->WriteNumeric(003, "%s :This server was created %s %s", this->nick.c_str(), __TIME__, __DATE__);
this->WriteNumeric(004, "%s %s InspIRCd-1.2 %s %s %s", this->nick.c_str(), ServerInstance->Config->ServerName, ServerInstance->Modes->UserModeList().c_str(), ServerInstance->Modes->ChannelModeList().c_str(), ServerInstance->Modes->ParaModeList().c_str());
/* Trigger LUSERS output, give modules a chance too */
int MOD_RESULT = 0;
- FOREACH_RESULT(I_OnPreCommand, OnPreCommand("LUSERS", std::vector<std::string>(), this, true, "LUSERS"));
+ std::string command("LUSERS");
+ std::vector<std::string> parameters;
+ FOREACH_RESULT(I_OnPreCommand, OnPreCommand(command, parameters, this, true, "LUSERS"));
if (!MOD_RESULT)
- ServerInstance->CallCommandHandler("LUSERS", std::vector<std::string>(), this);
+ ServerInstance->CallCommandHandler(command, parameters, this);
/*
* We don't set REG_ALL until triggering OnUserConnect, so some module events don't spew out stuff
this->registered = REG_ALL;
+ ServerInstance->PI->Introduce(this);
+
FOREACH_MOD(I_OnPostConnect,OnPostConnect(this));
- ServerInstance->SNO->WriteToSnoMask('c',"Client connecting on port %d: %s!%s@%s [%s] [%s]", this->GetPort(), this->nick.c_str(), this->ident.c_str(), this->host, this->GetIPString(), this->fullname.c_str());
+ ServerInstance->SNO->WriteToSnoMask('c',"Client connecting on port %d: %s!%s@%s [%s] [%s]", this->GetPort(), this->nick.c_str(), this->ident.c_str(), this->host.c_str(), this->GetIPString(), this->fullname.c_str());
ServerInstance->Logs->Log("BANCACHE", DEBUG, "BanCache: Adding NEGATIVE hit for %s", this->GetIPString());
ServerInstance->BanCache->AddHit(this->GetIPString(), "", "");
}
return false;
FOREACH_MOD(I_OnChangeName,OnChangeName(this,gecos));
}
- this->fullname.assign(gecos, 0, MAXGECOS+1);
+ this->fullname.assign(gecos, 0, ServerInstance->Config->Limits.MaxGecos);
return true;
}
bool User::ChangeDisplayedHost(const char* shost)
{
- if (!this->dhost.compare(shost))
+ if (dhost == shost)
return true;
if (IS_LOCAL(this))
{
for (UCListIter i = this->chans.begin(); i != this->chans.end(); i++)
{
- i->first->WriteAllExceptSender(this, false, 0, "JOIN %s", i->first->name);
+ i->first->WriteAllExceptSender(this, false, 0, "JOIN %s", i->first->name.c_str());
std::string n = this->ServerInstance->Modes->ModeString(this, i->first);
if (n.length() > 0)
- i->first->WriteAllExceptSender(this, true, 0, "MODE %s +%s", i->first->name, n.c_str());
+ i->first->WriteAllExceptSender(this, true, 0, "MODE %s +%s", i->first->name.c_str(), n.c_str());
}
}
if (this->ServerInstance->Config->CycleHosts)
this->WriteCommonExcept("%s","QUIT :Changing ident");
- this->ident.assign(newident, 0, IDENTMAX + 1);
+ this->ident.assign(newident, 0, ServerInstance->Config->Limits.IdentMax + 1);
this->InvalidateCache();
{
for (UCListIter i = this->chans.begin(); i != this->chans.end(); i++)
{
- i->first->WriteAllExceptSender(this, false, 0, "JOIN %s", i->first->name);
+ i->first->WriteAllExceptSender(this, false, 0, "JOIN %s", i->first->name.c_str());
std::string n = this->ServerInstance->Modes->ModeString(this, i->first);
if (n.length() > 0)
- i->first->WriteAllExceptSender(this, true, 0, "MODE %s +%s", i->first->name, n.c_str());
+ i->first->WriteAllExceptSender(this, true, 0, "MODE %s +%s", i->first->name.c_str(), n.c_str());
}
}