| // Copyright 2017 The Chromium OS Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef AUTHPOLICY_AUTHPOLICY_FLAGS_H_ |
| #define AUTHPOLICY_AUTHPOLICY_FLAGS_H_ |
| |
| #include <string> |
| |
| #include "bindings/authpolicy_containers.pb.h" |
| |
| namespace base { |
| class FilePath; |
| } |
| |
| namespace authpolicy { |
| |
| // Serializes |flags| to a base 64 string. |
| std::string SerializeFlags(const protos::DebugFlags& flags); |
| |
| // Deserializes |flags| from a base 64 string |proto_encoded|. |
| bool DeserializeFlags(const std::string& proto_encoded, |
| protos::DebugFlags* flags); |
| |
| // Simple class for managing debug flags. See protos::DebugFlags for a |
| // description of available flags. |
| // |
| // Flags are loaded from a JSON file at /etc/authpolicyd_flags (see |
| // Path::DEBUG_FLAGS). |
| // |
| // Example: |
| // echo '{"log_commands":true,"log_command_output":true,"net_log_level":"10"}' \ |
| // > /etc/authpolicyd_flags |
| // turns on verbose logging of net commands. |
| class AuthPolicyFlags { |
| public: |
| // Defines 4 sets of flag levels for SetDefaults(). |
| enum DefaultLevel { |
| // Note: Numbers referenced in authpolicy_debug command help in crosh! |
| kQuiet = 0, // All flags off (default). |
| kTaciturn = 1, // A few logs only with important stats. |
| kChatty = 2, // More verbose logs, low debug level. |
| kVerbose = 3, // Highly verbose logs, including seccomp failures, high |
| // debug level. |
| kMinLevel = kQuiet, |
| kMaxLevel = kVerbose |
| }; |
| |
| // Applies defaults according to |default_level|. |
| void SetDefaults(DefaultLevel default_level); |
| |
| // Loads flags from the JSON file at |path|. Returns false if the file does |
| // not exist. Prints warnings and errors. Misspelled/unknown settings are |
| // ignored. Malformed files (invalid JSON) are ignored altogether. |
| bool LoadFromJsonFile(const base::FilePath& path); |
| |
| // Loads flags from the JSON string |flags_json|. Prints warnings and errors. |
| // Misspelled/unknown settings are ignored. Malformed strings (invalid JSON) |
| // are ignored altogether. |
| void LoadFromJsonString(const std::string& flags_json); |
| |
| // Prints out all flags. |
| void Dump() const; |
| |
| // Gets the underlying protobuf with all flags. |
| const protos::DebugFlags& Get() const { return flags_; } |
| |
| private: |
| protos::DebugFlags flags_; |
| }; |
| |
| } // namespace authpolicy |
| |
| #endif // AUTHPOLICY_AUTHPOLICY_FLAGS_H_ |