mirror of
https://gitlab.linphone.org/BC/public/linphone-desktop.git
synced 2026-05-02 18:36:24 +00:00
feat(Settings): provide an option to disable the RLS URI
This commit is contained in:
parent
3c45599062
commit
5cd97cb5c6
8 changed files with 153 additions and 33 deletions
|
|
@ -1240,6 +1240,22 @@ your friend's SIP address or username.</translation>
|
|||
<source>enableAdaptiveRateControlLabel</source>
|
||||
<translation>Enable adaptive rate control</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>presenceTitle</source>
|
||||
<translation>Presence</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>rlsUriLabel</source>
|
||||
<translation>Use RLS URI</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>rlsUriAuto</source>
|
||||
<translation>AUTO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>rlsUriDisabled</source>
|
||||
<translation>NEVER</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SettingsSipAccounts</name>
|
||||
|
|
|
|||
|
|
@ -1238,6 +1238,22 @@ Cliquez ici : <a href="%1">%1</a>
|
|||
<source>enableAdaptiveRateControlLabel</source>
|
||||
<translation>Activer le contrôle de débit adaptif</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>presenceTitle</source>
|
||||
<translation>Présence</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>rlsUriLabel</source>
|
||||
<translation>Utiliser l'URI RLS</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>rlsUriAuto</source>
|
||||
<translation>AUTO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>rlsUriDisabled</source>
|
||||
<translation>JAMAIS</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SettingsSipAccounts</name>
|
||||
|
|
|
|||
|
|
@ -48,10 +48,6 @@
|
|||
#define PATH_MESSAGE_HISTORY_LIST "/message-history.db"
|
||||
#define PATH_ZRTP_SECRETS "/zidcache"
|
||||
|
||||
#ifndef RLS_URI
|
||||
#define RLS_URI "sips:rls@sip.linphone.org"
|
||||
#endif // ifndef RLS_URI
|
||||
|
||||
using namespace std;
|
||||
|
||||
// =============================================================================
|
||||
|
|
@ -271,14 +267,6 @@ static void migrateConfigurationFile (const QString &oldPath, const QString &new
|
|||
}
|
||||
}
|
||||
|
||||
inline void setRlsUri (const QString &configPath) {
|
||||
shared_ptr<linphone::Config> config = linphone::Config::newWithFactory(::Utils::appStringToCoreString(configPath), "");
|
||||
if (config->getString("sip", "rls_uri", "").empty()) {
|
||||
config->setString("sip", "rls_uri", RLS_URI);
|
||||
config->sync();
|
||||
}
|
||||
}
|
||||
|
||||
void Paths::migrate () {
|
||||
QString newPath = ::getAppConfigFilePath();
|
||||
QString oldBaseDir = QSysInfo::productType() == "windows"
|
||||
|
|
@ -286,11 +274,8 @@ void Paths::migrate () {
|
|||
: QStandardPaths::writableLocation(QStandardPaths::HomeLocation);
|
||||
QString oldPath = oldBaseDir + "/.linphonerc";
|
||||
|
||||
if (!::filePathExists(newPath) && ::filePathExists(oldPath)) {
|
||||
if (!::filePathExists(newPath) && ::filePathExists(oldPath))
|
||||
::migrateConfigurationFile(oldPath, newPath);
|
||||
/* Define RLS uri so that presence switches from peer-to-peer mode to list mode. */
|
||||
::setRlsUri(newPath);
|
||||
}
|
||||
|
||||
newPath = ::getAppCallHistoryFilePath();
|
||||
oldPath = oldBaseDir + "/.linphone-call-history.db";
|
||||
|
|
|
|||
|
|
@ -40,6 +40,12 @@ public:
|
|||
}
|
||||
|
||||
private:
|
||||
void createProxyConfig (const shared_ptr<linphone::AccountCreator> &creator) {
|
||||
shared_ptr<linphone::ProxyConfig> proxyConfig = creator->createProxyConfig();
|
||||
Q_CHECK_PTR(proxyConfig);
|
||||
CoreManager::getInstance()->getSettingsModel()->configureRlsUri(proxyConfig);
|
||||
}
|
||||
|
||||
void onCreateAccount (
|
||||
const shared_ptr<linphone::AccountCreator> &,
|
||||
linphone::AccountCreatorStatus status,
|
||||
|
|
@ -63,9 +69,7 @@ private:
|
|||
const string &
|
||||
) override {
|
||||
if (status == linphone::AccountCreatorStatusAccountExist || status == linphone::AccountCreatorStatusAccountExistWithAlias) {
|
||||
shared_ptr<linphone::ProxyConfig> proxyConfig = creator->createProxyConfig();
|
||||
Q_CHECK_PTR(proxyConfig);
|
||||
|
||||
createProxyConfig(creator);
|
||||
emit mAssistant->loginStatusChanged(QString(""));
|
||||
} else {
|
||||
if (status == linphone::AccountCreatorStatusRequestFailed)
|
||||
|
|
@ -84,10 +88,8 @@ private:
|
|||
status == linphone::AccountCreatorStatusAccountActivated ||
|
||||
status == linphone::AccountCreatorStatusAccountAlreadyActivated
|
||||
) {
|
||||
if (creator->getEmail().empty()) {
|
||||
shared_ptr<linphone::ProxyConfig> proxyConfig = creator->createProxyConfig();
|
||||
Q_CHECK_PTR(proxyConfig);
|
||||
}
|
||||
if (creator->getEmail().empty())
|
||||
createProxyConfig(creator);
|
||||
|
||||
emit mAssistant->activateStatusChanged(QString(""));
|
||||
} else {
|
||||
|
|
@ -104,9 +106,7 @@ private:
|
|||
const string &
|
||||
) override {
|
||||
if (status == linphone::AccountCreatorStatusAccountActivated) {
|
||||
shared_ptr<linphone::ProxyConfig> proxyConfig = creator->createProxyConfig();
|
||||
Q_CHECK_PTR(proxyConfig);
|
||||
|
||||
createProxyConfig(creator);
|
||||
emit mAssistant->activateStatusChanged(QString(""));
|
||||
} else {
|
||||
if (status == linphone::AccountCreatorStatusRequestFailed)
|
||||
|
|
|
|||
|
|
@ -61,7 +61,8 @@ AccountSettingsModel::AccountSettingsModel (QObject *parent) : QObject(parent) {
|
|||
bool AccountSettingsModel::addOrUpdateProxyConfig (const shared_ptr<linphone::ProxyConfig> &proxyConfig) {
|
||||
Q_CHECK_PTR(proxyConfig);
|
||||
|
||||
shared_ptr<linphone::Core> core = CoreManager::getInstance()->getCore();
|
||||
CoreManager *coreManager = CoreManager::getInstance();
|
||||
shared_ptr<linphone::Core> core = coreManager->getCore();
|
||||
|
||||
list<shared_ptr<linphone::ProxyConfig> > proxyConfigs = core->getProxyConfigList();
|
||||
if (find(proxyConfigs.cbegin(), proxyConfigs.cend(), proxyConfig) != proxyConfigs.cend()) {
|
||||
|
|
@ -70,12 +71,15 @@ bool AccountSettingsModel::addOrUpdateProxyConfig (const shared_ptr<linphone::Pr
|
|||
.arg(::Utils::coreStringToAppString(proxyConfig->getIdentityAddress()->asString()));
|
||||
return false;
|
||||
}
|
||||
} else if (core->addProxyConfig(proxyConfig) == -1) {
|
||||
qWarning() << QStringLiteral("Unable to add proxy config: `%1`.")
|
||||
.arg(::Utils::coreStringToAppString(proxyConfig->getIdentityAddress()->asString()));
|
||||
return false;
|
||||
coreManager->getSettingsModel()->configureRlsUri();
|
||||
} else {
|
||||
if (core->addProxyConfig(proxyConfig) == -1) {
|
||||
qWarning() << QStringLiteral("Unable to add proxy config: `%1`.")
|
||||
.arg(::Utils::coreStringToAppString(proxyConfig->getIdentityAddress()->asString()));
|
||||
return false;
|
||||
}
|
||||
coreManager->getSettingsModel()->configureRlsUri(proxyConfig);
|
||||
}
|
||||
|
||||
emit accountSettingsUpdated();
|
||||
|
||||
return true;
|
||||
|
|
@ -115,7 +119,10 @@ void AccountSettingsModel::setDefaultProxyConfig (const shared_ptr<linphone::Pro
|
|||
void AccountSettingsModel::removeProxyConfig (const shared_ptr<linphone::ProxyConfig> &proxyConfig) {
|
||||
Q_CHECK_PTR(proxyConfig);
|
||||
|
||||
CoreManager::getInstance()->getCore()->removeProxyConfig(proxyConfig);
|
||||
CoreManager *coreManager = CoreManager::getInstance();
|
||||
coreManager->getCore()->removeProxyConfig(proxyConfig);
|
||||
coreManager->getSettingsModel()->configureRlsUri();
|
||||
|
||||
emit accountSettingsUpdated();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -29,6 +29,10 @@
|
|||
|
||||
#include "SettingsModel.hpp"
|
||||
|
||||
#ifndef DEFAULT_RLS_URI
|
||||
#define DEFAULT_RLS_URI "sips:rls@sip.linphone.org"
|
||||
#endif // ifndef RLS_URI
|
||||
|
||||
using namespace std;
|
||||
|
||||
// =============================================================================
|
||||
|
|
@ -37,6 +41,7 @@ const string SettingsModel::UI_SECTION("ui");
|
|||
|
||||
SettingsModel::SettingsModel (QObject *parent) : QObject(parent) {
|
||||
mConfig = CoreManager::getInstance()->getCore()->getConfig();
|
||||
configureRlsUri();
|
||||
}
|
||||
|
||||
// =============================================================================
|
||||
|
|
@ -647,6 +652,62 @@ void SettingsModel::setDscpVideo (int dscp) {
|
|||
emit dscpVideoChanged(dscp);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
bool SettingsModel::getRlsUriEnabled () const {
|
||||
return !!mConfig->getInt(UI_SECTION, "rls_uri_enabled", true);
|
||||
}
|
||||
|
||||
void SettingsModel::setRlsUriEnabled (bool status) {
|
||||
mConfig->setInt(UI_SECTION, "rls_uri_enabled", status);
|
||||
mConfig->setString("sip", "rls_uri", status ? DEFAULT_RLS_URI : "");
|
||||
emit rlsUriEnabledChanged(status);
|
||||
}
|
||||
|
||||
static string getRlsUriDomain () {
|
||||
static string domain;
|
||||
if (!domain.empty())
|
||||
return domain;
|
||||
|
||||
shared_ptr<linphone::Address> linphoneAddress = CoreManager::getInstance()->getCore()->createAddress(DEFAULT_RLS_URI);
|
||||
Q_CHECK_PTR(linphoneAddress);
|
||||
domain = linphoneAddress->getDomain();
|
||||
return domain;
|
||||
}
|
||||
|
||||
void SettingsModel::configureRlsUri () {
|
||||
// Ensure rls uri is empty.
|
||||
if (!getRlsUriEnabled()) {
|
||||
mConfig->setString("sip", "rls_uri", "");
|
||||
return;
|
||||
}
|
||||
|
||||
// Set rls uri if necessary.
|
||||
const string domain = getRlsUriDomain();
|
||||
for (const auto &proxyConfig : CoreManager::getInstance()->getCore()->getProxyConfigList())
|
||||
if (proxyConfig->getDomain() == domain) {
|
||||
mConfig->setString("sip", "rls_uri", DEFAULT_RLS_URI);
|
||||
return;
|
||||
}
|
||||
|
||||
mConfig->setString("sip", "rls_uri", "");
|
||||
}
|
||||
|
||||
void SettingsModel::configureRlsUri (const shared_ptr<const linphone::ProxyConfig> &proxyConfig) {
|
||||
if (!getRlsUriEnabled()) {
|
||||
mConfig->setString("sip", "rls_uri", "");
|
||||
return;
|
||||
}
|
||||
|
||||
const string domain = getRlsUriDomain();
|
||||
if (proxyConfig->getDomain() == domain) {
|
||||
mConfig->setString("sip", "rls_uri", DEFAULT_RLS_URI);
|
||||
return;
|
||||
}
|
||||
|
||||
mConfig->setString("sip", "rls_uri", "");
|
||||
}
|
||||
|
||||
// =============================================================================
|
||||
// UI.
|
||||
// =============================================================================
|
||||
|
|
|
|||
|
|
@ -111,6 +111,8 @@ class SettingsModel : public QObject {
|
|||
Q_PROPERTY(int dscpAudio READ getDscpAudio WRITE setDscpAudio NOTIFY dscpAudioChanged);
|
||||
Q_PROPERTY(int dscpVideo READ getDscpVideo WRITE setDscpVideo NOTIFY dscpVideoChanged);
|
||||
|
||||
Q_PROPERTY(bool rlsUriEnabled READ getRlsUriEnabled WRITE setRlsUriEnabled NOTIFY rlsUriEnabledChanged);
|
||||
|
||||
// UI. -----------------------------------------------------------------------
|
||||
|
||||
Q_PROPERTY(QString remoteProvisioning READ getRemoteProvisioning WRITE setRemoteProvisioning NOTIFY remoteProvisioningChanged);
|
||||
|
|
@ -272,6 +274,12 @@ public:
|
|||
int getDscpVideo () const;
|
||||
void setDscpVideo (int dscp);
|
||||
|
||||
bool getRlsUriEnabled () const;
|
||||
void setRlsUriEnabled (bool status);
|
||||
|
||||
void configureRlsUri ();
|
||||
void configureRlsUri (const std::shared_ptr<const linphone::ProxyConfig> &proxyConfig);
|
||||
|
||||
// UI. -----------------------------------------------------------------------
|
||||
|
||||
QString getSavedScreenshotsFolder () const;
|
||||
|
|
@ -375,6 +383,8 @@ signals:
|
|||
void dscpAudioChanged (int dscp);
|
||||
void dscpVideoChanged (int dscp);
|
||||
|
||||
void rlsUriEnabledChanged (bool status);
|
||||
|
||||
// UI. -----------------------------------------------------------------------
|
||||
|
||||
void savedScreenshotsFolderChanged (const QString &folder);
|
||||
|
|
|
|||
|
|
@ -96,6 +96,31 @@ TabContainer {
|
|||
}
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// Presence.
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
Form {
|
||||
title: qsTr('presenceTitle')
|
||||
width: parent.width
|
||||
|
||||
FormLine {
|
||||
FormGroup {
|
||||
label: qsTr('rlsUriLabel')
|
||||
|
||||
ExclusiveButtons {
|
||||
selectedButton: Number(!SettingsModel.rlsUriEnabled)
|
||||
texts: [
|
||||
qsTr('rlsUriAuto'),
|
||||
qsTr('rlsUriDisabled')
|
||||
]
|
||||
|
||||
onClicked: SettingsModel.rlsUriEnabled = !button
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// Network protocol and ports.
|
||||
// -------------------------------------------------------------------------
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue