NFD: Named Data Networking Forwarding Daemon 24.07-28-gdcc0e6e0
Loading...
Searching...
No Matches
general-config-section.cpp
Go to the documentation of this file.
1/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2/*
3 * Copyright (c) 2014-2022, Regents of the University of California,
4 * Arizona Board of Regents,
5 * Colorado State University,
6 * University Pierre & Marie Curie, Sorbonne University,
7 * Washington University in St. Louis,
8 * Beijing Institute of Technology,
9 * The University of Memphis.
10 *
11 * This file is part of NFD (Named Data Networking Forwarding Daemon).
12 * See AUTHORS.md for complete list of NFD authors and contributors.
13 *
14 * NFD is free software: you can redistribute it and/or modify it under the terms
15 * of the GNU General Public License as published by the Free Software Foundation,
16 * either version 3 of the License, or (at your option) any later version.
17 *
18 * NFD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
19 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
20 * PURPOSE. See the GNU General Public License for more details.
21 *
22 * You should have received a copy of the GNU General Public License along with
23 * NFD, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
24 */
25
28
29namespace nfd::general {
30
31static void
32onConfig(const ConfigSection& section, bool isDryRun, const std::string&)
33{
34 // general
35 // {
36 // user "ndn-user"
37 // group "ndn-user"
38 // }
39
40 std::string user;
41 std::string group;
42
43 for (const auto& i : section) {
44 if (i.first == "user") {
45 try {
46 user = i.second.get_value<std::string>("user");
47 if (user.empty()) {
48 NDN_THROW(ConfigFile::Error("Invalid value for 'user' in section 'general'"));
49 }
50 }
51 catch (const boost::property_tree::ptree_error&) {
52 NDN_THROW(ConfigFile::Error("Invalid value for 'user' in section 'general'"));
53 }
54 }
55 else if (i.first == "group") {
56 try {
57 group = i.second.get_value<std::string>("group");
58 if (group.empty()) {
59 NDN_THROW(ConfigFile::Error("Invalid value for 'group' in section 'general'"));
60 }
61 }
62 catch (const boost::property_tree::ptree_error&) {
63 NDN_THROW(ConfigFile::Error("Invalid value for 'group' in section 'general'"));
64 }
65 }
66 }
67
68 PrivilegeHelper::initialize(user, group);
69}
70
71void
73{
74 config.addSectionHandler("general", &onConfig);
75}
76
77} // namespace nfd::general
Configuration file parsing utility.
void addSectionHandler(const std::string &sectionName, ConfigSectionHandler subscriber)
Setup notification of configuration file sections.
static void initialize(const std::string &userName, const std::string &groupName)
void setConfigFile(ConfigFile &config)
static void onConfig(const ConfigSection &section, bool isDryRun, const std::string &)
boost::property_tree::ptree ConfigSection
A configuration file section.