#include "handler.h"
+// Log docs: https://github.com/gabime/spdlog
+#include <spdlog/spdlog.h>
+namespace spd = spdlog;
+/*
+trace
+debug
+info
+warn
+error
+critical
+*/
+
#include <string.h>
#include <stdlib.h>
#include <sys/time.h>
#include <vdr/menu.h>
#include <vdr/timers.h>
-#include "log.h"
-
int jsonserver_request_handler(struct mg_connection *conn)
{
- Log* log = Log::getInstance();
+ std::shared_ptr<spd::logger> logger = spd::get("jsonserver_spdlog");
+
const struct mg_request_info *request_info = mg_get_request_info(conn);
if (strcmp(request_info->uri, "/jsonserver")) return 0; // not for us
int wvrl = mg_get_var(request_info->query_string, strlen(request_info->query_string), "req", wvrequest, 20);
if (wvrl == -1)
{
- log->log("JSONServer", Log::ERR, "Could not decode req");
+ logger->error("request_handler: Could not decode req");
return 0;
}
{
const char* contentLength = mg_get_header(conn, "Content-Length");
int contentLengthI = atoi(contentLength);
- log->log("JSONServer", Log::DEBUG, "POST data content length: %i", contentLengthI);
+ logger->debug("request_hander: POST data content length: {}", contentLengthI);
if (contentLengthI > 10000)
{
- log->log("JSONServer", Log::DEBUG, "Length > 10000, rejecting");
+ logger->error("request_handler: Length > 10000, rejecting");
return 0;
}
int bytesRead = mg_read(conn, postData, contentLengthI);
if (bytesRead != contentLengthI)
{
- log->log("JSONServer", Log::DEBUG, "Could not read up to contentLength");
+ logger->error("request_handler: Could not read up to contentLength");
return 0;
}
postData[contentLengthI] = '\0';
{
if (request_info->status_code == 400) // bad request
{
- log->log("Mongoose", Log::DEBUG, "400 BAD REQUEST:");
- log->log("Mongoose", Log::DEBUG, request_info->request_method);
- log->log("Mongoose", Log::DEBUG, request_info->uri);
- log->log("Mongoose", Log::DEBUG, request_info->http_version);
- log->log("Mongoose", Log::DEBUG, request_info->query_string);
- log->log("Mongoose", Log::DEBUG, request_info->log_message);
+ logger->debug("Mongoose: 400 BAD REQUEST:");
+ logger->debug("Mongoose {}", request_info->request_method);
+ logger->debug("Mongoose {}", request_info->uri);
+ logger->debug("Mongoose {}", request_info->http_version);
+ logger->debug("Mongoose {}", request_info->query_string);
+ logger->debug("Mongoose {}", request_info->log_message);
for (int i = 0; i < request_info->num_headers; i++)
{
- log->log("Mongoose", Log::DEBUG, "%s: %s", request_info->http_headers[i].name, request_info->http_headers[i].value);
+ logger->debug("Mongoose: {}: {}", request_info->http_headers[i].name, request_info->http_headers[i].value);
}
}
else
{
- log->log("Mongoose", Log::DEBUG, request_info->log_message);
- log->log("Mongoose", Log::DEBUG, request_info->uri);
+ logger->debug("Mongoose {}", request_info->log_message);
+ logger->debug("Mongoose {}", request_info->uri);
}
return (void*)1;
}
bool jsonserver_gettime(Json::Value& js)
{
- Log* log = Log::getInstance();
- log->log("JSONServer", Log::DEBUG, "gettime");
+ std::shared_ptr<spd::logger> logger = spd::get("jsonserver_spdlog");
+ logger->debug("get_time");
struct timeval tv;
gettimeofday(&tv, NULL);
bool jsonserver_diskstats(Json::Value& js)
{
- Log* log = Log::getInstance();
- log->log("JSONServer", Log::DEBUG, "diskstats");
+ std::shared_ptr<spd::logger> logger = spd::get("jsonserver_spdlog");
+ logger->debug("diskstats");
int FreeMB;
int UsedMB;
bool jsonserver_reclist(Json::Value& js)
{
- Log* log = Log::getInstance();
- log->log("JSONServer", Log::DEBUG, "reclist");
+ std::shared_ptr<spd::logger> logger = spd::get("jsonserver_spdlog");
+ logger->debug("reclist");
Json::Value jsrecordings(Json::arrayValue);
cRecordings Recordings;
bool jsonserver_recinfo(Json::Value& js, const char* postData)
{
- Log* log = Log::getInstance();
- log->log("JSONServer", Log::DEBUG, "recinfo");
+ std::shared_ptr<spd::logger> logger = spd::get("jsonserver_spdlog");
+ logger->debug("recinfo");
char reqfilename[1000];
int mgv1 = mg_get_var(postData, strlen(postData), "filename", reqfilename, 1000);
if (mgv1 == -1)
{
- log->log("JSONServer", Log::ERR, "Could not decode filename");
+ logger->error("recinfo: Could not decode filename");
js["Result"] = false;
js["Error"] = "Could not decode filename";
return true;
}
- log->log("JSONServer", Log::DEBUG, "%s", reqfilename);
+ logger->debug("recinfo: {}", reqfilename);
cRecordings Recordings;
Recordings.Load(); // probably have to do this
if (!recording)
{
- log->log("JSONServer", Log::ERR, "recinfo found no recording");
+ logger->error("recinfo: recinfo found no recording");
js["Result"] = false;
return true;
}
bool jsonserver_recstop(Json::Value& js, const char* postData)
{
- Log* log = Log::getInstance();
- log->log("JSONServer", Log::DEBUG, "recstop");
+ std::shared_ptr<spd::logger> logger = spd::get("jsonserver_spdlog");
+ logger->debug("recstop");
char reqfilename[1000];
int mgv1 = mg_get_var(postData, strlen(postData), "filename", reqfilename, 1000);
if (mgv1 == -1)
{
- log->log("JSONServer", Log::ERR, "Could not decode filename");
+ logger->error("recstop: Could not decode filename");
js["Result"] = false;
js["Error"] = "Could not decode filename";
return true;
}
- log->log("JSONServer", Log::DEBUG, "%s", reqfilename);
+ logger->debug("recstop: {}", reqfilename);
cRecordings Recordings;
Recordings.Load(); // probably have to do this
if (!recording)
{
- log->log("JSONServer", Log::ERR, "recstop found no recording");
+ logger->error("recstop: recstop found no recording");
js["Result"] = false;
return true;
}
cRecordControl *rc = cRecordControls::GetRecordControl(recording->FileName());
if (!rc)
{
- log->log("JSONServer", Log::ERR, "recstop - not currently recording");
+ logger->error("recstop: not currently recording");
js["Result"] = false;
return true;
}
if (Timers.BeingEdited())
{
- log->log("JSONServer", Log::ERR, "recstop - timers being edited elsewhere");
+ logger->debug("recstop: timers being edited elsewhere");
js["Result"] = false;
return true;
}
cTimer* timer = rc->Timer();
if (!timer)
{
- log->log("JSONServer", Log::ERR, "recstop - timer not found");
+ logger->error("recstop: timer not found");
js["Result"] = false;
return true;
}
bool jsonserver_recdel(Json::Value& js, const char* postData)
{
- Log* log = Log::getInstance();
- log->log("JSONServer", Log::DEBUG, "recdel");
+ std::shared_ptr<spd::logger> logger = spd::get("jsonserver_spdlog");
+ logger->debug("recdel");
char reqfilename[1000];
int mgv1 = mg_get_var(postData, strlen(postData), "filename", reqfilename, 1000);
if (mgv1 == -1)
{
- log->log("JSONServer", Log::ERR, "Could not decode filename");
+ logger->error("recdel: Could not decode filename");
js["Result"] = false;
js["Error"] = "Could not decode filename";
return true;
}
- log->log("JSONServer", Log::DEBUG, "%s", reqfilename);
+ logger->debug("recdel: {}", reqfilename);
cRecordings Recordings;
Recordings.Load(); // probably have to do this
return true;
}
- log->log("JSONServer", Log::DEBUG, "Deleting recording: %s", recording->Name());
+ logger->debug("recdel: Deleting recording: {}", recording->Name());
cRecordControl *rc = cRecordControls::GetRecordControl(recording->FileName());
if (rc)
{
bool jsonserver_recmove(Json::Value& js, const char* postData)
{
- Log* log = Log::getInstance();
- log->log("JSONServer", Log::DEBUG, "recmove");
+ std::shared_ptr<spd::logger> logger = spd::get("jsonserver_spdlog");
+ logger->debug("recmove");
char* fileNameToMove = NULL;
char* requestedNewPath = NULL;
if ((mgv1 == -1) || (mgv2 == -1) || !strlen(fileNameToMove) || !strlen(requestedNewPath))
{
- log->log("JSONServer", Log::ERR, "request mgvs: %i %i", mgv1, mgv2);
+ logger->error("recmove: request mgvs: {} {}", mgv1, mgv2);
throw 1;
}
cRecordControl *rc = cRecordControls::GetRecordControl(recordingObj->FileName());
if (rc) throw 3;
- log->log("JSONServer", Log::DEBUG, "moving recording: %s", recordingObj->Name());
- log->log("JSONServer", Log::DEBUG, "moving recording: %s", recordingObj->FileName());
- log->log("JSONServer", Log::DEBUG, "to: %s", requestedNewPath);
+ logger->debug("recmove: moving recording: {}", recordingObj->Name());
+ logger->debug("recmove: moving recording: {}", recordingObj->FileName());
+ logger->debug("recmove: to: {}", requestedNewPath);
const char* t = recordingObj->FileName();
{
if (t[k] == '/')
{
- log->log("JSONServer", Log::DEBUG, "l1: %i", strlen(&t[k+1]) + 1);
+ logger->debug("recmove: l1: {}", strlen(&t[k+1]) + 1);
dateDirName = new char[strlen(&t[k+1]) + 1];
strcpy(dateDirName, &t[k+1]);
break;
{
if (t[j] == '/')
{
- log->log("JSONServer", Log::DEBUG, "l2: %i", k - j);
+ logger->debug("recmove: l2: {}", k - j);
titleDirName = new char[k - j];
memcpy(titleDirName, &t[j+1], k - j - 1);
titleDirName[k - j - 1] = '\0';
#endif
int vidDirStrLen = strlen(vidDirStr);
- log->log("JSONServer", Log::DEBUG, "j = %u, strlenvd = %u", j, vidDirStrLen);
+ logger->debug("recmove: j = {}, strlenvd = {}", j, vidDirStrLen);
if (j > vidDirStrLen) // Rec is in a subfolder now
{
for(m = j-1; m >= 0; m--)
{
if (t[m] == '/')
{
- log->log("JSONServer", Log::DEBUG, "l3: %i", j - m);
+ logger->debug("recmove: l3: {}", j - m);
folderName = new char[j - m];
memcpy(folderName, &t[m+1], j - m - 1);
folderName[j - m - 1] = '\0';
ExchangeChars(requestedNewPath, true);
- log->log("JSONServer", Log::DEBUG, "datedirname: %s", dateDirName);
- log->log("JSONServer", Log::DEBUG, "titledirname: %s", titleDirName);
- log->log("JSONServer", Log::DEBUG, "viddir: %s", vidDirStr);
- if (folderName) log->log("JSONServer", Log::DEBUG, "folderName: %s", folderName);
- log->log("JSONServer", Log::DEBUG, "EC: %s", requestedNewPath);
+ logger->debug("recmove: datedirname: {}", dateDirName);
+ logger->debug("recmove: titledirname: {}", titleDirName);
+ logger->debug("recmove: viddir: {}", vidDirStr);
+ if (folderName) logger->debug("recmove: folderName: {}", folderName);
+ logger->debug("recmove: EC: {}", requestedNewPath);
// Could be a new path - construct that first and test
newContainer = new char[vidDirStrLen + strlen(requestedNewPath) + strlen(titleDirName) + 1];
sprintf(newContainer, "%s%s", vidDirStr, requestedNewPath);
- log->log("JSONServer", Log::DEBUG, "NPT: %s", newContainer);
+ logger->debug("recmove: NPT: {}", newContainer);
struct stat dstat;
int statret = stat(newContainer, &dstat);
if ((statret == -1) && (errno == ENOENT)) // Dir does not exist
{
- log->log("JSONServer", Log::DEBUG, "new path does not exist (1)");
+ logger->debug("recmove: new path does not exist (1)");
int mkdirret = mkdir(newContainer, 0755);
if (mkdirret != 0) throw 4;
}
// New path now created or was there already
sprintf(newContainer, "%s%s%s", vidDirStr, requestedNewPath, titleDirName);
- log->log("JSONServer", Log::DEBUG, "%s", newContainer);
+ logger->debug("recmove: {}", newContainer);
statret = stat(newContainer, &dstat);
if ((statret == -1) && (errno == ENOENT)) // Dir does not exist
{
- log->log("JSONServer", Log::DEBUG, "new dir does not exist (2)");
+ logger->debug("recmove: new dir does not exist (2)");
int mkdirret = mkdir(newContainer, 0755);
if (mkdirret != 0) throw 6;
}
newDir = new char[strlen(newContainer) + 1 + strlen(dateDirName) + 1];
sprintf(newDir, "%s/%s", newContainer, dateDirName);
- log->log("JSONServer", Log::DEBUG, "doing rename '%s' '%s'", t, newDir);
+ logger->debug("recmove: doing rename '{}' '{}'", t, newDir);
if (rename(t, newDir) != 0) throw 8;
// Success. Test for remove old dir containter
char* tempOldTitleDir = new char[k+1];
memcpy(tempOldTitleDir, t, k);
tempOldTitleDir[k] = '\0';
- log->log("JSONServer", Log::DEBUG, "len: %i, cp: %i, strlen: %i, oldtitledir: %s", k+1, k, strlen(tempOldTitleDir), tempOldTitleDir);
+ logger->debug("recmove: len: {}, cp: {}, strlen: {}, oldtitledir: {}", k+1, k, strlen(tempOldTitleDir), tempOldTitleDir);
rmdir(tempOldTitleDir); // can't do anything about a fail result at this point.
delete[] tempOldTitleDir;
char* tempOldFolderName = new char[j+1];
memcpy(tempOldFolderName, t, j);
tempOldFolderName[j] = '\0';
- log->log("JSONServer", Log::DEBUG, "len: %i, cp: %i, strlen: %i, oldfoldername: %s", j+1, j, strlen(tempOldFolderName), tempOldFolderName);
+ logger->debug("recmove: len: {}, cp: {}, strlen: {}, oldfoldername: {}", j+1, j, strlen(tempOldFolderName), tempOldFolderName);
/*
DESCRIPTION
rmdir() deletes a directory, which must be empty.
js["Result"] = false;
if (e == 1)
{
- log->log("JSONServer", Log::ERR, "Bad parameters");
+ logger->error("recmove: Bad parameters");
js["Error"] = "Bad request parameters";
}
else if (e == 2)
{
- log->log("JSONServer", Log::ERR, "Could not find recording to move");
+ logger->error("recmove: Could not find recording to move");
js["Error"] = "Bad filename";
}
else if (e == 3)
{
- log->log("JSONServer", Log::ERR, "Could not move recording, it is still recording");
+ logger->error("recmove: Could not move recording, it is still recording");
js["Error"] = "Cannot move recording in progress";
}
else if (e == 4)
{
- log->log("JSONServer", Log::ERR, "Failed to make new dir (1)");
+ logger->error("recmove: Failed to make new dir (1)");
js["Error"] = "Failed to create new directory (1)";
}
else if (e == 5)
{
- log->log("JSONServer", Log::ERR, "Something already exists? (1)");
+ logger->error("recmove: Something already exists? (1)");
js["Error"] = "Something already exists at the new path (1)";
}
else if (e == 6)
{
- log->log("JSONServer", Log::ERR, "Failed to make new dir (2)");
+ logger->error("recmove: Failed to make new dir (2)");
js["Error"] = "Failed to create new directory (2)";
}
else if (e == 7)
{
- log->log("JSONServer", Log::ERR, "Something already exists?");
+ logger->error("recmove: Something already exists?");
js["Error"] = "Something already exists at the new path";
}
else if (e == 8)
{
- log->log("JSONServer", Log::ERR, "Rename failed");
+ logger->error("recmove: Rename failed");
js["Error"] = "Move failed";
}
}
bool jsonserver_recrename(Json::Value& js, const char* postData)
{
- Log* log = Log::getInstance();
- log->log("JSONServer", Log::DEBUG, "recrename");
+ std::shared_ptr<spd::logger> logger = spd::get("jsonserver_spdlog");
+ logger->debug("recrename");
char* fileNameToRename = NULL;
char* requestedNewName = NULL;
if ((mgv1 == -1) || (mgv2 == -1) || !strlen(fileNameToRename) || !strlen(requestedNewName))
{
- log->log("JSONServer", Log::ERR, "request mgvs: %i %i", mgv1, mgv2);
+ logger->error("recrename: request mgvs: {} {}", mgv1, mgv2);
throw 1;
}
cRecordControl *rc = cRecordControls::GetRecordControl(recordingObj->FileName());
if (rc) throw 3;
- log->log("JSONServer", Log::DEBUG, "renaming recording: %s", recordingObj->Name());
- log->log("JSONServer", Log::DEBUG, "renaming recording: %s", recordingObj->FileName());
- log->log("JSONServer", Log::DEBUG, "to: %s", requestedNewName);
+ logger->debug("recrename: renaming recording: {}", recordingObj->Name());
+ logger->debug("recrename: renaming recording: {}", recordingObj->FileName());
+ logger->debug("recrename: to: {}", requestedNewName);
const char* t = recordingObj->FileName();
{
if (t[k] == '/')
{
- log->log("JSONServer", Log::DEBUG, "l1: %i", strlen(&t[k+1]) + 1);
+ logger->debug("recrename: l1: {}", strlen(&t[k+1]) + 1);
dateDirName = new char[strlen(&t[k+1]) + 1];
strcpy(dateDirName, &t[k+1]);
break;
{
if (t[j] == '/')
{
- log->log("JSONServer", Log::DEBUG, "l2: %i", k - j);
+ logger->debug("recrename: l2: {}", k - j);
titleDirName = new char[k - j];
memcpy(titleDirName, &t[j+1], k - j - 1);
titleDirName[k - j - 1] = '\0';
#endif
int vidDirStrLen = strlen(vidDirStr);
- log->log("JSONServer", Log::DEBUG, "j = %u, strlenvd = %u", j, vidDirStrLen);
+ logger->debug("recrename: j = {}, strlenvd = {}", j, vidDirStrLen);
if (j > vidDirStrLen) // Rec is in a subfolder now
{
for(m = j-1; m >= 0; m--)
{
if (t[m] == '/')
{
- log->log("JSONServer", Log::DEBUG, "l3: %i", j - m);
+ logger->debug("recrename: l3: {}", j - m);
folderName = new char[j - m];
memcpy(folderName, &t[m+1], j - m - 1);
folderName[j - m - 1] = '\0';
ExchangeChars(requestedNewName, true);
- log->log("JSONServer", Log::DEBUG, "datedirname: %s", dateDirName);
- log->log("JSONServer", Log::DEBUG, "titledirname: %s", titleDirName);
- log->log("JSONServer", Log::DEBUG, "viddir: %s", vidDirStr);
- if (folderName) log->log("JSONServer", Log::DEBUG, "folderName: %s", folderName);
- log->log("JSONServer", Log::DEBUG, "EC: %s", requestedNewName);
+ logger->debug("recrename: datedirname: {}", dateDirName);
+ logger->debug("recrename: titledirname: {}", titleDirName);
+ logger->debug("recrename: viddir: {}", vidDirStr);
+ if (folderName) logger->debug("recrename: folderName: {}", folderName);
+ logger->debug("recrename: EC: {}", requestedNewName);
// Could be a new path - construct that first and test
newContainer = new char[vidDirStrLen + 1 + strlen(requestedNewName) + 1];
sprintf(newContainer, "%s/%s", vidDirStr, requestedNewName);
}
- log->log("JSONServer", Log::DEBUG, "NPT: %s", newContainer);
+ logger->debug("recrename: NPT: {}", newContainer);
struct stat dstat;
int statret = stat(newContainer, &dstat);
if ((statret == -1) && (errno == ENOENT)) // Dir does not exist
{
- log->log("JSONServer", Log::DEBUG, "new path does not exist (1)");
+ logger->debug("recrename: new path does not exist (1)");
int mkdirret = mkdir(newContainer, 0755);
if (mkdirret != 0) throw 4;
}
newDir = new char[strlen(newContainer) + 1 + strlen(dateDirName) + 1];
sprintf(newDir, "%s/%s", newContainer, dateDirName);
- log->log("JSONServer", Log::DEBUG, "doing rename '%s' '%s'", t, newDir);
+ logger->debug("recrename: doing rename '{}' '{}'", t, newDir);
if (rename(t, newDir) != 0) throw 8;
// Success. Test for remove old dir containter
char* tempOldTitleDir = new char[k+1];
memcpy(tempOldTitleDir, t, k);
tempOldTitleDir[k] = '\0';
- log->log("JSONServer", Log::DEBUG, "len: %i, cp: %i, strlen: %i, oldtitledir: %s", k+1, k, strlen(tempOldTitleDir), tempOldTitleDir);
+ logger->debug("recrename: len: {}, cp: {}, strlen: {}, oldtitledir: {}", k+1, k, strlen(tempOldTitleDir), tempOldTitleDir);
rmdir(tempOldTitleDir); // can't do anything about a fail result at this point.
delete[] tempOldTitleDir;
js["Result"] = false;
if (e == 1)
{
- log->log("JSONServer", Log::ERR, "Bad parameters");
+ logger->error("recrename: Bad parameters");
js["Error"] = "Bad request parameters";
}
else if (e == 2)
{
- log->log("JSONServer", Log::ERR, "Could not find recording to move");
+ logger->error("recrename: Could not find recording to move");
js["Error"] = "Bad filename";
}
else if (e == 3)
{
- log->log("JSONServer", Log::ERR, "Could not move recording, it is still recording");
+ logger->error("recrename: Could not move recording, it is still recording");
js["Error"] = "Cannot move recording in progress";
}
else if (e == 4)
{
- log->log("JSONServer", Log::ERR, "Failed to make new dir (1)");
+ logger->error("recrename: Failed to make new dir (1)");
js["Error"] = "Failed to create new directory (1)";
}
else if (e == 5)
{
- log->log("JSONServer", Log::ERR, "Something already exists? (1)");
+ logger->error("recrename: Something already exists? (1)");
js["Error"] = "Something already exists at the new path (1)";
}
else if (e == 8)
{
- log->log("JSONServer", Log::ERR, "Rename failed");
+ logger->error("recrename: Rename failed");
js["Error"] = "Move failed";
}
}
bool jsonserver_recresetresume(Json::Value& js, const char* postData)
{
- Log* log = Log::getInstance();
- log->log("JSONServer", Log::DEBUG, "recresetresume");
+ std::shared_ptr<spd::logger> logger = spd::get("jsonserver_spdlog");
+ logger->debug("recresetresume");
char reqfilename[1000];
int mgv1 = mg_get_var(postData, strlen(postData), "filename", reqfilename, 1000);
if (mgv1 == -1)
{
- log->log("JSONServer", Log::ERR, "Could not decode filename");
+ logger->error("recresetresume: Could not decode filename");
js["Result"] = false;
js["Error"] = "Could not decode filename";
return true;
}
- log->log("JSONServer", Log::DEBUG, "%s", reqfilename);
+ logger->debug("recresetresume: {}", reqfilename);
cRecordings Recordings;
Recordings.Load(); // probably have to do this
return true;
}
- log->log("JSONServer", Log::DEBUG, "Reset resume for: %s", recording->Name());
+ logger->debug("recresetresume: Reset resume for: {}", recording->Name());
cResumeFile ResumeFile(recording->FileName(), recording->IsPesRecording());
if (ResumeFile.Read() >= 0)
bool jsonserver_channellist(Json::Value& js)
{
- Log* log = Log::getInstance();
- log->log("JSONServer", Log::DEBUG, "channellist");
+ std::shared_ptr<spd::logger> logger = spd::get("jsonserver_spdlog");
+ logger->debug("channellist");
Json::Value jschannels(Json::arrayValue);
{
if (!channel->GroupSep())
{
-// log->log("JSONServer", Log::DEBUG, "name: '%s'", channel->Name());
+// logger->debug("channellist: name: '{}'", channel->Name());
// if (channel->Vpid()) type = 1;
// else if (channel->Apid(0)) type = 2;
bool jsonserver_channelschedule(Json::Value& js, const char* postData)
{
- Log* log = Log::getInstance();
- log->log("JSONServer", Log::DEBUG, "channelschedule '%s'", postData);
+ std::shared_ptr<spd::logger> logger = spd::get("jsonserver_spdlog");
+ logger->debug("channelschedule: '{}'", postData);
char sChannelNumber[15]; int mgv1 = mg_get_var(postData, strlen(postData), "channelnumber", sChannelNumber, 15);
char sStartTime[15]; int mgv2 = mg_get_var(postData, strlen(postData), "starttime", sStartTime, 15);
if ( (mgv1 == -1) || (mgv2 == -1) || (mgv3 == -1) )
{
- log->log("JSONServer", Log::ERR, "request mgvs: %i %i %i", mgv1, mgv2, mgv3);
+ logger->error("channelschedule: request mgvs: {} {} {}", mgv1, mgv2, mgv3);
js["Result"] = false;
js["Error"] = "Bad request parameters";
return true;
if (!channel)
{
- log->log("JSONServer", Log::ERR, "Could not find requested channel: %i", channelNumber);
+ logger->error("channelschedule: Could not find requested channel: {}", channelNumber);
js["Result"] = false;
js["Error"] = "Could not find channel";
return true;
const cSchedules *Schedules = cSchedules::Schedules(MutexLock);
if (!Schedules)
{
- log->log("JSONServer", Log::ERR, "Could not find requested channel: %i", channelNumber);
+ logger->error("channelschedule: Could not find requested channel: {}", channelNumber);
js["Result"] = false;
js["Error"] = "Internal schedules error (1)";
return true;
const cSchedule *Schedule = Schedules->GetSchedule(channel->GetChannelID());
if (!Schedule)
{
- log->log("JSONServer", Log::ERR, "Could not find requested channel: %i", channelNumber);
+ logger->error("channelschedule: Could not find requested channel: {}", channelNumber);
js["Result"] = false;
js["Error"] = "Internal schedules error (2)";
return true;
bool jsonserver_getscheduleevent(Json::Value& js, const char* postData)
{
- Log* log = Log::getInstance();
- log->log("JSONServer", Log::DEBUG, "getscheduleevent '%s'", postData);
+ std::shared_ptr<spd::logger> logger = spd::get("jsonserver_spdlog");
+ logger->debug("getscheduleevent: '{}'", postData);
char sChannelNumber[15]; int mgv1 = mg_get_var(postData, strlen(postData), "channelnumber", sChannelNumber, 15);
char sEventID[15]; int mgv2 = mg_get_var(postData, strlen(postData), "eventid", sEventID, 15);
if ( (mgv1 == -1) || (mgv2 == -1) )
{
- log->log("JSONServer", Log::ERR, "request mgvs: %i %i", mgv1, mgv2);
+ logger->error("getscheduleevent: request mgvs: {} {}", mgv1, mgv2);
js["Result"] = false;
js["Error"] = "Bad request parameters";
return true;
const cEvent* jsonserver_getEvent(Json::Value& js, int channelNumber, int eventID, int aroundTime)
{
- Log* log = Log::getInstance();
+ std::shared_ptr<spd::logger> logger = spd::get("jsonserver_spdlog");
cChannel* channel = NULL;
for (channel = Channels.First(); channel; channel = Channels.Next(channel))
if (!channel)
{
- log->log("JSONServer", Log::ERR, "Could not find requested channel: %i", channelNumber);
+ logger->error("getevent: Could not find requested channel: {}", channelNumber);
js["Error"] = "Could not find channel";
return NULL;
}
const cSchedules *Schedules = cSchedules::Schedules(MutexLock);
if (!Schedules)
{
- log->log("JSONServer", Log::ERR, "Could not find requested channel: %i", channelNumber);
+ logger->error("getevent: Could not find requested channel: {}", channelNumber);
js["Error"] = "Internal schedules error (1)";
return NULL;
}
const cSchedule *Schedule = Schedules->GetSchedule(channel->GetChannelID());
if (!Schedule)
{
- log->log("JSONServer", Log::ERR, "Could not find requested channel: %i", channelNumber);
+ logger->error("getevent: Could not find requested channel: {}", channelNumber);
js["Error"] = "Internal schedules error (2)";
return NULL;
}
if (!event)
{
- log->log("JSONServer", Log::ERR, "Could not find requested event: %i", eventID);
+ logger->error("getevent: Could not find requested event: {}", eventID);
js["Error"] = "Internal schedules error (3)";
return NULL;
}
bool jsonserver_timerlist(Json::Value& js)
{
- Log* log = Log::getInstance();
- log->log("JSONServer", Log::DEBUG, "timerlist");
+ std::shared_ptr<spd::logger> logger = spd::get("jsonserver_spdlog");
+ logger->debug("timerlist");
Json::Value jstimers(Json::arrayValue);
{
int channelNumber = timer->Channel()->Number();
int aroundTime = timer->StartTime() + 1;
- log->log("JSONServer", Log::DEBUG, "%i", aroundTime);
+ logger->debug("timerlist: {}", aroundTime);
const cEvent* eventAround = jsonserver_getEvent(js, channelNumber, 0, aroundTime);
if (eventAround)
bool jsonserver_timerset(Json::Value& js, const char* postData)
{
- Log* log = Log::getInstance();
- log->log("JSONServer", Log::DEBUG, "timerset");
+ std::shared_ptr<spd::logger> logger = spd::get("jsonserver_spdlog");
+ logger->debug("timerset");
char sTimerString[1024]; int mgv1 = mg_get_var(postData, strlen(postData), "timerstring", sTimerString, 1024);
if (mgv1 == -1)
{
- log->log("JSONServer", Log::ERR, "Could not get timerstring");
+ logger->error("timerset: Could not get timerstring");
js["Result"] = false;
js["Error"] = "Bad request parameters";
return true;
}
- log->log("JSONServer", Log::DEBUG, "'%s'", sTimerString);
+ logger->debug("timerset: '{}'", sTimerString);
cTimer *timer = new cTimer;
if (!timer->Parse(sTimerString))
{
bool jsonserver_timersetactive(Json::Value& js, const char* postData)
{
- Log* log = Log::getInstance();
- log->log("JSONServer", Log::DEBUG, "timersetactive");
+ std::shared_ptr<spd::logger> logger = spd::get("jsonserver_spdlog");
+ logger->debug("timersetactive");
char rChannelID[50]; int mgv1 = mg_get_var(postData, strlen(postData), "ChannelID", rChannelID, 50);
char rName[1024]; int mgv2 = mg_get_var(postData, strlen(postData), "Name", rName, 1024);
if ( (mgv1 == -1) || (mgv2 == -1) || (mgv3 == -1) || (mgv4 == -1) || (mgv5 == -1) || (mgv6 == -1))
{
- log->log("JSONServer", Log::ERR, "request mgvs: %i %i %i %i %i %i", mgv1, mgv2, mgv3, mgv4, mgv5, mgv6);
+ logger->error("timersetactive: request mgvs: {} {} {} {} {} {}", mgv1, mgv2, mgv3, mgv4, mgv5, mgv6);
js["Result"] = false;
js["Error"] = "Bad request parameters";
return true;
}
- log->log("JSONServer", Log::DEBUG, "timersetactive: %s %s:%s:%s:%s:%s", tNewActive, rChannelID, rName, rStartTime, rStopTime, rWeekDays);
+ logger->debug("timersetactive: {} {}:{}:{}:{}:{}", tNewActive, rChannelID, rName, rStartTime, rStopTime, rWeekDays);
cTimer* timer = jsonserver_findTimer(rChannelID, rName, rStartTime, rStopTime, rWeekDays);
if (timer)
bool jsonserver_timeredit(Json::Value& js, const char* postData)
{
- Log* log = Log::getInstance();
- log->log("JSONServer", Log::DEBUG, "timeredit");
+ std::shared_ptr<spd::logger> logger = spd::get("jsonserver_spdlog");
+ logger->debug("timeredit");
// Get all olds
char oldName[1024]; int mgv1 = mg_get_var(postData, strlen(postData), "OldName", oldName, 1024);
if ( (mgv1 == -1) || (mgv2 == -1) || (mgv3 == -1) || (mgv4 == -1) || (mgv5 == -1) || (mgv6 == -1) || (mgv7 == -1) || (mgv8 == -1) || (mgv9 == -1))
{
- log->log("JSONServer", Log::ERR, "request mgvs: %i %i %i %i %i %i %i %i %i", mgv1, mgv2, mgv3, mgv4, mgv5, mgv6, mgv7, mgv8, mgv9);
+ logger->error("timeredit: request mgvs: {} {} {} {} {} {} {} {} {}", mgv1, mgv2, mgv3, mgv4, mgv5, mgv6, mgv7, mgv8, mgv9);
js["Result"] = false;
js["Error"] = "Bad request parameters";
return true;
}
- log->log("JSONServer", Log::DEBUG, "timeredit: %s %s %s %s %s %s %s %s %s", oldName, oldActive, oldChannelID, oldDay, oldWeekDays, oldStartTime, oldStopTime, oldPriority, oldLifetime);
+ logger->debug("timeredit: {} {} {} {} {} {} {} {} {}", oldName, oldActive, oldChannelID, oldDay, oldWeekDays, oldStartTime, oldStopTime, oldPriority, oldLifetime);
// Get all news
if ( (mgv11 == -1) || (mgv12 == -1) || (mgv13 == -1) || (mgv14 == -1) || (mgv15 == -1) || (mgv16 == -1) || (mgv17 == -1) || (mgv18 == -1) || (mgv19 == -1))
{
- log->log("JSONServer", Log::ERR, "request mgvs: %i %i %i %i %i %i %i %i %i", mgv11, mgv12, mgv13, mgv14, mgv15, mgv16, mgv17, mgv18, mgv19);
+ logger->error("timeredit: request mgvs: {} {} {} {} {} {} {} {} {}", mgv11, mgv12, mgv13, mgv14, mgv15, mgv16, mgv17, mgv18, mgv19);
js["Result"] = false;
js["Error"] = "Bad request parameters";
return true;
}
- log->log("JSONServer", Log::DEBUG, "timeredit: %s %s %s %s %s %s %s %s %s", newName, newActive, newChannelID, newDay, newWeekDays, newStartTime, newStopTime, newPriority, newLifetime);
+ logger->debug("timeredit: {} {} {} {} {} {} {} {} {}", newName, newActive, newChannelID, newDay, newWeekDays, newStartTime, newStopTime, newPriority, newLifetime);
cTimer* timer = jsonserver_findTimer2(oldName, oldActive, oldChannelID, oldDay, oldWeekDays, oldStartTime, oldStopTime, oldPriority, oldLifetime);
timer->Flags(), newChannelID, *(cTimer::PrintDay(atoi(newDay), atoi(newWeekDays), true)),
nssf, nzsf, atoi(newPriority), atoi(newLifetime), newName, timer->Aux() ? timer->Aux() : "");
- log->log("JSONServer", Log::DEBUG, "timeredit new parse: %s", *parseBuffer);
+ logger->debug("timeredit: new parse: {}", *parseBuffer);
bool parseResult = timer->Parse(*parseBuffer);
if (!parseResult)
if (timer->HasFlags(tfActive) != !(strcasecmp(newActive, "true")))
{
- log->log("JSONServer", Log::DEBUG, "%i %i timeredit set new active: %s", timer->HasFlags(tfActive), !(strcasecmp(newActive, "true")), newActive);
+ logger->debug("timeredit: {} {} set new active: {}", timer->HasFlags(tfActive), !(strcasecmp(newActive, "true")), newActive);
if (strcasecmp(newActive, "true") == 0)
{
if (strcmp(timer->File(), newName))
{
- log->log("JSONServer", Log::DEBUG, "timeredit set new name: %s", newName);
+ logger->debug("timeredit: set new name: {}", newName);
timer->SetFile(newName);
}
if (timer->Day() != atoi(newDay))
{
- log->log("JSONServer", Log::DEBUG, "timeredit set new day: %s", newDay);
+ logger->debug("timeredit: set new day: {}", newDay);
timer->SetDay(atoi(newDay));
}
if (timer->WeekDays() != atoi(newWeekDays))
{
- log->log("JSONServer", Log::DEBUG, "timeredit set new week days: %s", newWeekDays);
+ logger->debug("timeredit: set new week days: {}", newWeekDays);
timer->SetWeekDays(atoi(newWeekDays));
}
if (timer->StartTime() != atoi(newStartTime))
{
- log->log("JSONServer", Log::DEBUG, "timeredit set new start time: %s", newStartTime);
+ logger->debug("timeredit: set new start time: {}", newStartTime);
time_t nstt = atoi(newStartTime);
struct tm nstm;
localtime_r(&nstt, &nstm);
if (timer->StopTime() != atoi(newStopTime))
{
- log->log("JSONServer", Log::DEBUG, "timeredit set new stop time: %s", newStopTime);
+ logger->debug("timeredit: set new stop time: {}", newStopTime);
time_t nztt = atoi(newStopTime);
struct tm nztm;
localtime_r(&nztt, &nztm);
if (timer->Priority() != atoi(newPriority))
{
- log->log("JSONServer", Log::DEBUG, "timeredit set new priority: %s", newPriority);
+ logger->debug("timeredit: set new priority: {}", newPriority);
timer->SetPriority(atoi(newPriority));
}
if (timer->Lifetime() != atoi(newLifetime))
{
- log->log("JSONServer", Log::DEBUG, "timeredit set new lifetime: %s", newLifetime);
+ logger->debug("timeredit: set new lifetime: {}", newLifetime);
timer->SetLifetime(atoi(newLifetime));
}
*/
cTimer* jsonserver_findTimer2(const char* rName, const char* rActive, const char* rChannelID, const char* rDay, const char* rWeekDays, const char* rStartTime, const char* rStopTime, const char* rPriority, const char* rLifetime)
{
- Log* log = Log::getInstance();
+ std::shared_ptr<spd::logger> logger = spd::get("jsonserver_spdlog");
int numTimers = Timers.Count();
cTimer* timer;
- log->log("JSONServer", Log::DEBUG, "findtimer2: %s %s %s %s %s %s %s %s %s", rName, rActive, rChannelID, rDay, rWeekDays, rStartTime, rStopTime, rPriority, rLifetime);
+ logger->debug("findtimer2: {} {} {} {} {} {} {} {} {}", rName, rActive, rChannelID, rDay, rWeekDays, rStartTime, rStopTime, rPriority, rLifetime);
for (int i = 0; i < numTimers; i++)
{
timer = Timers.Get(i);
- log->log("JSONServer", Log::DEBUG, "findtimer2 search: %s %i %s %i %i %i %i %i %i", timer->File(), timer->HasFlags(tfActive), (const char*)timer->Channel()->GetChannelID().ToString(),
+ logger->debug("findtimer2: search: {} {} {} {} {} {} {} {} {}", timer->File(), timer->HasFlags(tfActive), (const char*)timer->Channel()->GetChannelID().ToString(),
(int)timer->Day(), timer->WeekDays(), (int)timer->StartTime(), (int)timer->StopTime(),
timer->Priority(), timer->Lifetime());
&& (timer->Lifetime() == atoi(rLifetime))
)
{
- log->log("JSONServer", Log::DEBUG, "found");
+ logger->debug("findtimer2: found");
return timer;
}
}
- log->log("JSONServer", Log::DEBUG, "no timer found");
+ logger->debug("findtimer2: no timer found");
return NULL;
}
cTimer* jsonserver_findTimer(const char* rChannelID, const char* rName, const char* rStartTime, const char* rStopTime, const char* rWeekDays)
{
- Log* log = Log::getInstance();
+ std::shared_ptr<spd::logger> logger = spd::get("jsonserver_spdlog");
int numTimers = Timers.Count();
cTimer* timer;
{
timer = Timers.Get(i);
- log->log("JSONServer", Log::DEBUG, "findtimer current: %s", (const char*)timer->ToText(true));
- log->log("JSONServer", Log::DEBUG, "findtimer: %s", (const char*)timer->Channel()->GetChannelID().ToString());
- log->log("JSONServer", Log::DEBUG, "findtimer: %s", rChannelID);
- log->log("JSONServer", Log::DEBUG, "findtimer: %s", timer->File());
- log->log("JSONServer", Log::DEBUG, "findtimer: %s", rName);
- log->log("JSONServer", Log::DEBUG, "findtimer: %i", timer->StartTime());
- log->log("JSONServer", Log::DEBUG, "findtimer: %s", rStartTime);
- log->log("JSONServer", Log::DEBUG, "findtimer: %i", timer->StopTime());
- log->log("JSONServer", Log::DEBUG, "findtimer: %s", rStopTime);
- log->log("JSONServer", Log::DEBUG, "findtimer: %i", timer->WeekDays());
- log->log("JSONServer", Log::DEBUG, "findtimer: %s", rWeekDays);
+ logger->debug("findtimer: current: {}", (const char*)timer->ToText(true));
+ logger->debug("findtimer: {}", (const char*)timer->Channel()->GetChannelID().ToString());
+ logger->debug("findtimer: {}", rChannelID);
+ logger->debug("findtimer: {}", timer->File());
+ logger->debug("findtimer: {}", rName);
+ logger->debug("findtimer: {}", timer->StartTime());
+ logger->debug("findtimer: {}", rStartTime);
+ logger->debug("findtimer: {}", timer->StopTime());
+ logger->debug("findtimer: {}", rStopTime);
+ logger->debug("findtimer: {}", timer->WeekDays());
+ logger->debug("findtimer: {}", rWeekDays);
if (
(strcmp(timer->Channel()->GetChannelID().ToString(), rChannelID) == 0)
&& (timer->WeekDays() == atoi(rWeekDays))
)
{
- log->log("JSONServer", Log::DEBUG, "found");
+ logger->debug("findtimer: found");
return timer;
}
}
- log->log("JSONServer", Log::DEBUG, "no timer found");
+ logger->debug("findtimer: no timer found");
return NULL;
}
bool jsonserver_timerdel(Json::Value& js, const char* postData)
{
- Log* log = Log::getInstance();
- log->log("JSONServer", Log::DEBUG, "timerdel");
+ std::shared_ptr<spd::logger> logger = spd::get("jsonserver_spdlog");
+ logger->debug("timerdel");
char rChannelID[50]; int mgv1 = mg_get_var(postData, strlen(postData), "ChannelID", rChannelID, 50);
char rName[1024]; int mgv2 = mg_get_var(postData, strlen(postData), "Name", rName, 1024);
if ( (mgv1 == -1) || (mgv2 == -1) || (mgv3 == -1) || (mgv4 == -1) || (mgv5 == -1))
{
- log->log("JSONServer", Log::ERR, "request mgvs: %i %i %i %i %i", mgv1, mgv2, mgv3, mgv4, mgv5);
+ logger->error("timerdel: request mgvs: {} {} {} {} {}", mgv1, mgv2, mgv3, mgv4, mgv5);
js["Result"] = false;
js["Error"] = "Bad request parameters";
return true;
}
- log->log("JSONServer", Log::DEBUG, "timerdel: %s:%s:%s:%s:%s", rChannelID, rName, rStartTime, rStopTime, rWeekDays);
+ logger->debug("timerdel: {}:{}:{}:{}:{}", rChannelID, rName, rStartTime, rStopTime, rWeekDays);
if (Timers.BeingEdited())
{
- log->log("JSONServer", Log::ERR, "Unable to delete timer - timers being edited at VDR");
+ logger->debug("timerdel: Unable to delete timer - timers being edited at VDR");
js["Result"] = false;
js["Error"] = "Timers being edited at VDR";
return true;
{
if (timer->Recording())
{
- log->log("JSONServer", Log::ERR, "Unable to delete timer - timer is running");
+ logger->debug("timerdel: Unable to delete timer - timer is running");
js["Result"] = false;
js["Error"] = "Timer is running";
return true;
bool jsonserver_timerisrecording(Json::Value& js, const char* postData)
{
- Log* log = Log::getInstance();
- log->log("JSONServer", Log::DEBUG, "timerisrecording");
+ std::shared_ptr<spd::logger> logger = spd::get("jsonserver_spdlog");
+ logger->debug("timerisrecording");
char rChannelID[50]; int mgv1 = mg_get_var(postData, strlen(postData), "ChannelID", rChannelID, 50);
char rName[1024]; int mgv2 = mg_get_var(postData, strlen(postData), "Name", rName, 1024);
if ( (mgv1 == -1) || (mgv2 == -1) || (mgv3 == -1) || (mgv4 == -1) || (mgv5 == -1))
{
- log->log("JSONServer", Log::ERR, "request mgvs: %i %i %i %i %i", mgv1, mgv2, mgv3, mgv4, mgv5);
+ logger->error("timerisrecording: request mgvs: {} {} {} {} {}", mgv1, mgv2, mgv3, mgv4, mgv5);
js["Result"] = false;
js["Error"] = "Bad request parameters";
return true;
}
- log->log("JSONServer", Log::DEBUG, "timerisrecording: %s:%s:%s:%s:%s", rChannelID, rName, rStartTime, rStopTime, rWeekDays);
+ logger->debug("timerisrecording: {}:{}:{}:{}:{}", rChannelID, rName, rStartTime, rStopTime, rWeekDays);
cTimer* timer = jsonserver_findTimer(rChannelID, rName, rStartTime, rStopTime, rWeekDays);
if (timer)
bool jsonserver_tunersstatus(Json::Value& js, const char* postData)
{
- Log* log = Log::getInstance();
- log->log("JSONServer", Log::DEBUG, "tunerstatus");
+ std::shared_ptr<spd::logger> logger = spd::get("jsonserver_spdlog");
+ logger->debug("tunerstatus");
js["NumDevices"] = cDevice::NumDevices();
bool jsonserver_epgsearchsame(Json::Value& js, const char* postData)
{
- Log* log = Log::getInstance();
- log->log("JSONServer", Log::DEBUG, "epgsearchsame");
+ std::shared_ptr<spd::logger> logger = spd::get("jsonserver_spdlog");
+ logger->debug("epgsearchsame");
char sAtTime[15]; int mgv1 = mg_get_var(postData, strlen(postData), "time", sAtTime, 15);
char sTitle[1024]; int mgv2 = mg_get_var(postData, strlen(postData), "title", sTitle, 1024);
if ( (mgv1 == -1) || (mgv2 == -1) )
{
- log->log("JSONServer", Log::ERR, "request mgvs: %i %i", mgv1, mgv2);
+ logger->error("epgsearchsame: request mgvs: {} {}", mgv1, mgv2);
js["Result"] = false;
js["Error"] = "Bad request parameters";
return true;
}
int atTime = atoi(sAtTime);
- log->log("JSONServer", Log::DEBUG, "request time: %i, title: %s", atTime, sTitle);
+ logger->debug("epgsearchsame: request time: {}, title: {}", atTime, sTitle);
bool jsonserver_epgdownload(Json::Value& js, const char* postData)
{
- Log* log = Log::getInstance();
- log->log("JSONServer", Log::DEBUG, "channelschedule '%s'", postData);
+ std::shared_ptr<spd::logger> logger = spd::get("jsonserver_spdlog");
+ logger->debug("epgdownload: '{}'", postData);
cSchedulesLock MutexLock;
const cSchedules *Schedules = cSchedules::Schedules(MutexLock);
if (!Schedules)
{
- log->log("JSONServer", Log::ERR, "Could not get Schedules object");
+ logger->error("epgdownload: Could not get Schedules object");
js["Result"] = false;
js["Error"] = "Internal schedules error (1)";
return true;
bool jsonserver_epgsearch(Json::Value& js, const char* postData)
{
- Log* log = Log::getInstance();
- log->log("JSONServer", Log::DEBUG, "epgsearch '%s'", postData);
+ std::shared_ptr<spd::logger> logger = spd::get("jsonserver_spdlog");
+ logger->debug("epgsearch: '{}'", postData);
char searchfor[1024]; int mgv1 = mg_get_var(postData, strlen(postData), "searchfor", searchfor, 1024);
if (mgv1 == -1)
{
- log->log("JSONServer", Log::ERR, "request mgvs: %i", mgv1);
+ logger->error("epgsearch: request mgvs: {}", mgv1);
js["Result"] = false;
js["Error"] = "Bad request parameters";
return true;
}
- log->log("JSONServer", Log::DEBUG, "search for: %s", searchfor);
+ logger->debug("epgsearch: search for: {}", searchfor);
cSchedulesLock MutexLock;
const cSchedules *Schedules = cSchedules::Schedules(MutexLock);
if (!Schedules)
{
- log->log("JSONServer", Log::ERR, "Could not get Schedules object");
+ logger->error("epgsearch: Could not get Schedules object");
js["Result"] = false;
js["Error"] = "Internal schedules error (1)";
return true;