summaryrefslogtreecommitdiff
path: root/src/inspircd.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/inspircd.cpp')
-rw-r--r--src/inspircd.cpp90
1 files changed, 55 insertions, 35 deletions
diff --git a/src/inspircd.cpp b/src/inspircd.cpp
index 42047ce11..cb50595d2 100644
--- a/src/inspircd.cpp
+++ b/src/inspircd.cpp
@@ -45,9 +45,14 @@
#include <pwd.h> // setuid
#include <grp.h> // setgid
+#else
+ WORD g_wOriginalColors;
+ WORD g_wBackgroundColor;
+ HANDLE g_hStdout;
#endif
#include <fstream>
+#include <iostream>
#include "xline.h"
#include "bancache.h"
#include "socketengine.h"
@@ -242,7 +247,7 @@ void InspIRCd::QuickExit(int status)
bool InspIRCd::DaemonSeed()
{
#ifdef _WIN32
- printf_c("InspIRCd Process ID: \033[1;32m%lu\033[0m\n", GetCurrentProcessId());
+ std::cout << "InspIRCd Process ID: " << con_green << GetCurrentProcessId() << con_reset << std::endl;
return true;
#else
signal(SIGTERM, InspIRCd::QuickExit);
@@ -264,7 +269,7 @@ bool InspIRCd::DaemonSeed()
exit(0);
}
setsid ();
- printf("InspIRCd Process ID: \033[1;32m%lu\033[0m\n",(unsigned long)getpid());
+ std::cout << "InspIRCd Process ID: " << con_green << getpid() << con_reset << std::endl;
signal(SIGTERM, InspIRCd::SetSignal);
@@ -297,7 +302,7 @@ void InspIRCd::WritePID(const std::string &filename)
}
else
{
- printf("Failed to write PID-file '%s', exiting.\n",fname.c_str());
+ std::cout << "Failed to write PID-file '" << fname << "', exiting." << std::endl;
this->Logs->Log("STARTUP",DEFAULT,"Failed to write PID-file '%s', exiting.",fname.c_str());
Exit(EXIT_STATUS_PID);
}
@@ -389,6 +394,20 @@ InspIRCd::InspIRCd(int argc, char** argv) :
#ifdef _WIN32
srand(TIME.tv_nsec ^ TIME.tv_sec);
+
+ // Initialize the console values
+ g_hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
+ CONSOLE_SCREEN_BUFFER_INFO bufinf;
+ if(GetConsoleScreenBufferInfo(g_hStdout, &bufinf))
+ {
+ g_wOriginalColors = bufinf.wAttributes & 0x00FF;
+ g_wBackgroundColor = bufinf.wAttributes & 0x00F0;
+ }
+ else
+ {
+ g_wOriginalColors = FOREGROUND_RED|FOREGROUND_BLUE|FOREGROUND_GREEN;
+ g_wBackgroundColor = 0;
+ }
#else
srandom(TIME.tv_nsec ^ TIME.tv_sec);
#endif
@@ -426,8 +445,9 @@ InspIRCd::InspIRCd(int argc, char** argv) :
/* Unknown parameter */
default:
/* Fall through to handle other weird values too */
- printf("Unknown parameter '%s'\n", argv[optind-1]);
- printf("Usage: %s [--nofork] [--nolog] [--debug] [--logfile <filename>]\n%*s[--runasroot] [--version] [--config <config>] [--testsuite]\n", argv[0], static_cast<int>(8+strlen(argv[0])), " ");
+ std::cout << "Unknown parameter '" << argv[optind-1] << "'" << std::endl;
+ std::cout << "Usage: " << argv[0] << " [--nofork] [--nolog] [--debug] [--logfile <filename>] " << std::endl <<
+ std::string(static_cast<int>(8+strlen(argv[0])), ' ') << "[--runasroot] [--version] [--config <config>] [--testsuite]" << std::endl;
Exit(EXIT_STATUS_ARGV);
break;
}
@@ -438,7 +458,7 @@ InspIRCd::InspIRCd(int argc, char** argv) :
if (do_version)
{
- printf("\n%s r%s\n", VERSION, REVISION);
+ std::cout << std::endl << VERSION << " r" << REVISION << std::endl;
Exit(EXIT_STATUS_NOERROR);
}
@@ -462,7 +482,7 @@ InspIRCd::InspIRCd(int argc, char** argv) :
}
else if (!this->OpenLog(argv, argc))
{
- printf("ERROR: Could not open initial logfile %s: %s\n\n", Config->cmdline.startup_log.c_str(), strerror(errno));
+ std::cout << "ERROR: Could not open initial logfile " << Config->cmdline.startup_log << ": " << strerror(errno) << std::endl << std::endl;
Exit(EXIT_STATUS_LOG);
}
@@ -480,18 +500,18 @@ InspIRCd::InspIRCd(int argc, char** argv) :
else
#endif
{
- printf("ERROR: Cannot open config file: %s\nExiting...\n", ConfigFileName.c_str());
+ std::cout << "ERROR: Cannot open config file: " << ConfigFileName << std::endl << "Exiting..." << std::endl;
this->Logs->Log("STARTUP",DEFAULT,"Unable to open config file %s", ConfigFileName.c_str());
Exit(EXIT_STATUS_CONFIG);
}
}
- printf_c("\033[1;32mInspire Internet Relay Chat Server, compiled %s at %s\n",__DATE__,__TIME__);
- printf_c("(C) InspIRCd Development Team.\033[0m\n\n");
- printf_c("Developers:\n");
- printf_c("\t\033[1;32mBrain, FrostyCoolSlug, w00t, Om, Special, peavey\n");
- printf_c("\t\033[1;32maquanight, psychon, dz, danieldg, jackmcbarn\033[0m\n\n");
- printf_c("Others:\t\t\t\033[1;32mSee /INFO Output\033[0m\n");
+ std::cout << con_green << "Inspire Internet Relay Chat Server" << con_reset << ", compiled on " __DATE__ " at " __TIME__ << std::endl;
+ std::cout << con_green << "(C) InspIRCd Development Team." << con_reset << std::endl << std::endl;
+ std::cout << "Developers:" << std::endl;
+ std::cout << con_green << "\tBrain, FrostyCoolSlug, w00t, Om, Special, peavey" << std::endl;
+ std::cout << "\taquanight, psychon, dz, danieldg, jackmcbarn" << con_reset << std::endl << std::endl;
+ std::cout << "Others:\t\t\t" << con_green << "See /INFO Output" << con_reset << std::endl;
this->Modes = new ModeParser;
@@ -500,14 +520,14 @@ InspIRCd::InspIRCd(int argc, char** argv) :
this->CheckRoot();
else
{
- printf("* WARNING * WARNING * WARNING * WARNING * WARNING * \n\n");
- printf("YOU ARE RUNNING INSPIRCD AS ROOT. THIS IS UNSUPPORTED\n");
- printf("AND IF YOU ARE HACKED, CRACKED, SPINDLED OR MUTILATED\n");
- printf("OR ANYTHING ELSE UNEXPECTED HAPPENS TO YOU OR YOUR\n");
- printf("SERVER, THEN IT IS YOUR OWN FAULT. IF YOU DID NOT MEAN\n");
- printf("TO START INSPIRCD AS ROOT, HIT CTRL+C NOW AND RESTART\n");
- printf("THE PROGRAM AS A NORMAL USER. YOU HAVE BEEN WARNED!\n");
- printf("\nInspIRCd starting in 20 seconds, ctrl+c to abort...\n");
+ std::cout << "* WARNING * WARNING * WARNING * WARNING * WARNING *" << std::endl
+ << "YOU ARE RUNNING INSPIRCD AS ROOT. THIS IS UNSUPPORTED" << std::endl
+ << "AND IF YOU ARE HACKED, CRACKED, SPINDLED OR MUTILATED" << std::endl
+ << "OR ANYTHING ELSE UNEXPECTED HAPPENS TO YOU OR YOUR" << std::endl
+ << "SERVER, THEN IT IS YOUR OWN FAULT. IF YOU DID NOT MEAN" << std::endl
+ << "TO START INSPIRCD AS ROOT, HIT CTRL+C NOW AND RESTART" << std::endl
+ << "THE PROGRAM AS A NORMAL USER. YOU HAVE BEEN WARNED!" << std::endl << std::endl
+ << "InspIRCd starting in 20 seconds, ctrl+c to abort..." << std::endl;
sleep(20);
}
#endif
@@ -518,7 +538,7 @@ InspIRCd::InspIRCd(int argc, char** argv) :
{
if (!this->DaemonSeed())
{
- printf("ERROR: could not go into daemon mode. Shutting down.\n");
+ std::cout << "ERROR: could not go into daemon mode. Shutting down." << std::endl;
Logs->Log("STARTUP", DEFAULT, "ERROR: could not go into daemon mode. Shutting down.");
Exit(EXIT_STATUS_FORK);
}
@@ -564,7 +584,7 @@ InspIRCd::InspIRCd(int argc, char** argv) :
int bounditems = BindPorts(pl);
- printf("\n");
+ std::cout << std::endl;
this->Modules->LoadAll();
@@ -574,26 +594,26 @@ InspIRCd::InspIRCd(int argc, char** argv) :
if (!pl.empty())
{
- printf("\nWARNING: Not all your client ports could be bound --\nstarting anyway with %d of %d client ports bound.\n\n",
- bounditems, bounditems + (int)pl.size());
- printf("The following port(s) failed to bind:\n");
- printf("Hint: Try using a public IP instead of blank or *\n\n");
+ std::cout << std::endl << "WARNING: Not all your client ports could be bound -- " << std::endl << "starting anyway with " << bounditems
+ << " of " << bounditems + (int)pl.size() << " client ports bound." << std::endl << std::endl;
+ std::cout << "The following port(s) failed to bind:" << std::endl << std::endl;
int j = 1;
for (FailedPortList::iterator i = pl.begin(); i != pl.end(); i++, j++)
{
- printf("%d.\tAddress: %s\tReason: %s\n", j, i->first.empty() ? "<all>" : i->first.c_str(), i->second.c_str());
+ std::cout << j << ".\tAddress: " << (i->first.empty() ? "<all>" : i->first) << " \tReason: " << i->second << std::endl;
}
+
+ std::cout << std::endl << "Hint: Try using a public IP instead of blank or *" << std::endl;
}
- printf("\nInspIRCd is now running as '%s'[%s] with %d max open sockets\n",
- Config->ServerName.c_str(),Config->GetSID().c_str(), SE->GetMaxFds());
+ std::cout << "InspIRCd is now running as '" << Config->ServerName << "'[" << Config->GetSID() << "] with " << SE->GetMaxFds() << " max open sockets" << std::endl;
#ifndef _WIN32
if (!Config->cmdline.nofork)
{
if (kill(getppid(), SIGTERM) == -1)
{
- printf("Error killing parent process: %s\n",strerror(errno));
+ std::cout << "Error killing parent process: " << strerror(errno) << std::endl;
Logs->Log("STARTUP", DEFAULT, "Error killing parent process: %s",strerror(errno));
}
}
@@ -778,9 +798,9 @@ int InspIRCd::Run()
if(QueryPerformanceCounter(&stats->LastSampled))
{
FILETIME CreationTime;
- FILETIME ExitTime;
- FILETIME KernelTime;
- FILETIME UserTime;
+ FILETIME ExitTime;
+ FILETIME KernelTime;
+ FILETIME UserTime;
GetProcessTimes(GetCurrentProcess(), &CreationTime, &ExitTime, &KernelTime, &UserTime);
stats->LastCPU.dwHighDateTime = KernelTime.dwHighDateTime + UserTime.dwHighDateTime;
stats->LastCPU.dwLowDateTime = KernelTime.dwLowDateTime + UserTime.dwLowDateTime;