Skip to content
Snippets Groups Projects
Commit d6a99d0e authored by Sébastien Blin's avatar Sébastien Blin Committed by Adrien Béraud
Browse files

proxyclient: add possibility to set the platform

This allow android to change the platform to "unifiedpush".
parent b9ccc968
No related branches found
No related tags found
No related merge requests found
...@@ -343,6 +343,7 @@ int dht_runner_run_config(dht_runner* r, in_port_t port, const dht_runner_config ...@@ -343,6 +343,7 @@ int dht_runner_run_config(dht_runner* r, in_port_t port, const dht_runner_config
config.push_node_id = conf->push_node_id ? std::string(conf->push_node_id) : std::string{}; config.push_node_id = conf->push_node_id ? std::string(conf->push_node_id) : std::string{};
config.push_token = conf->push_token ? std::string(conf->push_token) : std::string{}; config.push_token = conf->push_token ? std::string(conf->push_token) : std::string{};
config.push_topic = conf->push_topic ? std::string(conf->push_topic) : std::string{}; config.push_topic = conf->push_topic ? std::string(conf->push_topic) : std::string{};
config.push_platform = conf->push_platform ? std::string(conf->push_platform) : std::string{};
config.peer_discovery = conf->peer_discovery; config.peer_discovery = conf->peer_discovery;
config.peer_publish = conf->peer_publish; config.peer_publish = conf->peer_publish;
......
...@@ -147,6 +147,7 @@ struct OPENDHT_PUBLIC dht_runner_config { ...@@ -147,6 +147,7 @@ struct OPENDHT_PUBLIC dht_runner_config {
const char* push_node_id; const char* push_node_id;
const char* push_token; const char* push_token;
const char* push_topic; const char* push_topic;
const char* push_platform;
bool peer_discovery; bool peer_discovery;
bool peer_publish; bool peer_publish;
dht_certificate* server_ca; dht_certificate* server_ca;
......
...@@ -266,6 +266,7 @@ public: ...@@ -266,6 +266,7 @@ public:
virtual void setPushNotificationToken(const std::string&) {}; virtual void setPushNotificationToken(const std::string&) {};
virtual void setPushNotificationTopic(const std::string&) {}; virtual void setPushNotificationTopic(const std::string&) {};
virtual void setPushNotificationPlatform(const std::string&) {};
/** /**
* Call linked callback with a push notification * Call linked callback with a push notification
......
...@@ -75,6 +75,14 @@ public: ...@@ -75,6 +75,14 @@ public:
#endif #endif
} }
virtual void setPushNotificationPlatform(const std::string& platform) override {
#ifdef OPENDHT_PUSH_NOTIFICATIONS
platform_ = platform;
#else
(void) platform;
#endif
}
virtual ~DhtProxyClient(); virtual ~DhtProxyClient();
/** /**
...@@ -415,6 +423,20 @@ private: ...@@ -415,6 +423,20 @@ private:
*/ */
std::string notificationTopic_ {}; std::string notificationTopic_ {};
/**
* Platform for push notifications (supported android, ios, unifiedpush)
*/
std::string platform_
#ifdef __ANDROID__
{"android"};
#else
#ifdef __APPLE__
{"ios"};
#else
{};
#endif
#endif
const std::function<void()> loopSignal_; const std::function<void()> loopSignal_;
#ifdef OPENDHT_PUSH_NOTIFICATIONS #ifdef OPENDHT_PUSH_NOTIFICATIONS
......
...@@ -62,6 +62,7 @@ public: ...@@ -62,6 +62,7 @@ public:
std::string push_node_id {}; std::string push_node_id {};
std::string push_token {}; std::string push_token {};
std::string push_topic {}; std::string push_topic {};
std::string push_platform {};
bool peer_discovery {false}; bool peer_discovery {false};
bool peer_publish {false}; bool peer_publish {false};
std::shared_ptr<dht::crypto::Certificate> server_ca; std::shared_ptr<dht::crypto::Certificate> server_ca;
...@@ -453,6 +454,11 @@ public: ...@@ -453,6 +454,11 @@ public:
*/ */
void setPushNotificationTopic(const std::string& topic); void setPushNotificationTopic(const std::string& topic);
/**
* Sets the push notification platform
*/
void setPushNotificationPlatform(const std::string& platform);
/** /**
* Insert a push notification to process for OpenDHT * Insert a push notification to process for OpenDHT
*/ */
......
...@@ -48,6 +48,7 @@ impl DhtRunnerConfig { ...@@ -48,6 +48,7 @@ impl DhtRunnerConfig {
push_node_id: ptr::null(), push_node_id: ptr::null(),
push_token: ptr::null(), push_token: ptr::null(),
push_topic: ptr::null(), push_topic: ptr::null(),
push_platform: ptr::null(),
peer_discovery: false, peer_discovery: false,
peer_publish: false, peer_publish: false,
server_ca: ptr::null_mut(), server_ca: ptr::null_mut(),
...@@ -78,6 +79,10 @@ impl DhtRunnerConfig { ...@@ -78,6 +79,10 @@ impl DhtRunnerConfig {
self.push_topic = CString::new(push_topic).unwrap().as_ptr(); self.push_topic = CString::new(push_topic).unwrap().as_ptr();
} }
pub fn set_push_platform(&mut self, push_platform: &str) {
self.push_platform = CString::new(push_platform).unwrap().as_ptr();
}
pub fn set_identity(&mut self, certificate: Box<DhtCertificate>, privatekey: Box<PrivateKey>) { pub fn set_identity(&mut self, certificate: Box<DhtCertificate>, privatekey: Box<PrivateKey>) {
self.dht_config.id.privatekey = Box::into_raw(privatekey); self.dht_config.id.privatekey = Box::into_raw(privatekey);
self.dht_config.id.certificate = Box::into_raw(certificate); self.dht_config.id.certificate = Box::into_raw(certificate);
......
...@@ -119,6 +119,7 @@ pub struct DhtRunnerConfig ...@@ -119,6 +119,7 @@ pub struct DhtRunnerConfig
pub push_node_id: *const c_char, pub push_node_id: *const c_char,
pub push_token: *const c_char, pub push_token: *const c_char,
pub push_topic: *const c_char, pub push_topic: *const c_char,
pub push_platform: *const c_char,
pub peer_discovery: bool, pub peer_discovery: bool,
pub peer_publish: bool, pub peer_publish: bool,
pub server_ca: *mut DhtCertificate, pub server_ca: *mut DhtCertificate,
......
...@@ -1325,13 +1325,8 @@ DhtProxyClient::getPushRequest(Json::Value& body) const ...@@ -1325,13 +1325,8 @@ DhtProxyClient::getPushRequest(Json::Value& body) const
body["key"] = deviceKey_; body["key"] = deviceKey_;
body["client_id"] = pushClientId_; body["client_id"] = pushClientId_;
body["session_id"] = pushSessionId_; body["session_id"] = pushSessionId_;
#ifdef __ANDROID__
body["platform"] = "android";
#endif
#ifdef __APPLE__
body["topic"] = notificationTopic_; body["topic"] = notificationTopic_;
body["platform"] = "ios"; body["platform"] = platform_;
#endif
} }
std::string std::string
......
...@@ -1115,6 +1115,8 @@ DhtRunner::enableProxy(bool proxify) ...@@ -1115,6 +1115,8 @@ DhtRunner::enableProxy(bool proxify)
dht_via_proxy->setPushNotificationToken(config_.push_token); dht_via_proxy->setPushNotificationToken(config_.push_token);
if (not config_.push_topic.empty()) if (not config_.push_topic.empty())
dht_via_proxy->setPushNotificationTopic(config_.push_topic); dht_via_proxy->setPushNotificationTopic(config_.push_topic);
if (not config_.push_platform.empty())
dht_via_proxy->setPushNotificationPlatform(config_.push_platform);
dht_ = std::make_unique<SecureDht>(std::move(dht_via_proxy), config_.dht_config, identityAnnouncedCb_, logger_); dht_ = std::make_unique<SecureDht>(std::move(dht_via_proxy), config_.dht_config, identityAnnouncedCb_, logger_);
// and use it // and use it
use_proxy = proxify; use_proxy = proxify;
...@@ -1162,6 +1164,18 @@ DhtRunner::setPushNotificationTopic(const std::string& topic) { ...@@ -1162,6 +1164,18 @@ DhtRunner::setPushNotificationTopic(const std::string& topic) {
#endif #endif
} }
void
DhtRunner::setPushNotificationPlatform(const std::string& platform) {
std::lock_guard<std::mutex> lck(dht_mtx);
#if defined(OPENDHT_PROXY_CLIENT) && defined(OPENDHT_PUSH_NOTIFICATIONS)
config_.push_platform = platform;
if (dht_)
dht_->setPushNotificationPlatform(platform);
#else
(void) platform;
#endif
}
void void
DhtRunner::pushNotificationReceived(const std::map<std::string, std::string>& data) DhtRunner::pushNotificationReceived(const std::map<std::string, std::string>& data)
{ {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment