blob: 6faa2427cc05079636a35d3fdedc15b86463fb69 [file] [log] [blame]
Vitaly Buka4615e0d2015-10-14 15:35:12 -07001// Copyright 2015 The Weave Authors. All rights reserved.
Vitaly Buka17b0a8a2015-08-31 19:12:35 -07002// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
Johan Euphrosine3523fdd2015-10-14 20:46:05 -07005#include "examples/provider/file_config_store.h"
Vitaly Buka17b0a8a2015-08-31 19:12:35 -07006
7#include <sys/stat.h>
8#include <sys/utsname.h>
9
10#include <fstream>
11#include <map>
12#include <string>
13#include <vector>
14
15namespace weave {
16namespace examples {
17
18const char kSettingsDir[] = "/var/lib/weave/";
Vitaly Buka17b0a8a2015-08-31 19:12:35 -070019
Vitaly Buka34668e72015-12-15 14:46:47 -080020FileConfigStore::FileConfigStore(bool disable_security,
21 const std::string& model_id)
22 : disable_security_{disable_security},
23 model_id_{model_id},
Paul Westbrook15a832e2015-12-08 23:00:29 -080024 settings_path_{"/var/lib/weave/weave_settings_" + model_id + ".json"} {}
Vitaly Buka41a90d62015-09-29 16:58:39 -070025
Vitaly Buka17b0a8a2015-08-31 19:12:35 -070026bool FileConfigStore::LoadDefaults(Settings* settings) {
27 char host_name[HOST_NAME_MAX] = {};
28 gethostname(host_name, HOST_NAME_MAX);
29
30 settings->name = host_name;
31 settings->description = "";
32
33 utsname uname_data;
34 uname(&uname_data);
35
36 settings->firmware_version = uname_data.sysname;
37 settings->oem_name = "Unknown";
38 settings->model_name = "Unknown";
Paul Westbrook321dae62015-11-16 09:31:35 -080039 settings->model_id = model_id_;
Vitaly Buka17b0a8a2015-08-31 19:12:35 -070040 settings->pairing_modes = {PairingType::kEmbeddedCode};
41 settings->embedded_code = "0000";
Vitaly Buka0fadc352015-11-17 09:47:26 -080042
43 // Keys owners:
44 // avakulenko@google.com
45 // gene@chromium.org
46 // vitalybuka@chromium.org
47 settings->client_id =
48 "338428340000-vkb4p6h40c7kja1k3l70kke8t615cjit.apps.googleusercontent."
49 "com";
50 settings->client_secret = "LS_iPYo_WIOE0m2VnLdduhnx";
51 settings->api_key = "AIzaSyACK3oZtmIylUKXiTMqkZqfuRiCgQmQSAQ";
Vitaly Buka41a90d62015-09-29 16:58:39 -070052
53 settings->disable_security = disable_security_;
Vitaly Buka17b0a8a2015-08-31 19:12:35 -070054 return true;
55}
56
57std::string FileConfigStore::LoadSettings() {
Paul Westbrook15a832e2015-12-08 23:00:29 -080058 LOG(INFO) << "Loading settings from " << settings_path_;
59 std::ifstream str(settings_path_);
Vitaly Buka17b0a8a2015-08-31 19:12:35 -070060 return std::string(std::istreambuf_iterator<char>(str),
61 std::istreambuf_iterator<char>());
62}
63
64void FileConfigStore::SaveSettings(const std::string& settings) {
65 CHECK(mkdir(kSettingsDir, S_IRWXU) == 0 || errno == EEXIST);
Paul Westbrook15a832e2015-12-08 23:00:29 -080066 LOG(INFO) << "Saving settings to " << settings_path_;
67 std::ofstream str(settings_path_);
Vitaly Buka17b0a8a2015-08-31 19:12:35 -070068 str << settings;
69}
70
Vitaly Buka17b0a8a2015-08-31 19:12:35 -070071} // namespace examples
72} // namespace weave