/* @title ghost @author AHXR (https://github.com/AHXR) @copyright 2018 ghost is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. ghost is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with ghost. If not, see . */ //======================================================= vector split(const string &s, char delim); string real_ip(); string real_ip() { HINTERNET net = InternetOpen("--", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0); HINTERNET conn = InternetOpenUrl(net, "https://api.ipify.org/", NULL, 0, INTERNET_FLAG_RELOAD, 0); char buffer[4096]; DWORD read; InternetReadFile(conn, buffer, sizeof(buffer) / sizeof(buffer[0]), &read); InternetCloseHandle(net); return std::string(buffer, read); } template void split(const std::string &s, char delim, Out result) { std::stringstream ss(s); std::string item; while (std::getline(ss, item, delim)) { *(result++) = item; } } vector split(const std::string &s, char delim) { std::vector elems; split(s, delim, std::back_inserter(elems)); return elems; }