2019-08-02 20:44:42 +00:00
|
|
|
//
|
|
|
|
// Created by lukas on 02.08.19.
|
|
|
|
//
|
|
|
|
|
|
|
|
#include <string>
|
|
|
|
|
|
|
|
#include <Logger.h>
|
|
|
|
#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-08-02 20:44:42 +00:00
|
|
|
#include "IPRefresher.h"
|
|
|
|
|
2019-10-23 07:24:35 +00:00
|
|
|
void IPRefresher::checkIPAdress(bool force) {
|
2019-08-02 20:44:42 +00:00
|
|
|
Logger logger;
|
|
|
|
|
|
|
|
IPAPI ipapi;
|
|
|
|
std::string ip = ipapi.getGlobalIp();
|
|
|
|
|
|
|
|
if (ip.empty()) {
|
|
|
|
//no internet connection
|
|
|
|
logger.logToLogfile("[WARNING] no internet connection");
|
|
|
|
std::cout << "[WARNING] no internet connection" << std::endl;
|
|
|
|
} else {
|
|
|
|
std::string oldip = logger.readip();
|
|
|
|
|
2019-10-23 07:24:35 +00:00
|
|
|
if (oldip == ip && !force) {
|
2019-08-02 20:44:42 +00:00
|
|
|
std::cout << "[INFO] no change -- ip: " << ip << std::endl;
|
|
|
|
logger.logToLogfile(" [INFO] no change -- ip: " + ip);
|
|
|
|
} else {
|
|
|
|
logger.logToLogfile(" [INFO] ip changed! -- from :" + oldip + "to: " + ip);
|
|
|
|
std::cout << "[INFO] ip changed! -- from :" << oldip << "to: " << ip << std::endl;
|
|
|
|
|
|
|
|
DynuAPI dynu;
|
|
|
|
|
|
|
|
if (dynu.refreshIp(ip)) {
|
|
|
|
TelegramAPI tele;
|
|
|
|
tele.init("717213769:AAHan1nSXhUsxLJAN1Dv8Oc0z8wqwDdYPn4","618154204");
|
|
|
|
tele.sendMessage(oldip + " moved to " + ip);
|
|
|
|
} else {
|
|
|
|
//error
|
|
|
|
logger.logToLogfile(" [ERROR] failed to write ip to dynu api!");
|
|
|
|
}
|
|
|
|
|
|
|
|
logger.safeip(ip);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2019-10-23 07:24:35 +00:00
|
|
|
|
|
|
|
IPRefresher::IPRefresher() {
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
IPRefresher::IPRefresher(bool loop) {
|
|
|
|
while(true){
|
|
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(300000));
|
|
|
|
checkIPAdress(false);
|
|
|
|
}
|
|
|
|
}
|