From cf49bf7bc5fcb5180de17237b3ca75b97bfcd94a Mon Sep 17 00:00:00 2001 From: Lukas Heiligenbrunner Date: Fri, 1 May 2020 12:33:51 +0200 Subject: [PATCH] don't overwrite config on update Config.cpp namespace instead of static class print version on service startup --- CMakeLists.txt | 15 +++++++++++++-- src/Config.cpp | 27 ++++++++++++++++++++++++++- src/IPRefresher.cpp | 2 ++ src/main.cpp | 2 +- 4 files changed, 42 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d7dfcd6..e5b8bb8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,3 +1,6 @@ +# author Lukas Heiligenbrunner +# main CMake file +# cmake_minimum_required(VERSION 3.13) project(iprefresher DESCRIPTION "Dynu ip refresher") @@ -47,7 +50,7 @@ message("") #add version header FILE(WRITE ${CMAKE_SOURCE_DIR}/inc/Version.h - "\#pragma once\nclass Version {\npublic:\n static const std::string VERSION;\n};\n\nstd::string const Version::VERSION = \"${PROJECT_VERSION}\";" + "\#pragma once\n#include \nnamespace Version {\n const std::string VERSION = \"${PROJECT_VERSION}\";\n}" ) add_library(api ${LIB_METHOD} @@ -78,9 +81,17 @@ target_link_libraries(iprefresher api logger ${CURL_LIBRARIES} config++) # INSTALL to SYSTEM # set(CMAKE_INSTALL_PREFIX "/") +# install binaries install(TARGETS iprefresher DESTINATION usr/bin) +# install config file if it doesn't exist +install(CODE "MESSAGE(STATUS \"Copy iprefresher.cfg to ${CMAKE_INSTALL_PREFIX}etc/iprefresher.cfg\") + IF (NOT EXISTS ${CMAKE_INSTALL_PREFIX}etc/iprefresher.cfg) + EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E copy + ${CMAKE_CURRENT_SOURCE_DIR}/config/iprefresher.cfg + ${CMAKE_INSTALL_PREFIX}etc/iprefresher.cfg) + ENDIF (NOT EXISTS ${CMAKE_INSTALL_PREFIX}etc/iprefresher.cfg)") +# install systemd service and enable it install(FILES service/iprefresher.service DESTINATION lib/systemd/system) -install(FILES config/iprefresher.cfg DESTINATION etc) IF (UNIX) diff --git a/src/Config.cpp b/src/Config.cpp index 85bd460..335d9ab 100644 --- a/src/Config.cpp +++ b/src/Config.cpp @@ -5,6 +5,7 @@ #include #include #include +#include #include "libconfig.h++" @@ -22,7 +23,31 @@ bool Config::readCredentials() { } catch (const libconfig::FileIOException &fioex) { std::cout << "I/O error while reading config file." << std::endl << "creating new config file!" << std::endl; - cfg.writeFile("/etc/iprefresher.cfg"); + + std::string defaultconf = R"(# Dynu IP refresher config +# 2020 +# Lukas Heiligenbrunner + +## DYNU API Config +dynuapikey = "" +domainid = "" +domainname = "" + +## Telegram API Config (optional) +#telegramApiKey = "" +#chatId = "" +)"; + + std::ofstream myfile; + myfile.open("/etc/iprefresher.cfg"); + if(myfile.is_open()){ + myfile << defaultconf; + myfile.close(); + } else { + std::cout << "error creating file" << std::endl; + } + + return false; } catch (const libconfig::ParseException &pex) { diff --git a/src/IPRefresher.cpp b/src/IPRefresher.cpp index d931fdd..724129c 100644 --- a/src/IPRefresher.cpp +++ b/src/IPRefresher.cpp @@ -15,6 +15,7 @@ #include #include +#include void IPRefresher::checkIPAdress(bool force) { FileLogger logger; @@ -55,6 +56,7 @@ IPRefresher::IPRefresher() = default; IPRefresher::IPRefresher(bool loop) { if (loop) { Logger::message("startup of service"); + Logger::message("Version: " + Version::VERSION); if (Config::readCredentials()) { while (true) { Logger::message("starting check"); diff --git a/src/main.cpp b/src/main.cpp index 3ef49ea..d2858f5 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -3,8 +3,8 @@ // #include -#include #include +#include #include #include