diff --git a/bin/dbus/configurationmanager-introspec.xml b/bin/dbus/configurationmanager-introspec.xml index fc055d5267867b15574a251b6ad8b6bd52664045..3cf3e73d4c883112ef4108ec716c75013fb600f8 100644 --- a/bin/dbus/configurationmanager-introspec.xml +++ b/bin/dbus/configurationmanager-introspec.xml @@ -131,42 +131,6 @@ </arg> </method> - <method name="getIp2IpDetails" tp:name-for-bindings="getIp2IpDetails"> - <tp:docstring> - Get configuration settings of the IP2IP_PROFILE. They are sligthly different from account settings since no VoIP accounts are involved. - </tp:docstring> - <annotation name="org.qtproject.QtDBus.QtTypeName.Out0" value="MapStringString"/> - <arg type="a{ss}" name="details" direction="out" tp:type="String_String_Map"> - <tp:docstring> - Available parameters are: - <ul> - <li>ACCOUNT_ID</li> - <li>SRTP_KEY_EXCHANGE</li> - <li>SRTP_ENABLE</li> - <li>SRTP_RTP_FALLBACK</li> - <li>ZRTP_DISPLAY_SAS</li> - <li>ZRTP_HELLO_HASH</li> - <li>ZRTP_NOT_SUPP_WARNING</li> - <li>ZRTP_DISPLAY_SAS_ONCE</li> - <li>LOCAL_INTERFACE</li> - <li>LOCAL_PORT</li> - <li>TLS_LISTENER_PORT</li> - <li>TLS_CA_LIST_FILE</li> - <li>TLS_CERTIFICATE_FILE</li> - <li>TLS_PRIVATE_KEY_FILE</li> - <li>TLS_PASSWORD</li> - <li>TLS_METHOD</li> - <li>TLS_CIPHERS</li> - <li>TLS_SERVER_NAME</li> - <li>TLS_VERIFY_SERVER</li> - <li>TLS_VERIFY_CLIENT</li> - <li>TLS_REQUIRE_CLIENT_CERTIFICATE</li> - <li>TLS_NEGOTIATION_TIMEOUT_SEC</li> - </ul> - </tp:docstring> - </arg> - </method> - <method name="getCredentials" tp:name-for-bindings="getCredentials"> <arg type="s" name="accountID" direction="in"> </arg> diff --git a/bin/dbus/dbusconfigurationmanager.cpp b/bin/dbus/dbusconfigurationmanager.cpp index b16d1f8db399275cb8714296a1db377c4c512b95..5bd6cf6681f883e6793efcb8147096b76356c09d 100644 --- a/bin/dbus/dbusconfigurationmanager.cpp +++ b/bin/dbus/dbusconfigurationmanager.cpp @@ -468,12 +468,6 @@ DBusConfigurationManager::sendTrustRequest(const std::string& accountId, const s DRing::sendTrustRequest(accountId, to, payload); } -auto -DBusConfigurationManager::getIp2IpDetails() -> decltype(DRing::getIp2IpDetails()) -{ - return DRing::getIp2IpDetails(); -} - auto DBusConfigurationManager::getCredentials(const std::string& accountID) -> decltype(DRing::getCredentials(accountID)) { diff --git a/bin/dbus/dbusconfigurationmanager.h b/bin/dbus/dbusconfigurationmanager.h index bd889f899ccd7c10f8083915e21296f650fffe14..04e3b25735d50634cf00a34690c41ae5cc315fb6 100644 --- a/bin/dbus/dbusconfigurationmanager.h +++ b/bin/dbus/dbusconfigurationmanager.h @@ -111,7 +111,6 @@ class DBusConfigurationManager : void setAccountsOrder(const std::string& order); std::map<std::string, std::string> getHookSettings(); void setHookSettings(const std::map<std::string, std::string>& settings); - std::map<std::string, std::string> getIp2IpDetails(); std::vector<std::map<std::string, std::string>> getCredentials(const std::string& accountID); void setCredentials(const std::string& accountID, const std::vector<std::map<std::string, std::string>>& details); std::string getAddrFromInterfaceName(const std::string& interface); diff --git a/src/account_factory.cpp b/src/account_factory.cpp index 59040cfa8a2a4bceab6f9d4db4328ebd54cd1b8b..75949ff5de1c5fe03fc09382cb899258c7e86ada 100644 --- a/src/account_factory.cpp +++ b/src/account_factory.cpp @@ -32,8 +32,6 @@ #include "ringdht/ringaccount.h" #endif -#include "sip/sipvoiplink.h" // for SIPVoIPLink::loadIP2IPSettings - #include <stdexcept> namespace ring { @@ -193,17 +191,4 @@ AccountFactory::accountCount() const return count; } -std::shared_ptr<Account> -AccountFactory::getIP2IPAccount() const -{ - return ip2ip_account_.lock(); -} - -void AccountFactory::initIP2IPAccount() -{ - // cache this often used account using a weak_ptr - ip2ip_account_ = createAccount(SIPAccount::ACCOUNT_TYPE, - SIPAccount::IP2IP_PROFILE); -} - } // namespace ring diff --git a/src/account_factory.h b/src/account_factory.h index 1fd1f807e05b82996b9ac892f0416dcfb24ad9d0..576873aad35f6cdac535458991754180d971d615 100644 --- a/src/account_factory.h +++ b/src/account_factory.h @@ -116,15 +116,10 @@ class AccountFactory { return v; } - std::shared_ptr<Account> getIP2IPAccount() const; - - void initIP2IPAccount(); - private: mutable std::recursive_mutex mutex_ = {}; std::map<std::string, std::function<std::shared_ptr<Account>(const std::string&)> > generators_ = {}; std::map<std::string, AccountMap<Account> > accountMaps_ = {}; - std::weak_ptr<Account> ip2ip_account_ = {}; //! cached pointer on IP2IP account template <class T> const AccountMap<Account>* getMap_() const { diff --git a/src/client/configurationmanager.cpp b/src/client/configurationmanager.cpp index 374078e531e0e1bdbf6633bd6a1c0b032a0df8bb..0a83ed1209c7443b3799e6c7432f1e69a66490a0 100644 --- a/src/client/configurationmanager.cpp +++ b/src/client/configurationmanager.cpp @@ -77,16 +77,6 @@ registerConfHandlers(const std::map<std::string, } } -std::map<std::string, std::string> -getIp2IpDetails() -{ - auto account = ring::Manager::instance().getIP2IPAccount(); - if (auto sipaccount = static_cast<SIPAccount*>(account.get())) - return sipaccount->getIp2IpDetails(); - RING_ERR("Could not find IP2IP account"); - return std::map<std::string, std::string>(); -} - std::map<std::string, std::string> getAccountDetails(const std::string& accountID) { diff --git a/src/client/presencemanager.cpp b/src/client/presencemanager.cpp index c2d6d10ee99469c042bd87f46bcbd95fcccb5761..18f5856a5fe8c09b269ad42d93926009ec59a781 100644 --- a/src/client/presencemanager.cpp +++ b/src/client/presencemanager.cpp @@ -35,6 +35,7 @@ #include "sip/sippresence.h" #include "sip/pres_sub_client.h" #include "client/ring_signal.h" +#include "intrin.h" namespace DRing { @@ -100,8 +101,9 @@ publish(const std::string& accountID, bool status, const std::string& note) * Accept or not a PresSubServer request for IP2IP account */ void -answerServerRequest(const std::string& uri, bool flag) +answerServerRequest(UNUSED const std::string& uri, UNUSED bool flag) { +#if 0 // DISABLED: removed IP2IP support, tuleap: #448 auto account = ring::Manager::instance().getIP2IPAccount(); if (auto sipaccount = static_cast<SIPAccount *>(account.get())) { RING_DBG("Approve presence (acc:IP2IP, serv:%s, flag:%s)", uri.c_str(), @@ -113,6 +115,9 @@ answerServerRequest(const std::string& uri, bool flag) RING_ERR("Presence not initialized"); } else RING_ERR("Could not find account IP2IP"); +#else + RING_ERR("answerServerRequest() is deprecated and does nothing"); +#endif } /** diff --git a/src/dring/configurationmanager_interface.h b/src/dring/configurationmanager_interface.h index 5f8d81b4a39f44be0a8d4b57a5220ee631b4b846..7789041b43e3e9d4777d494e7cc4d70ffa691fa4 100644 --- a/src/dring/configurationmanager_interface.h +++ b/src/dring/configurationmanager_interface.h @@ -106,8 +106,6 @@ void setAccountsOrder(const std::string& order); std::map<std::string, std::string> getHookSettings(); void setHookSettings(const std::map<std::string, std::string>& settings); -std::map<std::string, std::string> getIp2IpDetails(); - std::vector<std::map<std::string, std::string>> getCredentials(const std::string& accountID); void setCredentials(const std::string& accountID, const std::vector<std::map<std::string, std::string>>& details); diff --git a/src/manager.cpp b/src/manager.cpp index 3a10828712bc4f1253453850aa6fb7b82ea4dfa1..17b0e9a9e2f691990e5746c50c063b2336b2fa40 100644 --- a/src/manager.cpp +++ b/src/manager.cpp @@ -9,6 +9,7 @@ * Author: Guillaume Carmel-Archambault <guillaume.carmel-archambault@savoirfairelinux.com> * Author: Tristan Matthews <tristan.matthews@savoirfairelinux.com> * Author: Guillaume Roguez <guillaume.roguez@savoirfairelinux.com> + * Author: Adrien Béraud <adrien.beraud@savoirfairelinux.com> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -85,8 +86,6 @@ using random_device = std::random_device; #include <iostream> #include <fstream> #include <sstream> -#include <sys/types.h> // mkdir(2) -#include <sys/stat.h> // mkdir(2) #include <memory> #include <mutex> @@ -201,12 +200,6 @@ Manager::setAutoAnswer(bool enable) autoAnswer_ = enable; } -void -Manager::loadDefaultAccountMap() -{ - accountFactory_.initIP2IPAccount(); -} - Manager::Manager() : pluginManager_(new PluginManager) , preferences(), voipPreferences(), @@ -250,8 +243,7 @@ Manager::parseConfiguration() result = false; } } catch (const YAML::BadFile &e) { - RING_WARN("Could not open config file: creating default account map"); - loadDefaultAccountMap(); + RING_WARN("Could not open configuration file"); } return result; @@ -319,8 +311,7 @@ Manager::init(const std::string &config_file) parseConfiguration(); } catch (const YAML::Exception &e) { RING_ERR("%s", e.what()); - RING_WARN("Restoring backup failed, creating default account map"); - loadDefaultAccountMap(); + RING_WARN("Restoring backup failed"); } } @@ -2329,44 +2320,24 @@ Manager::setAccountsOrder(const std::string& order) std::vector<std::string> Manager::getAccountList() const { - // TODO: this code looks weird. need further investigation! - - using std::vector; - using std::string; - const vector<string> account_order(loadAccountOrder()); - - // The IP2IP profile should always be available, and first in the list; - // however, it is possible that it was deleted by removeAccounts() - - vector<string> v; + auto account_order = loadAccountOrder(); // Concatenate all account pointers in a single map const auto& allAccounts = accountFactory_.getAllAccounts(); + std::vector<std::string> v; + v.reserve(allAccounts.size()); // If no order has been set, load the default one ie according to the creation date. if (account_order.empty()) { - for (const auto &account : allAccounts) { - if (account->isIP2IP()) - continue; - v.push_back(account->getAccountID()); - } + for (const auto &account : allAccounts) + v.emplace_back(account->getAccountID()); } else { - const auto& ip2ipAccountID = getIP2IPAccount() ? - getIP2IPAccount()->getAccountID() : std::string(); for (const auto& id : account_order) { - if (id.empty() or id == ip2ipAccountID) - continue; - if (accountFactory_.hasAccount(id)) v.push_back(id); } } - if (const auto& account = getIP2IPAccount()) - v.push_back(account->getAccountID()); - else - RING_ERR("could not find IP2IP profile in getAccount list"); - return v; } @@ -2550,18 +2521,10 @@ Manager::loadAccount(const YAML::Node &node, int &errorCount, }; if (!accountid.empty() and !accountAlias.empty()) { - const auto& ip2ipAccountID = getIP2IPAccount() ? - getIP2IPAccount()->getAccountID() : std::string(); - - if (not inAccountOrder(accountid) and accountid != ip2ipAccountID) { + if (not inAccountOrder(accountid)) { RING_WARN("Dropping account %s, which is not in account order", accountid.c_str()); } else if (accountFactory_.isSupportedType(accountType.c_str())) { - std::shared_ptr<Account> a; - if (accountid != ip2ipAccountID) - a = accountFactory_.createAccount(accountType.c_str(), accountid); - else - a = accountFactory_.getIP2IPAccount(); - if (a) { + if (auto a = accountFactory_.createAccount(accountType.c_str(), accountid)) { a->unserialize(node); } else { RING_ERR("Failed to create account type \"%s\"", accountType.c_str()); @@ -2576,8 +2539,6 @@ Manager::loadAccount(const YAML::Node &node, int &errorCount, int Manager::loadAccountMap(const YAML::Node &node) { - accountFactory_.initIP2IPAccount(); - // build preferences preferences.unserialize(node); voipPreferences.unserialize(node); @@ -2783,7 +2744,7 @@ std::shared_ptr<Call> Manager::newOutgoingCall(const std::string& toUrl, const std::string& preferredAccountId) { - auto account = Manager::instance().getIP2IPAccount(); + std::shared_ptr<Account> account {}; auto preferred = getAccount(preferredAccountId); std::string finalToUrl = toUrl; diff --git a/src/manager.h b/src/manager.h index 2f0b9b0a76ba433823b69702549d3d8063305437..1e2e8014aa347b62eafd4bc764ffbe97f2fb9d71 100644 --- a/src/manager.h +++ b/src/manager.h @@ -904,10 +904,6 @@ class Manager { return accountFactory_.accountCount<T>(); } - std::shared_ptr<Account> getIP2IPAccount() const { - return accountFactory_.getIP2IPAccount(); - } - // only used by test framework bool hasAccount(const std::string& accountID) { return accountFactory_.hasAccount(accountID); @@ -1000,8 +996,6 @@ class Manager { std::mt19937_64 rand_; - void loadDefaultAccountMap(); - void loadAccount(const YAML::Node &item, int &errorCount, const std::string &accountOrder); diff --git a/src/sip/pres_sub_server.cpp b/src/sip/pres_sub_server.cpp index 48d3ba2eaf9f40e99867391407448b7a68fc73a4..43d85dacb9645323c7411bc407f85254a171b8b8 100644 --- a/src/sip/pres_sub_server.cpp +++ b/src/sip/pres_sub_server.cpp @@ -29,6 +29,7 @@ #include "pres_sub_server.h" #include "client/ring_signal.h" #include "sip_utils.h" +#include "intrin.h" namespace ring { @@ -36,8 +37,12 @@ using sip_utils::CONST_PJ_STR; /* Callback called when *server* subscription state has changed. */ void -PresSubServer::pres_evsub_on_srv_state(pjsip_evsub *sub, pjsip_event *event) +PresSubServer::pres_evsub_on_srv_state(UNUSED pjsip_evsub *sub, UNUSED pjsip_event *event) { + RING_ERR("PresSubServer::pres_evsub_on_srv_state() is deprecated and does nothing"); + return; + +#if 0 // DISABLED: removed IP2IP support, tuleap: #448 pjsip_rx_data *rdata = event->body.rx_msg.rdata; if (!rdata) { @@ -47,7 +52,6 @@ PresSubServer::pres_evsub_on_srv_state(pjsip_evsub *sub, pjsip_event *event) auto account = Manager::instance().getIP2IPAccount(); auto sipaccount = static_cast<SIPAccount *>(account.get()); - if (!sipaccount) { RING_ERR("Could not find account IP2IP"); return; @@ -79,6 +83,7 @@ PresSubServer::pres_evsub_on_srv_state(pjsip_evsub *sub, pjsip_event *event) } pres->unlock(); +#endif } pj_bool_t @@ -89,6 +94,7 @@ PresSubServer::pres_on_rx_subscribe_request(pjsip_rx_data *rdata) pj_str_t *str = &method->name; std::string request(str->ptr, str->slen); // pj_str_t contact; +#if 0 // DISABLED: removed IP2IP support, tuleap: #448 pj_status_t status; pjsip_dialog *dlg; pjsip_evsub *sub; @@ -98,13 +104,17 @@ PresSubServer::pres_on_rx_subscribe_request(pjsip_rx_data *rdata) pj_str_t reason; pres_msg_data msg_data; pjsip_evsub_state ev_state; - +#endif /* Only hande incoming subscribe messages should be processed here. * Otherwise we return FALSE to let other modules handle it */ if (pjsip_method_cmp(&rdata->msg_info.msg->line.req.method, pjsip_get_subscribe_method()) != 0) return PJ_FALSE; + RING_ERR("PresSubServer::pres_evsub_on_srv_state() is deprecated and does nothing"); + return PJ_FALSE; + +#if 0 // DISABLED: removed IP2IP support, tuleap: #448 /* debug msg */ std::string name(rdata->msg_info.to->name.ptr, rdata->msg_info.to->name.slen); std::string server(rdata->msg_info.from->name.ptr, rdata->msg_info.from->name.slen); @@ -255,6 +265,7 @@ PresSubServer::pres_on_rx_subscribe_request(pjsip_rx_data *rdata) pres->unlock(); return PJ_TRUE; +#endif } pjsip_module PresSubServer::mod_presence_server = { diff --git a/src/sip/sipaccount.cpp b/src/sip/sipaccount.cpp index 2dd9485909b9ac8dee362bf35aa413d9cb890846..cd9009a7ee3df99209e5c1bdb0301dd1310007df 100644 --- a/src/sip/sipaccount.cpp +++ b/src/sip/sipaccount.cpp @@ -148,9 +148,6 @@ SIPAccount::SIPAccount(const std::string& accountID, bool presenceEnabled) via_addr_.host.ptr = 0; via_addr_.host.slen = 0; via_addr_.port = 0; - - if (isIP2IP()) - alias_ = IP2IP_PROFILE; } SIPAccount::~SIPAccount() @@ -757,7 +754,7 @@ void SIPAccount::doRegister() void SIPAccount::doRegister1_() { - if (hostname_.empty() || isIP2IP()) { + if (isIP2IP()) { doRegister2_(); return; } @@ -1671,26 +1668,6 @@ std::string SIPAccount::getUserAgentName() const return userAgent_; } -std::map<std::string, std::string> SIPAccount::getIp2IpDetails() const -{ - assert(isIP2IP()); - std::map<std::string, std::string> ip2ipAccountDetails; - ip2ipAccountDetails[Conf::CONFIG_SRTP_KEY_EXCHANGE] = sip_utils::getKeyExchangeName(srtpKeyExchange_); - ip2ipAccountDetails[Conf::CONFIG_SRTP_ENABLE] = isSrtpEnabled() ? TRUE_STR : FALSE_STR; - ip2ipAccountDetails[Conf::CONFIG_SRTP_RTP_FALLBACK] = srtpFallback_ ? TRUE_STR : FALSE_STR; - ip2ipAccountDetails[Conf::CONFIG_ZRTP_DISPLAY_SAS] = zrtpDisplaySas_ ? TRUE_STR : FALSE_STR; - ip2ipAccountDetails[Conf::CONFIG_ZRTP_HELLO_HASH] = zrtpHelloHash_ ? TRUE_STR : FALSE_STR; - ip2ipAccountDetails[Conf::CONFIG_ZRTP_NOT_SUPP_WARNING] = zrtpNotSuppWarning_ ? TRUE_STR : FALSE_STR; - ip2ipAccountDetails[Conf::CONFIG_ZRTP_DISPLAY_SAS_ONCE] = zrtpDisplaySasOnce_ ? TRUE_STR : FALSE_STR; - ip2ipAccountDetails[Conf::CONFIG_LOCAL_PORT] = ring::to_string(localPort_); - - auto tlsSettings(getTlsSettings()); - std::copy(tlsSettings.begin(), tlsSettings.end(), - std::inserter(ip2ipAccountDetails, ip2ipAccountDetails.end())); - - return ip2ipAccountDetails; -} - std::map<std::string, std::string> SIPAccount::getTlsSettings() const { @@ -1713,7 +1690,7 @@ SIPAccount::getTlsSettings() const bool SIPAccount::isIP2IP() const { - return accountID_ == IP2IP_PROFILE; + return hostname_.empty(); } SIPPresence * SIPAccount::getPresence() const diff --git a/src/sip/sipaccount.h b/src/sip/sipaccount.h index ff38140cb58d23ea195e7d2af747be28f4b05354..837b928bb0b803ca2c20f9a3892f3671c8d93f4c 100644 --- a/src/sip/sipaccount.h +++ b/src/sip/sipaccount.h @@ -75,7 +75,6 @@ class SIPCall; */ class SIPAccount : public SIPAccountBase { public: - constexpr static const char * const IP2IP_PROFILE = "IP2IP"; constexpr static const char * const ACCOUNT_TYPE = "SIP"; /** @@ -132,11 +131,6 @@ class SIPAccount : public SIPAccountBase { */ virtual std::map<std::string, std::string> getVolatileAccountDetails() const override; - /** - * Return the information for the default IP to IP account - */ - std::map<std::string, std::string> getIp2IpDetails() const; - /** * Return the TLS settings, mainly used to return security information to * a client application diff --git a/src/sip/sipvoiplink.cpp b/src/sip/sipvoiplink.cpp index 17f513cad93b026d1fc549ebdd90823ef2d69791..eba045e38aa88d5bf2028d2d337a4a5b7846c415 100644 --- a/src/sip/sipvoiplink.cpp +++ b/src/sip/sipvoiplink.cpp @@ -633,7 +633,7 @@ SIPVoIPLink::guessAccount(const std::string& userName, RING_DBG("username = %s, server = %s, from = %s", userName.c_str(), server.c_str(), fromUri.c_str()); // Try to find the account id from username and server name by full match - auto result = std::static_pointer_cast<SIPAccountBase>(Manager::instance().getIP2IPAccount()); // default result + std::shared_ptr<SIPAccountBase> result {}; MatchRank best = MatchRank::NONE; #if HAVE_DHT