Ring Daemon 16.0.0
Loading...
Searching...
No Matches
sipaccountbase_config.cpp
Go to the documentation of this file.
1/*
2 * Copyright (C) 2004-2025 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_const.h"
19#include "account_schema.h"
21
22namespace jami {
23
24namespace Conf {
25// SIP specific configuration keys
26const char* const BIND_ADDRESS_KEY = "bindAddress";
27const char* const INTERFACE_KEY = "interface";
28const char* const PORT_KEY = "port";
29const char* const PUBLISH_ADDR_KEY = "publishAddr";
30const char* const PUBLISH_PORT_KEY = "publishPort";
31const char* const SAME_AS_LOCAL_KEY = "sameasLocal";
32const char* const DTMF_TYPE_KEY = "dtmfType";
33const char* const SERVICE_ROUTE_KEY = "serviceRoute";
34const char* const ALLOW_IP_AUTO_REWRITE = "allowIPAutoRewrite";
35const char* const PRESENCE_ENABLED_KEY = "presenceEnabled";
36const char* const PRESENCE_PUBLISH_SUPPORTED_KEY = "presencePublishSupported";
37const char* const PRESENCE_SUBSCRIBE_SUPPORTED_KEY = "presenceSubscribeSupported";
38const char* const PRESENCE_STATUS_KEY = "presenceStatus";
39const char* const PRESENCE_NOTE_KEY = "presenceNote";
40const char* const STUN_ENABLED_KEY = "stunEnabled";
41const char* const STUN_SERVER_KEY = "stunServer";
42const char* const TURN_ENABLED_KEY = "turnEnabled";
43const char* const TURN_SERVER_KEY = "turnServer";
44const char* const TURN_SERVER_UNAME_KEY = "turnServerUserName";
45const char* const TURN_SERVER_PWD_KEY = "turnServerPassword";
46const char* const TURN_SERVER_REALM_KEY = "turnServerRealm";
47const char* const CRED_KEY = "credential";
48const char* const AUDIO_PORT_MIN_KEY = "audioPortMin";
49const char* const AUDIO_PORT_MAX_KEY = "audioPortMax";
50const char* const VIDEO_PORT_MIN_KEY = "videoPortMin";
51const char* const VIDEO_PORT_MAX_KEY = "videoPortMax";
52} // namespace Conf
53
55
56static void
57unserializeRange(const YAML::Node& node,
58 const char* minKey,
59 const char* maxKey,
60 std::pair<uint16_t, uint16_t>& range)
61{
65}
66
67static void
68addRangeToDetails(std::map<std::string, std::string>& a,
69 const char* minKey,
70 const char* maxKey,
71 const std::pair<uint16_t, uint16_t>& range)
72{
73 a.emplace(minKey, std::to_string(range.first));
74 a.emplace(maxKey, std::to_string(range.second));
75}
76
77void
95
96void
97SipAccountBaseConfig::unserialize(const YAML::Node& node)
98{
100 parseValueOptional(node, Conf::INTERFACE_KEY, interface);
101 parseValueOptional(node, Conf::SAME_AS_LOCAL_KEY, publishedSameasLocal);
102 parseValueOptional(node, Conf::PUBLISH_ADDR_KEY, publishedIp);
103 parseValueOptional(node, Conf::DTMF_TYPE_KEY, dtmfType);
106
107 // ICE - STUN/TURN
108 //parseValueOptional(node, Conf::STUN_ENABLED_KEY, stunEnabled);
109 //parseValueOptional(node, Conf::STUN_SERVER_KEY, stunServer);
110 parseValueOptional(node, Conf::TURN_ENABLED_KEY, turnEnabled);
111 parseValueOptional(node, Conf::TURN_SERVER_KEY, turnServer);
112 parseValueOptional(node, Conf::TURN_SERVER_UNAME_KEY, turnServerUserName);
113 parseValueOptional(node, Conf::TURN_SERVER_PWD_KEY, turnServerPwd);
114 parseValueOptional(node, Conf::TURN_SERVER_REALM_KEY, turnServerRealm);
115}
116
117std::map<std::string, std::string>
143
144void
177
178}
#define SERIALIZE_CONFIG(key, name)
Account specific keys/constants that must be shared in daemon and clients.
constexpr const char * INTERFACE_KEY
constexpr const char * PUBLISH_ADDR_KEY
constexpr const char * STUN_SERVER_KEY
constexpr const char * ALLOW_IP_AUTO_REWRITE
constexpr const char * PRESENCE_ENABLED_KEY
constexpr const char * SAME_AS_LOCAL_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
constexpr const char * STUN_ENABLED_KEY
constexpr const char * PRESENCE_SUBSCRIBE_SUPPORTED_KEY
static const char *const CONFIG_PUBLISHED_ADDRESS
constexpr const char * SERVICE_ROUTE_KEY
const char *const VIDEO_PORT_MIN_KEY
const char *const TURN_ENABLED_KEY
constexpr const char * DTMF_TYPE_KEY
static const char *const CONFIG_TURN_SERVER
constexpr const char * CRED_KEY
const char *const AUDIO_PORT_MIN_KEY
constexpr const char * PRESENCE_PUBLISH_SUPPORTED_KEY
constexpr const char * PUBLISH_PORT_KEY
constexpr const char * BIND_ADDRESS_KEY
static const char *const CONFIG_TURN_SERVER_REALM
const char *const TURN_SERVER_PWD_KEY
constexpr const char * PRESENCE_NOTE_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
constexpr const char * PRESENCE_STATUS_KEY
static const char *const CONFIG_ACCOUNT_DTMF_TYPE
const char *const TURN_SERVER_KEY
static const char *const CONFIG_ACCOUNT_VIDEO_PORT_MAX
constexpr const char * PORT_KEY
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 ring_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