don't overwrite config on update

Config.cpp namespace instead of static class
print version on service startup
This commit is contained in:
Lukas Heiligenbrunner 2020-05-01 12:33:51 +02:00
parent 78d07ac95b
commit cf49bf7bc5
4 changed files with 42 additions and 4 deletions

View File

@ -1,3 +1,6 @@
# author Lukas Heiligenbrunner
# main CMake file
#
cmake_minimum_required(VERSION 3.13) cmake_minimum_required(VERSION 3.13)
project(iprefresher DESCRIPTION "Dynu ip refresher") project(iprefresher DESCRIPTION "Dynu ip refresher")
@ -47,7 +50,7 @@ message("")
#add version header #add version header
FILE(WRITE ${CMAKE_SOURCE_DIR}/inc/Version.h 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 <string>\nnamespace Version {\n const std::string VERSION = \"${PROJECT_VERSION}\";\n}"
) )
add_library(api ${LIB_METHOD} add_library(api ${LIB_METHOD}
@ -78,9 +81,17 @@ target_link_libraries(iprefresher api logger ${CURL_LIBRARIES} config++)
# INSTALL to SYSTEM # # INSTALL to SYSTEM #
set(CMAKE_INSTALL_PREFIX "/") set(CMAKE_INSTALL_PREFIX "/")
# install binaries
install(TARGETS iprefresher DESTINATION usr/bin) 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 service/iprefresher.service DESTINATION lib/systemd/system)
install(FILES config/iprefresher.cfg DESTINATION etc)
IF (UNIX) IF (UNIX)

View File

@ -5,6 +5,7 @@
#include <Config.h> #include <Config.h>
#include <iostream> #include <iostream>
#include <cstring> #include <cstring>
#include <fstream>
#include "libconfig.h++" #include "libconfig.h++"
@ -22,7 +23,31 @@ bool Config::readCredentials() {
} }
catch (const libconfig::FileIOException &fioex) { catch (const libconfig::FileIOException &fioex) {
std::cout << "I/O error while reading config file." << std::endl << "creating new config file!" << std::endl; 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; return false;
} }
catch (const libconfig::ParseException &pex) { catch (const libconfig::ParseException &pex) {

View File

@ -15,6 +15,7 @@
#include <IPRefresher.h> #include <IPRefresher.h>
#include <Config.h> #include <Config.h>
#include <Version.h>
void IPRefresher::checkIPAdress(bool force) { void IPRefresher::checkIPAdress(bool force) {
FileLogger logger; FileLogger logger;
@ -55,6 +56,7 @@ IPRefresher::IPRefresher() = default;
IPRefresher::IPRefresher(bool loop) { IPRefresher::IPRefresher(bool loop) {
if (loop) { if (loop) {
Logger::message("startup of service"); Logger::message("startup of service");
Logger::message("Version: " + Version::VERSION);
if (Config::readCredentials()) { if (Config::readCredentials()) {
while (true) { while (true) {
Logger::message("starting check"); Logger::message("starting check");

View File

@ -3,8 +3,8 @@
// //
#include <iostream> #include <iostream>
#include <IPRefresher.h>
#include <Version.h> #include <Version.h>
#include <IPRefresher.h>
#include <Logger.h> #include <Logger.h>
#include <Config.h> #include <Config.h>