/[projects]/smsdaemon/Common.cpp
ViewVC logotype

Contents of /smsdaemon/Common.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 216 - (show annotations) (download)
Tue Dec 23 12:09:08 2008 UTC (15 years, 4 months ago) by torben
File size: 3409 byte(s)
Added config option of privileged and blacklisted phone numbers, and applied the blacklist to
Proxy Transceiver.

Am still missing the equivalent for incomming messages (ProxyPlugin)

1 #include "Common.h"
2
3
4 #include "version.h"
5
6 #include <stdlib.h>
7 #include <string>
8 #include <iostream>
9 #include <iomanip>
10 #include <sstream>
11 #include <time.h>
12
13 #include "TaskManager.h"
14 #include "PluginManager.h"
15 #include "ConfigFile.h"
16 #include "Util.h"
17 #include "Logger.h"
18
19 using namespace std;
20
21 Common* Common::instance()
22 {
23 static Common store;
24 return &store;
25 }
26
27
28 Common::Common()
29 : _pluginManager(0), _taskManager(0)
30 {
31 _pluginManager = new PluginManager();
32 _taskManager = new TaskManager();
33 configFilePath = "/etc/smsdaemon.conf";
34 _configFile = new ConfigFile();
35
36 daemonized = false;
37 reloadConfig = false;
38 }
39
40
41 Common::~Common()
42 {
43 if (_pluginManager)
44 delete _pluginManager;
45
46 if (_taskManager)
47 delete _taskManager;
48 }
49
50 PluginManager* Common::GetPluginManager()
51 {
52 return _pluginManager;
53 }
54
55 TaskManager* Common::GetTaskManager()
56 {
57 return _taskManager;
58 }
59
60 ConfigFile* Common::GetConfigfile()
61 {
62 return _configFile;
63 }
64
65
66 void Common::printUsage()
67 {
68 cout << VERSION << endl;
69 cout << SVNVERSION << endl << endl;
70 cout << "Usage --daemon|--debug [arguments]" << endl;
71 cout << "Commandline arguments :" << endl;
72 cout << " --daemon : Run in daemon (background) mode" << endl;
73 cout << " --debug : Run as normal (frontground) process," << endl;
74 cout << " with all messages written to std out" << endl;
75 cout << " --config <file>: Specify which config file to use " << endl;
76 cout << " default" << configFilePath << endl;
77 cout << " --help : Show this help screen" << endl;
78
79 exit(0);
80 }
81
82 void Common::loadConfig(int argc, char* argv[])
83 {
84 isDaemon = false;
85 isDebug = false;
86
87 for (int i = 1; i< argc; i++)
88 {
89 string current(argv[i]);
90 if (current == "--daemon")
91 {
92 isDaemon = true;
93 isDebug = false;
94
95 }
96 else if (current == "--debug")
97 {
98 isDaemon = false;
99 isDebug = true;
100 }
101 else if (current == "--config")
102 {
103 i++;
104 if ( i<argc)
105 {
106 configFilePath = argv[i];
107 }
108 else
109 {
110 printUsage();
111 exit(1);
112 }
113
114 }
115 else if (current == "-h" || current == "--help")
116 {
117 printUsage();
118 }
119 else
120 {
121 cout << "Unknown argument : " << current << endl << endl;
122 }
123 }
124
125 if (! ( isDaemon || isDebug))
126 printUsage();
127 }
128
129
130 std::string Common::getStatusMessage()
131 {
132 long int now = time(0);
133
134 long int diff = now - this->daemonStart;
135
136
137 std::ostringstream out;
138 out << "Uptime " << diff << " seconds. ";
139 out << "Messages received:" << this->smsCounter.incomming << ". ";
140 out << "Messages sent:" << this->smsCounter.outgoing << ".";
141
142 return out.str();
143 }
144
145 void Common::LoadWorker(std::set<std::string>& set, std::string config)
146 {
147 set.clear();
148
149 std::vector<std::string> items = Util::str_split(
150 _configFile->GetValue("smsdaemon",config,""),
151 ",");
152
153 std::ostringstream log;
154 log << "Loaded list '" << config << "': ";
155 for (unsigned i=0; i<items.size(); i++)
156 {
157 set.insert( Util::str_trim(items[i]) );
158 log << items[i] << " ";
159 }
160 Logger::logMessage(log.str());
161 }
162
163 void Common::LoadLists()
164 {
165 LoadWorker(_blacklist, "blacklist");
166 LoadWorker(_privileged, "privileged");
167 }
168
169
170 bool Common::IsBlacklisted(const std::string& phone)
171 {
172 std::set<std::string>::iterator it = _blacklist.find(phone);
173 return ( it != _blacklist.end() );
174 }
175
176 bool Common::IsPrivileged(const std::string& phone)
177 {
178 std::set<std::string>::iterator it = _privileged.find(phone);
179 return ( it != _privileged.end() );
180 }

Properties

Name Value
svn:mergeinfo

  ViewVC Help
Powered by ViewVC 1.1.20