1
0
mirror of https://github.com/Ylianst/MeshAgent synced 2026-01-07 19:13:20 +00:00

1. ILibAppendStringToDiskEx2: Added max size capability

2. Added ability to specify max error log size
3. Added MeshAgent.maxLogSize readonly property
4. Removed dead code from input.c
This commit is contained in:
Bryan Roe
2022-01-06 16:40:40 -08:00
parent 0282cee46d
commit 1f82c971ba
5 changed files with 40 additions and 6 deletions

View File

@@ -24,7 +24,6 @@ limitations under the License.
#include "microstack/ILibCrypto.h"
#include "meshcore/meshdefines.h"
extern void ILibAppendStringToDiskEx(char *FileName, char *data, int dataLen);
extern ILibQueue gPendingPackets;
extern int gRemoteMouseRenderDefault;
extern int gRemoteMouseMoved;

View File

@@ -1874,6 +1874,8 @@ void ILibDuktape_MeshAgent_PUSH(duk_context *ctx, void *chain)
ILibDuktape_CreateEventWithGetter_SetEnumerable(ctx, "ServerInfo", ILibDuktape_MeshAgent_ServerInfo,1);
duk_push_number(ctx, (duk_double_t)ILibCriticalLog_MaxSize);
ILibDuktape_CreateReadonlyProperty_SetEnumerable(ctx, "maxLogSize", 1);
ILibDuktape_CreateEventWithGetter_SetEnumerable(ctx, "isControlChannelConnected", ILibDuktape_MeshAgent_isControlChannelConnected,1);
ILibDuktape_EventEmitter_AddHook(emitter, "Ready", ILibDuktape_MeshAgent_Ready);
@@ -4595,6 +4597,16 @@ int MeshAgent_AgentMode(MeshAgentHostContainer *agentHost, int paramLen, char **
}
}
if(ILibSimpleDataStore_Get(agentHost->masterDb, "maxLogSize", NULL, 0) != 0)
{
int len = ILibSimpleDataStore_Get(agentHost->masterDb, "maxLogSize", ILibScratchPad, sizeof(ILibScratchPad));
if (len < sizeof(ILibScratchPad))
{
uint64_t val = 0;
if (ILib_atoi_uint64(&val, ILibScratchPad, len) == 0) { ILibCriticalLog_MaxSize = val; }
}
}
#ifdef WIN32
if (agentHost->noCertStore == 0) { agentHost->noCertStore = ILibSimpleDataStore_Get(agentHost->masterDb, "nocertstore", NULL, 0); }
#endif

View File

@@ -283,7 +283,10 @@ forceUpdate: If set, will cause the agent to perform a self-update on next st
ignoreProxyFile: If set, will cause the agent to ignore any proxy settings
logUpdate: If set, will cause the agent to log self-update status
jsDebugPort: Specify a JS Debugger Port
maxLogSize: Specifies the maximum size of the error log file.
nocertstore: If set on Windows, will force the Agent to use OpenSSL instead of WinCrypto for cert generation/storage.
readonly: If set, forces the agent to open the database in readonly mode
readmsh: If set while db is in readonly mode, it will cache the local msh file in the readonly db
remoteMouseRender: If set, will always render the remote mouse cursor for KVM
showModuleNames: If set, will display the name of modules when they are loaded for the first time
skipmaccheck: If set, the agent will not change NodeID on local mac address changes.

View File

