buffet: Start privet logic
Initialize privetd::Manager from buffet::Manager.
Added flag disable_privet to disable local APIs.
CloudDelegate still uses D-Bus to communicate with buffet.
BUG=brillo:1161
TEST=`FEATURES=test emerge-gizmo buffet`
Change-Id: Ic5d687f0e45d9be3c487a2f2b2de354f4b437441
Reviewed-on: https://chromium-review.googlesource.com/276602
Reviewed-by: Alex Vakulenko <avakulenko@chromium.org>
Reviewed-by: Vitaly Buka <vitalybuka@chromium.org>
Commit-Queue: Vitaly Buka <vitalybuka@chromium.org>
Tested-by: Vitaly Buka <vitalybuka@chromium.org>
diff --git a/buffet/main.cc b/buffet/main.cc
index c7d44d0..3971abb 100644
--- a/buffet/main.cc
+++ b/buffet/main.cc
@@ -9,6 +9,7 @@
#include <chromeos/dbus/exported_object_manager.h>
#include <chromeos/daemons/dbus_daemon.h>
#include <chromeos/flag_helper.h>
+#include <chromeos/strings/string_utils.h>
#include <chromeos/syslog_logging.h>
#include "buffet/dbus_constants.h"
@@ -23,31 +24,20 @@
class Daemon final : public DBusServiceDaemon {
public:
- Daemon(const base::FilePath& config_path,
- const base::FilePath& state_path,
- const base::FilePath& test_definitions_path,
- bool enable_xmpp)
- : DBusServiceDaemon(kServiceName, kRootServicePath),
- config_path_{config_path},
- state_path_{state_path},
- test_definitions_path_{test_definitions_path},
- enable_xmpp_{enable_xmpp} {}
+ explicit Daemon(const buffet::Manager::Options& options)
+ : DBusServiceDaemon(kServiceName, kRootServicePath), options_{options} {}
protected:
void RegisterDBusObjectsAsync(AsyncEventSequencer* sequencer) override {
manager_.reset(new buffet::Manager(object_manager_->AsWeakPtr()));
- manager_->Start(
- config_path_, state_path_, test_definitions_path_, enable_xmpp_,
- sequencer->GetHandler("Manager.RegisterAsync() failed.", true));
+ manager_->Start(options_, sequencer);
}
- private:
- std::unique_ptr<buffet::Manager> manager_;
- const base::FilePath config_path_;
- const base::FilePath state_path_;
- const base::FilePath test_definitions_path_;
- const bool enable_xmpp_;
+ void OnShutdown(int* return_code) override { manager_->Stop(); }
+ private:
+ buffet::Manager::Options options_;
+ std::unique_ptr<buffet::Manager> manager_;
DISALLOW_COPY_AND_ASSIGN(Daemon);
};
@@ -71,6 +61,12 @@
"and state definitions. For use in test only.");
DEFINE_bool(enable_xmpp, true,
"Connect to GCD via a persistent XMPP connection.");
+ DEFINE_bool(disable_privet, false, "disable Privet protocol");
+ DEFINE_bool(disable_security, false, "disable Privet security for tests");
+ DEFINE_bool(enable_ping, false, "enable test HTTP handler at /privet/ping");
+ DEFINE_string(device_whitelist, "",
+ "Comma separated list of network interfaces to monitor for "
+ "connectivity (an empty list enables all interfaces).");
chromeos::FlagHelper::Init(argc, argv, "Privet protocol handler daemon");
if (FLAGS_config_path.empty())
FLAGS_config_path = kDefaultConfigFilePath;
@@ -81,9 +77,20 @@
flags |= chromeos::kLogToStderr;
chromeos::InitLog(flags);
- buffet::Daemon daemon{base::FilePath{FLAGS_config_path},
- base::FilePath{FLAGS_state_path},
- base::FilePath{FLAGS_test_definitions_path},
- FLAGS_enable_xmpp};
+ auto device_whitelist =
+ chromeos::string_utils::Split(FLAGS_device_whitelist, ",", true, true);
+
+ buffet::Manager::Options options;
+ options.config_path = base::FilePath{FLAGS_config_path};
+ options.state_path = base::FilePath{FLAGS_state_path};
+ options.test_definitions_path = base::FilePath{FLAGS_test_definitions_path};
+ options.xmpp_enabled = FLAGS_enable_xmpp;
+ options.privet.disable_privet = FLAGS_disable_privet;
+ options.privet.disable_security = FLAGS_disable_security;
+ options.privet.enable_ping = FLAGS_enable_ping;
+ options.privet.device_whitelist.insert(device_whitelist.begin(),
+ device_whitelist.end());
+
+ buffet::Daemon daemon{options};
return daemon.Run();
}