Added query get_disk_usage
This commit is contained in:
parent
336881db75
commit
25c623205e
@ -48,27 +48,27 @@ std::string DownloadManager::QueueDownload(std::string url, DOWNLOAD_MODE mode)
|
|||||||
{
|
{
|
||||||
if ((j.AsJson.DoesExist("title")) && (j.AsJson["title"].GetDataType() == JDType::STRING))
|
if ((j.AsJson.DoesExist("title")) && (j.AsJson["title"].GetDataType() == JDType::STRING))
|
||||||
{
|
{
|
||||||
newDownload.title = j["title"];
|
newDownload.title = j["title"].AsString;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((j.AsJson.DoesExist("description")) && (j.AsJson["description"].GetDataType() == JDType::STRING))
|
if ((j.AsJson.DoesExist("description")) && (j.AsJson["description"].GetDataType() == JDType::STRING))
|
||||||
{
|
{
|
||||||
newDownload.description = j["description"];
|
newDownload.description = j["description"].AsString;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((j.AsJson.DoesExist("uploader")) && (j.AsJson["uploader"].GetDataType() == JDType::STRING))
|
if ((j.AsJson.DoesExist("uploader")) && (j.AsJson["uploader"].GetDataType() == JDType::STRING))
|
||||||
{
|
{
|
||||||
newDownload.uploader = j["uploader"];
|
newDownload.uploader = j["uploader"].AsString;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((j.AsJson.DoesExist("duration")) && (j.AsJson["duration"].GetDataType() == JDType::INT))
|
if ((j.AsJson.DoesExist("duration")) && (j.AsJson["duration"].GetDataType() == JDType::INT))
|
||||||
{
|
{
|
||||||
newDownload.duration = j["duration"];
|
newDownload.duration = j["duration"].AsInt;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((j.AsJson.DoesExist("webpage_url")) && (j.AsJson["webpage_url"].GetDataType() == JDType::STRING))
|
if ((j.AsJson.DoesExist("webpage_url")) && (j.AsJson["webpage_url"].GetDataType() == JDType::STRING))
|
||||||
{
|
{
|
||||||
newDownload.webpage_url = j["webpage_url"];
|
newDownload.webpage_url = j["webpage_url"].AsString;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((j.AsJson.DoesExist("thumbnails")) && (j.AsJson["thumbnails"].GetDataType() == JDType::ARRAY))
|
if ((j.AsJson.DoesExist("thumbnails")) && (j.AsJson["thumbnails"].GetDataType() == JDType::ARRAY))
|
||||||
@ -79,11 +79,11 @@ std::string DownloadManager::QueueDownload(std::string url, DOWNLOAD_MODE mode)
|
|||||||
if (thumbnails.Size() > 1)
|
if (thumbnails.Size() > 1)
|
||||||
{
|
{
|
||||||
// If we have more than one thumbnail to choose from, choose the second-highes quality.
|
// If we have more than one thumbnail to choose from, choose the second-highes quality.
|
||||||
newDownload.thumbnail_url = thumbnails[thumbnails.Size() - 2]["url"];
|
newDownload.thumbnail_url = thumbnails[thumbnails.Size() - 2]["url"].AsString;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
newDownload.thumbnail_url = thumbnails[thumbnails.Size() - 1]["url"];
|
newDownload.thumbnail_url = thumbnails[thumbnails.Size() - 1]["url"].AsString;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -321,7 +321,7 @@ DownloadEntry& DownloadManager::GetDownloadEntryByTubioID(std::string tubioId)
|
|||||||
if (saveFileCache_Atomic[i].tubio_id == tubioId) return saveFileCache_Atomic[i];
|
if (saveFileCache_Atomic[i].tubio_id == tubioId) return saveFileCache_Atomic[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
throw std::exception("TubioID not found!");
|
throw std::exception();
|
||||||
std::terminate();
|
std::terminate();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -451,52 +451,52 @@ std::vector<DownloadEntry> DownloadManager::ParseJsonArrayToEntries(const JasonP
|
|||||||
|
|
||||||
if ((iter.DoesExist("title")) && (iter["title"].GetDataType() == JDType::STRING))
|
if ((iter.DoesExist("title")) && (iter["title"].GetDataType() == JDType::STRING))
|
||||||
{
|
{
|
||||||
newEntry.title = iter["title"];
|
newEntry.title = iter["title"].AsString;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((iter.DoesExist("description")) && (iter["description"].GetDataType() == JDType::STRING))
|
if ((iter.DoesExist("description")) && (iter["description"].GetDataType() == JDType::STRING))
|
||||||
{
|
{
|
||||||
newEntry.description = iter["description"];
|
newEntry.description = iter["description"].AsString;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((iter.DoesExist("uploader")) && (iter["uploader"].GetDataType() == JDType::STRING))
|
if ((iter.DoesExist("uploader")) && (iter["uploader"].GetDataType() == JDType::STRING))
|
||||||
{
|
{
|
||||||
newEntry.uploader = iter["uploader"];
|
newEntry.uploader = iter["uploader"].AsString;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((iter.DoesExist("duration")) && (iter["duration"].GetDataType() == JDType::INT))
|
if ((iter.DoesExist("duration")) && (iter["duration"].GetDataType() == JDType::INT))
|
||||||
{
|
{
|
||||||
newEntry.duration = iter["duration"];
|
newEntry.duration = iter["duration"].AsInt;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((iter.DoesExist("tubio_id")) && (iter["tubio_id"].GetDataType() == JDType::STRING))
|
if ((iter.DoesExist("tubio_id")) && (iter["tubio_id"].GetDataType() == JDType::STRING))
|
||||||
{
|
{
|
||||||
newEntry.tubio_id = iter["tubio_id"];
|
newEntry.tubio_id = iter["tubio_id"].AsString;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((iter.DoesExist("webpage_url")) && (iter["webpage_url"].GetDataType() == JDType::STRING))
|
if ((iter.DoesExist("webpage_url")) && (iter["webpage_url"].GetDataType() == JDType::STRING))
|
||||||
{
|
{
|
||||||
newEntry.webpage_url = iter["webpage_url"];
|
newEntry.webpage_url = iter["webpage_url"].AsString;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((iter.DoesExist("thumbnail_url")) && (iter["thumbnail_url"].GetDataType() == JDType::STRING))
|
if ((iter.DoesExist("thumbnail_url")) && (iter["thumbnail_url"].GetDataType() == JDType::STRING))
|
||||||
{
|
{
|
||||||
newEntry.thumbnail_url = iter["thumbnail_url"];
|
newEntry.thumbnail_url = iter["thumbnail_url"].AsString;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((iter.DoesExist("download_url")) && (iter["download_url"].GetDataType() == JDType::STRING))
|
if ((iter.DoesExist("download_url")) && (iter["download_url"].GetDataType() == JDType::STRING))
|
||||||
{
|
{
|
||||||
newEntry.download_url = iter["download_url"];
|
newEntry.download_url = iter["download_url"].AsString;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((iter.DoesExist("downloaded_filename")) && (iter["downloaded_filename"].GetDataType() == JDType::STRING))
|
if ((iter.DoesExist("downloaded_filename")) && (iter["downloaded_filename"].GetDataType() == JDType::STRING))
|
||||||
{
|
{
|
||||||
newEntry.downloaded_filename = iter["downloaded_filename"];
|
newEntry.downloaded_filename = iter["downloaded_filename"].AsString;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((iter.DoesExist("queued_timestamp")) && (iter["queued_timestamp"].GetDataType() == JDType::INT))
|
if ((iter.DoesExist("queued_timestamp")) && (iter["queued_timestamp"].GetDataType() == JDType::INT))
|
||||||
{
|
{
|
||||||
newEntry.queued_timestamp = iter["queued_timestamp"];
|
newEntry.queued_timestamp = iter["queued_timestamp"].AsInt;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((iter.DoesExist("mode")) && (iter["mode"].GetDataType() == JDType::STRING))
|
if ((iter.DoesExist("mode")) && (iter["mode"].GetDataType() == JDType::STRING))
|
||||||
@ -529,7 +529,7 @@ std::string DownloadManager::CreateNewTubioID()
|
|||||||
|
|
||||||
while (!isIdUnique)
|
while (!isIdUnique)
|
||||||
{
|
{
|
||||||
if (counter > 100000000) throw std::exception("Tubio download id generator timeout");
|
if (counter > 100000000) throw std::exception();
|
||||||
|
|
||||||
newId = Internal::Helpers::Base10_2_X(time(0), "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ");
|
newId = Internal::Helpers::Base10_2_X(time(0), "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ");
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@ std::string FileSystem::ReadFile(std::string filename)
|
|||||||
ifs.open(filename, std::ios::in);
|
ifs.open(filename, std::ios::in);
|
||||||
if (!ifs.good())
|
if (!ifs.good())
|
||||||
{
|
{
|
||||||
throw std::exception("no such file");
|
throw std::exception();
|
||||||
std::terminate();
|
std::terminate();
|
||||||
}
|
}
|
||||||
std::string buf;
|
std::string buf;
|
||||||
@ -86,15 +86,17 @@ bool FileSystem::Delete(std::string filename)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
long long int FileSystem::CalculateSize(std::string name)
|
long long int FileSystem::CalculateSize(std::string name, bool isDirectory)
|
||||||
{
|
{
|
||||||
#ifdef _WIN
|
#ifdef _WIN
|
||||||
|
// Windows implementation
|
||||||
|
|
||||||
WIN32_FIND_DATAA data;
|
WIN32_FIND_DATAA data;
|
||||||
HANDLE sh = NULL;
|
HANDLE sh = NULL;
|
||||||
long long int byteCount = 0;
|
long long int byteCount = 0;
|
||||||
|
|
||||||
//std::cout << "Scanning dir " << name << std::endl;
|
//std::cout << "Scanning dir " << name << std::endl;
|
||||||
sh = FindFirstFileA((name + "\\*").c_str(), &data);
|
sh = FindFirstFileA((name + ((isDirectory) ? "\\*" : "")).c_str(), &data);
|
||||||
|
|
||||||
if (sh == INVALID_HANDLE_VALUE) return -1;
|
if (sh == INVALID_HANDLE_VALUE) return -1;
|
||||||
|
|
||||||
@ -106,7 +108,7 @@ long long int FileSystem::CalculateSize(std::string name)
|
|||||||
if ((data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == FILE_ATTRIBUTE_DIRECTORY)
|
if ((data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == FILE_ATTRIBUTE_DIRECTORY)
|
||||||
{
|
{
|
||||||
// ... a directory, search it recursively
|
// ... a directory, search it recursively
|
||||||
byteCount += CalculateSize(name + "\\" + data.cFileName);
|
byteCount += CalculateSize(name + "\\" + data.cFileName, true);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -121,6 +123,23 @@ long long int FileSystem::CalculateSize(std::string name)
|
|||||||
return byteCount;
|
return byteCount;
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
// Linux implementation
|
||||||
|
|
||||||
|
std::string cmd("du -sb '");
|
||||||
|
cmd.append(name);
|
||||||
|
cmd.append("' | cut -f1 2>&1");
|
||||||
|
|
||||||
|
// execute above command and get the output
|
||||||
|
FILE* stream = popen(cmd.c_str(), "r");
|
||||||
|
if (stream) {
|
||||||
|
const int max_size = 256;
|
||||||
|
char readbuf[max_size];
|
||||||
|
if (fgets(readbuf, max_size, stream) != NULL) {
|
||||||
|
return atoll(readbuf);
|
||||||
|
}
|
||||||
|
pclose(stream);
|
||||||
|
}
|
||||||
|
// return error val
|
||||||
return -1;
|
return -1;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
#include <filesystem>
|
#include <filesystem>
|
||||||
|
|
||||||
class FileSystem
|
class FileSystem
|
||||||
@ -18,7 +19,8 @@ public:
|
|||||||
static bool _CreateDirectory(std::string name);
|
static bool _CreateDirectory(std::string name);
|
||||||
static bool CreateDirectoryIfNotExists(std::string name);
|
static bool CreateDirectoryIfNotExists(std::string name);
|
||||||
static bool DeleteDirectory(std::string name);
|
static bool DeleteDirectory(std::string name);
|
||||||
static long long int CalculateSize(std::string name);
|
static long long int CalculateSize(std::string name, bool isDirectory = false);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
};
|
};
|
||||||
|
@ -40,10 +40,15 @@ std::string Logger::Flush()
|
|||||||
|
|
||||||
|
|
||||||
time_t currTime = time(0);
|
time_t currTime = time(0);
|
||||||
|
char timeBuf[256];
|
||||||
|
#ifdef _WIN
|
||||||
tm currTm;
|
tm currTm;
|
||||||
localtime_s(&currTm, &currTime);
|
localtime_s(&currTm, &currTime);
|
||||||
char timeBuf[256];
|
|
||||||
strftime(timeBuf, 100, "%d.%m.%Y - %T", &currTm);
|
strftime(timeBuf, 100, "%d.%m.%Y - %T", &currTm);
|
||||||
|
#else
|
||||||
|
tm* currTm = localtime(&currTime);
|
||||||
|
strftime(timeBuf, 100, "%d.%m.%Y - %T", currTm);
|
||||||
|
#endif
|
||||||
|
|
||||||
std::stringstream bufOut;
|
std::stringstream bufOut;
|
||||||
bufOut << "<" << timeBuf << "> [" << identifier << "]" << TypeToPrefix(type) << ((additional_information.length() > 0) ? " " : "") << additional_information << ": " << cout.str();
|
bufOut << "<" << timeBuf << "> [" << identifier << "]" << TypeToPrefix(type) << ((additional_information.length() > 0) ? " " : "") << additional_information << ": " << cout.str();
|
||||||
|
@ -30,6 +30,7 @@ bool RestQueryHandler::ProcessQuery(const std::string clientAdress, const Json&
|
|||||||
else if (requestName == "queue_download") return QueueDownload(requestBody, responseBody, responseCode);
|
else if (requestName == "queue_download") return QueueDownload(requestBody, responseBody, responseCode);
|
||||||
else if (requestName == "fetch_session_cache") return FetchSessionCache(requestBody, responseBody, responseCode);
|
else if (requestName == "fetch_session_cache") return FetchSessionCache(requestBody, responseBody, responseCode);
|
||||||
else if (requestName == "fetch_alltime_cache") return FetchAlltimeCache(requestBody, responseBody, responseCode);
|
else if (requestName == "fetch_alltime_cache") return FetchAlltimeCache(requestBody, responseBody, responseCode);
|
||||||
|
else if (requestName == "get_disk_usage") return GetDiskUsage(requestBody, responseBody, responseCode);
|
||||||
else if (requestName == "clear_download_cache") return ClearDownloadCache(requestBody, responseBody, responseCode);
|
else if (requestName == "clear_download_cache") return ClearDownloadCache(requestBody, responseBody, responseCode);
|
||||||
else if (requestName == "foo") return Example_Foo(requestBody, responseBody, responseCode);
|
else if (requestName == "foo") return Example_Foo(requestBody, responseBody, responseCode);
|
||||||
else if (requestName == "show_console") return ShowConsole(requestBody, responseBody, responseCode);
|
else if (requestName == "show_console") return ShowConsole(requestBody, responseBody, responseCode);
|
||||||
@ -280,6 +281,67 @@ bool RestQueryHandler::FetchAlltimeLogs(const JsonBlock& request, JsonBlock& res
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool RestQueryHandler::GetDiskUsage(const JsonBlock& request, JsonBlock& responseBody, HTTP_STATUS_CODE& responseCode)
|
||||||
|
{
|
||||||
|
log->cout << "Fetching disk usage...";
|
||||||
|
log->Flush();
|
||||||
|
|
||||||
|
responseCode = OK;
|
||||||
|
responseBody.CloneFrom(RestResponseTemplates::GetByCode(OK));
|
||||||
|
|
||||||
|
JsonBlock diskUsages;
|
||||||
|
|
||||||
|
long long int dlcache = 0;
|
||||||
|
if (FileSystem::ExistsDirectory(XGConfig::downloader.cachedir))
|
||||||
|
{
|
||||||
|
dlcache = FileSystem::CalculateSize(XGConfig::downloader.cachedir, true);
|
||||||
|
}
|
||||||
|
diskUsages.Set("dlcache") = dlcache;
|
||||||
|
|
||||||
|
long long int logs = 0;
|
||||||
|
if (FileSystem::Exists("log.txt"))
|
||||||
|
{
|
||||||
|
logs += FileSystem::CalculateSize("log.txt");
|
||||||
|
}
|
||||||
|
if (FileSystem::Exists("log.json"))
|
||||||
|
{
|
||||||
|
logs += FileSystem::CalculateSize("log.json");
|
||||||
|
}
|
||||||
|
diskUsages.Set("logs") = logs;
|
||||||
|
|
||||||
|
long long int misc = 0;
|
||||||
|
if (FileSystem::Exists("config.json"))
|
||||||
|
{
|
||||||
|
misc += FileSystem::CalculateSize("config.json");
|
||||||
|
}
|
||||||
|
diskUsages.Set("misc") = misc;
|
||||||
|
|
||||||
|
long long int dependencies = 0;
|
||||||
|
if (FileSystem::Exists("ffmpeg.exe"))
|
||||||
|
{
|
||||||
|
dependencies += FileSystem::CalculateSize("ffmpeg.exe");
|
||||||
|
}
|
||||||
|
if (FileSystem::Exists("ffprobe.exe"))
|
||||||
|
{
|
||||||
|
dependencies += FileSystem::CalculateSize("ffprobe.exe");
|
||||||
|
}
|
||||||
|
if (FileSystem::Exists("ffplay.exe"))
|
||||||
|
{
|
||||||
|
dependencies += FileSystem::CalculateSize("ffplay.exe");
|
||||||
|
}
|
||||||
|
if (FileSystem::Exists("youtube-dl.exe"))
|
||||||
|
{
|
||||||
|
dependencies += FileSystem::CalculateSize("youtube-dl.exe");
|
||||||
|
}
|
||||||
|
diskUsages.Set("dependencies") = dependencies;
|
||||||
|
|
||||||
|
diskUsages.Set("total") = dlcache + logs + misc + dependencies;
|
||||||
|
|
||||||
|
responseBody.Set("disk_usage") = diskUsages;
|
||||||
|
responseBody.Set("message") = "Disk usage in bytes. Dependencies are 0 on linux, because the dependencies should be installed globally.";
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -29,6 +29,7 @@ namespace Rest
|
|||||||
static bool GetOSName(const JasonPP::JsonBlock& request, JasonPP::JsonBlock& responseBody, HTTP_STATUS_CODE& responseCode);
|
static bool GetOSName(const JasonPP::JsonBlock& request, JasonPP::JsonBlock& responseBody, HTTP_STATUS_CODE& responseCode);
|
||||||
static bool FetchAlltimeLogs(const JasonPP::JsonBlock& request, JasonPP::JsonBlock& responseBody, HTTP_STATUS_CODE& responseCode);
|
static bool FetchAlltimeLogs(const JasonPP::JsonBlock& request, JasonPP::JsonBlock& responseBody, HTTP_STATUS_CODE& responseCode);
|
||||||
static bool FetchSessionLogs(const JasonPP::JsonBlock& request, JasonPP::JsonBlock& responseBody, HTTP_STATUS_CODE& responseCode);
|
static bool FetchSessionLogs(const JasonPP::JsonBlock& request, JasonPP::JsonBlock& responseBody, HTTP_STATUS_CODE& responseCode);
|
||||||
|
static bool GetDiskUsage(const JasonPP::JsonBlock& request, JasonPP::JsonBlock& responseBody, HTTP_STATUS_CODE& responseCode);
|
||||||
|
|
||||||
static bool ValidateField(const std::string name, const JasonPP::JDType type, const JasonPP::Json& checkThat, JasonPP::JsonBlock& putErrorResponseHere);
|
static bool ValidateField(const std::string name, const JasonPP::JDType type, const JasonPP::Json& checkThat, JasonPP::JsonBlock& putErrorResponseHere);
|
||||||
|
|
||||||
|
@ -86,7 +86,7 @@
|
|||||||
<ClCompile>
|
<ClCompile>
|
||||||
<WarningLevel>Level3</WarningLevel>
|
<WarningLevel>Level3</WarningLevel>
|
||||||
<SDLCheck>true</SDLCheck>
|
<SDLCheck>true</SDLCheck>
|
||||||
<PreprocessorDefinitions>_WIN;_WIN32;JASONPP_RENDER_SORTED;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>_WIN;JASONPP_RENDER_SORTED;_WIN32;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<ConformanceMode>true</ConformanceMode>
|
<ConformanceMode>true</ConformanceMode>
|
||||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
@ -101,7 +101,7 @@
|
|||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
<SDLCheck>true</SDLCheck>
|
<SDLCheck>true</SDLCheck>
|
||||||
<PreprocessorDefinitions>_WIN;_WIN32;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>_WIN;JASONPP_RENDER_SORTED;_WIN32;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<ConformanceMode>true</ConformanceMode>
|
<ConformanceMode>true</ConformanceMode>
|
||||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
@ -116,7 +116,7 @@
|
|||||||
<ClCompile>
|
<ClCompile>
|
||||||
<WarningLevel>Level3</WarningLevel>
|
<WarningLevel>Level3</WarningLevel>
|
||||||
<SDLCheck>true</SDLCheck>
|
<SDLCheck>true</SDLCheck>
|
||||||
<PreprocessorDefinitions>_WIN;_WIN64;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>_WIN;JASONPP_RENDER_SORTED;_WIN64;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<ConformanceMode>true</ConformanceMode>
|
<ConformanceMode>true</ConformanceMode>
|
||||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
@ -131,7 +131,7 @@
|
|||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
<SDLCheck>true</SDLCheck>
|
<SDLCheck>true</SDLCheck>
|
||||||
<PreprocessorDefinitions>_WIN;_WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>_WIN;JASONPP_RENDER_SORTED;_WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<ConformanceMode>true</ConformanceMode>
|
<ConformanceMode>true</ConformanceMode>
|
||||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
@ -2,9 +2,6 @@
|
|||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
std::cout << (FileSystem::CalculateSize("C:\\Users\\Leon\\source\\repos\\Tubio\\Tubio") / 1024 / 1024) << std::endl;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
Framework framework;
|
Framework framework;
|
||||||
framework.Run();
|
framework.Run();
|
||||||
|
|
||||||
|
29
linux_build/build.sh
Normal file
29
linux_build/build.sh
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
g++ \
|
||||||
|
\
|
||||||
|
-std=c++17 \
|
||||||
|
\
|
||||||
|
-D __linux__ \
|
||||||
|
-D JASONPP_RENDER_SORTED \
|
||||||
|
\
|
||||||
|
../Tubio/main.cpp \
|
||||||
|
../Tubio/ConsoleManager.cpp \
|
||||||
|
../Tubio/DownloadManager.cpp \
|
||||||
|
../Tubio/FileSystem.cpp \
|
||||||
|
../Tubio/Framework.cpp \
|
||||||
|
../Tubio/HttpServer.cpp \
|
||||||
|
../Tubio/Logger.cpp \
|
||||||
|
../Tubio/LogHistory.cpp \
|
||||||
|
../Tubio/RestQueryHandler.cpp \
|
||||||
|
../Tubio/RestResponseTemplates.cpp \
|
||||||
|
../Tubio/XGConfig.cpp \
|
||||||
|
../Tubio/XGControl.cpp \
|
||||||
|
\
|
||||||
|
\
|
||||||
|
../Tubio/external_dependencies/casenta/mongoose/mongoose.c \
|
||||||
|
../Tubio/external_dependencies/leonetienne/JasonPP/JasonPP.cpp \
|
||||||
|
\
|
||||||
|
-lpthread \
|
||||||
|
\
|
||||||
|
-w \
|
||||||
|
-o ./tubio.out
|
BIN
linux_build/tubio.out
Normal file
BIN
linux_build/tubio.out
Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user