@@ -9424,7 +9424,7 @@ void ILibWriteStringToDiskEx(char *FileName, char *data, int dataLen)
fclose(SourceFile);
}
}
void ILibAppendStringToDiskEx(char *FileName, char *data, int dataLen)
void ILibAppendStringToDiskEx2(char *FileName, char *data, int dataLen, uint64_t maxSize)
{
FILE *SourceFile = NULL;
@@ -9433,10 +9433,25 @@ void ILibAppendStringToDiskEx(char *FileName, char *data, int dataLen)
#else
SourceFile = fopen(FileName, "ab");
#endif
if (SourceFile != NULL)
{
if (fwrite(data, sizeof(char), dataLen, SourceFile)) {}
if (maxSize != 0)
{
fseek(SourceFile, 0, SEEK_END);
#ifdef WIN32
if ((uint64_t)_ftelli64(SourceFile) < maxSize)
#else
if((uint64_t)ftell(SourceFile) < maxSize)
#endif
{
if (fwrite(data, sizeof(char), dataLen, SourceFile)) {}
}
}
else
{
if (fwrite(data, sizeof(char), dataLen, SourceFile)) {}
}
fclose(SourceFile);
}
}
@@ -10752,6 +10767,8 @@ void ILib6to4(struct sockaddr* addr)
// Log a critical error to file
char ILibCriticalLogBuffer[sizeof(ILibScratchPad)];
uint64_t ILibCriticalLog_MaxSize = ILIBCRITICALLOG_DEFAULT_MAXSIZE;
char* ILibCriticalLog (const char* msg, const char* file, int line, int user1, int user2)
{
char timeStamp[32];
@@ -10764,7 +10781,7 @@ char* ILibCriticalLog (const char* msg, const char* file, int line, int user1, i
{
len = sprintf_s(ILibCriticalLogBuffer, sizeof(ILibCriticalLogBuffer), "\r\n[%s] [%s] %s", timeStamp, g_ILibCrashID_HASH != NULL ? g_ILibCrashID_HASH : "", msg);
}
if (len > 0 && len < (int)sizeof(ILibCriticalLogBuffer) && ILibCriticalLogFilename != NULL) ILibAppendStringToDiskEx(ILibCriticalLogFilename, ILibCriticalLogBuffer, len);
if (len > 0 && len < (int)sizeof(ILibCriticalLogBuffer) && ILibCriticalLogFilename != NULL) ILibAppendStringToDiskEx2(ILibCriticalLogFilename, ILibCriticalLogBuffer, len, ILibCriticalLog_MaxSize);
if (file != NULL)
{
ILibRemoteLogging_printf(ILibChainGetLogger(gILibChain), ILibRemoteLogging_Modules_Microstack_Generic, ILibRemoteLogging_Flags_VerbosityLevel_1, "%s:%d (%d,%d) %s", file, line, user1, user2, msg);

View File

@@ -930,11 +930,12 @@ int ILibIsRunningOnChainThread(void* chain);
char *ILibReadFileFromDisk(char *FileName);
int ILibReadFileFromDiskEx(char **Target, char *FileName);
void ILibWriteStringToDisk(char *FileName, char *data);
void ILibAppendStringToDiskEx(char *FileName, char *data, int dataLen);
void ILibAppendStringToDiskEx2(char *FileName, char *data, int dataLen, uint64_t maxSize);
void ILibWriteStringToDiskEx(char *FileName, char *data, int dataLen);
void ILibDeleteFileFromDisk(char *FileName);
void ILibGetDiskFreeSpace(void *i64FreeBytesToCaller, void *i64TotalBytes);
int ILibFile_CopyTo(char *source, char *destination);
#define ILibAppendStringToDiskEx(FileName, data, dataLen) ILibAppendStringToDiskEx2(FileName, data, dataLen, 0)
/*! \defgroup StackGroup Stack
\ingroup DataStructures
@@ -1594,6 +1595,8 @@ int ILibIsRunningOnChainThread(void* chain);
char* ILib_POSIX_InstallCrashHandler(char *exename);
#endif
#define ILIBCRITICALLOG_DEFAULT_MAXSIZE 8388608
extern uint64_t ILibCriticalLog_MaxSize;
#define ILIBCRITICALEXITMSG(code, msg) {printf("%s", ILibCriticalLog(msg, __FILE__, __LINE__, 0, 0)); exit(code);}
#define ILIBLOGMESSSAGE(msg) ILibCriticalLog(msg, __FILE__, __LINE__, 0, 0)
void ILIBLOGMESSAGEX(char *format, ...);