// FUNCTION: sys_LoggingStart(PA_PluginParameters params) // // PURPOSE: Start logging Win32API commands // // COMMENTS: // // DATE: 7/11/16 Win-20 void sys_LoggingStart(PA_PluginParameters params) { LONG returnValue = 0; // WJF 7/11/16 Win-20 PA_GetTextParameter(params, 1, szLogsPath); lNumDays = PA_GetLongParameter(params, 2); returnValue = logOpenFile(); PA_ReturnLong(params, returnValue); // WJF 7/11/16 Win-20 }
static int logOpen (LOGGER *p_logger) { int retval = SUCCESS; if (p_logger == NULL) { fprintf (stderr, "ERROR: %s - NULL logger provided\n", __FUNCTION__); return ERROR; } if (!(p_logger->optionMask & NODE_IN_USE)) { fprintf (stderr, "ERROR: %s - Logger not in use\n", __FUNCTION__); return ERROR; } switch (p_logger->facility) { case F_FILE: retval = logOpenFile (p_logger); break; case F_DB: retval = logOpenDB (p_logger); break; case F_SOCKET: retval = logOpenSocket (p_logger); break; case F_PIPE: retval = logOpenPipe (p_logger); break; case F_CONSOLE: retval = logOpenConsole (p_logger); break; case F_PRINTER: retval = logOpenPrinter (p_logger); break; default: /* Shouldn't ever get here... */ break; } return retval; }
// Write to the log file void writeLogFile(const char * szLog){ DWORD dwPos = 0; DWORD dwBytesWritten = 0; SYSTEMTIME lt; // WJF 7/11/16 Win-20 localTime -> lt CHAR szOutput[128]; // WJF 7/11/16 Win-20 1024 -> 128 DWORD logLength = 0; // WJF 6/30/16 Win-21 size_t -> DWORD LPSTR dateString = NULL; // WJF 7/11/16 Win-20 CHAR dateComp[16]; // WJF 7/11/16 Win-20 if (bLogIsOpen) { // WJF 7/8/16 Win-20 Don't bother doing this if the log isn't open GetLocalTime(<); sprintf_s(dateComp, 16, "%04u%02u%02u", lt.wYear, lt.wMonth, lt.wDay); // WJF 7/11/16 Win-20 If the current date doesn't match the date of the open log file, close it and make a new one if (strcmp(dateComp, dateOpened) != 0) { logCloseFile(); logOpenFile(); } if (bLogIsOpen) { // WJF 7/11/16 Win-20 This might change if the day rolled over // MM/DD/YYYY H:M:S:MS - // WJF 7/11/16 Win-20 Rewrote to be simpler sprintf_s(szOutput, 128, "%02u/%02u/%04u %02u:%02u:%02u:%03u - ", lt.wMonth, lt.wDay, lt.wYear, lt.wHour, lt.wMinute, lt.wSecond, lt.wMilliseconds); strcat_s(szOutput, 128, szLog); logLength = (DWORD)strlen(szOutput); // WJF 6/30/16 Win-21 Cast to DWORD //if ((hLogFile != INVALID_HANDLE_VALUE) && (bLogIsOpen)) { // WJF 7/8/16 Win-20 Removed unneccessary check dwPos = SetFilePointer(hLogFile, 0, NULL, FILE_END); LockFile(hLogFile, dwPos, 0, logLength, 0); WriteFile(hLogFile, szOutput, logLength, &dwBytesWritten, NULL); UnlockFile(hLogFile, dwPos, 0, logLength, 0); // } } } }
void paraNode() /* paraNode - a net server. */ { char *line; char *command; struct sockaddr_in sai; /* We have to know who we are... */ hostName = getMachine(); initRandom(); getTicksToHundreths(); /* log init */ if (optionExists("log")) logOpenFile("paraNode", optionVal("log", NULL)); else logOpenSyslog("paraNode", optionVal("logFacility", NULL)); logSetMinPriority(optionVal("logMinPriority", "info")); logInfo("starting paraNode on %s", hostName); /* Make job lists. */ jobsRunning = newDlList(); jobsFinished = newDlList(); /* Set up socket and self to listen to it. */ ZeroVar(&sai); sai.sin_family = AF_INET; sai.sin_port = htons(paraNodePort); sai.sin_addr.s_addr = INADDR_ANY; mainRudp = rudpMustOpenBound(&sai); mainRudp->maxRetries = 12; /* Event loop. */ findNow(); for (;;) { /* Get next incoming message and optionally check to make * sure that it's from a host we trust, and check signature * on first bit of incoming data. */ if (pmReceive(&pmIn, mainRudp)) { findNow(); if (hubName == NULL || ntohl(pmIn.ipAddress.sin_addr.s_addr) == hubIp || ntohl(pmIn.ipAddress.sin_addr.s_addr) == localIp) { /* Host and signature look ok, read a string and * parse out first word as command. */ line = pmIn.data; logDebug("message from %s: \"%s\"", paraFormatIp(ntohl(pmIn.ipAddress.sin_addr.s_addr)), line); command = nextWord(&line); if (command != NULL) { if (sameString("quit", command)) break; else if (sameString("run", command)) doRun(line, &pmIn.ipAddress); else if (sameString("jobDone", command)) jobDone(line); else if (sameString("status", command)) doStatus(); else if (sameString("kill", command)) doKill(line); else if (sameString("check", command)) doCheck(line, &pmIn.ipAddress); else if (sameString("resurrect", command)) doResurrect(line, &pmIn.ipAddress); else if (sameString("listJobs", command)) listJobs(); else if (sameString("fetch", command)) doFetch(line); else logWarn("invalid command: \"%s\"", command); } logDebug("done command"); } else { logWarn("command from unauthorized host %s", paraFormatIp(ntohl(pmIn.ipAddress.sin_addr.s_addr))); } } } rudpClose(&mainRudp); }