/* -------------------------------------------------------------------- */ void storeLog(void) { /* make log configuration equal to our environment */ setlogconfig(); putLog(&logBuf, thisLog); }
void OutputDebugInfo(const char *pFileName, const wchar_t *pFormat, ...) { DWORD dwLastError = GetLastError(); va_list ArgList; va_start(ArgList, pFormat); wchar_t Buffer[1024]; int WideLen = _vsnwprintf_s(Buffer, 1024, _TRUNCATE, pFormat, ArgList); if (WideLen < 0) { Buffer[1023] = 0; WideLen = (int) wcslen(Buffer); } va_end(ArgList); char Buffer2[2048]; int Length = WideCharToMultiByte(CP_ACP, 0, Buffer, WideLen, NULL, 0, NULL, NULL); _ASSERTE(Length < sizeof(Buffer2)); WideCharToMultiByte(CP_ACP, 0, Buffer, WideLen, Buffer2, Length, NULL, NULL); Buffer2[Length] = 0; putLog(pFileName, Buffer2); SetLastError(dwLastError); }
void OutputDebugInfo(const char *pFileName, const char *pFormat, ...) { va_list ArgList; va_start(ArgList, pFormat); char Buffer[1024] = { 0 }; int Ret = _vsnprintf_s(Buffer, 1024, _TRUNCATE, pFormat, ArgList); // Format 后字符串最大长度为 1023 //int Ret = _vsnprintf(Buffer, 1024, /*_TRUNCATE,*/ pFormat, ArgList); if (Ret < 0) Buffer[1023] = '\0'; va_end(ArgList); putLog(pFileName, Buffer); }
/* -------------------------------------------------------------------- */ void killuser(void) { label who; int logno; getNormStr("who", who, NAMESIZE, ECHO); logno = findPerson(who, &lBuf); if (logno == ERROR || !strlen(who)) { mPrintf("No \'%s\' known. \n ", who); return; } if (strcmpi(logBuf.lbname, who) == SAMESTRING) { mPrintf("Cannot kill your own account, log out first.\n"); return; } if (!getYesNo(confirm, 0)) return; mPrintf( "\'%s\' terminated.\n ", who); /* trap it */ sprintf(msgBuf->mbtext, "User %s terminated", who); trap(msgBuf->mbtext, T_SYSOP); lBuf.lbname[0] = '\0'; lBuf.lbin[ 0] = '\0'; lBuf.lbpw[ 0] = '\0'; lBuf.lbflags.L_INUSE = FALSE; lBuf.lbflags.PERMANENT = FALSE; putLog(&lBuf, logno); }
void OutputDebugHex(const char *pFileName, const char *pHeader, const unsigned char *pData, unsigned int Len) { DWORD dwLastError = GetLastError(); const int LineLen = 16; char ResultBuffer[MAX_HEX_LEN * 3 + MAX_HEX_LEN / LineLen * 2 + 300]; if (pData == NULL) return; if (Len > MAX_HEX_LEN) { _snprintf_s(ResultBuffer, ARRAY_SIZE(ResultBuffer), _TRUNCATE, "%s Len=%d (RealLen=%d, too long)\r\n", pHeader, MAX_HEX_LEN, Len); Len = MAX_HEX_LEN; } else { _snprintf_s(ResultBuffer, ARRAY_SIZE(ResultBuffer), _TRUNCATE, "%s Len=%d\r\n", pHeader, Len); } char *pBuf = ResultBuffer + strlen(ResultBuffer); for (unsigned int i = 0; i < Len; i++) { _snprintf_s(pBuf, 4, _TRUNCATE, " %02X", (BYTE) pData[i]); pBuf += 3; if (((i + 1) % LineLen) == 0 && i != Len - 1) { strncpy_s(pBuf, 3, "\r\n", 2); pBuf += 2; } } *pBuf = 0; putLog(pFileName, ResultBuffer); SetLastError(dwLastError); }
/* -------------------------------------------------------------------- */ void groupfunc(void) { label who; label groupname; int groupslot, logNo; getString("group", groupname, NAMESIZE, FALSE, ECHO, ""); groupslot = partialgroup(groupname); if (groupslot != ERROR) { if ( grpBuf.group[groupslot].lockout && !sysop ) groupslot = ERROR; if( grpBuf.group[groupslot].hidden && !ingroup(groupslot) && !onConsole ) groupslot = ERROR; } if ( groupslot == ERROR || !strlen(groupname) ) { mPrintf("\n No such group."); return; } getNormStr("who", who, NAMESIZE, ECHO); logNo = findPerson(who, &lBuf); if (logNo == ERROR || !strlen(who) ) { mPrintf("No \'%s\' known. \n ", who); return; } if (lBuf.groups[groupslot] == grpBuf.group[groupslot].groupgen) { if (getYesNo("Remove from group", 0)) { lBuf.groups[groupslot] = (uchar)((grpBuf.group[groupslot].groupgen + (MAXGROUPGEN - 1)) % MAXGROUPGEN); sprintf(msgBuf->mbtext, "%s kicked out of group %s by %s", lBuf.lbname, grpBuf.group[groupslot].groupname, logBuf.lbname ); trap(msgBuf->mbtext, T_AIDE); aideMessage(); } } else if (getYesNo("Add to group", 0)) { lBuf.groups[groupslot] = grpBuf.group[groupslot].groupgen; sprintf(msgBuf->mbtext, "%s added to group %s by %s", lBuf.lbname, grpBuf.group[groupslot].groupname, logBuf.lbname ); trap(msgBuf->mbtext, T_AIDE); aideMessage(); } putLog(&lBuf, logNo); /* see if it is us: */ if (loggedIn && strcmpi(logBuf.lbname, who) == SAMESTRING) { logBuf.groups[groupslot] = lBuf.groups[groupslot]; } }
/* -------------------------------------------------------------------- */ void globaluser(void) { label who; int groupslot, yn, logNo; getNormStr("who", who, NAMESIZE, ECHO); logNo = findPerson(who, &lBuf); if (logNo == ERROR || !strlen(who) ) { mPrintf("No \'%s\' known. \n ", who); return; } for(groupslot=0; groupslot < MAXGROUPS; groupslot++) { if (grpBuf.group[groupslot].g_inuse && ( !grpBuf.group[groupslot].lockout || sysop ) && ( !grpBuf.group[groupslot].hidden || ingroup(groupslot) ) ) { mPrintf(" %s", grpBuf.group[groupslot].groupname); if (lBuf.groups[groupslot] == grpBuf.group[groupslot].groupgen) { if ((yn = getYesNo("Remove from group", 3)) != 0 /*NULL*/) { if (yn == 2) { SaveAideMess(); return; } lBuf.groups[groupslot] = (uchar)((grpBuf.group[groupslot].groupgen + (MAXGROUPGEN - 1)) % MAXGROUPGEN); sprintf(msgBuf->mbtext, "%s kicked out of group %s by %s", lBuf.lbname, grpBuf.group[groupslot].groupname, logBuf.lbname ); trap(msgBuf->mbtext, T_AIDE); amPrintf(" %s\n", msgBuf->mbtext); } } else { if ((yn = getYesNo("Add to group", 3)) != /* NULL */ 0) { if (yn == 2) { SaveAideMess(); return; } lBuf.groups[groupslot] = grpBuf.group[groupslot].groupgen; sprintf(msgBuf->mbtext, "%s added to group %s by %s", lBuf.lbname, grpBuf.group[groupslot].groupname, logBuf.lbname ); trap(msgBuf->mbtext, T_SYSOP); amPrintf(" %s\n",msgBuf->mbtext); } } putLog(&lBuf, logNo); /* see if it is us: */ if (loggedIn && strcmpi(logBuf.lbname, who) == SAMESTRING) { logBuf.groups[groupslot] = lBuf.groups[groupslot]; } } } SaveAideMess(); }
/* -------------------------------------------------------------------- */ void globalgroup(void) { label groupname; int groupslot, i, yn, add, logNo; mPrintf("(A/R/[B]): "); switch (toupper( iCharNE() )) { case 'A': mPrintf("Add\n "); add = 1; break; case 'R': mPrintf("Remove\n "); add = 2; break; case '?': tutorial("grpglob.mnu"); return; case 'B': case 10: case 13: default: mPrintf("Both\n "); add = 0; break; } getString("group", groupname, NAMESIZE, FALSE, ECHO, ""); groupslot = partialgroup(groupname); if ( grpBuf.group[groupslot].hidden && !ingroup(groupslot) ) groupslot = ERROR; if ( groupslot == ERROR || !strlen(groupname) ) { mPrintf("\n No such group."); return; } if ( grpBuf.group[groupslot].lockout && !sysop ) { mPrintf("\n Group is locked."); return; } for (i = 0; i < cfg.MAXLOGTAB; i++) { if (logTab[i].ltpwhash != 0 && logTab[i].ltnmhash !=0) { logNo=logTab[i].ltlogSlot; getLog(&lBuf, logNo); /* Get out.. */ outFlag = OUTOK; if (mAbort(FALSE)) break; outFlag = IMPERVIOUS; if (lBuf.groups[groupslot] == grpBuf.group[groupslot].groupgen) { if(add == 2 || add == 0) { mPrintf(" 3%s0", lBuf.lbname); yn=getYesNo("Remove from group", 0+3); if (yn == 2) { SaveAideMess(); return; } if (yn) { lBuf.groups[groupslot] = (uchar)((grpBuf.group[groupslot].groupgen + (MAXGROUPGEN - 1)) % MAXGROUPGEN); sprintf(msgBuf->mbtext, "%s kicked out of group %s by %s", lBuf.lbname, grpBuf.group[groupslot].groupname, logBuf.lbname ); trap(msgBuf->mbtext, T_SYSOP); amPrintf(" %s\n", msgBuf->mbtext); } } } else { if (add == 0 || add == 1) { mPrintf(" 3%s0", lBuf.lbname); yn=getYesNo("Add to group", 0+3); if (yn == 2) { SaveAideMess(); return; } if (yn) { lBuf.groups[groupslot] = grpBuf.group[groupslot].groupgen; sprintf(msgBuf->mbtext, "%s added to group %s by %s", lBuf.lbname, grpBuf.group[groupslot].groupname, logBuf.lbname ); trap(msgBuf->mbtext, T_AIDE); amPrintf(" %s\n",msgBuf->mbtext); } } } putLog(&lBuf, logNo); /* see if it is us: */ if (loggedIn && strcmpi(logBuf.lbname, lBuf.lbname) == SAMESTRING) { logBuf.groups[groupslot] = lBuf.groups[groupslot]; } } } SaveAideMess(); }