2019-08-02 20:44:42 +00:00
|
|
|
//
|
|
|
|
// Created by lukas on 02.08.19.
|
|
|
|
//
|
|
|
|
|
|
|
|
#include <string>
|
|
|
|
|
2019-10-26 12:41:43 +00:00
|
|
|
#include <FileLogger.h>
|
2019-08-02 20:44:42 +00:00
|
|
|
#include <api/IPAPI.h>
|
|
|
|
#include <api/DynuAPI.h>
|
|
|
|
#include <api/TelegramAPI.h>
|
2019-10-23 07:24:35 +00:00
|
|
|
|
|
|
|
#include <chrono>
|
|
|
|
#include <thread>
|
2019-10-27 12:41:40 +00:00
|
|
|
#include <Logger.h>
|
2019-10-23 07:24:35 +00:00
|
|
|
|
2019-10-26 12:41:43 +00:00
|
|
|
#include <IPRefresher.h>
|
2020-02-11 15:42:05 +00:00
|
|
|
#include <Credentials.h>
|
2019-08-02 20:44:42 +00:00
|
|
|
|
2019-10-23 07:24:35 +00:00
|
|
|
void IPRefresher::checkIPAdress(bool force) {
|
2019-10-26 12:41:43 +00:00
|
|
|
FileLogger logger;
|
2019-08-02 20:44:42 +00:00
|
|
|
|
|
|
|
IPAPI ipapi;
|
|
|
|
std::string ip = ipapi.getGlobalIp();
|
|
|
|
|
|
|
|
if (ip.empty()) {
|
2020-04-30 09:30:41 +00:00
|
|
|
//no internet connection (or other error)
|
2019-08-02 20:44:42 +00:00
|
|
|
logger.logToLogfile("[WARNING] no internet connection");
|
2019-10-27 12:41:40 +00:00
|
|
|
Logger::warning("no internet connection");
|
2019-08-02 20:44:42 +00:00
|
|
|
} else {
|
|
|
|
std::string oldip = logger.readip();
|
|
|
|
|
2019-10-27 12:41:40 +00:00
|
|
|
if (oldip == ip && !force) {
|
|
|
|
Logger::message("no change -- ip: " + ip);
|
2019-08-02 20:44:42 +00:00
|
|
|
logger.logToLogfile(" [INFO] no change -- ip: " + ip);
|
|
|
|
} else {
|
|
|
|
logger.logToLogfile(" [INFO] ip changed! -- from :" + oldip + "to: " + ip);
|
2019-10-27 12:41:40 +00:00
|
|
|
Logger::message("ip changed! -- from :" + oldip + "to: " + ip);
|
2019-08-02 20:44:42 +00:00
|
|
|
|
|
|
|
DynuAPI dynu;
|
2020-04-30 09:30:41 +00:00
|
|
|
dynu.init(Credentials::dynuapikey, Credentials::domainid, Credentials::domainname);
|
2019-08-02 20:44:42 +00:00
|
|
|
|
|
|
|
if (dynu.refreshIp(ip)) {
|
|
|
|
TelegramAPI tele;
|
2020-02-11 15:42:05 +00:00
|
|
|
tele.init(Credentials::telegramApiKey, Credentials::chatId);
|
2019-08-02 20:44:42 +00:00
|
|
|
tele.sendMessage(oldip + " moved to " + ip);
|
|
|
|
} else {
|
|
|
|
//error
|
|
|
|
logger.logToLogfile(" [ERROR] failed to write ip to dynu api!");
|
2019-10-27 12:41:40 +00:00
|
|
|
Logger::error("failed to write ip to dynu api!");
|
2019-08-02 20:44:42 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
logger.safeip(ip);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2019-10-23 07:24:35 +00:00
|
|
|
|
|
|
|
IPRefresher::IPRefresher() {
|
2020-04-30 09:30:41 +00:00
|
|
|
// default constructor
|
2019-10-23 07:24:35 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
IPRefresher::IPRefresher(bool loop) {
|
2020-04-30 09:30:41 +00:00
|
|
|
if (Credentials::readCredentials()) {
|
|
|
|
Logger::message("startup of service");
|
|
|
|
while (loop) {
|
|
|
|
Logger::message("starting check");
|
|
|
|
checkIPAdress(false);
|
|
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(300000));
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
std::cout << "incorrect credentials!" << std::endl;
|
2019-10-23 07:24:35 +00:00
|
|
|
}
|
|
|
|
}
|