2019-05-05 15:38:48 +02:00
#include <iostream>
2019-05-05 16:35:38 +02:00
#include <ctime>
2019-05-05 16:42:39 +02:00
2019-05-05 15:38:48 +02:00
#include "API.h"
2019-05-05 16:35:38 +02:00
#include "Logger.h"
2019-05-05 15:38:48 +02:00
2019-05-06 12:55:01 +02:00
int main ( int argc , char * argv []) {
if ( argc > 1 ){
std :: string firstarg ( argv [ 1 ]);
if ( firstarg == "-h" || firstarg == "--help" ){
std :: cout << "help page: " << std :: endl << "[-h] [--help] print this help page" << std :: endl << "[-v] [--version] print the software version" << std :: endl << "[no argument] normal ip check and refresh" << std :: endl ;
} else if ( firstarg == "-v" || firstarg == "--version" ){
std :: cout << "Version 1.0" << std :: endl ;
} else {
std :: cout << "wrong arguments! -h for help" << std :: endl ;
}
} else {
API api ;
Logger logger ;
2019-05-05 16:35:38 +02:00
2019-05-06 12:55:01 +02:00
std :: string ip = api . request ( "https://api.ipify.org" );
2019-05-05 15:38:48 +02:00
2019-05-06 12:55:01 +02:00
if ( ip == "" ) {
//no internet connection
logger . logToLogfile ( "[WARNING] no internet connection" );
std :: cout << "[WARNING] no internet connection" << std :: endl ;
2019-05-05 15:38:48 +02:00
2019-05-06 09:39:28 +02:00
} else {
2019-05-06 12:55:01 +02:00
std :: string oldip = logger . readip ();
2019-05-05 15:38:48 +02:00
2019-05-06 12:55:01 +02:00
if ( oldip == ip ) {
std :: cout << "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 << "ip changed! -- from :" << oldip << "to: " << ip << std :: endl ;
2019-05-06 09:39:28 +02:00
2019-05-06 12:55:01 +02:00
//dynu api key: 88vNpMfDhMM2YYDNfWR1DNYfRX9W6fYg
2019-05-05 15:38:48 +02:00
2019-05-06 12:55:01 +02:00
static std :: string domainid = "8506047" ; //id of the dynu domain
2019-05-05 16:35:38 +02:00
2019-05-06 12:55:01 +02:00
Hashmap < std :: string , std :: string > args ;
args . add ( "name" , "luki.dynu.net" );
args . add ( "ipv4Address" , ip );
2019-05-05 16:35:38 +02:00
2019-05-06 12:55:01 +02:00
std :: vector < std :: string > headers ;
headers . push_back ( "accept: application/json" );
headers . push_back ( "User-Agent: Mozilla/5.0 (compatible; Rigor/1.0.0; http://rigor.com)" );
headers . push_back ( "API-Key: 88vNpMfDhMM2YYDNfWR1DNYfRX9W6fYg" );
2019-05-05 16:35:38 +02:00
2019-05-06 12:55:01 +02:00
std :: string dynurepl = api . request ( "https://api.dynu.com/v2/dns/" + domainid , true , args , headers );
2019-05-05 18:50:10 +02:00
2019-05-06 12:55:01 +02:00
std :: cout << "[ DEBUG ] api reply:: " << dynurepl << std :: endl ;
if ( dynurepl != "{ \" statusCode \" :200}" ) {
logger . logToLogfile ( " [ERROR] failed to write ip to dynu api!" );
}
logger . safeip ( ip );
2019-05-05 18:50:10 +02:00
}
2019-05-05 16:42:39 +02:00
}
2019-05-05 16:35:38 +02:00
}
2019-05-05 15:38:48 +02:00
return 0 ;
}