📄 mpdleft.cpp
字号:
} else { // no host provided, send fail result GetStringOpt(p->pszIn, "src", pszHost); _snprintf(pszStr, MAX_CMD_LENGTH, "result src=%s dest=%s sock=%s result=-1", g_pszHost, pszHost, pszBfd); ContextWriteString(g_pRightContext, pszStr); } } else if (strnicmp(p->pszIn, "stopforwarder ", 14) == 0) { char pszBfd[10]; GetStringOpt(p->pszIn, "sock", pszBfd); if (GetStringOpt(p->pszIn, "host", pszHost)) { if ((stricmp(pszHost, g_pszHost) == 0) || (strcmp(pszHost, g_pszIP) == 0)) { char pszPort[10]; char pszAbort[10]; bool bAbort = true; if (GetStringOpt(p->pszIn, "port", pszPort)) { if (GetStringOpt(p->pszIn, "abort", pszAbort)) bAbort = (stricmp(pszAbort, "yes") == 0); StopIOForwarder(atoi(pszPort), !bAbort); } } else { GetStringOpt(p->pszIn, "src", pszHost); if ((stricmp(pszHost, g_pszHost) == 0) || (strcmp(pszHost, g_pszIP) == 0)) { char pszTry[10]; char pszPort[10]; char pszAbort[10]; bool bAbort = true; if (GetStringOpt(p->pszIn, "port", pszPort)) { if (GetStringOpt(p->pszIn, "abort", pszAbort)) bAbort = (stricmp(pszAbort, "yes") == 0); if (!GetStringOpt(p->pszIn, "try", pszTry)) { GetStringOpt(p->pszIn, "host", pszHost); GetIPString(pszHost, pszHost); _snprintf(pszStr, MAX_CMD_LENGTH, "stopforwarder src=%s host=%s sock=%s try=2 port=%s", g_pszHost, pszHost, pszBfd, pszPort); if (!bAbort) { strncat(pszStr, " abort=no", MAX_CMD_LENGTH - 1 - strlen(pszStr)); } ContextWriteString(g_pRightContext, pszStr); } } } else { // forward command ContextWriteString(g_pRightContext, p->pszIn); } } } } else if (strnicmp(p->pszIn, "forwarders ", 11) == 0) { if (GetStringOpt(p->pszIn, "src", pszHost)) { if ((strcmp(pszHost, g_pszHost) == 0) || (strcmp(pszHost, g_pszIP) == 0)) { char pszBFD[10]; MPD_Context *pContext; if (GetStringOpt(p->pszIn, "result", pszStr)) { // Chop off the trailing carriage return int nLength = strlen(pszStr); if (nLength > 2) { if (pszStr[nLength-1] == '\r' || pszStr[nLength-1] == '\n') pszStr[nLength-1] = '\0'; if (pszStr[nLength-2] == '\r' || pszStr[nLength-2] == '\n') pszStr[nLength-2] = '\0'; } } GetStringOpt(p->pszIn, "sock", pszBFD); pContext = GetContext(atoi(pszBFD)); if (pContext != NULL) { ContextWriteString(pContext, pszStr); } else { err_printf("console context not found\n"); } } else { strncpy(pszStr, p->pszIn, MAX_CMD_LENGTH); pszStr[MAX_CMD_LENGTH-1] = '\0'; ConcatenateForwardersToString(pszStr); ContextWriteString(g_pRightContext, pszStr); } } else { err_printf("invalid forwarders command '%s' read\n", p->pszIn); } } else if (strnicmp(p->pszIn, "killforwarders ", 15) == 0) { if (GetStringOpt(p->pszIn, "src", pszHost)) { AbortAllForwarders(); if ((strcmp(pszHost, g_pszHost) != 0) && (strcmp(pszHost, g_pszIP) != 0)) { ContextWriteString(g_pRightContext, p->pszIn); } } else { err_printf("invalid killforwarders command '%s' read\n", p->pszIn); } } else if (strnicmp(p->pszIn, "createtmpfile ", 14) == 0) { char pszBfd[10]; bool bDelete = true; GetStringOpt(p->pszIn, "sock", pszBfd); if (GetStringOpt(p->pszIn, "delete", pszStr)) { bDelete = (stricmp(pszStr, "no") != 0); } if (GetStringOpt(p->pszIn, "host", pszHost)) { if ((stricmp(pszHost, g_pszHost) == 0) || (strcmp(pszHost, g_pszIP) == 0)) { char pszTemp[MAX_PATH]; CreateTmpFile(pszTemp, bDelete); GetStringOpt(p->pszIn, "src", pszHost); _snprintf(pszStr, MAX_CMD_LENGTH, "result src=%s dest=%s sock=%s result=%s", g_pszHost, pszHost, pszBfd, pszTemp); ContextWriteString(g_pRightContext, pszStr); } else { GetStringOpt(p->pszIn, "src", pszHost); if ((stricmp(pszHost, g_pszHost) == 0) || (strcmp(pszHost, g_pszIP) == 0)) { char pszTry[10]; if (!GetStringOpt(p->pszIn, "try", pszTry)) { GetStringOpt(p->pszIn, "host", pszHost); GetIPString(pszHost, pszHost); _snprintf(pszStr, MAX_CMD_LENGTH, "createtmpfile src=%s host=%s sock=%s try=2", g_pszHost, pszHost, pszBfd); ContextWriteString(g_pRightContext, pszStr); } else { // command went full circle, send fail result _snprintf(pszStr, MAX_CMD_LENGTH, "result src=%s dest=%s sock=%s result=FAIL - bad hostname", g_pszHost, pszHost, pszBfd); ContextWriteString(g_pRightContext, pszStr); } } else { // forward command ContextWriteString(g_pRightContext, p->pszIn); } } } else { // no host provided, send fail result GetStringOpt(p->pszIn, "src", pszHost); _snprintf(pszStr, MAX_CMD_LENGTH, "result src=%s dest=%s sock=%s result=FAIL - no host provided", g_pszHost, pszHost, pszBfd); ContextWriteString(g_pRightContext, pszStr); } } else if (strnicmp(p->pszIn, "deletetmpfile ", 14) == 0) { char pszBfd[10]; GetStringOpt(p->pszIn, "sock", pszBfd); if (GetStringOpt(p->pszIn, "host", pszHost)) { if ((stricmp(pszHost, g_pszHost) == 0) || (strcmp(pszHost, g_pszIP) == 0)) { char pszTemp[MAX_PATH]; if (GetStringOpt(p->pszIn, "file", pszTemp)) { if (DeleteTmpFile(pszTemp)) strcpy(pszTemp, "SUCCESS"); else { int error = GetLastError(); if (error == 0) _snprintf(pszTemp, MAX_PATH, "FAIL - file not found in list of created tmp files"); else _snprintf(pszTemp, MAX_PATH, "FAIL - error %d", error); } } else strcpy(pszTemp, "FAIL - no filename provided"); GetStringOpt(p->pszIn, "src", pszHost); _snprintf(pszStr, MAX_CMD_LENGTH, "result src=%s dest=%s sock=%s result=%s", g_pszHost, pszHost, pszBfd, pszTemp); ContextWriteString(g_pRightContext, pszStr); } else { GetStringOpt(p->pszIn, "src", pszHost); if ((stricmp(pszHost, g_pszHost) == 0) || (strcmp(pszHost, g_pszIP) == 0)) { char pszTry[10]; if (!GetStringOpt(p->pszIn, "try", pszTry)) { GetStringOpt(p->pszIn, "host", pszHost); GetIPString(pszHost, pszHost); _snprintf(pszStr, MAX_CMD_LENGTH, "deletetmpfile src=%s host=%s sock=%s try=2", g_pszHost, pszHost, pszBfd); ContextWriteString(g_pRightContext, pszStr); } else { // command went full circle, send fail result _snprintf(pszStr, MAX_CMD_LENGTH, "result src=%s dest=%s sock=%s result=FAIL - bad hostname", g_pszHost, pszHost, pszBfd); ContextWriteString(g_pRightContext, pszStr); } } else { // forward command ContextWriteString(g_pRightContext, p->pszIn); } } } else { // no host provided, send fail result GetStringOpt(p->pszIn, "src", pszHost); _snprintf(pszStr, MAX_CMD_LENGTH, "result src=%s dest=%s sock=%s result=FAIL - no host provided", g_pszHost, pszHost, pszBfd); ContextWriteString(g_pRightContext, pszStr); } } else if (strnicmp(p->pszIn, "mpich1readint ", 14) == 0) { char pszBfd[10]; char pszPid[10] = "0"; GetStringOpt(p->pszIn, "sock", pszBfd); GetStringOpt(p->pszIn, "pid", pszPid); if (GetStringOpt(p->pszIn, "host", pszHost)) { if ((stricmp(pszHost, g_pszHost) == 0) || (strcmp(pszHost, g_pszIP) == 0)) { char pszTemp[MAX_PATH]; if (GetStringOpt(p->pszIn, "file", pszTemp)) { int nPort, nError; nError = GetPortFromFile(pszTemp, atoi(pszPid), &nPort); if (nError == 0) sprintf(pszTemp, "%d", nPort); else { //sprintf(pszTemp, "FAIL - error %d", nError); if (nError == -1) { strcpy(pszTemp, "FAIL - timed out"); } else if (nError == -2) { strcpy(pszTemp, "FAIL - missing dll"); } else if (nError == -3) { _snprintf(pszTemp, MAX_PATH, "FAIL - process exited with code %d", nPort); } else { Translate_Error(nError, pszTemp, "FAIL - "); } } } else strcpy(pszTemp, "FAIL - no filename provided"); GetStringOpt(p->pszIn, "src", pszHost); _snprintf(pszStr, MAX_CMD_LENGTH, "result src=%s dest=%s sock=%s result=%s", g_pszHost, pszHost, pszBfd, pszTemp); ContextWriteString(g_pRightContext, pszStr); } else { GetStringOpt(p->pszIn, "src", pszHost); if ((stricmp(pszHost, g_pszHost) == 0) || (strcmp(pszHost, g_pszIP) == 0)) { char pszTry[10]; char pszTemp[MAX_PATH]; if (!GetStringOpt(p->pszIn, "try", pszTry)) { GetStringOpt(p->pszIn, "file", pszTemp); GetStringOpt(p->pszIn, "host", pszHost); GetIPString(pszHost, pszHost); _snprintf(pszStr, MAX_CMD_LENGTH, "mpich1readint src=%s host=%s sock=%s try=2 pid=%s file=%s", g_pszHost, pszHost, pszBfd, pszPid, pszTemp); ContextWriteString(g_pRightContext, pszStr); } else { // command went full circle, send fail result _snprintf(pszStr, MAX_CMD_LENGTH, "result src=%s dest=%s sock=%s result=FAIL - bad hostname", g_pszHost, pszHost, pszBfd); ContextWriteString(g_pRightContext, pszStr); } } else { // forward command ContextWriteString(g_pRightContext, p->pszIn); } } } else { // no host provided, send fail result GetStringOpt(p->pszIn, "src", pszHost); _snprintf(pszStr, MAX_CMD_LENGTH, "result src=%s dest=%s sock=%s result=FAIL - no host provided", g_pszHost, pszHost, pszBfd); ContextWriteString(g_pRightContext, pszStr); } } else if (strnicmp(p->pszIn, "stat ", 5) == 0) { char pszBfd[10]; char pszParam[100]; GetStringOpt(p->pszIn, "sock", pszBfd); GetStringOpt(p->pszIn, "param", pszParam); if (GetStringOpt(p->pszIn, "host", pszHost)) { if ((stricmp(pszHost, g_pszHost) == 0) || (strcmp(pszHost, g_pszIP) == 0)) { _snprintf(pszStr, MAX_CMD_LENGTH, "result src=%s dest=%s sock=%s result=", g_pszHost, pszHost, pszBfd); statMPD(pszParam, &pszStr[strlen(pszStr)], MAX_CMD_LENGTH - strlen(pszStr)); ContextWriteString(g_pRightContext, pszStr); } else { GetStringOpt(p->pszIn, "src", pszHost); if ((stricmp(pszHost, g_pszHost) == 0) || (strcmp(pszHost, g_pszIP) == 0)) { char pszTry[10]; GetStringOpt(p->pszIn, "host", pszHost); if (!GetStringOpt(p->pszIn, "try", pszTry)) { if (GetStringOpt(p->pszIn, "param", pszParam)) { GetIPString(pszHost, pszHost); _snprintf(pszStr, MAX_CMD_LENGTH, "stat src=%s host=%s sock=%s try=2 param=%s", g_pszHost, pszHost, pszBfd, pszParam); } else { _snprintf(pszStr, MAX_CMD_LENGTH, "result src=%s dest=%s sock=%s result=FAIL - no stat param specified", g_pszHost, g_pszHost, pszBfd); } ContextWriteString(g_pRightContext, pszStr); } else { // command went full circle, send fail result char pszBadHost[MAX_HOST_LENGTH]; GetStringOpt(p->pszIn, "host", pszBadHost); _snprintf(pszStr, MAX_CMD_LENGTH, "result src=%s dest=%s sock=%s result=FAIL - host '%s' not in the ring", g_pszHost, pszHost, pszBfd, pszBadHost); ContextWriteString(g_pRightContext, pszStr); } } else { // forward command ContextWriteString(g_pRightContext, p->pszIn); } } } else { // no host provided, send fail result GetStringOpt(p->pszIn, "src", pszHost); _snprintf(pszStr, MAX_CMD_LENGTH, "result src=%s dest=%s sock=%s result=FAIL - no host provided", g_pszHost, pszHost, pszBfd); ContextWriteString(g_pRightContext, pszStr); } } else if (strnicmp(p->pszIn, "freecached ", 11) == 0) { char pszBfd[10]; GetStringOpt(p->pszIn, "sock", pszBfd); if (GetStringOpt(p->pszIn, "host", pszHost)) { if ((stricmp(pszHost, g_pszHost) == 0) || (strcmp(pszHost, g_pszIP) == 0)) { RemoveAllCachedUsers(); _snprintf(pszStr, MAX_CMD_LENGTH, "result src=%s dest=%s sock=%s result=SUCCESS", g_pszHost, pszHost, pszBfd); ContextWriteString(g_pRightContext, pszStr); } else { GetStringOpt(p->pszIn, "src", pszHost); if ((stricmp(pszHost, g_pszHost) == 0) || (strcmp(pszHost, g_pszIP) == 0)) { char pszTry[10]; GetStringOpt(p->pszIn, "host", pszHost); if (!GetStringOpt(p->pszIn, "try", pszTry)) { if (GetIPString(pszHost, pszHost)) _snprintf(pszStr, MAX_CMD_LENGTH, "freecached src=%s host=%s sock=%s try=2", g_pszHost, pszHost, pszBfd); else _snprintf(pszStr, MAX_CMD_LENGTH, "result src=%s dest=%s sock=%s result=FAIL - invalid host '%s'", g_pszHost, g_pszHost, pszBfd, pszHost); ContextWriteString(g_pRightContext, pszStr); } else { // command went full circle, send fail result char pszBadHost[MAX_HOST_LENGTH]; GetStringOpt(p->pszIn, "host", pszBadHost); _snprintf(pszStr, MAX_CMD_LENGTH, "result src=%s dest=%s sock=%s result=FAIL - host '%s' not in the ring", g_pszHost, pszHost, pszBfd, pszBadHost); ContextWriteString(g_pRightContext, pszStr); } } else { // forward command ContextWriteString(g_pRightContext, p->pszIn); } } } else { // no host provided, send fail result GetStringOpt(p->pszIn, "src", pszHost); _snprintf(pszStr, MAX_CMD_LENGTH, "result src=%s dest=%s sock=%s result=FAIL - no host provided", g_pszHost, pszHost, pszBfd); ContextWriteString(g_pRightContext, pszStr); } } else if (strnicmp(p->pszIn, "result ", 7) == 0) { char pszDest[MAX_HOST_LENGTH] = ""; char pszBfd[10]; GetStringOpt(p->pszIn, "dest", pszDest); GetStringOpt(p->pszIn, "sock", pszBfd); if ((stricmp(pszDest, g_pszHost) == 0) || (strcmp(pszDest, g_pszIP) == 0)) { char *token; token = strstr(p->pszIn, "result="); if (token != NULL) { token = &token[7]; p = GetContext(atoi(pszBfd)); if (p) { ContextWriteString(p, token); } else { err_printf("GetContext failed for '%s'\n", pszBfd); } } else { err_printf("'result=' not found in result command\n"); } } else { ContextWriteString(g_pRightContext, p->pszIn); } } else { err_printf("left socket %d read unknown command '%s'\n", p->sock, p->pszIn); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -