set config file statically; parse it
authorRalf Jung <post@ralfj.de>
Fri, 9 Aug 2013 17:49:14 +0000 (19:49 +0200)
committerRalf Jung <post@ralfj.de>
Fri, 9 Aug 2013 17:49:14 +0000 (19:49 +0200)
CMakeLists.txt
dyn-nsupdate.cpp

index 3865aad8ef30222a73b3c3f31e6c0fccd2d5b251..5879f85e455ba63aded2627b2ccd6ffff4207f74 100644 (file)
@@ -4,8 +4,12 @@ project(Dyn-NSupdate)
 FIND_PACKAGE( Boost 1.40 REQUIRED )
 INCLUDE_DIRECTORIES( ${Boost_INCLUDE_DIR} )
 
+set(DYNNSUPDATE_CONFIG_FILE "/some/config/file" CACHE FILEPATH "Choose the file dyn-nsupdate reads its configuration from (for security reasons, this is hard-coded in the binary)")
+
 set(CMAKE_CXX_FLAGS "-Wall -Wextra ${CMAKE_CXX_FLAGS}")
 
+add_definitions("-DCONFIG_FILE=\"${DYNNSUPDATE_CONFIG_FILE}\"")
+
 ADD_EXECUTABLE( dyn-nsupdate dyn-nsupdate.cpp )
 
 TARGET_LINK_LIBRARIES( dyn-nsupdate ${Boost_LIBRARIES} )
index e378082c30ea4c9f0471e830f983c72535944621..745595df3d1abf6e4b02872a6c4c1b2e9f358320 100644 (file)
@@ -1,37 +1,16 @@
 #include <iostream>
+#include <fstream>
+
 #include <boost/property_tree/ptree.hpp>
 #include <boost/property_tree/ini_parser.hpp>
 
-#include <sys/stat.h>
+using namespace boost::property_tree;
 
-int main(int argc, const char **argv)
+int main(int, const char **)
 {
-       if (argc < 2) {
-               std::cerr << "Usage: " << argv[0] << " <configuration file>" << std::endl;
-               return 1;
-       }
-       const char *filename = argv[1];
-       
-       struct stat file_stat;
-       int ret = lstat(filename, &file_stat);
-       if (ret != 0) {
-               std::cerr << "Unable to stat " << filename << "." << std::endl;
-               return 1;
-       }
-       /* Check if the file is suited */
-       if (!S_ISREG(file_stat.st_mode)) {
-               std::cerr << filename << " is not a file." << std::endl;
-               return 1;
-       }
-       if (file_stat.st_uid != geteuid()) {
-               std::cerr << filename << " must be owned by user executing " << argv[0] << "." << std::endl;
-               return 1;
-       }
-       if (file_stat.st_mode & (S_IWGRP | S_IWOTH)) { /* can be written by group/others */
-               std::cerr << filename << " must not be writeable by group or others." << std::endl;
-               return 1;
-       }
+       ptree config;
+       ini_parser::read_ini(CONFIG_FILE, config);
        
-       std::cout << "Hi world!" << std::endl;
+       std::cout << "Hi world! " << CONFIG_FILE << std::endl;
        return 0;
 }