blob: 9cfc514d2f21194283b904eefda776e2a2dc55f4 [file] [log] [blame]
Adrien Béraud04d822c2015-04-02 17:44:36 -04001/*
2 * Copyright (C) 2004-2013 Savoir-Faire Linux Inc.
3 * Author: Alexandre Savard <alexandre.savard@savoirfairelinux.com>
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, write to the Free Software
16 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17 *
18 * Additional permission under GNU GPL version 3 section 7:
19 *
20 * If you modify this program, or any covered work, by linking or
21 * combining it with the OpenSSL project's OpenSSL library (or a
22 * modified version of that library), containing parts covered by the
23 * terms of the OpenSSL or SSLeay licenses, Savoir-Faire Linux Inc.
24 * grants you additional permission to convey the resulting work.
25 * Corresponding Source for a non-source form of such a combination
26 * shall include the source code for the parts of OpenSSL used as well
27 * as that of the covered work.
28 */
29
30%header %{
31#include "dring/dring.h"
Adrien Béraud7f97ca92015-06-07 15:36:06 -040032#include "dring/configurationmanager_interface.h"
Adrien Béraud04d822c2015-04-02 17:44:36 -040033
34class ConfigurationCallback {
35public:
36 virtual ~ConfigurationCallback(){}
Adrien Béraud7f97ca92015-06-07 15:36:06 -040037 virtual void volumeChanged(const std::string& device, int value){}
38 virtual void accountsChanged(void){}
39 virtual void historyChanged(void){}
40 virtual void stunStatusFailure(const std::string& account_id){}
41 virtual void registrationStateChanged(const std::string& account_id, const std::string& state, int code, const std::string& detail_str){}
42 virtual void volatileAccountDetailsChanged(const std::string& account_id, const std::map<std::string, std::string>& details){}
43 virtual void incomingAccountMessage(const std::string& /*account_id*/, const std::string& /*from*/, const std::string& /*message*/){}
Adrien Béraud9f4d86d2015-07-15 10:52:16 -040044 virtual void incomingTrustRequest(const std::string& /*account_id*/, const std::string& /*from*/, const std::vector<uint8_t>& /*payload*/, time_t received){}
Adrien Béraud7f97ca92015-06-07 15:36:06 -040045
46 virtual void certificatePinned(const std::string& /*certId*/){}
47 virtual void certificatePathPinned(const std::string& /*path*/, const std::vector<std::string>& /*certId*/){}
48 virtual void certificateExpired(const std::string& /*certId*/){}
49 virtual void certificateStateChanged(const std::string& /*account_id*/, const std::string& /*certId*/, const std::string& /*state*/){}
50
51 virtual void errorAlert(int alert){}
Adrien Béraudb30e6dd2015-06-10 12:22:15 -040052 virtual void getHardwareAudioFormat(std::vector<int32_t>* /*params_ret*/){}
Adrien Béraud62a280b2015-06-15 23:32:19 -040053 virtual void getAppDataPath(const std::string& /* name */, std::vector<std::string>* /*path_ret*/){}
Adrien Béraud04d822c2015-04-02 17:44:36 -040054};
55%}
56
57%feature("director") ConfigurationCallback;
58
Adrien Béraud7f97ca92015-06-07 15:36:06 -040059namespace DRing {
Adrien Béraud04d822c2015-04-02 17:44:36 -040060
Adrien Béraud7f97ca92015-06-07 15:36:06 -040061std::map<std::string, std::string> getAccountDetails(const std::string& accountID);
62std::map<std::string, std::string> getVolatileAccountDetails(const std::string& accountID);
63void setAccountDetails(const std::string& accountID, const std::map<std::string, std::string>& details);
Adrien Béraud42c14b02015-10-21 16:50:27 -040064void setAccountActive(const std::string& accountID, bool active);
Adrien Béraud7f97ca92015-06-07 15:36:06 -040065std::map<std::string, std::string> getAccountTemplate(const std::string& accountType);
66std::string addAccount(const std::map<std::string, std::string>& details);
67void removeAccount(const std::string& accountID);
68std::vector<std::string> getAccountList();
69void sendRegister(const std::string& accountID, bool enable);
70void registerAllAccounts(void);
71void sendAccountTextMessage(const std::string& accountID, const std::string& to, const std::string& message);
72
73std::map<std::string, std::string> getTlsDefaultSettings();
74
75std::vector<unsigned> getCodecList();
76std::vector<std::string> getSupportedTlsMethod();
77std::vector<std::string> getSupportedCiphers(const std::string& accountID);
78std::map<std::string, std::string> getCodecDetails(const std::string& accountID, const unsigned& codecId);
79bool setCodecDetails(const std::string& accountID, const unsigned& codecId, const std::map<std::string, std::string>& details);
80std::vector<unsigned> getActiveCodecList(const std::string& accountID);
81
82void setActiveCodecList(const std::string& accountID, const std::vector<unsigned>& list);
83
84std::vector<std::string> getAudioPluginList();
85void setAudioPlugin(const std::string& audioPlugin);
86std::vector<std::string> getAudioOutputDeviceList();
87void setAudioOutputDevice(int32_t index);
88void setAudioInputDevice(int32_t index);
89void setAudioRingtoneDevice(int32_t index);
90std::vector<std::string> getAudioInputDeviceList();
91std::vector<std::string> getCurrentAudioDevicesIndex();
92int32_t getAudioInputDeviceIndex(const std::string& name);
93int32_t getAudioOutputDeviceIndex(const std::string& name);
94std::string getCurrentAudioOutputPlugin();
95bool getNoiseSuppressState();
96void setNoiseSuppressState(bool state);
97
98bool isAgcEnabled();
99void setAgcState(bool enabled);
100
101void muteDtmf(bool mute);
102bool isDtmfMuted();
103
104bool isCaptureMuted();
105void muteCapture(bool mute);
106bool isPlaybackMuted();
107void mutePlayback(bool mute);
108
109std::string getAudioManager();
110bool setAudioManager(const std::string& api);
111
112int32_t isIax2Enabled();
113std::string getRecordPath();
114void setRecordPath(const std::string& recPath);
115bool getIsAlwaysRecording();
116void setIsAlwaysRecording(bool rec);
117
118void setHistoryLimit(int32_t days);
119int32_t getHistoryLimit();
120
121void setAccountsOrder(const std::string& order);
122
123std::map<std::string, std::string> getHookSettings();
124void setHookSettings(const std::map<std::string, std::string>& settings);
125
126std::map<std::string, std::string> getIp2IpDetails();
127
128std::vector<std::map<std::string, std::string> > getCredentials(const std::string& accountID);
129void setCredentials(const std::string& accountID, const std::vector<std::map<std::string, std::string> >& details);
130
131std::string getAddrFromInterfaceName(const std::string& interface);
132
133std::vector<std::string> getAllIpInterface();
134std::vector<std::string> getAllIpInterfaceByName();
135
136std::map<std::string, std::string> getShortcuts();
137void setShortcuts(const std::map<std::string, std::string> &shortcutsMap);
138
139void setVolume(const std::string& device, double value);
140double getVolume(const std::string& device);
141
142/*
143 * Security
144 */
Adrien Béraud9f4d86d2015-07-15 10:52:16 -0400145std::map<std::string, std::string> validateCertificatePath(const std::string& accountId,
146 const std::string& certificate,
147 const std::string& privateKey,
Adrien Béraud75540ff2015-10-04 22:58:37 -0400148 const std::string& privateKeyPassword,
Adrien Béraud9f4d86d2015-07-15 10:52:16 -0400149 const std::string& caList);
150
151std::map<std::string, std::string> validateCertificate(const std::string& accountId, const std::string& certificate);
152
Adrien Béraud7f97ca92015-06-07 15:36:06 -0400153std::map<std::string, std::string> getCertificateDetails(const std::string& certificate);
Adrien Béraud75540ff2015-10-04 22:58:37 -0400154std::map<std::string, std::string> getCertificateDetailsPath(const std::string& certificate, const std::string& privateKey, const std::string& privateKeyPass);
Adrien Béraud7f97ca92015-06-07 15:36:06 -0400155
156std::vector<std::string> getPinnedCertificates();
157
Adrien Béraud9f4d86d2015-07-15 10:52:16 -0400158std::vector<std::string> pinCertificate(const std::vector<uint8_t>& certificate, bool local);
Adrien Béraud7f97ca92015-06-07 15:36:06 -0400159bool unpinCertificate(const std::string& certId);
160
161void pinCertificatePath(const std::string& path);
162unsigned unpinCertificatePath(const std::string& path);
163
164bool pinRemoteCertificate(const std::string& accountId, const std::string& certId);
165bool setCertificateStatus(const std::string& account, const std::string& certId, const std::string& status);
166std::vector<std::string> getCertificatesByStatus(const std::string& account, const std::string& status);
167
168/* contact requests */
169std::map<std::string, std::string> getTrustRequests(const std::string& accountId);
170bool acceptTrustRequest(const std::string& accountId, const std::string& from);
171bool discardTrustRequest(const std::string& accountId, const std::string& from);
172
Adrien Béraud9f4d86d2015-07-15 10:52:16 -0400173void sendTrustRequest(const std::string& accountId, const std::string& to, const std::vector<uint8_t>& payload);
Adrien Béraud7f97ca92015-06-07 15:36:06 -0400174
175}
Adrien Béraud04d822c2015-04-02 17:44:36 -0400176
177class ConfigurationCallback {
178public:
Adrien Béraud7f97ca92015-06-07 15:36:06 -0400179 virtual ~ConfigurationCallback(){}
180 virtual void volumeChanged(const std::string& device, int value){}
181 virtual void accountsChanged(void){}
182 virtual void historyChanged(void){}
183 virtual void stunStatusFailure(const std::string& account_id){}
184 virtual void registrationStateChanged(const std::string& account_id, const std::string& state, int code, const std::string& detail_str){}
185 virtual void volatileAccountDetailsChanged(const std::string& account_id, const std::map<std::string, std::string>& details){}
186 virtual void incomingAccountMessage(const std::string& /*account_id*/, const std::string& /*from*/, const std::string& /*message*/){}
Adrien Béraud9f4d86d2015-07-15 10:52:16 -0400187 virtual void incomingTrustRequest(const std::string& /*account_id*/, const std::string& /*from*/, const std::vector<uint8_t>& /*payload*/, time_t received){}
Adrien Béraud04d822c2015-04-02 17:44:36 -0400188
Adrien Béraud7f97ca92015-06-07 15:36:06 -0400189 virtual void certificatePinned(const std::string& /*certId*/){}
190 virtual void certificatePathPinned(const std::string& /*path*/, const std::vector<std::string>& /*certId*/){}
191 virtual void certificateExpired(const std::string& /*certId*/){}
192 virtual void certificateStateChanged(const std::string& /*account_id*/, const std::string& /*certId*/, const std::string& /*state*/){}
193
194 virtual void errorAlert(int alert){}
Adrien Béraudb30e6dd2015-06-10 12:22:15 -0400195 virtual void getHardwareAudioFormat(std::vector<int32_t>* /*params_ret*/){}
Adrien Béraud62a280b2015-06-15 23:32:19 -0400196 virtual void getAppDataPath(const std::string& /* name */, std::vector<std::string>* /*path_ret*/){}
Adrien Béraud7f97ca92015-06-07 15:36:06 -0400197};