38#include <dhtnet/ip_utils.h>
39#include <dhtnet/upnp/upnp_context.h>
40#include <dhtnet/certstore.h>
43#include <TargetConditionals.h>
74std::map<std::string, std::string>
80std::map<std::string, std::string>
86std::map<std::string, std::string>
92 }
catch (
const std::runtime_error& e) {
93 JAMI_WARN(
"Certificate loading failed: %s", e.what());
98std::map<std::string, std::string>
100 const std::string& certificate,
101 const std::string& privateKey,
102 const std::string& privateKeyPass,
103 const std::string& caList)
108 }
catch (
const std::runtime_error& e) {
109 JAMI_WARN(
"Certificate loading failed: %s", e.what());
115std::map<std::string, std::string>
121 }
catch (
const std::runtime_error& e) {
122 JAMI_WARN(
"Certificate loading failed: %s", e.what());
127std::map<std::string, std::string>
129 const std::string& certificate,
130 const std::string& privateKey,
131 const std::string& privateKeyPassword)
136 TlsValidator validator {acc->certStore(), certificate, privateKey, privateKeyPassword};
137 acc->certStore().pinCertificate(validator.getCertificate(),
false);
140 }
catch (
const std::runtime_error& e) {
141 JAMI_WARN(
"Certificate loading failed: %s", e.what());
146std::vector<std::string>
150 return acc->certStore().getPinnedCertificates();
154std::vector<std::string>
155pinCertificate(
const std::string& accountId,
const std::vector<uint8_t>& certificate,
bool local)
158 return acc->certStore().pinCertificate(certificate, local);
166 acc->certStore().pinCertificatePath(path);
173 return acc->certStore().unpinCertificate(certId);
181 return acc->certStore().unpinCertificatePath(path);
189 acc->dht()->findCertificate(dht::InfoHash(certId),
190 [](
const std::shared_ptr<dht::crypto::Certificate>& ) {});
201 auto status = dhtnet::tls::TrustStore::statusFromStr(ststr.c_str());
202 return acc->setCertificateStatus(certId, status);
204 }
catch (
const std::out_of_range& e) {
205 JAMI_WARNING(
"Argument out of range when setting certificate status: {}", e);
210std::vector<std::string>
213 auto status = dhtnet::tls::TrustStore::statusFromStr(ststr.c_str());
215 return acc->getCertificatesByStatus(status);
220setAccountDetails(
const std::string& accountId,
const std::map<std::string, std::string>& details)
247 return acc->isPasswordValid(password);
255 return acc->getPasswordKey(password);
267 const std::string& to,
268 const std::map<std::string, std::string>& payloads,
271 bool onlyConnected = flags & 0x1;
279 return acc->getLastMessages(base_timestamp);
283std::map<std::string, std::string>
291 const std::string& displayName,
292 const std::string& avatar,
293 const std::string& fileType,
297 acc->updateProfile(displayName, avatar, fileType, flag);
314setIsComposing(
const std::string& accountId,
const std::string& conversationUri,
bool isWriting)
317 acc->setIsComposing(conversationUri, isWriting);
322 const std::string& conversationUri,
323 const std::string& messageId,
327 return acc->setMessageDisplayed(conversationUri, messageId, status);
332addDevice(
const std::string& accountId,
const std::string& uri)
334 JAMI_DEBUG(
"[LinkDevice {}] exportToPeer called.", accountId);
336 return account->addDevice(uri);
345 return account->confirmAddDevice(op_id);
354 return account->cancelAddDevice(op_id);
361 const std::string& credentialsFromUser,
362 const std::string& scheme)
366 account->provideAccountAuthentication(credentialsFromUser, scheme);
374 const std::string& destinationPath,
375 const std::string& scheme,
376 const std::string& password)
379 return account->exportArchive(destinationPath, scheme, password);
386 const std::string& deviceId,
387 const std::string& scheme,
388 const std::string& password)
391 return account->revokeDevice(deviceId, scheme, password);
396std::map<std::string, std::string>
400 return acc->getKnownDevices();
405changeAccountPassword(
const std::string& accountId,
const std::string& password_old,
const std::string& password_new)
408 return acc->changeArchivePassword(password_old, password_new);
415addContact(
const std::string& accountId,
const std::string& uri)
418 return acc->addContact(uri);
422removeContact(
const std::string& accountId,
const std::string& uri,
bool ban)
425 return acc->removeContact(uri, ban);
428std::map<std::string, std::string>
432 return acc->getContactDetails(uri);
436std::vector<std::map<std::string, std::string>>
440 return acc->getContacts();
445std::vector<std::map<std::string, std::string>>
449 return acc->getTrustRequests();
457 return acc->acceptTrustRequest(from);
465 return acc->discardTrustRequest(from);
470sendTrustRequest(
const std::string& accountId,
const std::string& to,
const std::vector<uint8_t>& payload)
473 acc->sendTrustRequest(to, payload);
477std::map<std::string, std::string>
488addAccount(
const std::map<std::string, std::string>& details,
const std::string& accountId)
499std::vector<std::map<std::string, std::string>>
505std::vector<std::map<std::string, std::string>>
509 return account->getConversationConnectivity(conversationId);
514std::vector<std::map<std::string, std::string>>
518 return account->getConversationTrackedMembers(conversationId);
523std::vector<std::map<std::string, std::string>>
535std::vector<std::string>
554std::vector<std::string>
560std::vector<std::string>
565 JAMI_ERR(
"SIP account %s doesn't exist", accountId.c_str());
570setCodecDetails(
const std::string& accountId,
const unsigned& codecId,
const std::map<std::string, std::string>& details)
574 JAMI_ERR(
"Unable to find account %s. Unable to set codec details", accountId.c_str());
580 JAMI_ERR(
"Unable to find codec %d", codecId);
585 if (
auto foundCodec = std::static_pointer_cast<jami::SystemAudioCodecInfo>(codec)) {
586 foundCodec->setCodecSpecifications(details);
593 if (
auto foundCodec = std::static_pointer_cast<jami::SystemVideoCodecInfo>(codec)) {
594 foundCodec->setCodecSpecifications(details);
595 JAMI_WARN(
"parameters for %s changed ", foundCodec->name.c_str());
597 if (call->getVideoCodec() == foundCodec) {
598 JAMI_WARN(
"%s running. Need to restart encoding", foundCodec->name.c_str());
599 call->restartMediaSender();
606 }
catch (
const std::exception& e) {
607 JAMI_ERR(
"Unable to set codec specifications: %s", e.what());
613std::map<std::string, std::string>
618 JAMI_ERR(
"Unable to find account %s return default codec details", accountId.c_str());
629 if (
auto foundCodec = std::static_pointer_cast<jami::SystemAudioCodecInfo>(codec))
630 return foundCodec->getCodecSpecifications();
633 if (
auto foundCodec = std::static_pointer_cast<jami::SystemVideoCodecInfo>(codec))
634 return foundCodec->getCodecSpecifications();
644 return acc->getActiveCodecs();
645 JAMI_ERR(
"Unable to find account %s, returning default", accountId.c_str());
653 acc->setActiveCodecs(list);
656 JAMI_ERR(
"Unable to find account %s", accountId.c_str());
660std::vector<std::string>
672std::vector<std::string>
678std::vector<std::string>
702std::vector<std::string>
724 JAMI_DBG(
"Get audio plugin %s", plugin.c_str());
862std::vector<std::string>
884 JAMI_DBG(
"set volume for %s: %f", device.c_str(), value);
886 if (device ==
"speaker")
887 audiolayer->setPlaybackGain(value);
888 else if (device ==
"mic")
889 audiolayer->setCaptureGain(value);
893 JAMI_ERR(
"Audio layer not valid while updating volume");
901 if (device ==
"speaker")
902 return audiolayer->getPlaybackGain();
904 return audiolayer->getCaptureGain();
907 JAMI_ERR(
"Audio layer not valid while updating volume");
929 return audiolayer->isCaptureMuted();
939 return audiolayer->muteCapture(mute);
949 return audiolayer->isPlaybackMuted();
959 return audiolayer->mutePlayback(mute);
969 return audiolayer->isRingtoneMuted();
979 return audiolayer->muteRingtone(mute);
994 return dhtnet::ip_utils::getInterfaceAddr(interface, AF_INET);
997std::vector<std::string>
1000 return dhtnet::ip_utils::getAllIpInterface();
1003std::vector<std::string>
1006 return dhtnet::ip_utils::getAllIpInterfaceByName();
1009std::vector<std::map<std::string, std::string>>
1013 return sipaccount->getCredentials();
1018setCredentials(
const std::string& accountId,
const std::vector<std::map<std::string, std::string>>& details)
1021 sipaccount->doUnregister();
1023 sipaccount->loadConfig();
1024 if (sipaccount->isEnabled())
1025 sipaccount->doRegister();
1033 JAMI_WARN(
"received connectivity changed - attempting to re-connect enabled accounts");
1036#if !(defined(TARGET_OS_IOS) && TARGET_OS_IOS)
1039 }
catch (std::runtime_error& e) {
1040 JAMI_ERR(
"UPnP context error: %s", e.what());
1045 account->connectivityChanged();
1050lookupName(
const std::string& account,
const std::string& nameserver,
const std::string& name)
1052 if (account.empty()) {
1061 if (nameserver.empty())
1067 acc->lookupName(name);
1070 JAMI_ERROR(
"lookupName: Unknown account: {}", account);
1075lookupAddress(
const std::string& account,
const std::string& nameserver,
const std::string& address)
1077 if (account.empty()) {
1080 [address](
const std::string& regName,
1081 const std::string& addr,
1091 acc->lookupAddress(address);
1094 JAMI_ERROR(
"lookupAddress: Unknown account: {}", account);
1102 return acc->searchUser(query);
1108registerName(
const std::string& account,
const std::string& name,
const std::string& scheme,
const std::string& password)
1111 acc->registerName(name, scheme, password);
1114 JAMI_ERROR(
"registerName: Unknown account: {}", account);
1122 account->setPushNotificationToken(token);
1130 account->setPushNotificationTopic(topic);
1138 account->setPushNotificationConfig(data);
1146 auto it = data.find(
"to");
1147 if (it != data.end()) {
1149 account->pushNotificationReceived(from, data);
1151#if defined(__ANDROID__) || defined(ANDROID) || defined(__Apple__)
1154 sipAccount->pushNotificationReceived(from, data);
1158 }
catch (
const std::exception& e) {
1159 JAMI_ERR(
"Error processing push notification: %s", e.what());
1181std::vector<std::string>
static std::vector< unsigned > getDefaultCodecsId()
static std::map< std::string, std::string > getDefaultCodecDetails(const unsigned &codecId)
bool setRecordPath(const std::string &r)
static std::vector< std::string > getSupportedAudioManagers()
const std::string & getRecordPath() const
Ring Account is build on top of SIPAccountBase and uses DHT to handle call connectivity.
void setAudioDevice(int index, AudioDeviceType streamType)
Set audio device.
std::map< std::string, std::string > getAccountDetails(const std::string &accountID) const
Retrieve details about a given account.
void setVoiceActivityDetectionState(bool state)
Set the voice activity detection engine state in the current audio layer.
void enableLocalModerators(const std::string &accountID, bool state)
void loadAccountAndConversation(const std::string &accountId, bool loadAll, const std::string &convId)
std::vector< std::shared_ptr< T > > getAllAccounts() const
Get a list of account pointers of type T (baseclass Account)
std::string getEchoCancellationState() const
Get the echo cancellation engine state in the current audio layer.
std::vector< std::string > getDefaultModerators(const std::string &accountID)
std::vector< std::string > getAccountList() const
Get account list.
bool isLocalModeratorsEnabled(const std::string &accountID)
void setAccountsOrder(const std::string &order)
Set the account order in the config file.
void setAllModerators(const std::string &accountID, bool allModerators)
std::vector< std::map< std::string, std::string > > getConnectionList(const std::string &accountId, const std::string &conversationId)
static LIBJAMI_TEST_EXPORT Manager & instance()
void setAccountActive(const std::string &accountID, bool active, bool shutdownConnections)
void registerAccounts()
Send registration for all enabled accounts.
std::shared_ptr< dhtnet::upnp::UPnPContext > upnpContext() const
void setHistoryLimit(int days)
Set the maximum number of days to keep in the history.
std::map< std::string, std::string > getVolatileAccountDetails(const std::string &accountID) const
Retrieve volatile details such as recent registration errors.
std::shared_ptr< T > getAccount(std::string_view accountId) const
Get an account pointer, looks for account of type T.
std::vector< std::string > getAudioOutputDeviceList()
Get list of supported audio output device.
bool getIsAlwaysRecording() const
Get is always recording functionality.
void setAccountDetails(const std::string &accountID, const std::map< std::string, std::string > &details)
Save the details of an existing account, given the account ID This will load the configuration map wi...
std::string addAccount(const std::map< std::string, std::string > &details, const std::string &accountId={})
Add a new account, and give it a new account ID automatically.
void saveConfig()
Save config to file.
void setNoiseSuppressState(const std::string &state)
Set the noise reduction engine state in the current audio layer.
std::vector< std::map< std::string, std::string > > getChannelList(const std::string &accountId, const std::string &connectionId)
std::string getAudioManager() const
Get the audio manager.
void setAudioPlugin(const std::string &audioPlugin)
Set input audio plugin.
void setDefaultModerator(const std::string &accountID, const std::string &peerURI, bool state)
std::map< std::string, std::string > getNearbyPeers(const std::string &accountID)
bool setAudioManager(const std::string &api)
Set the audio manager.
RingBufferPool & getRingBufferPool()
Return a pointer to the instance of the RingBufferPool.
int getAudioInputDeviceIndex(const std::string &name)
Get index of an audio device.
VoipPreference voipPreferences
Voip related preferences.
void monitor(bool continuous)
uint64_t sendTextMessage(const std::string &accountID, const std::string &to, const std::map< std::string, std::string > &payloads, bool fromPlugin=false, bool onlyConnected=false)
int getHistoryLimit() const
Get the maximum number of days to keep in the history.
bool isAllModerators(const std::string &accountID)
bool getVoiceActivityDetectionState() const
Get the voice activity detection engine state from the current audio layer.
std::string getCurrentAudioOutputPlugin() const
Get current alsa plugin.
void setIsAlwaysRecording(bool isAlwaysRec)
Set is always recording functionality, every calls will then be set in RECORDING mode once answered.
std::chrono::seconds getRingingTimeout() const
Get ringing timeout (number of seconds after which a call will enter BUSY state if not answered).
std::string getNoiseSuppressState() const
Get the noise reduction engine state from the current audio layer.
void removeAccount(const std::string &accountID, bool flush=false)
Delete an existing account, unregister VoIPLink associated, and purge from configuration.
bool isAGCEnabled() const
void setAGCState(bool enabled)
void sendRegister(const std::string &accountId, bool enable)
ConfigurationManager - Send registration request.
std::vector< std::string > getAudioInputDeviceList()
Get list of supported audio input device.
AudioPreference audioPreference
Audio preferences.
int getAudioOutputDeviceIndex(const std::string &name)
int getMessageStatus(uint64_t id) const
void setRingingTimeout(std::chrono::seconds timeout)
Set ringing timeout (number of seconds after which a call will enter BUSY state if not answered).
void setEchoCancellationState(const std::string &state)
Get the echo cancellation engine state from the current audio layer.
std::vector< std::string > getCurrentAudioDevicesIndex()
Get string array representing integer indexes of output, input, and ringtone device.
void lookupName(const std::string &name, LookupCallback cb)
void lookupAddress(const std::string &addr, LookupCallback cb)
static void lookupUri(std::string_view uri, const std::string &default_server, LookupCallback cb)
static NameDirectory & instance()
void setAudioMeterState(const std::string &id, bool state)
bool isAudioMeterActive(const std::string &id)
static const std::vector< std::string > & getSupportedTlsCiphers()
static const std::vector< std::string > & getSupportedTlsProtocols()
void setPlayDtmf(bool dtmf)
std::shared_ptr< dht::crypto::Certificate > getCertificate() const
std::map< std::string, std::string > getSerializedChecks()
Convert all checks results into a string map.
std::map< std::string, std::string > getSerializedDetails()
Get a map with all common certificate details.
#define JAMI_ERROR(formatstr,...)
#define JAMI_DEBUG(formatstr,...)
#define JAMI_WARNING(formatstr,...)
void set_resource_dir_path(const std::filesystem::path &resourceDirPath)
Set the program's resource directory path.
std::vector< uint8_t > loadFile(const std::filesystem::path &path, const std::filesystem::path &default_dir)
Read the full content of a file at path.
decltype(getGlobalInstance< SystemCodecContainer >) & getSystemCodecContainer
void emitSignal(Args... args)
static constexpr const char RING[]
static constexpr const char SIP[]
static constexpr char FAILED[]
static constexpr char EXIST[]
std::vector< std::string > getDefaultModerators(const std::string &accountId)
Get default moderators for an account.
bool unpinCertificate(const std::string &accountId, const std::string &certId)
void setRingingTimeout(int32_t timeout)
void muteRingtone(bool mute)
std::vector< std::string > pinCertificate(const std::string &accountId, const std::vector< uint8_t > &certificate, bool local)
std::vector< Message > getLastMessages(const std::string &accountId, const uint64_t &base_timestamp)
void setAudioPlugin(const std::string &audioPlugin)
void setActiveCodecList(const std::string &accountId, const std::vector< unsigned > &list)
void setAccountDetails(const std::string &accountId, const std::map< std::string, std::string > &details)
void setHistoryLimit(int32_t days)
void setAccountsOrder(const std::string &order)
void setVolume(const std::string &device, double value)
std::vector< std::map< std::string, std::string > > getChannelList(const std::string &accountId, const std::string &connectionId)
std::vector< unsigned > getCodecList()
Send the list of all codecs loaded to the client through DBus.
bool isLocalModeratorsEnabled(const std::string &accountId)
Get local moderators state.
void setRecordPath(const std::string &recPath)
bool setCertificateStatus(const std::string &accountId, const std::string &certId, const std::string &ststr)
bool setAudioManager(const std::string &api)
uint64_t sendAccountTextMessage(const std::string &accountId, const std::string &to, const std::map< std::string, std::string > &payloads, int32_t flags)
void setAudioRingtoneDevice(int32_t index)
std::string getAddrFromInterfaceName(const std::string &interface)
bool lookupName(const std::string &account, const std::string &nameserver, const std::string &name)
int32_t getRecordQuality()
std::vector< std::string > getAudioPluginList()
void loadAccountAndConversation(const std::string &accountId, bool loadAll, const std::string &convId)
bool searchUser(const std::string &account, const std::string &query)
int32_t getAudioOutputDeviceIndex(const std::string &name)
void setPushNotificationToken(const std::string &token)
Set the device push notification token (for all accounts).
void setAudioMeterState(const std::string &id, bool state)
Enables/disables an audio meter for the specified @id.
bool confirmAddDevice(const std::string &accountId, uint32_t op_id)
void setIsAlwaysRecording(bool rec)
int32_t getRingingTimeout()
std::vector< std::map< std::string, std::string > > getConversationTrackedMembers(const std::string &accountId, const std::string &conversationId)
bool setCodecDetails(const std::string &accountId, const unsigned &codecId, const std::map< std::string, std::string > &details)
void mutePlayback(bool mute)
void sendTrustRequest(const std::string &accountId, const std::string &to, const std::vector< uint8_t > &payload)
void pushNotificationReceived(const std::string &from, const std::map< std::string, std::string > &data)
To be called by clients with relevant data when a push notification is received.
void registerConfHandlers(const std::map< std::string, std::shared_ptr< CallbackWrapperBase > > &handlers)
std::vector< std::string > getPinnedCertificates(const std::string &accountId)
std::map< std::string, std::string > getCertificateDetailsPath(const std::string &accountId, const std::string &certificate, const std::string &privateKey, const std::string &privateKeyPassword)
std::vector< std::string > getAccountList()
bool isAllModerators(const std::string &accountId)
Get all moderators state.
std::vector< unsigned > getActiveCodecList(const std::string &accountId)
std::vector< std::string > getSupportedAudioManagers()
std::map< std::string, std::string > getContactDetails(const std::string &accountId, const std::string &uri)
int32_t getAudioInputDeviceIndex(const std::string &name)
void updateProfile(const std::string &accountId, const std::string &displayName, const std::string &avatar, const std::string &fileType, int32_t flag)
void setAccountActive(const std::string &accountId, bool enable, bool shutdownConnections)
std::map< std::string, std::string > getCodecDetails(const std::string &accountId, const unsigned &codecId)
std::string addAccount(const std::map< std::string, std::string > &details, const std::string &accountId)
int32_t addDevice(const std::string &accountId, const std::string &uri)
bool acceptTrustRequest(const std::string &accountId, const std::string &from)
void setIsComposing(const std::string &accountId, const std::string &conversationUri, bool isWriting)
void setRecordPreview(bool rec)
void muteCapture(bool mute)
bool revokeDevice(const std::string &accountId, const std::string &deviceId, const std::string &scheme, const std::string &password)
bool changeAccountPassword(const std::string &accountId, const std::string &password_old, const std::string &password_new)
void setResourceDirPath(const std::string &resourceDir)
Set the resource directory path.
void setAudioInputDevice(int32_t index)
std::string getCurrentAudioOutputPlugin()
std::vector< std::string > getAllIpInterface()
bool pinRemoteCertificate(const std::string &accountId, const std::string &certId)
void setPushNotificationTopic(const std::string &topic)
Set the topic for ios bundle_id for ios 14.5 and higher bundle_id.voip for ios prior 14....
double getVolume(const std::string &device)
void setAudioOutputDevice(int32_t index)
std::vector< std::string > getCertificatesByStatus(const std::string &accountId, const std::string &ststr)
void registerSignalHandlers(const std::map< std::string, std::shared_ptr< CallbackWrapperBase > > &handlers)
std::map< std::string, std::string > getCertificateDetails(const std::string &accountId, const std::string &certificate)
std::vector< std::map< std::string, std::string > > getCredentials(const std::string &accountId)
constexpr unsigned CODECS_NOT_LOADED
std::string getRecordPath()
bool isAudioMeterActive(const std::string &id)
Returns whether or not the audio meter is enabled for ring buffer @id.
bool getIsAlwaysRecording()
std::vector< std::string > getAllIpInterfaceByName()
void sendRegister(const std::string &accountId, bool enable)
std::string getNoiseSuppressState()
bool exportToFile(const std::string &accountId, const std::string &destinationPath, const std::string &scheme, const std::string &password)
int32_t getHistoryLimit()
void setNoiseSuppressState(const std::string &state)
bool lookupAddress(const std::string &account, const std::string &nameserver, const std::string &address)
std::vector< std::map< std::string, std::string > > getConnectionList(const std::string &accountId, const std::string &conversationId)
bool registerName(const std::string &account, const std::string &name, const std::string &scheme, const std::string &password)
std::vector< std::string > getAudioInputDeviceList()
bool isPasswordValid(const std::string &accountId, const std::string &password)
std::vector< uint8_t > getPasswordKey(const std::string &accountID, const std::string &password)
std::vector< std::string > getCurrentAudioDevicesIndex()
std::vector< std::map< std::string, std::string > > getTrustRequests(const std::string &accountId)
void setVoiceActivityDetectionState(bool state)
void setAgcState(bool enabled)
void enableLocalModerators(const std::string &accountId, bool isModEnabled)
Enable/disable local moderators for conferences.
void addContact(const std::string &accountId, const std::string &uri)
std::map< std::string, std::string > getKnownRingDevices(const std::string &accountId)
std::string getEchoCancellationState()
std::vector< std::map< std::string, std::string > > getConversationConnectivity(const std::string &accountId, const std::string &conversationId)
bool getVoiceActivityDetectionState()
void removeAccount(const std::string &accountId)
void setRecordQuality(int32_t quality)
std::map< std::string, std::string > getAccountDetails(const std::string &accountId)
bool provideAccountAuthentication(const std::string &accountId, const std::string &credentialsFromUser, const std::string &scheme)
std::vector< std::string > getSupportedTlsMethod()
bool discardTrustRequest(const std::string &accountId, const std::string &from)
void setAllModerators(const std::string &accountId, bool allModerators)
Enable/disable all moderators for conferences.
int getMessageStatus(uint64_t messageId)
std::vector< std::string > getAudioOutputDeviceList()
std::map< std::string, std::string > getVolatileAccountDetails(const std::string &accountId)
void setCredentials(const std::string &accountId, const std::vector< std::map< std::string, std::string > > &details)
void connectivityChanged()
bool setMessageDisplayed(const std::string &accountId, const std::string &conversationUri, const std::string &messageId, int status)
void pinCertificatePath(const std::string &accountId, const std::string &path)
std::map< std::string, std::string > getAccountTemplate(const std::string &accountType)
This function is used as a base for new accounts for clients that support it.
void removeContact(const std::string &accountId, const std::string &uri, bool ban)
std::map< std::string, std::string > validateCertificate(const std::string &accountId, const std::string &certificate)
std::map< std::string, std::string > getNearbyPeers(const std::string &accountId)
bool cancelAddDevice(const std::string &accountId, uint32_t op_id)
void registerAllAccounts()
std::vector< std::map< std::string, std::string > > getContacts(const std::string &accountId)
void setPushNotificationConfig(const std::map< std::string, std::string > &data)
void monitor(bool continuous)
unsigned unpinCertificatePath(const std::string &accountId, const std::string &path)
std::vector< std::string > getSupportedCiphers(const std::string &accountId)
void setDefaultModerator(const std::string &accountId, const std::string &peerURI, bool state)
Add/remove default moderator for conferences.
std::map< std::string, std::string > validateCertificatePath(const std::string &accountId, const std::string &certificate, const std::string &privateKey, const std::string &privateKeyPass, const std::string &caList)
std::string getAudioManager()
void setEchoCancellationState(const std::string &state)
A SIP Account specify SIP specific functions and object = SIPCall/SIPVoIPLink)
std::map< std::string, std::string > toMap() const override
std::map< std::string, std::string > toMap() const override
void setCredentials(const std::vector< std::map< std::string, std::string > > &creds)