| // Copyright 2015 The Weave Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #include "examples/provider/file_config_store.h" | 
 |  | 
 | #include <sys/stat.h> | 
 | #include <sys/utsname.h> | 
 |  | 
 | #include <fstream> | 
 | #include <map> | 
 | #include <string> | 
 | #include <vector> | 
 |  | 
 | namespace weave { | 
 | namespace examples { | 
 |  | 
 | const char kSettingsDir[] = "/var/lib/weave/"; | 
 | const char kSettingsPath[] = "/var/lib/weave/weave_settings.json"; | 
 | const char kCategory[] = "example"; | 
 |  | 
 | FileConfigStore::FileConfigStore(bool disable_security) | 
 |     : disable_security_{disable_security} {} | 
 |  | 
 | bool FileConfigStore::LoadDefaults(Settings* settings) { | 
 |   char host_name[HOST_NAME_MAX] = {}; | 
 |   gethostname(host_name, HOST_NAME_MAX); | 
 |  | 
 |   settings->name = host_name; | 
 |   settings->description = ""; | 
 |  | 
 |   utsname uname_data; | 
 |   uname(&uname_data); | 
 |  | 
 |   settings->firmware_version = uname_data.sysname; | 
 |   settings->oem_name = "Unknown"; | 
 |   settings->model_name = "Unknown"; | 
 |   settings->model_id = "AAAAA"; | 
 |   settings->pairing_modes = {PairingType::kEmbeddedCode}; | 
 |   settings->embedded_code = "0000"; | 
 |  | 
 |   // Keys owners: | 
 |   //   avakulenko@google.com | 
 |   //   gene@chromium.org | 
 |   //   vitalybuka@chromium.org | 
 |   settings->client_id = | 
 |       "338428340000-vkb4p6h40c7kja1k3l70kke8t615cjit.apps.googleusercontent." | 
 |       "com"; | 
 |   settings->client_secret = "LS_iPYo_WIOE0m2VnLdduhnx"; | 
 |   settings->api_key = "AIzaSyACK3oZtmIylUKXiTMqkZqfuRiCgQmQSAQ"; | 
 |  | 
 |   settings->disable_security = disable_security_; | 
 |   return true; | 
 | } | 
 |  | 
 | std::string FileConfigStore::LoadSettings() { | 
 |   LOG(INFO) << "Loading settings from " << kSettingsPath; | 
 |   std::ifstream str(kSettingsPath); | 
 |   return std::string(std::istreambuf_iterator<char>(str), | 
 |                      std::istreambuf_iterator<char>()); | 
 | } | 
 |  | 
 | void FileConfigStore::SaveSettings(const std::string& settings) { | 
 |   CHECK(mkdir(kSettingsDir, S_IRWXU) == 0 || errno == EEXIST); | 
 |   LOG(INFO) << "Saving settings to " << kSettingsPath; | 
 |   std::ofstream str(kSettingsPath); | 
 |   str << settings; | 
 | } | 
 |  | 
 | }  // namespace examples | 
 | }  // namespace weave |