forked from markus/S_New4
add sets5ProxytoSettings Function to default
This commit is contained in:
parent
19130ac359
commit
39ca4722c5
@ -137,31 +137,15 @@ int loadDefaulOptions(Settings &settings)
|
||||
std::string what = line.substr(0, line.find("=")), data = line.substr(line.find("=") + 1, line.length() - line.find("=") -1);
|
||||
if(what == "") {
|
||||
|
||||
} else if (what == "Socks5Proxy") { ///---
|
||||
if(data.find(":") == std::string::npos) {
|
||||
std::cout << " => Error_Defaults: Ungültiger Socks5 Proxy: '" << data << "'" << std::endl;
|
||||
return 31;
|
||||
}
|
||||
std::string ip = data.substr(0, data.find(":"));
|
||||
std::string portStr = data.substr(data.find(":") + 1, data.length() - data.find(":"));
|
||||
int port = atoi(portStr.c_str());
|
||||
if(std::to_string(port) != portStr || port <= 0) {
|
||||
std::cout << " => Error_Defaults: Socks5 Proxy: Invalid Port: " << portStr << std::endl;
|
||||
return 32;
|
||||
} else if (ip == "") {
|
||||
std::cout << " => Error_Defaults: Socks5 Proxy: Invalid Ip Addresse: " << ip << std::endl;
|
||||
return 34;
|
||||
} else if(settings.debugMode) {
|
||||
std::cout << " > Defaults: Proxy Addresse: "<< ip << ":" << port << std::endl;
|
||||
}
|
||||
settings.proxy_ip = ip;
|
||||
settings.proxy_port = port;
|
||||
} else if (what == "Socks5Proxy") {
|
||||
if(setS5ProxytoSettings(settings, data) != 0)
|
||||
return 140;
|
||||
|
||||
} else if (what == "DefaultFileVersion") { ///---
|
||||
} else if (what == "DefaultFileVersion") {
|
||||
if(data != settings.defaultFileVersion)
|
||||
std::cout << " => Warnung: Veraltetes Defaults-File. Löschen sie die Datei, um die neuste Version zu bekommen." << std::endl;
|
||||
|
||||
} else if (what == "DebugModus") { ///---
|
||||
} else if (what == "DebugModus") {
|
||||
if(data == "true")
|
||||
settings.debugMode=true;
|
||||
else if (data == "false")
|
||||
@ -311,29 +295,9 @@ int unterOption_default(Settings *settings, int argc, char ** argv)
|
||||
|
||||
while( ( c = getopt_long (argc, argv, "p:g:l:o:e:E:s:S:C:m:D:t:hcd", long_opts, nullptr) ) != -1 ) {
|
||||
switch(c) {
|
||||
case 'p': {
|
||||
if(!optarg || std::string(optarg) == "")
|
||||
break;
|
||||
std::string optarg = ::optarg;
|
||||
if(optarg.find(":") == std::string::npos) {
|
||||
std::cout << "Invalid Socks5 Proxy: " << optarg << std::endl;
|
||||
return 31;
|
||||
}
|
||||
std::string ip = optarg.substr(0, optarg.find(":"));
|
||||
std::string portStr = optarg.substr(optarg.find(":") + 1, optarg.length() - optarg.find(":"));
|
||||
int port = atoi(portStr.c_str());
|
||||
if(std::to_string(port) != portStr || port <= 0) {
|
||||
std::cout << " => Error: [-p]: Invalid Port: " << portStr << std::endl;
|
||||
return 32;
|
||||
} else if (ip == "") {
|
||||
std::cout << " => Error: [-p]: Invalid Ip Addresse: " << ip << std::endl;
|
||||
return 34;
|
||||
} else if(settings->debugMode) {
|
||||
std::cout << "Proxy Addresse: "<< ip << ":" << port << std::endl;
|
||||
}
|
||||
settings->proxy_ip = ip;
|
||||
settings->proxy_port = port;
|
||||
}
|
||||
case 'p':
|
||||
if(optarg && setS5ProxytoSettings(*settings, optarg) != 0)
|
||||
return 2;
|
||||
break;
|
||||
case 'g':
|
||||
if(optarg)
|
||||
@ -1034,3 +998,75 @@ bool nothingExists(std::string path)
|
||||
struct stat buffer;
|
||||
return (stat(path.c_str(), &buffer) == 0) ? false : true;
|
||||
}
|
||||
|
||||
bool isNumber(std::string number)
|
||||
{
|
||||
for (size_t i = 0; i < number.length(); ++i) {
|
||||
if( number[i] == '0') {
|
||||
number.erase(i, 1);
|
||||
i--;
|
||||
}
|
||||
}
|
||||
return (std::to_string(atoll(number.c_str())) == number) ? true : false;
|
||||
}
|
||||
|
||||
|
||||
int setS5ProxytoSettings(Settings &settings, std::string Optarg)
|
||||
{
|
||||
std::string optarg = Optarg;
|
||||
//Ersetze localhost mit 127.0.0.1
|
||||
if(optarg.find("localhost") != std::string::npos)
|
||||
optarg.insert(optarg.find("localhost"), "127.0.0.1").erase(optarg.find("localhost"), 9);
|
||||
|
||||
//Wenn optarg keine vollständige Addresse ( ip:port ) ist:
|
||||
if(optarg.find(":") == std::string::npos) {
|
||||
//Wenn optarg eine Zahl ist, also Port:
|
||||
if(isNumber(optarg)) {
|
||||
settings.proxy_port = atoi(optarg.c_str());
|
||||
//Wenn es scheint eine Ip zu sein, also mit '.':
|
||||
} else if (optarg.find(".") != std::string::npos) {
|
||||
settings.proxy_ip = optarg;
|
||||
// Sonst error:
|
||||
} else {
|
||||
std::cout << " => Error: Ungültige Socks5 Proxy Addresse: " << Optarg << std::endl;
|
||||
return 1;
|
||||
}
|
||||
// Wenn vollständige Addr:
|
||||
} else {
|
||||
//setze schein Ip:
|
||||
settings.proxy_ip = optarg.substr(0, optarg.find(":"));
|
||||
//setze Port, falls dieser eine Zahl ist:
|
||||
std::string tmpPort = optarg.substr(optarg.find(":") + 1, optarg.length() - optarg.find(":"));
|
||||
if(isNumber(tmpPort))
|
||||
settings.proxy_port = atoi(optarg.substr(optarg.find(":") + 1, optarg.length() - optarg.find(":")).c_str());
|
||||
else {
|
||||
std::cout << " => Error: Ungültiger Socks5 Proxy Port: " << tmpPort << std::endl;
|
||||
return 2;
|
||||
}
|
||||
}
|
||||
//Überprüfe ob Ip aus 4 * '.' besteht und dann eine Zahl ist:
|
||||
std::string tmpIp = settings.proxy_ip;
|
||||
for (int i = 0; i < 4; ++i) {
|
||||
if(tmpIp.find(".") != std::string::npos)
|
||||
tmpIp.erase(static_cast<size_t>(i), 1);
|
||||
else {
|
||||
std::cout << " => Error: Ungültige Socks5 Proxy Ip Addresse: " << settings.proxy_ip << std::endl;
|
||||
return 3;
|
||||
}
|
||||
}
|
||||
if(!isNumber(tmpIp)) {
|
||||
std::cout << " => Error: Ungültige Socks5 Proxy Ip Addresse: " << settings.proxy_ip << std::endl;
|
||||
return 4;
|
||||
// Überprüfe ob Port Positiv oder 0 und kliner als 2 Byte ist:
|
||||
} else if (settings.proxy_port < 0 || settings.proxy_port > 65535) {
|
||||
std::cout << " => Error: Ungültiger Socks5 Proxy Port: " << settings.proxy_port << std::endl;
|
||||
return 5;
|
||||
//Debug Nachricht:
|
||||
} else if(settings.debugMode)
|
||||
std::cout << " > Defaults: Proxy Addresse: "<< settings.proxy_ip << ":" << settings.proxy_port << std::endl;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@ -63,6 +63,7 @@ struct Settings {
|
||||
int manageParameter(Settings &settings, int argc, char ** argv);
|
||||
int loadDefaulOptions(Settings & settings);
|
||||
std::vector<std::string> compare(std::string All_Options_with_komma_between, std::string input);
|
||||
bool isNumber(std::string number);
|
||||
|
||||
std::string getProgramName();
|
||||
std::string getexepath();
|
||||
@ -91,4 +92,22 @@ void unterOption_info_help();
|
||||
void unterOption_clean(Settings * settings, int argc, char **argv);
|
||||
|
||||
|
||||
int setS5ProxytoSettings(Settings &settings, std::string optarg);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // PARAMETERMANAGER_H
|
||||
|
Loading…
Reference in New Issue
Block a user