36
36
#include "../manager.h"
37
37
#include "sip/sipvoiplink.h"
38
#include "sip/sipaccount.h"
39
40
const char* ConfigurationManager::SERVER_PATH =
40
"/org/sflphone/SFLphone/ConfigurationManager";
42
ConfigurationManager::ConfigurationManager(DBus::Connection& connection) :
43
DBus::ObjectAdaptor(connection, SERVER_PATH) {
44
shortcutsKeys.push_back("pick_up");
45
shortcutsKeys.push_back("hang_up");
46
shortcutsKeys.push_back("popup_window");
47
shortcutsKeys.push_back("toggle_pick_up_hang_up");
48
shortcutsKeys.push_back("toggle_hold");
51
std::map<std::string, std::string> ConfigurationManager::getAccountDetails(
52
const std::string& accountID) {
53
return Manager::instance().getAccountDetails(accountID);
56
std::map<std::string, std::string> ConfigurationManager::getTlsSettingsDefault(
59
std::map<std::string, std::string> tlsSettingsDefault;
60
tlsSettingsDefault.insert(std::pair<std::string, std::string>(
61
TLS_LISTENER_PORT, DEFAULT_SIP_TLS_PORT));
62
tlsSettingsDefault.insert(std::pair<std::string, std::string>(
63
TLS_CA_LIST_FILE, ""));
64
tlsSettingsDefault.insert(std::pair<std::string, std::string>(
65
TLS_CERTIFICATE_FILE, ""));
66
tlsSettingsDefault.insert(std::pair<std::string, std::string>(
67
TLS_PRIVATE_KEY_FILE, ""));
68
tlsSettingsDefault.insert(std::pair<std::string, std::string>(TLS_PASSWORD,
70
tlsSettingsDefault.insert(std::pair<std::string, std::string>(TLS_METHOD,
72
tlsSettingsDefault.insert(std::pair<std::string, std::string>(TLS_CIPHERS,
74
tlsSettingsDefault.insert(std::pair<std::string, std::string>(
75
TLS_SERVER_NAME, ""));
76
tlsSettingsDefault.insert(std::pair<std::string, std::string>(
77
TLS_VERIFY_SERVER, "true"));
78
tlsSettingsDefault.insert(std::pair<std::string, std::string>(
79
TLS_VERIFY_CLIENT, "true"));
80
tlsSettingsDefault.insert(std::pair<std::string, std::string>(
81
TLS_REQUIRE_CLIENT_CERTIFICATE, "true"));
82
tlsSettingsDefault.insert(std::pair<std::string, std::string>(
83
TLS_NEGOTIATION_TIMEOUT_SEC, "2"));
84
tlsSettingsDefault.insert(std::pair<std::string, std::string>(
85
TLS_NEGOTIATION_TIMEOUT_MSEC, "0"));
87
return tlsSettingsDefault;
90
std::map<std::string, std::string> ConfigurationManager::getIp2IpDetails(void) {
92
std::map<std::string, std::string> ip2ipAccountDetails;
94
ip2ipAccountDetails.insert(std::pair<std::string, std::string>(ACCOUNT_ID,
96
ip2ipAccountDetails.insert(std::pair<std::string, std::string>(
97
SRTP_KEY_EXCHANGE, Manager::instance().getConfigString(
98
IP2IP_PROFILE, SRTP_KEY_EXCHANGE)));
99
ip2ipAccountDetails.insert(std::pair<std::string, std::string>(SRTP_ENABLE,
100
Manager::instance().getConfigString(IP2IP_PROFILE, SRTP_ENABLE)));
101
ip2ipAccountDetails.insert(std::pair<std::string, std::string>(
102
SRTP_RTP_FALLBACK, Manager::instance().getConfigString(
103
IP2IP_PROFILE, SRTP_RTP_FALLBACK)));
104
ip2ipAccountDetails.insert(std::pair<std::string, std::string>(
105
ZRTP_DISPLAY_SAS, Manager::instance().getConfigString(
106
IP2IP_PROFILE, ZRTP_DISPLAY_SAS)));
107
ip2ipAccountDetails.insert(std::pair<std::string, std::string>(
108
ZRTP_HELLO_HASH, Manager::instance().getConfigString(IP2IP_PROFILE,
110
ip2ipAccountDetails.insert(std::pair<std::string, std::string>(
111
ZRTP_NOT_SUPP_WARNING, Manager::instance().getConfigString(
112
IP2IP_PROFILE, ZRTP_NOT_SUPP_WARNING)));
113
ip2ipAccountDetails.insert(std::pair<std::string, std::string>(
114
ZRTP_DISPLAY_SAS_ONCE, Manager::instance().getConfigString(
115
IP2IP_PROFILE, ZRTP_DISPLAY_SAS_ONCE)));
117
ip2ipAccountDetails.insert(std::pair<std::string, std::string>(
118
LOCAL_INTERFACE, Manager::instance().getConfigString(IP2IP_PROFILE,
120
ip2ipAccountDetails.insert(std::pair<std::string, std::string>(LOCAL_PORT,
121
Manager::instance().getConfigString(IP2IP_PROFILE, LOCAL_PORT)));
123
std::map<std::string, std::string> tlsSettings;
124
tlsSettings = getTlsSettings(IP2IP_PROFILE);
125
std::copy(tlsSettings.begin(), tlsSettings.end(), std::inserter(
126
ip2ipAccountDetails, ip2ipAccountDetails.end()));
128
return ip2ipAccountDetails;
132
void ConfigurationManager::setIp2IpDetails(const std::map<std::string,
133
std::string>& details) {
134
std::map<std::string, std::string> map_cpy = details;
135
std::map<std::string, std::string>::iterator it;
137
it = map_cpy.find(LOCAL_INTERFACE);
139
if (it != details.end()) {
140
Manager::instance().setConfig(IP2IP_PROFILE, LOCAL_INTERFACE,
144
it = map_cpy.find(LOCAL_PORT);
146
if (it != details.end()) {
147
Manager::instance().setConfig(IP2IP_PROFILE, LOCAL_PORT, it->second);
150
it = map_cpy.find(SRTP_ENABLE);
152
if (it != details.end()) {
153
Manager::instance().setConfig(IP2IP_PROFILE, SRTP_ENABLE, it->second);
156
it = map_cpy.find(SRTP_RTP_FALLBACK);
158
if (it != details.end()) {
159
Manager::instance().setConfig(IP2IP_PROFILE, SRTP_RTP_FALLBACK,
163
it = map_cpy.find(SRTP_KEY_EXCHANGE);
165
if (it != details.end()) {
166
Manager::instance().setConfig(IP2IP_PROFILE, SRTP_KEY_EXCHANGE,
170
it = map_cpy.find(ZRTP_DISPLAY_SAS);
172
if (it != details.end()) {
173
Manager::instance().setConfig(IP2IP_PROFILE, ZRTP_DISPLAY_SAS,
177
it = map_cpy.find(ZRTP_NOT_SUPP_WARNING);
179
if (it != details.end()) {
180
Manager::instance().setConfig(IP2IP_PROFILE, ZRTP_NOT_SUPP_WARNING,
184
it = map_cpy.find(ZRTP_HELLO_HASH);
186
if (it != details.end()) {
187
Manager::instance().setConfig(IP2IP_PROFILE, ZRTP_HELLO_HASH,
191
it = map_cpy.find(ZRTP_DISPLAY_SAS_ONCE);
193
if (it != details.end()) {
194
Manager::instance().setConfig(IP2IP_PROFILE, ZRTP_DISPLAY_SAS_ONCE,
198
setTlsSettings(IP2IP_PROFILE, details);
200
Manager::instance().saveConfig();
202
// Update account details to the client side
205
// Reload account settings from config
206
Manager::instance().getAccount(IP2IP_PROFILE)->loadConfig();
210
std::map<std::string, std::string> ConfigurationManager::getTlsSettings(
211
const std::string& section) {
212
std::map<std::string, std::string> tlsSettings;
214
tlsSettings.insert(std::pair<std::string, std::string>(TLS_LISTENER_PORT,
215
Manager::instance().getConfigString(section, TLS_LISTENER_PORT)));
216
tlsSettings.insert(std::pair<std::string, std::string>(TLS_ENABLE,
217
Manager::instance().getConfigString(section, TLS_ENABLE)));
218
tlsSettings.insert(std::pair<std::string, std::string>(TLS_CA_LIST_FILE,
219
Manager::instance().getConfigString(section, TLS_CA_LIST_FILE)));
220
tlsSettings.insert(std::pair<std::string, std::string>(
221
TLS_CERTIFICATE_FILE, Manager::instance().getConfigString(section,
222
TLS_CERTIFICATE_FILE)));
223
tlsSettings.insert(std::pair<std::string, std::string>(
224
TLS_PRIVATE_KEY_FILE, Manager::instance().getConfigString(section,
225
TLS_PRIVATE_KEY_FILE)));
226
tlsSettings.insert(std::pair<std::string, std::string>(TLS_PASSWORD,
227
Manager::instance().getConfigString(section, TLS_PASSWORD)));
228
tlsSettings.insert(std::pair<std::string, std::string>(TLS_METHOD,
229
Manager::instance().getConfigString(section, TLS_METHOD)));
230
tlsSettings.insert(std::pair<std::string, std::string>(TLS_CIPHERS,
231
Manager::instance().getConfigString(section, TLS_CIPHERS)));
232
tlsSettings.insert(std::pair<std::string, std::string>(TLS_SERVER_NAME,
233
Manager::instance().getConfigString(section, TLS_SERVER_NAME)));
234
tlsSettings.insert(std::pair<std::string, std::string>(TLS_VERIFY_SERVER,
235
Manager::instance().getConfigString(section, TLS_VERIFY_SERVER)));
236
tlsSettings.insert(std::pair<std::string, std::string>(TLS_VERIFY_CLIENT,
237
Manager::instance().getConfigString(section, TLS_VERIFY_CLIENT)));
238
tlsSettings.insert(std::pair<std::string, std::string>(
239
TLS_REQUIRE_CLIENT_CERTIFICATE,
240
Manager::instance().getConfigString(section,
241
TLS_REQUIRE_CLIENT_CERTIFICATE)));
242
tlsSettings.insert(std::pair<std::string, std::string>(
243
TLS_NEGOTIATION_TIMEOUT_SEC, Manager::instance().getConfigString(
244
section, TLS_NEGOTIATION_TIMEOUT_SEC)));
245
tlsSettings.insert(std::pair<std::string, std::string>(
246
TLS_NEGOTIATION_TIMEOUT_MSEC, Manager::instance().getConfigString(
247
section, TLS_NEGOTIATION_TIMEOUT_MSEC)));
251
void ConfigurationManager::setTlsSettings(const std::string& section,
252
const std::map<std::string, std::string>& details) {
253
std::map<std::string, std::string> map_cpy = details;
254
std::map<std::string, std::string>::iterator it;
256
it = map_cpy.find(TLS_LISTENER_PORT);
257
if (it != details.end()) {
258
Manager::instance().setConfig(section, TLS_LISTENER_PORT, it->second);
261
it = map_cpy.find(TLS_ENABLE);
263
if (it != details.end()) {
264
Manager::instance().setConfig(section, TLS_ENABLE, it->second);
267
it = map_cpy.find(TLS_CA_LIST_FILE);
269
if (it != map_cpy.end()) {
270
Manager::instance().setConfig(section, TLS_CA_LIST_FILE, it->second);
273
it = map_cpy.find(TLS_CERTIFICATE_FILE);
275
if (it != map_cpy.end()) {
276
Manager::instance().setConfig(section, TLS_CERTIFICATE_FILE, it->second);
279
it = map_cpy.find(TLS_PRIVATE_KEY_FILE);
281
if (it != map_cpy.end()) {
282
Manager::instance().setConfig(section, TLS_PRIVATE_KEY_FILE, it->second);
285
it = map_cpy.find(TLS_PASSWORD);
287
if (it != map_cpy.end()) {
288
Manager::instance().setConfig(section, TLS_PASSWORD, it->second);
291
it = map_cpy.find(TLS_METHOD);
293
if (it != map_cpy.end()) {
294
Manager::instance().setConfig(section, TLS_METHOD, it->second);
297
it = map_cpy.find(TLS_CIPHERS);
299
if (it != map_cpy.end()) {
300
Manager::instance().setConfig(section, TLS_CIPHERS, it->second);
303
it = map_cpy.find(TLS_SERVER_NAME);
305
if (it != map_cpy.end()) {
306
Manager::instance().setConfig(section, TLS_SERVER_NAME, it->second);
309
it = map_cpy.find(TLS_VERIFY_CLIENT);
311
if (it != map_cpy.end()) {
312
Manager::instance().setConfig(section, TLS_VERIFY_CLIENT, it->second);
315
it = map_cpy.find(TLS_REQUIRE_CLIENT_CERTIFICATE);
317
if (it != map_cpy.end()) {
318
Manager::instance().setConfig(section, TLS_REQUIRE_CLIENT_CERTIFICATE,
322
it = map_cpy.find(TLS_NEGOTIATION_TIMEOUT_SEC);
324
if (it != map_cpy.end()) {
325
Manager::instance().setConfig(section, TLS_NEGOTIATION_TIMEOUT_SEC,
329
it = map_cpy.find(TLS_NEGOTIATION_TIMEOUT_MSEC);
331
if (it != map_cpy.end()) {
332
Manager::instance().setConfig(section, TLS_NEGOTIATION_TIMEOUT_MSEC,
336
Manager::instance().saveConfig();
338
// Update account details to the client side
343
std::map<std::string, std::string> ConfigurationManager::getCredential(
344
const std::string& accountID, const int32_t& index) {
346
std::string credentialIndex;
347
std::stringstream streamOut;
349
credentialIndex = streamOut.str();
351
std::string section = std::string("Credential") + std::string(":")
352
+ accountID + std::string(":") + credentialIndex;
354
std::map<std::string, std::string> credentialInformation;
355
std::string username = Manager::instance().getConfigString(section,
357
std::string password = Manager::instance().getConfigString(section,
359
std::string realm = Manager::instance().getConfigString(section, REALM);
361
credentialInformation.insert(std::pair<std::string, std::string>(USERNAME,
363
credentialInformation.insert(std::pair<std::string, std::string>(PASSWORD,
365
credentialInformation.insert(std::pair<std::string, std::string>(REALM,
368
return credentialInformation;
371
int32_t ConfigurationManager::getNumberOfCredential(
372
const std::string& accountID) {
373
return Manager::instance().getConfigInt(accountID, CONFIG_CREDENTIAL_NUMBER);
376
void ConfigurationManager::setNumberOfCredential(const std::string& accountID,
377
const int32_t& number) {
378
if (accountID != AccountNULL || !accountID.empty()) {
379
Manager::instance().setConfig(accountID, CONFIG_CREDENTIAL_NUMBER,
384
void ConfigurationManager::setCredential(const std::string& accountID,
385
const int32_t& index, const std::map<std::string, std::string>& details) {
386
Manager::instance().setCredential(accountID, index, details);
389
void ConfigurationManager::deleteAllCredential(const std::string& accountID) {
390
Manager::instance().deleteAllCredential(accountID);
393
void ConfigurationManager::setAccountDetails(const std::string& accountID,
394
const std::map<std::string, std::string>& details) {
395
Manager::instance().setAccountDetails(accountID, details);
398
void ConfigurationManager::sendRegister(const std::string& accountID,
399
const int32_t& expire) {
400
Manager::instance().sendRegister(accountID, expire);
403
std::string ConfigurationManager::addAccount(const std::map<std::string,
404
std::string>& details) {
405
return Manager::instance().addAccount(details);
408
void ConfigurationManager::removeAccount(const std::string& accoundID) {
409
return Manager::instance().removeAccount(accoundID);
412
std::vector<std::string> ConfigurationManager::getAccountList() {
413
return Manager::instance().getAccountList();
417
std::vector<std::string> ConfigurationManager::getToneLocaleList() {
418
std::vector<std::string> ret;
423
std::string ConfigurationManager::getVersion() {
429
std::vector<std::string> ConfigurationManager::getRingtoneList() {
430
std::vector<std::string> ret;
41
"/org/sflphone/SFLphone/ConfigurationManager";
43
ConfigurationManager::ConfigurationManager (DBus::Connection& connection) :
44
DBus::ObjectAdaptor (connection, SERVER_PATH)
46
shortcutsKeys.push_back ("pick_up");
47
shortcutsKeys.push_back ("hang_up");
48
shortcutsKeys.push_back ("popup_window");
49
shortcutsKeys.push_back ("toggle_pick_up_hang_up");
50
shortcutsKeys.push_back ("toggle_hold");
53
std::map<std::string, std::string> ConfigurationManager::getAccountDetails (
54
const std::string& accountID)
57
_debug ("ConfigurationManager: get account details %s", accountID.c_str());
58
return Manager::instance().getAccountDetails (accountID);
61
std::map<std::string, std::string> ConfigurationManager::getTlsSettingsDefault (
65
std::map<std::string, std::string> tlsSettingsDefault;
67
tlsSettingsDefault.insert (std::pair<std::string, std::string> (
68
TLS_LISTENER_PORT, DEFAULT_SIP_TLS_PORT));
69
tlsSettingsDefault.insert (std::pair<std::string, std::string> (
70
TLS_CA_LIST_FILE, ""));
71
tlsSettingsDefault.insert (std::pair<std::string, std::string> (
72
TLS_CERTIFICATE_FILE, ""));
73
tlsSettingsDefault.insert (std::pair<std::string, std::string> (
74
TLS_PRIVATE_KEY_FILE, ""));
75
tlsSettingsDefault.insert (std::pair<std::string, std::string> (TLS_PASSWORD,
77
tlsSettingsDefault.insert (std::pair<std::string, std::string> (TLS_METHOD,
79
tlsSettingsDefault.insert (std::pair<std::string, std::string> (TLS_CIPHERS,
81
tlsSettingsDefault.insert (std::pair<std::string, std::string> (
82
TLS_SERVER_NAME, ""));
83
tlsSettingsDefault.insert (std::pair<std::string, std::string> (
84
TLS_VERIFY_SERVER, "true"));
85
tlsSettingsDefault.insert (std::pair<std::string, std::string> (
86
TLS_VERIFY_CLIENT, "true"));
87
tlsSettingsDefault.insert (std::pair<std::string, std::string> (
88
TLS_REQUIRE_CLIENT_CERTIFICATE, "true"));
89
tlsSettingsDefault.insert (std::pair<std::string, std::string> (
90
TLS_NEGOTIATION_TIMEOUT_SEC, "2"));
91
tlsSettingsDefault.insert (std::pair<std::string, std::string> (
92
TLS_NEGOTIATION_TIMEOUT_MSEC, "0"));
94
return tlsSettingsDefault;
97
std::map<std::string, std::string> ConfigurationManager::getIp2IpDetails (void)
100
std::map<std::string, std::string> ip2ipAccountDetails;
102
SIPAccount *sipaccount = (SIPAccount *) Manager::instance().getAccount (IP2IP_PROFILE);
105
_error ("ConfigurationManager: could not find account");
106
return ip2ipAccountDetails;
109
ip2ipAccountDetails.insert (std::pair<std::string, std::string> (ACCOUNT_ID, IP2IP_PROFILE));
110
ip2ipAccountDetails.insert (std::pair<std::string, std::string> (SRTP_KEY_EXCHANGE, sipaccount->getSrtpKeyExchange()));
111
ip2ipAccountDetails.insert (std::pair<std::string, std::string> (SRTP_ENABLE, sipaccount->getSrtpEnable() ? "true" : "false"));
112
ip2ipAccountDetails.insert (std::pair<std::string, std::string> (SRTP_RTP_FALLBACK, sipaccount->getSrtpFallback() ? "true" : "false"));
113
ip2ipAccountDetails.insert (std::pair<std::string, std::string> (ZRTP_DISPLAY_SAS, sipaccount->getZrtpDisplaySas() ? "true" : "false"));
114
ip2ipAccountDetails.insert (std::pair<std::string, std::string> (ZRTP_HELLO_HASH, sipaccount->getZrtpHelloHash() ? "true" : "false"));
115
ip2ipAccountDetails.insert (std::pair<std::string, std::string> (ZRTP_NOT_SUPP_WARNING, sipaccount->getZrtpNotSuppWarning() ? "true" : "false"));
116
ip2ipAccountDetails.insert (std::pair<std::string, std::string> (ZRTP_DISPLAY_SAS_ONCE, sipaccount->getZrtpDiaplaySasOnce() ? "true" : "false"));
117
ip2ipAccountDetails.insert (std::pair<std::string, std::string> (LOCAL_INTERFACE, sipaccount->getLocalInterface()));
118
std::stringstream portstr;
119
portstr << sipaccount->getLocalPort();
120
ip2ipAccountDetails.insert (std::pair<std::string, std::string> (LOCAL_PORT, portstr.str()));
122
std::map<std::string, std::string> tlsSettings;
123
tlsSettings = getTlsSettings();
124
std::copy (tlsSettings.begin(), tlsSettings.end(), std::inserter (
125
ip2ipAccountDetails, ip2ipAccountDetails.end()));
127
return ip2ipAccountDetails;
131
void ConfigurationManager::setIp2IpDetails (const std::map<std::string,
132
std::string>& details)
134
std::map<std::string, std::string> map_cpy = details;
135
std::map<std::string, std::string>::iterator it;
137
SIPAccount *sipaccount = (SIPAccount *) Manager::instance().getAccount (IP2IP_PROFILE);
140
_error ("ConfigurationManager: could not find account");
144
it = map_cpy.find (LOCAL_INTERFACE);
146
if (it != details.end()) sipaccount->setLocalInterface (it->second);
148
it = map_cpy.find (LOCAL_PORT);
150
if (it != details.end()) sipaccount->setLocalPort (atoi (it->second.data()));
152
it = map_cpy.find (SRTP_ENABLE);
154
if (it != details.end()) sipaccount->setSrtpEnable ( (it->second == "true"));
156
it = map_cpy.find (SRTP_RTP_FALLBACK);
158
if (it != details.end()) sipaccount->setSrtpFallback ( (it->second == "true"));
160
it = map_cpy.find (SRTP_KEY_EXCHANGE);
162
if (it != details.end()) sipaccount->setSrtpKeyExchange (it->second);
164
it = map_cpy.find (ZRTP_DISPLAY_SAS);
166
if (it != details.end()) sipaccount->setZrtpDisplaySas ( (it->second == "true"));
168
it = map_cpy.find (ZRTP_NOT_SUPP_WARNING);
170
if (it != details.end()) sipaccount->setZrtpNotSuppWarning ( (it->second == "true"));
172
it = map_cpy.find (ZRTP_HELLO_HASH);
174
if (it != details.end()) sipaccount->setZrtpHelloHash ( (it->second == "true"));
176
it = map_cpy.find (ZRTP_DISPLAY_SAS_ONCE);
178
if (it != details.end()) sipaccount->setZrtpDiaplaySasOnce ( (it->second == "true"));
180
setTlsSettings (details);
182
Manager::instance().saveConfig();
184
// Update account details to the client side
187
// Reload account settings from config
188
Manager::instance().getAccount (IP2IP_PROFILE)->loadConfig();
192
std::map<std::string, std::string> ConfigurationManager::getTlsSettings()
195
std::map<std::string, std::string> tlsSettings;
197
SIPAccount *sipaccount = (SIPAccount *) Manager::instance().getAccount (IP2IP_PROFILE);
202
std::stringstream portstr;
203
portstr << sipaccount->getTlsListenerPort();
204
tlsSettings.insert (std::pair<std::string, std::string> (TLS_LISTENER_PORT, portstr.str()));
205
tlsSettings.insert (std::pair<std::string, std::string> (TLS_ENABLE, sipaccount->getTlsEnable()));
206
tlsSettings.insert (std::pair<std::string, std::string> (TLS_CA_LIST_FILE, sipaccount->getTlsCaListFile()));
207
tlsSettings.insert (std::pair<std::string, std::string> (TLS_CERTIFICATE_FILE, sipaccount->getTlsCertificateFile()));
208
tlsSettings.insert (std::pair<std::string, std::string> (TLS_PRIVATE_KEY_FILE, sipaccount->getTlsPrivateKeyFile()));
209
tlsSettings.insert (std::pair<std::string, std::string> (TLS_PASSWORD, sipaccount->getTlsPassword()));
210
tlsSettings.insert (std::pair<std::string, std::string> (TLS_METHOD, sipaccount->getTlsMethod()));
211
tlsSettings.insert (std::pair<std::string, std::string> (TLS_CIPHERS, sipaccount->getTlsCiphers()));
212
tlsSettings.insert (std::pair<std::string, std::string> (TLS_SERVER_NAME, sipaccount->getTlsServerName()));
213
tlsSettings.insert (std::pair<std::string, std::string> (TLS_VERIFY_SERVER, sipaccount->getTlsVerifyServer() ? "true" : "false"));
214
tlsSettings.insert (std::pair<std::string, std::string> (TLS_VERIFY_CLIENT, sipaccount->getTlsVerifyClient() ? "true" : "false"));
215
tlsSettings.insert (std::pair<std::string, std::string> (TLS_REQUIRE_CLIENT_CERTIFICATE, sipaccount->getTlsRequireClientCertificate() ? "true" : "false"));
216
tlsSettings.insert (std::pair<std::string, std::string> (TLS_NEGOTIATION_TIMEOUT_SEC, sipaccount->getTlsNegotiationTimeoutSec()));
217
tlsSettings.insert (std::pair<std::string, std::string> (TLS_NEGOTIATION_TIMEOUT_MSEC, sipaccount->getTlsNegotiationTimeoutMsec()));
222
void ConfigurationManager::setTlsSettings (const std::map<std::string, std::string>& details)
225
std::map<std::string, std::string> map_cpy = details;
226
std::map<std::string, std::string>::iterator it;
228
SIPAccount * sipaccount = (SIPAccount *) Manager::instance().getAccount (IP2IP_PROFILE);
231
_debug ("ConfigurationManager: Error: No valid account in set TLS settings");
235
it = map_cpy.find (TLS_LISTENER_PORT);
237
if (it != details.end()) sipaccount->setTlsListenerPort (atoi (it->second.data()));
239
it = map_cpy.find (TLS_ENABLE);
241
if (it != details.end()) sipaccount->setTlsEnable (it->second);
243
it = map_cpy.find (TLS_CA_LIST_FILE);
245
if (it != map_cpy.end()) sipaccount->setTlsCaListFile (it->second);
247
it = map_cpy.find (TLS_CERTIFICATE_FILE);
249
if (it != map_cpy.end()) sipaccount->setTlsCertificateFile (it->second);
251
it = map_cpy.find (TLS_PRIVATE_KEY_FILE);
253
if (it != map_cpy.end()) sipaccount->setTlsPrivateKeyFile (it->second);
255
it = map_cpy.find (TLS_PASSWORD);
257
if (it != map_cpy.end()) sipaccount->setTlsPassword (it->second);
259
it = map_cpy.find (TLS_METHOD);
261
if (it != map_cpy.end()) sipaccount->setTlsMethod (it->second);
263
it = map_cpy.find (TLS_CIPHERS);
265
if (it != map_cpy.end()) sipaccount->setTlsCiphers (it->second);
267
it = map_cpy.find (TLS_SERVER_NAME);
269
if (it != map_cpy.end()) sipaccount->setTlsServerName (it->second);
271
it = map_cpy.find (TLS_VERIFY_CLIENT);
273
if (it != map_cpy.end()) sipaccount->setTlsVerifyClient ( (it->second == "true") ? true : false);
275
it = map_cpy.find (TLS_REQUIRE_CLIENT_CERTIFICATE);
277
if (it != map_cpy.end()) sipaccount->setTlsRequireClientCertificate ( (it->second == "true") ? true : false);
279
it = map_cpy.find (TLS_NEGOTIATION_TIMEOUT_SEC);
281
if (it != map_cpy.end()) sipaccount->setTlsNegotiationTimeoutSec (it->second);
283
it = map_cpy.find (TLS_NEGOTIATION_TIMEOUT_MSEC);
285
if (it != map_cpy.end()) sipaccount->setTlsNegotiationTimeoutMsec (it->second);
287
Manager::instance().saveConfig();
289
// Update account details to the client side
294
std::map<std::string, std::string> ConfigurationManager::getCredential (
295
const std::string& accountID, const int32_t& index)
298
Account *account = Manager::instance().getAccount (accountID);
300
std::map<std::string, std::string> credentialInformation;
302
if (account->getType() != "SIP")
303
return credentialInformation;
305
SIPAccount *sipaccount = (SIPAccount *) account;
309
std::string username = sipaccount->getUsername();
310
std::string password = sipaccount->getPassword();
311
std::string realm = sipaccount->getRealm();
313
credentialInformation.insert (std::pair<std::string, std::string> (USERNAME, username));
314
credentialInformation.insert (std::pair<std::string, std::string> (PASSWORD, password));
315
credentialInformation.insert (std::pair<std::string, std::string> (REALM, realm));
318
// TODO: implement for extra credentials
319
std::string username = sipaccount->getUsername();
320
std::string password = sipaccount->getPassword();
321
std::string realm = sipaccount->getRealm();
323
credentialInformation.insert (std::pair<std::string, std::string> (USERNAME, username));
324
credentialInformation.insert (std::pair<std::string, std::string> (PASSWORD, password));
325
credentialInformation.insert (std::pair<std::string, std::string> (REALM, realm));
328
return credentialInformation;
331
int32_t ConfigurationManager::getNumberOfCredential (
332
const std::string& accountID)
335
Account *account = Manager::instance().getAccount (accountID);
340
if (account->getType() == "SIP") {
341
SIPAccount *sipaccount = static_cast<SIPAccount *> (account);
342
return sipaccount->getCredentialCount();
347
void ConfigurationManager::setCredential (const std::string& accountID,
348
const int32_t& index, const std::map<std::string, std::string>& details)
350
Manager::instance().setCredential (accountID, index, details);
353
void ConfigurationManager::deleteAllCredential (const std::string& accountID)
355
Manager::instance().deleteAllCredential (accountID);
358
void ConfigurationManager::setAccountDetails (const std::string& accountID,
359
const std::map<std::string, std::string>& details)
361
Manager::instance().setAccountDetails (accountID, details);
364
void ConfigurationManager::sendRegister (const std::string& accountID,
365
const int32_t& expire)
367
Manager::instance().sendRegister (accountID, expire);
370
std::string ConfigurationManager::addAccount (const std::map<std::string,
371
std::string>& details)
373
return Manager::instance().addAccount (details);
376
void ConfigurationManager::removeAccount (const std::string& accoundID)
378
return Manager::instance().removeAccount (accoundID);
381
std::vector<std::string> ConfigurationManager::getAccountList()
383
return Manager::instance().getAccountList();
387
std::vector<std::string> ConfigurationManager::getToneLocaleList()
389
std::vector<std::string> ret;
394
std::string ConfigurationManager::getVersion()
396
std::string ret ("");
401
std::vector<std::string> ConfigurationManager::getRingtoneList()
403
std::vector<std::string> ret;
435
408
* Send the list of all codecs loaded to the client through DBus.
436
409
* Can stay global, as only the active codecs will be set per accounts
438
std::vector<std::string> ConfigurationManager::getCodecList(void) {
440
std::vector<std::string> list;
443
Manager::instance().getCodecDescriptorMap().getCodecsMap();
444
CodecsMap::iterator iter = codecs.begin();
446
while (iter != codecs.end()) {
447
std::stringstream ss;
449
if (iter->second != NULL) {
451
list.push_back((ss.str()).data());
460
std::vector<std::string> ConfigurationManager::getSupportedTlsMethod(void) {
461
std::vector<std::string> method;
462
method.push_back("Default");
463
method.push_back("TLSv1");
464
method.push_back("SSLv2");
465
method.push_back("SSLv3");
466
method.push_back("SSLv23");
470
std::vector<std::string> ConfigurationManager::getCodecDetails(
471
const int32_t& payload) {
473
return Manager::instance().getCodecDescriptorMap().getCodecSpecifications(
477
std::vector<std::string> ConfigurationManager::getActiveCodecList(
478
const std::string& accountID) {
480
_debug("Send active codec list for account %s", accountID.c_str ());
482
std::vector<std::string> v;
488
acc = Manager::instance().getAccount(accountID);
490
active = acc->getActiveCodecs();
491
size = active.size();
493
std::stringstream ss;
495
v.push_back((ss.str()).data());
504
void ConfigurationManager::setActiveCodecList(
505
const std::vector<std::string>& list, const std::string& accountID) {
507
_debug ("ConfigurationManager: Active codec list received");
511
// Save the codecs list per account
512
acc = Manager::instance().getAccount(accountID);
514
acc->setActiveCodecs(list);
519
// Audio devices related methods
520
std::vector<std::string> ConfigurationManager::getInputAudioPluginList() {
522
_debug("ConfigurationManager: Active codec list received");
524
std::vector<std::string> v;
526
v.push_back("default");
527
v.push_back("surround40");
528
v.push_back("plug:hw");
535
std::vector<std::string> ConfigurationManager::getOutputAudioPluginList() {
537
std::vector<std::string> v;
539
v.push_back(PCM_DEFAULT);
540
v.push_back(PCM_DMIX);
546
void ConfigurationManager::setInputAudioPlugin(const std::string& audioPlugin) {
547
return Manager::instance().setInputAudioPlugin(audioPlugin);
550
void ConfigurationManager::setOutputAudioPlugin(const std::string& audioPlugin) {
551
return Manager::instance().setOutputAudioPlugin(audioPlugin);
554
std::vector<std::string> ConfigurationManager::getAudioOutputDeviceList() {
555
return Manager::instance().getAudioOutputDeviceList();
558
void ConfigurationManager::setAudioOutputDevice(const int32_t& index) {
559
return Manager::instance().setAudioOutputDevice(index);
562
std::vector<std::string> ConfigurationManager::getAudioInputDeviceList() {
563
return Manager::instance().getAudioInputDeviceList();
566
void ConfigurationManager::setAudioInputDevice(const int32_t& index) {
567
return Manager::instance().setAudioInputDevice(index);
570
std::vector<std::string> ConfigurationManager::getCurrentAudioDevicesIndex() {
571
return Manager::instance().getCurrentAudioDevicesIndex();
574
int32_t ConfigurationManager::getAudioDeviceIndex(const std::string& name) {
575
return Manager::instance().getAudioDeviceIndex(name);
578
std::string ConfigurationManager::getCurrentAudioOutputPlugin(void) {
579
return Manager::instance().getCurrentAudioOutputPlugin();
582
std::vector<std::string> ConfigurationManager::getPlaybackDeviceList() {
583
std::vector<std::string> ret;
587
std::vector<std::string> ConfigurationManager::getRecordDeviceList() {
588
std::vector<std::string> ret;
593
bool ConfigurationManager::isMd5CredentialHashing(void) {
594
bool isEnabled = Manager::instance().getConfigBool(PREFERENCES,
599
void ConfigurationManager::setMd5CredentialHashing(const bool& enabled) {
601
Manager::instance().setConfig(PREFERENCES, CONFIG_MD5HASH, TRUE_STR);
603
Manager::instance().setConfig(PREFERENCES, CONFIG_MD5HASH, FALSE_STR);
607
int32_t ConfigurationManager::isIax2Enabled(void) {
608
return Manager::instance().isIax2Enabled();
611
void ConfigurationManager::ringtoneEnabled(void) {
612
Manager::instance().ringtoneEnabled();
615
int32_t ConfigurationManager::isRingtoneEnabled(void) {
616
return Manager::instance().isRingtoneEnabled();
619
std::string ConfigurationManager::getRingtoneChoice(void) {
620
return Manager::instance().getRingtoneChoice();
623
void ConfigurationManager::setRingtoneChoice(const std::string& tone) {
624
Manager::instance().setRingtoneChoice(tone);
627
std::string ConfigurationManager::getRecordPath(void) {
628
return Manager::instance().getRecordPath();
631
void ConfigurationManager::setRecordPath(const std::string& recPath) {
632
Manager::instance().setRecordPath(recPath);
411
std::vector<std::string> ConfigurationManager::getCodecList (void)
414
std::vector<std::string> list;
416
CodecsMap codecs = Manager::instance().getCodecDescriptorMap().getCodecsMap();
417
CodecsMap::iterator iter = codecs.begin();
419
while (iter != codecs.end()) {
420
std::stringstream ss;
422
if (iter->second != NULL) {
424
list.push_back ( (ss.str()).data());
433
std::vector<std::string> ConfigurationManager::getSupportedTlsMethod (void)
435
std::vector<std::string> method;
436
method.push_back ("Default");
437
method.push_back ("TLSv1");
438
method.push_back ("SSLv2");
439
method.push_back ("SSLv3");
440
method.push_back ("SSLv23");
444
std::vector<std::string> ConfigurationManager::getCodecDetails (
445
const int32_t& payload)
448
return Manager::instance().getCodecDescriptorMap().getCodecSpecifications (
452
std::vector<std::string> ConfigurationManager::getActiveCodecList (
453
const std::string& accountID)
456
_debug ("Send active codec list for account %s", accountID.c_str ());
458
std::vector<std::string> v;
464
acc = Manager::instance().getAccount (accountID);
467
active = acc->getActiveCodecs();
468
size = active.size();
471
std::stringstream ss;
473
v.push_back ( (ss.str()).data());
482
void ConfigurationManager::setActiveCodecList (
483
const std::vector<std::string>& list, const std::string& accountID)
486
_debug ("ConfigurationManager: Active codec list received");
490
// Save the codecs list per account
491
acc = Manager::instance().getAccount (accountID);
494
acc->setActiveCodecs (list);
499
std::vector<std::string> ConfigurationManager::getAudioPluginList()
502
std::vector<std::string> v;
504
v.push_back (PCM_DEFAULT);
505
// v.push_back(PCM_DMIX);
506
v.push_back (PCM_DMIX_DSNOOP);
512
void ConfigurationManager::setAudioPlugin (const std::string& audioPlugin)
514
_debug ("ConfigurationManager: Set audio plugin %s", audioPlugin.c_str());
516
return Manager::instance().setAudioPlugin (audioPlugin);
519
std::vector<std::string> ConfigurationManager::getAudioOutputDeviceList()
521
return Manager::instance().getAudioOutputDeviceList();
524
std::vector<std::string> ConfigurationManager::getAudioInputDeviceList()
526
return Manager::instance().getAudioInputDeviceList();
529
void ConfigurationManager::setAudioOutputDevice (const int32_t& index)
531
return Manager::instance().setAudioDevice (index, SFL_PCM_PLAYBACK);
534
void ConfigurationManager::setAudioInputDevice (const int32_t& index)
536
return Manager::instance().setAudioDevice (index, SFL_PCM_CAPTURE);
539
void ConfigurationManager::setAudioRingtoneDevice (const int32_t& index)
541
return Manager::instance().setAudioDevice (index, SFL_PCM_RINGTONE);
544
std::vector<std::string> ConfigurationManager::getCurrentAudioDevicesIndex()
546
return Manager::instance().getCurrentAudioDevicesIndex();
549
int32_t ConfigurationManager::getAudioDeviceIndex (const std::string& name)
551
return Manager::instance().getAudioDeviceIndex (name);
554
std::string ConfigurationManager::getCurrentAudioOutputPlugin (void)
556
_debug ("ConfigurationManager: Get audio plugin %s", Manager::instance().getCurrentAudioOutputPlugin().c_str());
558
return Manager::instance().getCurrentAudioOutputPlugin();
561
std::string ConfigurationManager::getNoiseSuppressState (void)
563
return Manager::instance().getNoiseSuppressState();
566
void ConfigurationManager::setNoiseSuppressState (const std::string& state)
568
Manager::instance().setNoiseSuppressState (state);
571
std::vector<std::string> ConfigurationManager::getPlaybackDeviceList()
573
std::vector<std::string> ret;
577
std::vector<std::string> ConfigurationManager::getRecordDeviceList()
579
std::vector<std::string> ret;
584
bool ConfigurationManager::isMd5CredentialHashing (void)
586
return Manager::instance().preferences.getMd5Hash();
589
void ConfigurationManager::setMd5CredentialHashing (const bool& enabled)
591
Manager::instance().preferences.setMd5Hash (enabled);
594
int32_t ConfigurationManager::isIax2Enabled (void)
596
return Manager::instance().isIax2Enabled();
599
void ConfigurationManager::ringtoneEnabled (const std::string& accountID)
601
Manager::instance().ringtoneEnabled (accountID);
604
int32_t ConfigurationManager::isRingtoneEnabled (const std::string& accountID)
606
return Manager::instance().isRingtoneEnabled (accountID);
609
std::string ConfigurationManager::getRingtoneChoice (const std::string& accountID)
611
return Manager::instance().getRingtoneChoice (accountID);
614
void ConfigurationManager::setRingtoneChoice (const std::string& accountID, const std::string& tone)
616
Manager::instance().setRingtoneChoice (accountID, tone);
619
std::string ConfigurationManager::getRecordPath (void)
621
return Manager::instance().getRecordPath();
624
void ConfigurationManager::setRecordPath (const std::string& recPath)
626
Manager::instance().setRecordPath (recPath);
635
630
int32_t ConfigurationManager::getDialpad(void) {
636
631
return Manager::instance().getDialpad();
695
694
int32_t ConfigurationManager::getNotify(void) {
696
695
return Manager::instance().getNotify();
699
void ConfigurationManager::setAudioManager(const int32_t& api) {
700
Manager::instance().setAudioManager(api);
703
int32_t ConfigurationManager::getAudioManager(void) {
704
return Manager::instance().getAudioManager();
707
void ConfigurationManager::setMailNotify(void) {
708
Manager::instance().setMailNotify();
711
int32_t ConfigurationManager::getMailNotify(void) {
712
return Manager::instance().getMailNotify();
715
std::map<std::string, int32_t> ConfigurationManager::getAddressbookSettings(
717
return Manager::instance().getAddressbookSettings();
720
void ConfigurationManager::setAddressbookSettings(const std::map<std::string,
721
int32_t>& settings) {
722
Manager::instance().setAddressbookSettings(settings);
725
std::vector<std::string> ConfigurationManager::getAddressbookList(void) {
726
return Manager::instance().getAddressbookList();
729
void ConfigurationManager::setAddressbookList(
730
const std::vector<std::string>& list) {
731
Manager::instance().setAddressbookList(list);
734
std::map<std::string, std::string> ConfigurationManager::getHookSettings(void) {
735
return Manager::instance().getHookSettings();
738
void ConfigurationManager::setHookSettings(const std::map<std::string,
739
std::string>& settings) {
740
Manager::instance().setHookSettings(settings);
743
void ConfigurationManager::setAccountsOrder(const std::string& order) {
744
Manager::instance().setAccountsOrder(order);
747
std::map<std::string, std::string> ConfigurationManager::getHistory(void) {
748
return Manager::instance().send_history_to_client();
751
void ConfigurationManager::setHistory(
752
const std::map<std::string, std::string>& entries) {
753
Manager::instance().receive_history_from_client(entries);
756
std::string ConfigurationManager::getAddrFromInterfaceName(
757
const std::string& interface) {
759
std::string address = SIPVoIPLink::instance("")->getInterfaceAddrFromName(
765
std::vector<std::string> ConfigurationManager::getAllIpInterface(void) {
767
std::vector<std::string> vector;
768
SIPVoIPLink * sipLink = NULL;
769
sipLink = SIPVoIPLink::instance("");
771
if (sipLink != NULL) {
772
vector = sipLink->getAllIpInterface();
778
std::vector<std::string> ConfigurationManager::getAllIpInterfaceByName(void) {
779
std::vector<std::string> vector;
780
SIPVoIPLink * sipLink = NULL;
781
sipLink = SIPVoIPLink::instance("");
783
if (sipLink != NULL) {
784
vector = sipLink->getAllIpInterfaceByName();
790
int32_t ConfigurationManager::getWindowWidth(void) {
792
return Manager::instance().getConfigInt(PREFERENCES, WINDOW_WIDTH);
795
int32_t ConfigurationManager::getWindowHeight(void) {
797
return Manager::instance().getConfigInt(PREFERENCES, WINDOW_HEIGHT);
800
void ConfigurationManager::setWindowWidth(const int32_t& width) {
802
Manager::instance().setConfig(PREFERENCES, WINDOW_WIDTH, width);
805
void ConfigurationManager::setWindowHeight(const int32_t& height) {
807
Manager::instance().setConfig(PREFERENCES, WINDOW_HEIGHT, height);
810
int32_t ConfigurationManager::getWindowPositionX(void) {
812
return Manager::instance().getConfigInt(PREFERENCES, WINDOW_POSITION_X);
815
int32_t ConfigurationManager::getWindowPositionY(void) {
817
return Manager::instance().getConfigInt(PREFERENCES, WINDOW_POSITION_Y);
820
void ConfigurationManager::setWindowPositionX(const int32_t& posX) {
822
Manager::instance().setConfig(PREFERENCES, WINDOW_POSITION_X, posX);
825
void ConfigurationManager::setWindowPositionY(const int32_t& posY) {
827
Manager::instance().setConfig(PREFERENCES, WINDOW_POSITION_Y, posY);
830
std::map<std::string, int32_t> ConfigurationManager::getShortcuts() {
832
std::map<std::string, int> shortcutsMap;
835
for (int i = 0; i < (int)shortcutsKeys.size(); i++) {
836
std::string key = shortcutsKeys.at(i);
837
shortcut = Manager::instance().getConfigInt("Shortcuts", key);
838
shortcutsMap.insert(std::pair<std::string, int>(key, shortcut));
844
void ConfigurationManager::setShortcuts(
845
const std::map<std::string, int32_t>& shortcutsMap) {
847
std::map<std::string, int> map_cpy = shortcutsMap;
848
std::map<std::string, int>::iterator it;
850
for (int i = 0; i < (int)shortcutsKeys.size(); i++) {
851
std::string key = shortcutsKeys.at(i);
852
it = map_cpy.find(key);
853
if (it != shortcutsMap.end()) {
854
Manager::instance().setConfig("Shortcuts", key, it->second);
858
Manager::instance().saveConfig();
861
void ConfigurationManager::enableStatusIcon (const std::string& value) {
863
Manager::instance ().setConfig (PREFERENCES, SHOW_STATUSICON, value);
866
std::string ConfigurationManager::isStatusIconEnabled (void) {
868
return Manager::instance ().getConfigString (PREFERENCES, SHOW_STATUSICON);
699
void ConfigurationManager::setAudioManager (const int32_t& api)
701
Manager::instance().setAudioManager (api);
704
int32_t ConfigurationManager::getAudioManager (void)
706
return Manager::instance().getAudioManager();
709
void ConfigurationManager::setMailNotify (void)
711
Manager::instance().setMailNotify();
714
int32_t ConfigurationManager::getMailNotify (void)
716
return Manager::instance().getMailNotify();
719
std::map<std::string, int32_t> ConfigurationManager::getAddressbookSettings (
722
return Manager::instance().getAddressbookSettings();
725
void ConfigurationManager::setAddressbookSettings (const std::map<std::string,
728
Manager::instance().setAddressbookSettings (settings);
731
std::vector<std::string> ConfigurationManager::getAddressbookList (void)
733
return Manager::instance().getAddressbookList();
736
void ConfigurationManager::setAddressbookList (
737
const std::vector<std::string>& list)
739
Manager::instance().setAddressbookList (list);
742
std::map<std::string, std::string> ConfigurationManager::getHookSettings (void)
744
return Manager::instance().getHookSettings();
747
void ConfigurationManager::setHookSettings (const std::map<std::string,
748
std::string>& settings)
750
Manager::instance().setHookSettings (settings);
753
void ConfigurationManager::setAccountsOrder (const std::string& order)
755
Manager::instance().setAccountsOrder (order);
758
std::map<std::string, std::string> ConfigurationManager::getHistory (void)
760
return Manager::instance().send_history_to_client();
763
void ConfigurationManager::setHistory (
764
const std::map<std::string, std::string>& entries)
766
Manager::instance().receive_history_from_client (entries);
769
std::string ConfigurationManager::getAddrFromInterfaceName (
770
const std::string& interface)
773
std::string address = SIPVoIPLink::instance ("")->getInterfaceAddrFromName (
779
std::vector<std::string> ConfigurationManager::getAllIpInterface (void)
782
std::vector<std::string> vector;
783
SIPVoIPLink * sipLink = NULL;
784
sipLink = SIPVoIPLink::instance ("");
786
if (sipLink != NULL) {
787
vector = sipLink->getAllIpInterface();
793
std::vector<std::string> ConfigurationManager::getAllIpInterfaceByName (void)
795
std::vector<std::string> vector;
796
SIPVoIPLink * sipLink = NULL;
797
sipLink = SIPVoIPLink::instance ("");
799
if (sipLink != NULL) {
800
vector = sipLink->getAllIpInterfaceByName();
807
std::map<std::string, std::string> ConfigurationManager::getShortcuts()
810
return Manager::instance().shortcutPreferences.getShortcuts();
813
void ConfigurationManager::setShortcuts (
814
const std::map<std::string, std::string>& shortcutsMap)
817
std::map<std::string, std::string> map_cpy = shortcutsMap;
819
std::map<std::string, std::string> map_cpy = shortcutsMap;
820
std::map<std::string, std::string>::iterator it;
822
for (int i = 0; i < (int)shortcutsKeys.size(); i++) {
823
std::string key = shortcutsKeys.at(i);
824
it = map_cpy.find(key);
825
if (it != shortcutsMap.end()) {
827
Manager::instance().setConfig("Shortcuts", key, it->second);
831
Manager::instance().shortcutPreferences.setShortcuts (map_cpy);
833
Manager::instance().saveConfig();