|  | // 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"; | 
|  | settings->client_id = "58855907228.apps.googleusercontent.com"; | 
|  | settings->client_secret = "eHSAREAHrIqPsHBxCE9zPPBi"; | 
|  | settings->api_key = "AIzaSyDSq46gG-AxUnC3zoqD9COIPrjolFsMfMA"; | 
|  |  | 
|  | 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 |