blob: daaa103edd31011a1127469c8fd0f3ed1049317b [file] [log] [blame]
Steve DiBenedetto24b9a642014-04-07 15:45:39 -06001/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
Davide Pesaventoa3148082018-04-12 18:21:54 -04002/*
Davide Pesaventoe422f9e2022-06-03 01:30:23 -04003 * Copyright (c) 2014-2022, Regents of the University of California,
Junxiao Shi9f5b01d2016-08-05 03:54:28 +00004 * 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.
Steve DiBenedetto24b9a642014-04-07 15:45:39 -060010 *
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/>.
Junxiao Shi9f5b01d2016-08-05 03:54:28 +000024 */
Steve DiBenedetto24b9a642014-04-07 15:45:39 -060025
26#include "general-config-section.hpp"
Davide Pesavento2cae8ca2019-04-18 20:48:05 -040027#include "common/privilege-helper.hpp"
Steve DiBenedetto24b9a642014-04-07 15:45:39 -060028
Davide Pesaventoe422f9e2022-06-03 01:30:23 -040029namespace nfd::general {
Steve DiBenedetto24b9a642014-04-07 15:45:39 -060030
Steve DiBenedetto24b9a642014-04-07 15:45:39 -060031static void
Davide Pesaventoa3148082018-04-12 18:21:54 -040032onConfig(const ConfigSection& section, bool isDryRun, const std::string&)
Steve DiBenedetto24b9a642014-04-07 15:45:39 -060033{
34 // general
35 // {
Davide Pesaventoa3148082018-04-12 18:21:54 -040036 // user "ndn-user"
37 // group "ndn-user"
Steve DiBenedetto24b9a642014-04-07 15:45:39 -060038 // }
39
40 std::string user;
41 std::string group;
42
Davide Pesaventoa3148082018-04-12 18:21:54 -040043 for (const auto& i : section) {
44 if (i.first == "user") {
45 try {
46 user = i.second.get_value<std::string>("user");
Davide Pesaventoa3148082018-04-12 18:21:54 -040047 if (user.empty()) {
Davide Pesavento19779d82019-02-14 13:40:04 -050048 NDN_THROW(ConfigFile::Error("Invalid value for 'user' in section 'general'"));
Steve DiBenedetto24b9a642014-04-07 15:45:39 -060049 }
Davide Pesaventoa3148082018-04-12 18:21:54 -040050 }
51 catch (const boost::property_tree::ptree_error&) {
Davide Pesavento19779d82019-02-14 13:40:04 -050052 NDN_THROW(ConfigFile::Error("Invalid value for 'user' in section 'general'"));
Davide Pesaventoa3148082018-04-12 18:21:54 -040053 }
Steve DiBenedetto24b9a642014-04-07 15:45:39 -060054 }
Davide Pesaventoa3148082018-04-12 18:21:54 -040055 else if (i.first == "group") {
56 try {
57 group = i.second.get_value<std::string>("group");
Davide Pesaventoa3148082018-04-12 18:21:54 -040058 if (group.empty()) {
Davide Pesavento19779d82019-02-14 13:40:04 -050059 NDN_THROW(ConfigFile::Error("Invalid value for 'group' in section 'general'"));
Davide Pesaventoa3148082018-04-12 18:21:54 -040060 }
61 }
62 catch (const boost::property_tree::ptree_error&) {
Davide Pesavento19779d82019-02-14 13:40:04 -050063 NDN_THROW(ConfigFile::Error("Invalid value for 'group' in section 'general'"));
Davide Pesaventoa3148082018-04-12 18:21:54 -040064 }
65 }
66 }
Steve DiBenedetto24b9a642014-04-07 15:45:39 -060067
68 PrivilegeHelper::initialize(user, group);
69}
70
71void
Davide Pesaventoa3148082018-04-12 18:21:54 -040072setConfigFile(ConfigFile& config)
Steve DiBenedetto24b9a642014-04-07 15:45:39 -060073{
Davide Pesaventoa3148082018-04-12 18:21:54 -040074 config.addSectionHandler("general", &onConfig);
Steve DiBenedetto24b9a642014-04-07 15:45:39 -060075}
76
Davide Pesaventoe422f9e2022-06-03 01:30:23 -040077} // namespace nfd::general