15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "jingle/notifier/base/notifier_options_util.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/logging.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "jingle/notifier/base/const_communicator.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "jingle/notifier/base/notifier_options.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "talk/xmpp/constants.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "talk/xmpp/jid.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace notifier { 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)buzz::XmppClientSettings MakeXmppClientSettings( 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const NotifierOptions& notifier_options, 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& email, const std::string& token) { 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) buzz::Jid jid = buzz::Jid(email); 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK(!jid.node().empty()); 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK(jid.IsValid()); 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) buzz::XmppClientSettings xmpp_client_settings; 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) xmpp_client_settings.set_user(jid.node()); 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) xmpp_client_settings.set_resource("chrome-sync"); 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) xmpp_client_settings.set_host(jid.domain()); 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) xmpp_client_settings.set_use_tls(buzz::TLS_ENABLED); 277d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) xmpp_client_settings.set_auth_token(notifier_options.auth_mechanism, 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) notifier_options.invalidate_xmpp_login ? 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) token + "bogus" : token); 307d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) if (notifier_options.auth_mechanism == buzz::AUTH_MECHANISM_OAUTH2) 317d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) xmpp_client_settings.set_token_service("oauth2"); 327d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) else 337d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) xmpp_client_settings.set_token_service("chromiumsync"); 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (notifier_options.allow_insecure_connection) { 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) xmpp_client_settings.set_allow_plain(true); 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) xmpp_client_settings.set_use_tls(buzz::TLS_DISABLED); 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return xmpp_client_settings; 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ServerList GetServerList( 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const NotifierOptions& notifier_options) { 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ServerList servers; 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Override the default servers with a test notification server if one was 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // provided. 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!notifier_options.xmpp_host_port.host().empty()) { 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) servers.push_back( 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ServerInformation(notifier_options.xmpp_host_port, 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DOES_NOT_SUPPORT_SSLTCP)); 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The default servers support SSLTCP. 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) servers.push_back( 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ServerInformation( 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) net::HostPortPair("talk.google.com", 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) notifier::kDefaultXmppPort), 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SUPPORTS_SSLTCP)); 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) servers.push_back( 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ServerInformation( 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) net::HostPortPair("talkx.l.google.com", 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) notifier::kDefaultXmppPort), 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SUPPORTS_SSLTCP)); 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return servers; 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace notifier 67