blob: 8e72792dae317c0bdc6e3a15bc4fd1c929287ba6 [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/";
19const char kSettingsPath[] = "/var/lib/weave/weave_settings.json";
Vitaly Buka1496d542015-10-01 13:05:57 -070020const char kCategory[] = "example";
Vitaly Buka17b0a8a2015-08-31 19:12:35 -070021
Vitaly Buka41a90d62015-09-29 16:58:39 -070022FileConfigStore::FileConfigStore(bool disable_security)
23 : disable_security_{disable_security} {}
24
Vitaly Buka17b0a8a2015-08-31 19:12:35 -070025bool FileConfigStore::LoadDefaults(Settings* settings) {
26 char host_name[HOST_NAME_MAX] = {};
27 gethostname(host_name, HOST_NAME_MAX);
28
29 settings->name = host_name;
30 settings->description = "";
31
32 utsname uname_data;
33 uname(&uname_data);
34
35 settings->firmware_version = uname_data.sysname;
36 settings->oem_name = "Unknown";
37 settings->model_name = "Unknown";
38 settings->model_id = "AAAAA";
39 settings->pairing_modes = {PairingType::kEmbeddedCode};
40 settings->embedded_code = "0000";
Vitaly Buka0fadc352015-11-17 09:47:26 -080041
42 // Keys owners:
43 // avakulenko@google.com
44 // gene@chromium.org
45 // vitalybuka@chromium.org
46 settings->client_id =
47 "338428340000-vkb4p6h40c7kja1k3l70kke8t615cjit.apps.googleusercontent."
48 "com";
49 settings->client_secret = "LS_iPYo_WIOE0m2VnLdduhnx";
50 settings->api_key = "AIzaSyACK3oZtmIylUKXiTMqkZqfuRiCgQmQSAQ";
Vitaly Buka41a90d62015-09-29 16:58:39 -070051
52 settings->disable_security = disable_security_;
Vitaly Buka17b0a8a2015-08-31 19:12:35 -070053 return true;
54}
55
56std::string FileConfigStore::LoadSettings() {
57 LOG(INFO) << "Loading settings from " << kSettingsPath;
58 std::ifstream str(kSettingsPath);
59 return std::string(std::istreambuf_iterator<char>(str),
60 std::istreambuf_iterator<char>());
61}
62
63void FileConfigStore::SaveSettings(const std::string& settings) {
64 CHECK(mkdir(kSettingsDir, S_IRWXU) == 0 || errno == EEXIST);
65 LOG(INFO) << "Saving settings to " << kSettingsPath;
66 std::ofstream str(kSettingsPath);
67 str << settings;
68}
69
Vitaly Buka17b0a8a2015-08-31 19:12:35 -070070} // namespace examples
71} // namespace weave