blob: 2450194c3c99952947f22d84ead1f51300399ee5 [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);
64std::map<std::string, std::string> getAccountTemplate(const std::string& accountType);
65std::string addAccount(const std::map<std::string, std::string>& details);
66void removeAccount(const std::string& accountID);
67std::vector<std::string> getAccountList();
68void sendRegister(const std::string& accountID, bool enable);
69void registerAllAccounts(void);
70void sendAccountTextMessage(const std::string& accountID, const std::string& to, const std::string& message);
71
72std::map<std::string, std::string> getTlsDefaultSettings();
73
74std::vector<unsigned> getCodecList();
75std::vector<std::string> getSupportedTlsMethod();
76std::vector<std::string> getSupportedCiphers(const std::string& accountID);
77std::map<std::string, std::string> getCodecDetails(const std::string& accountID, const unsigned& codecId);
78bool setCodecDetails(const std::string& accountID, const unsigned& codecId, const std::map<std::string, std::string>& details);
79std::vector<unsigned> getActiveCodecList(const std::string& accountID);
80
81void setActiveCodecList(const std::string& accountID, const std::vector<unsigned>& list);
82
83std::vector<std::string> getAudioPluginList();
84void setAudioPlugin(const std::string& audioPlugin);
85std::vector<std::string> getAudioOutputDeviceList();
86void setAudioOutputDevice(int32_t index);
87void setAudioInputDevice(int32_t index);
88void setAudioRingtoneDevice(int32_t index);
89std::vector<std::string> getAudioInputDeviceList();
90std::vector<std::string> getCurrentAudioDevicesIndex();
91int32_t getAudioInputDeviceIndex(const std::string& name);
92int32_t getAudioOutputDeviceIndex(const std::string& name);
93std::string getCurrentAudioOutputPlugin();
94bool getNoiseSuppressState();
95void setNoiseSuppressState(bool state);
96
97bool isAgcEnabled();
98void setAgcState(bool enabled);
99
100void muteDtmf(bool mute);
101bool isDtmfMuted();
102
103bool isCaptureMuted();
104void muteCapture(bool mute);
105bool isPlaybackMuted();
106void mutePlayback(bool mute);
107
108std::string getAudioManager();
109bool setAudioManager(const std::string& api);
110
111int32_t isIax2Enabled();
112std::string getRecordPath();
113void setRecordPath(const std::string& recPath);
114bool getIsAlwaysRecording();
115void setIsAlwaysRecording(bool rec);
116
117void setHistoryLimit(int32_t days);
118int32_t getHistoryLimit();
119
120void setAccountsOrder(const std::string& order);
121
122std::map<std::string, std::string> getHookSettings();
123void setHookSettings(const std::map<std::string, std::string>& settings);
124
125std::map<std::string, std::string> getIp2IpDetails();
126
127std::vector<std::map<std::string, std::string> > getCredentials(const std::string& accountID);
128void setCredentials(const std::string& accountID, const std::vector<std::map<std::string, std::string> >& details);
129
130std::string getAddrFromInterfaceName(const std::string& interface);
131
132std::vector<std::string> getAllIpInterface();
133std::vector<std::string> getAllIpInterfaceByName();
134
135std::map<std::string, std::string> getShortcuts();
136void setShortcuts(const std::map<std::string, std::string> &shortcutsMap);
137
138void setVolume(const std::string& device, double value);
139double getVolume(const std::string& device);
140
141/*
142 * Security
143 */
Adrien Béraud9f4d86d2015-07-15 10:52:16 -0400144std::map<std::string, std::string> validateCertificatePath(const std::string& accountId,
145 const std::string& certificate,
146 const std::string& privateKey,
Adrien Béraud75540ff2015-10-04 22:58:37 -0400147 const std::string& privateKeyPassword,
Adrien Béraud9f4d86d2015-07-15 10:52:16 -0400148 const std::string& caList);
149
150std::map<std::string, std::string> validateCertificate(const std::string& accountId, const std::string& certificate);
151
Adrien Béraud7f97ca92015-06-07 15:36:06 -0400152std::map<std::string, std::string> getCertificateDetails(const std::string& certificate);
Adrien Béraud75540ff2015-10-04 22:58:37 -0400153std::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 -0400154
155std::vector<std::string> getPinnedCertificates();
156
Adrien Béraud9f4d86d2015-07-15 10:52:16 -0400157std::vector<std::string> pinCertificate(const std::vector<uint8_t>& certificate, bool local);
Adrien Béraud7f97ca92015-06-07 15:36:06 -0400158bool unpinCertificate(const std::string& certId);
159
160void pinCertificatePath(const std::string& path);
161unsigned unpinCertificatePath(const std::string& path);
162
163bool pinRemoteCertificate(const std::string& accountId, const std::string& certId);
164bool setCertificateStatus(const std::string& account, const std::string& certId, const std::string& status);
165std::vector<std::string> getCertificatesByStatus(const std::string& account, const std::string& status);
166
167/* contact requests */
168std::map<std::string, std::string> getTrustRequests(const std::string& accountId);
169bool acceptTrustRequest(const std::string& accountId, const std::string& from);
170bool discardTrustRequest(const std::string& accountId, const std::string& from);
171
Adrien Béraud9f4d86d2015-07-15 10:52:16 -0400172void sendTrustRequest(const std::string& accountId, const std::string& to, const std::vector<uint8_t>& payload);
Adrien Béraud7f97ca92015-06-07 15:36:06 -0400173
174}
Adrien Béraud04d822c2015-04-02 17:44:36 -0400175
176class ConfigurationCallback {
177public:
Adrien Béraud7f97ca92015-06-07 15:36:06 -0400178 virtual ~ConfigurationCallback(){}
179 virtual void volumeChanged(const std::string& device, int value){}
180 virtual void accountsChanged(void){}
181 virtual void historyChanged(void){}
182 virtual void stunStatusFailure(const std::string& account_id){}
183 virtual void registrationStateChanged(const std::string& account_id, const std::string& state, int code, const std::string& detail_str){}
184 virtual void volatileAccountDetailsChanged(const std::string& account_id, const std::map<std::string, std::string>& details){}
185 virtual void incomingAccountMessage(const std::string& /*account_id*/, const std::string& /*from*/, const std::string& /*message*/){}
Adrien Béraud9f4d86d2015-07-15 10:52:16 -0400186 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 -0400187
Adrien Béraud7f97ca92015-06-07 15:36:06 -0400188 virtual void certificatePinned(const std::string& /*certId*/){}
189 virtual void certificatePathPinned(const std::string& /*path*/, const std::vector<std::string>& /*certId*/){}
190 virtual void certificateExpired(const std::string& /*certId*/){}
191 virtual void certificateStateChanged(const std::string& /*account_id*/, const std::string& /*certId*/, const std::string& /*state*/){}
192
193 virtual void errorAlert(int alert){}
Adrien Béraudb30e6dd2015-06-10 12:22:15 -0400194 virtual void getHardwareAudioFormat(std::vector<int32_t>* /*params_ret*/){}
Adrien Béraud62a280b2015-06-15 23:32:19 -0400195 virtual void getAppDataPath(const std::string& /* name */, std::vector<std::string>* /*path_ret*/){}
Adrien Béraud7f97ca92015-06-07 15:36:06 -0400196};