diff --git a/bin/dbus/cx.ring.Ring.PluginManagerInterface.xml b/bin/dbus/cx.ring.Ring.PluginManagerInterface.xml index e47f8c582238b0a7ed7a4f68231444c854c91d22..271d8e94d7fa48631b0bb16bb8a4fd821010b405 100644 --- a/bin/dbus/cx.ring.Ring.PluginManagerInterface.xml +++ b/bin/dbus/cx.ring.Ring.PluginManagerInterface.xml @@ -107,6 +107,12 @@ </arg> </method> + <method name="getPlatformInfo" tp:name-for-bindings="getPlatformInfo"> + <tp:added version="9.2.0"/> + <arg type="a{ss}" name="info" direction="out" tp:type="String_String_Map"> + </arg> + </method> + <method name="getCallMediaHandlers" tp:name-for-bindings="getCallMediaHandlers"> <tp:added version="9.9.0"/> <arg type="as" name="getCallMediaHandlers" direction="out"> diff --git a/bin/dbus/dbuspluginmanagerinterface.hpp b/bin/dbus/dbuspluginmanagerinterface.hpp index 370438221ed3a03dd21a8902b02556153b4cb23b..a8555c7f71cf89c72b196184cc4d6495ea243911 100644 --- a/bin/dbus/dbuspluginmanagerinterface.hpp +++ b/bin/dbus/dbuspluginmanagerinterface.hpp @@ -87,6 +87,12 @@ public: return libjami::resetPluginPreferencesValues(path, accountId); } + std::map<std::string, std::string> + getPlatformInfo() + { + return libjami::getPlatformInfo(); + } + auto getInstalledPlugins() -> decltype(libjami::getInstalledPlugins()) { diff --git a/bin/jni/plugin_manager_interface.i b/bin/jni/plugin_manager_interface.i index bd7c972ca6245fb9651b093bf0117bd3e40c13ba..25cf481d09a8337d998bb770223a697b46238566 100644 --- a/bin/jni/plugin_manager_interface.i +++ b/bin/jni/plugin_manager_interface.i @@ -27,6 +27,7 @@ namespace libjami { bool loadPlugin(const std::string& path); bool unloadPlugin(const std::string& path); std::map<std::string,std::string> getPluginDetails(const std::string& path); +std::map<std::string, std::string> getPlatformInfo(); std::vector<std::map<std::string,std::string>> getPluginPreferences(const std::string& path, const std::string& accountId); bool setPluginPreference(const std::string& path, const std::string& accountId, const std::string& key, const std::string& value); std::map<std::string,std::string> getPluginPreferencesValues(const std::string& path, const std::string& accountId); diff --git a/src/client/plugin_manager_interface.cpp b/src/client/plugin_manager_interface.cpp index f02d0e3578976a32a311827ac9c645bd72e059e5..1c3c4010cfd3ebd284c974a6ecce980c627bf2a2 100644 --- a/src/client/plugin_manager_interface.cpp +++ b/src/client/plugin_manager_interface.cpp @@ -147,6 +147,14 @@ uninstallPlugin(const std::string& pluginRootPath) return -1; } +std::map<std::string, std::string> +getPlatformInfo() { +#ifdef ENABLE_PLUGIN + return jami::Manager::instance().getJamiPluginManager().getPlatformInfo(); +#endif + return {}; +} + std::vector<std::string> getCallMediaHandlers() { diff --git a/src/jami/plugin_manager_interface.h b/src/jami/plugin_manager_interface.h index b7f9dbd0904d674e5b2ba902e73d533d07d13f8c..240f00db1e5e661305e756a9ef867b7f207b4d71 100644 --- a/src/jami/plugin_manager_interface.h +++ b/src/jami/plugin_manager_interface.h @@ -49,6 +49,7 @@ LIBJAMI_PUBLIC bool resetPluginPreferencesValues(const std::string& path, const std::string& accountId); LIBJAMI_PUBLIC std::vector<std::string> getInstalledPlugins(); LIBJAMI_PUBLIC std::vector<std::string> getLoadedPlugins(); +LIBJAMI_PUBLIC std::map<std::string, std::string> getPlatformInfo(); LIBJAMI_PUBLIC int installPlugin(const std::string& jplPath, bool force); LIBJAMI_PUBLIC int uninstallPlugin(const std::string& pluginRootPath); LIBJAMI_PUBLIC std::vector<std::string> getCallMediaHandlers(); diff --git a/src/plugin/jamipluginmanager.cpp b/src/plugin/jamipluginmanager.cpp index ed0ffa1c5888ed577998bb0bd8bba70a783b0a26..b2566af0223d644bd8bb9969510ce6505a8eceab 100644 --- a/src/plugin/jamipluginmanager.cpp +++ b/src/plugin/jamipluginmanager.cpp @@ -22,17 +22,16 @@ #include "pluginsutils.h" #include "fileutils.h" #include "archiver.h" - #include "logger.h" - -#include <fstream> -#include <stdexcept> -#include <msgpack.hpp> #include "manager.h" #include "preferences.h" #include "jami/plugin_manager_interface.h" #include "store_ca_crt.cpp" +#include <fstream> +#include <stdexcept> +#include <msgpack.hpp> + #define SUCCESS 0 #define PLUGIN_ALREADY_INSTALLED 100 /* Plugin already installed with the same version */ #define PLUGIN_OLD_VERSION 200 /* Plugin already installed with a newer version */ @@ -126,6 +125,12 @@ JamiPluginManager::checkPluginCertificateValidity(dht::crypto::Certificate* cert return cert && *cert && trust_.verify(*cert); } +std::map<std::string, std::string> +JamiPluginManager::getPlatformInfo() +{ + return PluginUtils::getPlatformInfo(); +} + bool JamiPluginManager::checkPluginSignatureFile(const std::string& jplPath) { diff --git a/src/plugin/jamipluginmanager.h b/src/plugin/jamipluginmanager.h index aaa10eba81592fbfeb815304a5b7014990fc7d8d..a1c8001e98cb0c69f58b1b2328c4ce949b1cd5f8 100644 --- a/src/plugin/jamipluginmanager.h +++ b/src/plugin/jamipluginmanager.h @@ -168,6 +168,11 @@ public: std::map<std::string, std::string> getPluginPreferencesValuesMap(const std::string& rootPath, const std::string& accountId); + /** + * @brief Returns a Map of platform system. + */ + std::map<std::string, std::string> getPlatformInfo(); + /** * @brief Modifies a preference value by saving it to a preferences.msgpack. * Plugin is reloaded only if the preference cannot take effect immediately. diff --git a/src/plugin/pluginsutils.cpp b/src/plugin/pluginsutils.cpp index cdb67f167ab21715b36106352bc634cbdb129d4d..9ab00890f679c89c51dd54d68393876d17ebc2b7 100644 --- a/src/plugin/pluginsutils.cpp +++ b/src/plugin/pluginsutils.cpp @@ -75,6 +75,14 @@ manifestPath(const std::string& rootPath) return rootPath + DIR_SEPARATOR_CH + "manifest.json"; } +std::map<std::string, std::string> +getPlatformInfo() +{ + std::map<std::string, std::string> platformInfo = {}; + platformInfo["os"] = ABI; + return platformInfo; +} + std::string getRootPathFromSoPath(const std::string& soPath) { diff --git a/src/plugin/pluginsutils.h b/src/plugin/pluginsutils.h index f5df57757b9e49ad06fee98b3c2d1227151ca1da..ca96282caae695e05752fb496de63fe1c111aaca 100644 --- a/src/plugin/pluginsutils.h +++ b/src/plugin/pluginsutils.h @@ -76,6 +76,12 @@ std::map<std::string, std::string> checkManifestValidity(std::istream& stream); */ std::map<std::string, std::string> checkManifestValidity(const std::vector<uint8_t>& vec); +/** + * @brief Returns a map with platform information. + * @return Map with platform information +*/ +std::map<std::string, std::string> getPlatformInfo(); + /** * @brief Parses the manifest file of an installed plugin if it's valid. * @param manifestFilePath