blob: 6374257f80566ddb5b62c1d744e00f5a2be8b6e7 [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*/){}
44 virtual void incomingTrustRequest(const std::string& /*account_id*/, const std::string& /*from*/, time_t received){}
45
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éraud04d822c2015-04-02 17:44:36 -040052 virtual std::vector<int32_t> configGetHardwareAudioFormat(void){}
53};
54%}
55
56%feature("director") ConfigurationCallback;
57
Adrien Béraud7f97ca92015-06-07 15:36:06 -040058namespace DRing {
Adrien Béraud04d822c2015-04-02 17:44:36 -040059
Adrien Béraud7f97ca92015-06-07 15:36:06 -040060std::map<std::string, std::string> getAccountDetails(const std::string& accountID);
61std::map<std::string, std::string> getVolatileAccountDetails(const std::string& accountID);
62void setAccountDetails(const std::string& accountID, const std::map<std::string, std::string>& details);
63std::map<std::string, std::string> getAccountTemplate(const std::string& accountType);
64std::string addAccount(const std::map<std::string, std::string>& details);
65void removeAccount(const std::string& accountID);
66std::vector<std::string> getAccountList();
67void sendRegister(const std::string& accountID, bool enable);
68void registerAllAccounts(void);
69void sendAccountTextMessage(const std::string& accountID, const std::string& to, const std::string& message);
70
71std::map<std::string, std::string> getTlsDefaultSettings();
72
73std::vector<unsigned> getCodecList();
74std::vector<std::string> getSupportedTlsMethod();
75std::vector<std::string> getSupportedCiphers(const std::string& accountID);
76std::map<std::string, std::string> getCodecDetails(const std::string& accountID, const unsigned& codecId);
77bool setCodecDetails(const std::string& accountID, const unsigned& codecId, const std::map<std::string, std::string>& details);
78std::vector<unsigned> getActiveCodecList(const std::string& accountID);
79
80void setActiveCodecList(const std::string& accountID, const std::vector<unsigned>& list);
81
82std::vector<std::string> getAudioPluginList();
83void setAudioPlugin(const std::string& audioPlugin);
84std::vector<std::string> getAudioOutputDeviceList();
85void setAudioOutputDevice(int32_t index);
86void setAudioInputDevice(int32_t index);
87void setAudioRingtoneDevice(int32_t index);
88std::vector<std::string> getAudioInputDeviceList();
89std::vector<std::string> getCurrentAudioDevicesIndex();
90int32_t getAudioInputDeviceIndex(const std::string& name);
91int32_t getAudioOutputDeviceIndex(const std::string& name);
92std::string getCurrentAudioOutputPlugin();
93bool getNoiseSuppressState();
94void setNoiseSuppressState(bool state);
95
96bool isAgcEnabled();
97void setAgcState(bool enabled);
98
99void muteDtmf(bool mute);
100bool isDtmfMuted();
101
102bool isCaptureMuted();
103void muteCapture(bool mute);
104bool isPlaybackMuted();
105void mutePlayback(bool mute);
106
107std::string getAudioManager();
108bool setAudioManager(const std::string& api);
109
110int32_t isIax2Enabled();
111std::string getRecordPath();
112void setRecordPath(const std::string& recPath);
113bool getIsAlwaysRecording();
114void setIsAlwaysRecording(bool rec);
115
116void setHistoryLimit(int32_t days);
117int32_t getHistoryLimit();
118
119void setAccountsOrder(const std::string& order);
120
121std::map<std::string, std::string> getHookSettings();
122void setHookSettings(const std::map<std::string, std::string>& settings);
123
124std::map<std::string, std::string> getIp2IpDetails();
125
126std::vector<std::map<std::string, std::string> > getCredentials(const std::string& accountID);
127void setCredentials(const std::string& accountID, const std::vector<std::map<std::string, std::string> >& details);
128
129std::string getAddrFromInterfaceName(const std::string& interface);
130
131std::vector<std::string> getAllIpInterface();
132std::vector<std::string> getAllIpInterfaceByName();
133
134std::map<std::string, std::string> getShortcuts();
135void setShortcuts(const std::map<std::string, std::string> &shortcutsMap);
136
137void setVolume(const std::string& device, double value);
138double getVolume(const std::string& device);
139
140/*
141 * Security
142 */
143std::map<std::string, std::string> validateCertificate(const std::string& accountId,
144 const std::string& certificate, const std::string& privateKey);
145std::map<std::string, std::string> validateCertificateRaw(const std::string& accountId,
146 const std::vector<uint8_t>& certificate);
147std::map<std::string, std::string> getCertificateDetails(const std::string& certificate);
148std::map<std::string, std::string> getCertificateDetailsRaw(const std::vector<uint8_t>& certificate);
149
150std::vector<std::string> getPinnedCertificates();
151
152std::string pinCertificate(const std::vector<uint8_t>& certificate, bool local);
153bool unpinCertificate(const std::string& certId);
154
155void pinCertificatePath(const std::string& path);
156unsigned unpinCertificatePath(const std::string& path);
157
158bool pinRemoteCertificate(const std::string& accountId, const std::string& certId);
159bool setCertificateStatus(const std::string& account, const std::string& certId, const std::string& status);
160std::vector<std::string> getCertificatesByStatus(const std::string& account, const std::string& status);
161
162/* contact requests */
163std::map<std::string, std::string> getTrustRequests(const std::string& accountId);
164bool acceptTrustRequest(const std::string& accountId, const std::string& from);
165bool discardTrustRequest(const std::string& accountId, const std::string& from);
166
167void sendTrustRequest(const std::string& accountId, const std::string& to);
168
169}
Adrien Béraud04d822c2015-04-02 17:44:36 -0400170
171class ConfigurationCallback {
172public:
Adrien Béraud7f97ca92015-06-07 15:36:06 -0400173 virtual ~ConfigurationCallback(){}
174 virtual void volumeChanged(const std::string& device, int value){}
175 virtual void accountsChanged(void){}
176 virtual void historyChanged(void){}
177 virtual void stunStatusFailure(const std::string& account_id){}
178 virtual void registrationStateChanged(const std::string& account_id, const std::string& state, int code, const std::string& detail_str){}
179 virtual void volatileAccountDetailsChanged(const std::string& account_id, const std::map<std::string, std::string>& details){}
180 virtual void incomingAccountMessage(const std::string& /*account_id*/, const std::string& /*from*/, const std::string& /*message*/){}
181 virtual void incomingTrustRequest(const std::string& /*account_id*/, const std::string& /*from*/, time_t received){}
Adrien Béraud04d822c2015-04-02 17:44:36 -0400182
Adrien Béraud7f97ca92015-06-07 15:36:06 -0400183 virtual void certificatePinned(const std::string& /*certId*/){}
184 virtual void certificatePathPinned(const std::string& /*path*/, const std::vector<std::string>& /*certId*/){}
185 virtual void certificateExpired(const std::string& /*certId*/){}
186 virtual void certificateStateChanged(const std::string& /*account_id*/, const std::string& /*certId*/, const std::string& /*state*/){}
187
188 virtual void errorAlert(int alert){}
189 virtual std::vector<int32_t> configGetHardwareAudioFormat(void){}
190};