diff --git a/daemon/bin/dbus/configurationmanager-introspec.xml b/daemon/bin/dbus/configurationmanager-introspec.xml index ca19ba2646dab96b9aa5ecba2810c6733923a57f..819ad3b22a464572273a5b5ad9dc87c661006674 100644 --- a/daemon/bin/dbus/configurationmanager-introspec.xml +++ b/daemon/bin/dbus/configurationmanager-introspec.xml @@ -8,6 +8,8 @@ <method name="getAccountTemplate" tp:name-for-bindings="getAccountTemplate"> <annotation name="org.qtproject.QtDBus.QtTypeName.Out0" value="MapStringString"/> + <arg type="s" name="accountType" direction="in" tp:type="String"> + </arg> <arg type="a{ss}" name="details" direction="out" tp:type="String_String_Map"> </arg> </method> @@ -386,7 +388,7 @@ <arg type="b" name="result" direction="out"></arg> <arg type="s" name="accountID" direction="in"></arg> <arg type="u" name="codecId" direction="in"></arg> - <annotation name="org.qtproject.QtDBus.QtTypeName.In0" value="MapStringString"/> + <annotation name="org.qtproject.QtDBus.QtTypeName.In2" value="MapStringString"/> <arg type="a{ss}" name="details" direction="in" tp:type="String_String_Map"> </arg> </method> diff --git a/daemon/bin/dbus/dbusconfigurationmanager.cpp b/daemon/bin/dbus/dbusconfigurationmanager.cpp index 0587b7251ea75762a970723619fb4d3d3bc1f56a..7cb4a9ea6242b3a5a478c28bcfb456c637e41571 100644 --- a/daemon/bin/dbus/dbusconfigurationmanager.cpp +++ b/daemon/bin/dbus/dbusconfigurationmanager.cpp @@ -56,9 +56,9 @@ DBusConfigurationManager::setAccountDetails(const std::string& accountID, const } auto -DBusConfigurationManager::getAccountTemplate() -> decltype(DRing::getAccountTemplate()) +DBusConfigurationManager::getAccountTemplate(const std::string& accountType) -> decltype(DRing::getAccountTemplate(accountType)) { - return DRing::getAccountTemplate(); + return DRing::getAccountTemplate(accountType); } auto diff --git a/daemon/bin/dbus/dbusconfigurationmanager.h b/daemon/bin/dbus/dbusconfigurationmanager.h index 7368abb518e992313ca681d745bf9630765f84d5..a72c094caba2822e600c1917e8e5580b91c9042b 100644 --- a/daemon/bin/dbus/dbusconfigurationmanager.h +++ b/daemon/bin/dbus/dbusconfigurationmanager.h @@ -68,7 +68,7 @@ class DBusConfigurationManager : std::map<std::string, std::string> getAccountDetails(const std::string& accountID); std::map<std::string, std::string> getVolatileAccountDetails(const std::string& accountID); void setAccountDetails(const std::string& accountID, const std::map<std::string, std::string>& details); - std::map<std::string, std::string> getAccountTemplate(); + std::map<std::string, std::string> getAccountTemplate(const std::string& accountType); std::string addAccount(const std::map<std::string, std::string>& details); void removeAccount(const std::string& accoundID); std::vector<std::string> getAccountList(); diff --git a/daemon/src/client/configurationmanager.cpp b/daemon/src/client/configurationmanager.cpp index 2fa897440dac681cdef6a75fa7041fc8b681a959..9ffef7f813ea36dce4f7dd19d462a53ae10fca11 100644 --- a/daemon/src/client/configurationmanager.cpp +++ b/daemon/src/client/configurationmanager.cpp @@ -45,10 +45,15 @@ #include "fileutils.h" #include "ip_utils.h" #include "sip/sipaccount.h" +#include "ringdht/ringaccount.h" +#if HAVE_IAX +#include "iax/iaxaccount.h" +#endif #include "security_const.h" #include "audio/audiolayer.h" #include "system_codec_container.h" #include "client/signal.h" +#include "account_const.h" #include <dirent.h> @@ -62,7 +67,6 @@ constexpr unsigned CODECS_NOT_LOADED = 0x1000; /** Codecs not found */ using ring::SIPAccount; using ring::TlsValidator; -using ring::Account; using ring::DeviceType; using ring::HookPreference; @@ -235,9 +239,17 @@ registerAllAccounts() ///This function is used as a base for new accounts for clients that support it std::map<std::string, std::string> -getAccountTemplate() -{ - return SIPAccount{"dummy", false}.getAccountDetails(); +getAccountTemplate(const std::string& accountType) +{ + if (accountType == Account::ProtocolNames::RING) + return ring::RingAccount("dummy", false).getAccountDetails(); + else if (accountType == Account::ProtocolNames::SIP) + return ring::SIPAccount("dummy", false).getAccountDetails(); +#if HAVE_IAX + else if (accountType == Account::ProtocolNames::IAX) + return ring::IAXAccount("dummy").getAccountDetails(); +#endif + return {{}}; } std::string @@ -331,7 +343,7 @@ getCodecDetails(const std::string& accountID, const unsigned& codecId) { RING_ERR("Could not find account %s return default codec details" , accountID.c_str()); - return Account::getDefaultCodecDetails(codecId); + return ring::Account::getDefaultCodecDetails(codecId); } auto codec = acc->searchCodecById(codecId, ring::MEDIA_ALL); @@ -359,7 +371,7 @@ getActiveCodecList(const std::string& accountID) if (auto acc = ring::Manager::instance().getAccount(accountID)) return acc->getActiveCodecs(); RING_ERR("Could not find account %s, returning default", accountID.c_str()); - return Account::getDefaultCodecsId(); + return ring::Account::getDefaultCodecsId(); } void diff --git a/daemon/src/dring/configurationmanager_interface.h b/daemon/src/dring/configurationmanager_interface.h index 9bdf42a2e4ab584e527dcad6d38c1490752e58ef..71f10fd8f6e1245ed96152817199114f67a7c8e0 100644 --- a/daemon/src/dring/configurationmanager_interface.h +++ b/daemon/src/dring/configurationmanager_interface.h @@ -50,7 +50,7 @@ void registerConfHandlers(const std::map<std::string, std::shared_ptr<CallbackWr std::map<std::string, std::string> getAccountDetails(const std::string& accountID); std::map<std::string, std::string> getVolatileAccountDetails(const std::string& accountID); void setAccountDetails(const std::string& accountID, const std::map<std::string, std::string>& details); -std::map<std::string, std::string> getAccountTemplate(); +std::map<std::string, std::string> getAccountTemplate(const std::string& accountType); std::string addAccount(const std::map<std::string, std::string>& details); void removeAccount(const std::string& accoundID); std::vector<std::string> getAccountList();