/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ /** * Copyright (C) 2014 Named Data Networking Project * See COPYING for copyright and distribution information. */ #ifndef NFD_MGMT_COMMAND_VALIDATOR_HPP #define NFD_MGMT_COMMAND_VALIDATOR_HPP #include "config-file.hpp" #include namespace nfd { class CommandValidator { public: class Error : public std::runtime_error { public: Error(const std::string& what) : std::runtime_error(what) { } }; CommandValidator(); ~CommandValidator(); void setConfigFile(ConfigFile& configFile); /** * \param section "authorizations" section to parse * \param isDryRun true if performing a dry run of configuration, false otherwise * \param filename filename of configuration file * \throws ConfigFile::Error on parse error */ void onConfig(const ConfigSection& section, bool isDryRun, const std::string& filename); /** * \param privilege name of privilege to add * \throws CommandValidator::Error on duplicated privilege */ void addSupportedPrivilege(const std::string& privilege); void addInterestRule(const std::string& regex, const ndn::IdentityCertificate& certificate); void addInterestRule(const std::string& regex, const Name& keyName, const ndn::PublicKey& publicKey); void validate(const Interest& interest, const ndn::OnInterestValidated& onValidated, const ndn::OnInterestValidationFailed& onValidationFailed); private: ndn::CommandInterestValidator m_validator; std::set m_supportedPrivileges; }; inline void CommandValidator::addInterestRule(const std::string& regex, const ndn::IdentityCertificate& certificate) { m_validator.addInterestRule(regex, certificate); } inline void CommandValidator::addInterestRule(const std::string& regex, const Name& keyName, const ndn::PublicKey& publicKey) { m_validator.addInterestRule(regex, keyName, publicKey); } inline void CommandValidator::validate(const Interest& interest, const ndn::OnInterestValidated& onValidated, const ndn::OnInterestValidationFailed& onValidationFailed) { m_validator.validate(interest, onValidated, onValidationFailed); } } // namespace nfd #endif // NFD_MGMT_COMMAND_VALIDATOR_HPP