From dbc298b6e2cf4c8e169debcda0ec03e7bb18a443 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Blin?=
 <sebastien.blin@savoirfairelinux.com>
Date: Tue, 3 Apr 2018 11:59:52 -0400
Subject: [PATCH] data transfer: add the ability to use another turn server

Use turn server defined by the user instead of the hardcoded
turn.ring.cx

Change-Id: I47452dfc2a531af2f5ebda3e138d4b31e694631a
Reviewed-by: Philippe Gorley <philippe.gorley@savoirfairelinux.com>
---
 src/ringdht/p2p.cpp | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/src/ringdht/p2p.cpp b/src/ringdht/p2p.cpp
index d5d73c4db8..1d8918b6c2 100644
--- a/src/ringdht/p2p.cpp
+++ b/src/ringdht/p2p.cpp
@@ -20,6 +20,7 @@
 
 #include "p2p.h"
 
+#include "account_schema.h"
 #include "ringaccount.h"
 #include "peer_connection.h"
 #include "turn_transport.h"
@@ -377,11 +378,17 @@ DhtPeerConnector::Impl::turnConnect()
     if (turn_)
         return;
 
+    auto details = account.getAccountDetails();
+    auto server = details[Conf::CONFIG_TURN_SERVER];
+    auto realm = details[Conf::CONFIG_TURN_SERVER_REALM];
+    auto username = details[Conf::CONFIG_TURN_SERVER_UNAME];
+    auto password = details[Conf::CONFIG_TURN_SERVER_PWD];
+
     auto turn_param = TurnTransportParams {};
-    turn_param.server = IpAddr {"turn.ring.cx"};
-    turn_param.realm = "ring";
-    turn_param.username = "ring";
-    turn_param.password = "ring";
+    turn_param.server = IpAddr {server.empty() ? "turn.ring.cx" : server};
+    turn_param.realm = realm.empty() ? "ring" : realm;
+    turn_param.username = username.empty() ? "ring" : username;
+    turn_param.password = password.empty() ? "ring" : password;
     turn_param.isPeerConnection = true; // Request for TCP peer connections, not UDP
     turn_param.onPeerConnection = [this](uint32_t conn_id, const IpAddr& peer_addr, bool connected) {
         (void)conn_id;
-- 
GitLab