#include "common.h" #include "version.h" #include #include #include #include #include #include #include "TaskManager.h" #include "PluginManager.h" using namespace std; const char* Months[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov","Dec"}; Common* Common::instance() { static Common store; return &store; } Common::Common() : _pluginManager(0), _taskManager(0) { _pluginManager = new PluginManager(); _taskManager = new TaskManager(); } Common::~Common() { if (_pluginManager) delete _pluginManager; if (_taskManager) delete _taskManager; } PluginManager* Common::GetPluginManager() { return _pluginManager; } TaskManager* Common::GetTaskManager() { return _taskManager; } void Common::logMessage(string msg) { time_t t = time(0); tm now; localtime_r(&t, &now); ostringstream out; out << Months[ now.tm_mon ] << " " << setw(2) << setfill('0') << now.tm_mday; out << " " << setw(2) << setfill('0') << now.tm_hour; out << ":" << setw(2) << setfill('0') << now.tm_min; out << ":" << setw(2) << setfill('0') << now.tm_sec; out << " " << msg << endl; if (this->isDaemon && _logFile != "") { seteuid(0); ofstream of( _logFile.c_str(), ios_base::out | ios_base::app | ios_base::ate);//append mode if (of) { of << out.str(); of.flush(); of.close(); } seteuid( this->uid); } else { cout << out.str(); cout.flush(); } } void Common::printUsage() { cout << VERSION << endl; cout << SVNVERSION << endl << endl; cout << "Usage --daemon|--debug [arguments]" << endl; cout << "Commandline arguments :" << endl; cout << " --daemon : Run in daemon (background) mode" << endl; cout << " --debug : Run as normal (frontground) process," << endl; cout << " with all messages written to std out" << endl; cout << " --help : Show this help screen" << endl; exit(0); } void Common::loadConfig(int argc, char* argv[]) { isDaemon = false; isDebug = false; for (int i = 1; i< argc; i++) { string current(argv[i]); if (current == "--daemon") { isDaemon = true; isDebug = false; } else if (current == "--debug") { isDaemon = false; isDebug = true; } else if (current == "-h" || current == "--help") { printUsage(); } else { cout << "Unknown argument : " << current << endl << endl; } } if (! ( isDaemon || isDebug)) printUsage(); } std::string Common::getStatusMessage() { long int now = time(0); long int diff = now - this->daemonStart; std::ostringstream out; out << "Uptime " << diff << " seconds. "; out << "Messages received:" << this->smsCounter.incomming << ". "; out << "Messages sent:" << this->smsCounter.outgoing << "."; return out.str(); }