Ring Daemon
Loading...
Searching...
No Matches
sipaccountbase_config.cpp
Go to the documentation of this file.
1/*
2 * Copyright (C) 2004-2026 Savoir-faire Linux Inc.
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 3 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <https://www.gnu.org/licenses/>.
16 */
18#include "account_schema.h"
20
21namespace jami {
22
23namespace Conf {
24// SIP specific configuration keys
25const char* const INTERFACE_KEY = "interface";
26const char* const PUBLISH_ADDR_KEY = "publishAddr";
27const char* const SAME_AS_LOCAL_KEY = "sameasLocal";
28const char* const DTMF_TYPE_KEY = "dtmfType";
29const char* const TURN_ENABLED_KEY = "turnEnabled";
30const char* const TURN_SERVER_KEY = "turnServer";
31const char* const TURN_SERVER_UNAME_KEY = "turnServerUserName";
32const char* const TURN_SERVER_PWD_KEY = "turnServerPassword";
33const char* const TURN_SERVER_REALM_KEY = "turnServerRealm";
34const char* const AUDIO_PORT_MIN_KEY = "audioPortMin";
35const char* const AUDIO_PORT_MAX_KEY = "audioPortMax";
36const char* const VIDEO_PORT_MIN_KEY = "videoPortMin";
37const char* const VIDEO_PORT_MAX_KEY = "videoPortMax";
38} // namespace Conf
39
41
42static void
43unserializeRange(const YAML::Node& node, const char* minKey, const char* maxKey, std::pair<uint16_t, uint16_t>& range)
44{
48}
49
50static void
51addRangeToDetails(std::map<std::string, std::string>& a,
52 const char* minKey,
53 const char* maxKey,
54 const std::pair<uint16_t, uint16_t>& range)
55{
56 a.emplace(minKey, std::to_string(range.first));
57 a.emplace(maxKey, std::to_string(range.second));
58}
59
60void
78
79void
80SipAccountBaseConfig::unserialize(const YAML::Node& node)
81{
83 parseValueOptional(node, Conf::INTERFACE_KEY, interface);
84 parseValueOptional(node, Conf::SAME_AS_LOCAL_KEY, publishedSameasLocal);
85 parseValueOptional(node, Conf::PUBLISH_ADDR_KEY, publishedIp);
86 parseValueOptional(node, Conf::DTMF_TYPE_KEY, dtmfType);
89
90 // ICE - STUN/TURN
91 parseValueOptional(node, Conf::TURN_ENABLED_KEY, turnEnabled);
92 parseValueOptional(node, Conf::TURN_SERVER_KEY, turnServer);
93 parseValueOptional(node, Conf::TURN_SERVER_UNAME_KEY, turnServerUserName);
94 parseValueOptional(node, Conf::TURN_SERVER_PWD_KEY, turnServerPwd);
95 parseValueOptional(node, Conf::TURN_SERVER_REALM_KEY, turnServerRealm);
96}
97
98std::map<std::string, std::string>
118
119void
152
153} // namespace jami
#define SERIALIZE_CONFIG(key, name)
Account specific keys/constants that must be shared in daemon and clients.
const char *const INTERFACE_KEY
static const char *const CONFIG_TURN_SERVER_UNAME
static const char *const CONFIG_PUBLISHED_SAMEAS_LOCAL
static const char *const CONFIG_ACCOUNT_AUDIO_PORT_MAX
static const char *const CONFIG_PUBLISHED_ADDRESS
const char *const VIDEO_PORT_MIN_KEY
const char *const TURN_ENABLED_KEY
static const char *const CONFIG_TURN_SERVER
const char *const AUDIO_PORT_MIN_KEY
const char *const PUBLISH_ADDR_KEY
static const char *const CONFIG_TURN_SERVER_REALM
const char *const TURN_SERVER_PWD_KEY
const char *const DTMF_TYPE_KEY
static const char *const CONFIG_ACCOUNT_AUDIO_PORT_MIN
static const char *const CONFIG_TURN_SERVER_PWD
const char *const VIDEO_PORT_MAX_KEY
static const char *const CONFIG_ACCOUNT_DTMF_TYPE
const char *const SAME_AS_LOCAL_KEY
const char *const TURN_SERVER_KEY
static const char *const CONFIG_ACCOUNT_VIDEO_PORT_MAX
const char *const TURN_SERVER_UNAME_KEY
const char *const AUDIO_PORT_MAX_KEY
static const char *const CONFIG_TURN_ENABLE
const char *const TURN_SERVER_REALM_KEY
static const char *const CONFIG_LOCAL_INTERFACE
static const char *const CONFIG_ACCOUNT_VIDEO_PORT_MIN
bool parseValueOptional(const YAML::Node &node, const char *key, T &value)
Definition yamlparser.h:38
void updateRange(uint16_t min, uint16_t max, std::pair< uint16_t, uint16_t > &range)
void parseBool(const std::map< std::string, std::string > &details, const char *key, bool &s)
static constexpr const char TRUE_STR[]
void emitSignal(Args... args)
Definition jami_signal.h:64
static void addRangeToDetails(std::map< std::string, std::string > &a, const char *minKey, const char *maxKey, const std::pair< uint16_t, uint16_t > &range)
void parseInt(const std::map< std::string, std::string > &details, const char *key, T &s)
static constexpr const char FALSE_STR[]
void parseString(const std::map< std::string, std::string > &details, const char *key, std::string &s)
static void unserializeRange(const YAML::Node &node, const char *minKey, const char *maxKey, std::pair< uint16_t, uint16_t > &range)
static const JamiAccountConfig DEFAULT_CONFIG
virtual void fromMap(const std::map< std::string, std::string > &)
virtual std::map< std::string, std::string > toMap() const
void serializeDiff(YAML::Emitter &out, const AccountConfig &def) const
virtual void unserialize(const YAML::Node &node)
bool turnEnabled
Determine if TURN public address resolution is required to register this account.
bool publishedSameasLocal
Flag which determine if localIpAddress_ or publishedIpAddress_ is used in sip headers.
std::pair< uint16_t, uint16_t > videoPortRange
Port range for video RTP ports.
void fromMap(const std::map< std::string, std::string > &) override
std::string turnServer
The TURN server hostname (optional), used to provide the public IP address in case the softphone stay...
void serializeDiff(YAML::Emitter &out, const SipAccountBaseConfig &def) const
std::pair< uint16_t, uint16_t > audioPortRange
void unserialize(const YAML::Node &node) override
std::map< std::string, std::string > toMap() const override
std::string interface
interface name on which this account is bound