* THIS MUST MATCH THE ORDER OF DECLARATION OF THE FUNCTORS, e.g. the methods
* themselves within the class.
*/
- OperQuit("operquit", ExtensionItem::EXT_USER, NULL),
GenRandom(&HandleGenRandom),
IsChannel(&HandleIsChannel),
- IsNick(&HandleIsNick),
- IsIdent(&HandleIsIdent),
- OnCheckExemption(&HandleOnCheckExemption)
+ IsNick(&DefaultIsNick),
+ IsIdent(&HandleIsIdent)
{
ServerInstance = this;
- Extensions.Register(&OperQuit);
-
FailedPortList pl;
// Flag variables passed to getopt_long() later
int do_version = 0, do_nofork = 0, do_debug = 0,
/* Fall through to handle other weird values too */
std::cout << "Unknown parameter '" << argv[optind-1] << "'" << std::endl;
std::cout << "Usage: " << argv[0] << " [--nofork] [--nolog] [--debug] [--config <config>]" << std::endl <<
- std::string(static_cast<int>(8+strlen(argv[0])), ' ') << "[--runasroot] [--version]" << std::endl;
+ std::string(static_cast<size_t>(8+strlen(argv[0])), ' ') << "[--runasroot] [--version]" << std::endl;
Exit(EXIT_STATUS_ARGV);
break;
}
}
}
- std::cout << con_green << "InspIRCd - Internet Relay Chat Daemon" << con_reset << ", compiled on " __DATE__ " at " __TIME__ << std::endl;
+ std::cout << con_green << "InspIRCd - Internet Relay Chat Daemon" << con_reset << std::endl;
std::cout << "For contributors & authors: " << con_green << "See /INFO Output" << con_reset << std::endl;
#ifndef _WIN32
// Build ISupport as ModuleManager::LoadAll() does not do it
this->ISupport.Build();
- Config->ApplyDisabledCommands(Config->DisabledCommands);
+ Config->ApplyDisabledCommands();
if (!pl.empty())
{
int j = 1;
for (FailedPortList::iterator i = pl.begin(); i != pl.end(); i++, j++)
{
- std::cout << j << ".\tAddress: " << (i->first.empty() ? "<all>" : i->first) << " \tReason: " << i->second << std::endl;
+ std::cout << j << ".\tAddress: " << i->first.str() << " \tReason: " << strerror(i->second) << std::endl;
}
std::cout << std::endl << "Hint: Try using a public IP instead of blank or *" << std::endl;
QueryPerformanceFrequency(&stats.QPFrequency);
#endif
- Logs->Log("STARTUP", LOG_DEFAULT, "Startup complete as '%s'[%s], %d max open sockets", Config->ServerName.c_str(),Config->GetSID().c_str(), SocketEngine::GetMaxFds());
+ Logs->Log("STARTUP", LOG_DEFAULT, "Startup complete as '%s'[%s], %lu max open sockets", Config->ServerName.c_str(),Config->GetSID().c_str(), SocketEngine::GetMaxFds());
#ifndef _WIN32
- std::string SetUser = Config->ConfValue("security")->getString("runasuser");
- std::string SetGroup = Config->ConfValue("security")->getString("runasgroup");
+ ConfigTag* security = Config->ConfValue("security");
+
+ const std::string SetGroup = security->getString("runasgroup");
if (!SetGroup.empty())
{
- int ret;
-
- // setgroups
- ret = setgroups(0, NULL);
-
- if (ret == -1)
+ errno = 0;
+ if (setgroups(0, NULL) == -1)
{
this->Logs->Log("STARTUP", LOG_DEFAULT, "setgroups() failed (wtf?): %s", strerror(errno));
this->QuickExit(0);
}
- // setgid
- struct group *g;
-
- errno = 0;
- g = getgrnam(SetGroup.c_str());
-
+ struct group* g = getgrnam(SetGroup.c_str());
if (!g)
{
this->Logs->Log("STARTUP", LOG_DEFAULT, "getgrnam(%s) failed (wrong group?): %s", SetGroup.c_str(), strerror(errno));
this->QuickExit(0);
}
- ret = setgid(g->gr_gid);
-
- if (ret == -1)
+ if (setgid(g->gr_gid) == -1)
{
- this->Logs->Log("STARTUP", LOG_DEFAULT, "setgid() failed (wrong group?): %s", strerror(errno));
+ this->Logs->Log("STARTUP", LOG_DEFAULT, "setgid(%d) failed (wrong group?): %s", g->gr_gid, strerror(errno));
this->QuickExit(0);
}
}
+ const std::string SetUser = security->getString("runasuser");
if (!SetUser.empty())
{
- // setuid
- struct passwd *u;
-
errno = 0;
- u = getpwnam(SetUser.c_str());
-
+ struct passwd* u = getpwnam(SetUser.c_str());
if (!u)
{
this->Logs->Log("STARTUP", LOG_DEFAULT, "getpwnam(%s) failed (wrong user?): %s", SetUser.c_str(), strerror(errno));
this->QuickExit(0);
}
- int ret = setuid(u->pw_uid);
-
- if (ret == -1)
+ if (setuid(u->pw_uid) == -1)
{
- this->Logs->Log("STARTUP", LOG_DEFAULT, "setuid() failed (wrong user?): %s", strerror(errno));
+ this->Logs->Log("STARTUP", LOG_DEFAULT, "setuid(%d) failed (wrong user?): %s", u->pw_uid, strerror(errno));
this->QuickExit(0);
}
}
OLDTIME = TIME.tv_sec;
if ((TIME.tv_sec % 3600) == 0)
+ {
FOREACH_MOD(OnGarbageCollect, ());
+ // HACK: ELines are not expired properly at the moment but it can't be fixed as
+ // the 2.0 XLine system is a spaghetti nightmare. Instead we skip over expired
+ // ELines in XLineManager::CheckELines() and expire them here instead.
+ XLines->GetAll("E");
+ }
+
Timers.TickTimers(TIME.tv_sec);
Users->DoBackgroundUserStuff();