From 229a31d3a318cc66dc82428f1429c3aea787f64f Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Tue, 14 Oct 2014 14:57:51 +0200 Subject: [PATCH] prepare for using program_options; sanitize namespaces a bit --- CMakeLists.txt | 2 +- dyn-nsupdate.cpp | 17 +++++++++-------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6220a8c..de9fb11 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 2.6) project(Dyn-NSupdate) -FIND_PACKAGE( Boost 1.40 COMPONENTS regex REQUIRED ) +FIND_PACKAGE( Boost 1.40 COMPONENTS regex program_options REQUIRED ) INCLUDE_DIRECTORIES( ${Boost_INCLUDE_DIR} ) set(DYNNSUPDATE_CONFIG_FILE "/var/lib/bind/dyn-nsupdate.conf" CACHE FILEPATH "Choose the file dyn-nsupdate reads its configuration from (for security reasons, this is hard-coded in the binary)") diff --git a/dyn-nsupdate.cpp b/dyn-nsupdate.cpp index f2243bd..b0bf885 100644 --- a/dyn-nsupdate.cpp +++ b/dyn-nsupdate.cpp @@ -31,13 +31,14 @@ #include #include +#include #include #include #include #include -using namespace boost; -typedef property_tree::ptree::path_type path; +namespace pt = boost::property_tree; +namespace po = boost::program_options; static void write(int fd, const char *str) { @@ -51,9 +52,9 @@ static void write(int fd, const char *str) int main(int argc, const char ** argv) { - static const regex regex_ip("\\d{1,3}.\\d{1,3}.\\d{1,3}.\\d{1,3}"); - static const regex regex_password("[a-zA-Z0-9.:;,_-]+"); - static const regex regex_domain("[a-zA-Z0-9.]+"); + static const boost::regex regex_ip("\\d{1,3}.\\d{1,3}.\\d{1,3}.\\d{1,3}"); + static const boost::regex regex_password("[a-zA-Z0-9.:;,_-]+"); + static const boost::regex regex_domain("[a-zA-Z0-9.]+"); if (argc != 4) { @@ -81,13 +82,13 @@ int main(int argc, const char ** argv) } /* read configuration */ - property_tree::ptree config; - property_tree::ini_parser::read_ini(CONFIG_FILE, config); + pt::ptree config; + pt::ini_parser::read_ini(CONFIG_FILE, config); std::string nsupdate = config.get("nsupdate"); unsigned server_port = config.get("port", 53); /* Given the domain, check whether the password matches */ - optional correct_password = config.get_optional(path(domain+"/password", '/')); + boost::optional correct_password = config.get_optional(pt::ptree::path_type(domain+"/password", '/')); if (!correct_password || *correct_password != password) { std::cerr << "Password incorrect." << std::endl; exit(1); -- 2.30.2