void PruneGraphOpCommand::execute(void) { std::string sMethod(MainApplication::the()->getSettings().get<std::string>("player.debugger.prune_graph_op.method")), sSize(MainApplication::the()->getSettings().get<std::string>("player.debugger.prune_graph_op.size")); OSG::PruneGraphOpRefPtr TheGraphOp = OSG::PruneGraphOp::create(); std::string params = std::string("size=") + sSize + std::string(" method=") + sMethod; TheGraphOp->setParams(params); TheGraphOp->traverse(_RootNode); }
std::string Wager::WagerProgressionMethod() const { std::string sMethod("Unknown"); for (std::map<std::string, WagerProgressionMethods>::const_iterator it = m_mWagerProgressionMethod.begin(); it != m_mWagerProgressionMethod.end(); ++it) { if (m_ecWagerProgressionMethod == it->second) { sMethod = it->first; break; } } return(sMethod); }
void CRedirectHTTPS_Thread::StartRedirect() { m_sServerSocket=INVALID_SOCKET; m_iConnections=0; int iErr=1; bool bFinished=false; while(!bFinished && g_pMainCtrl->m_bRunning) { url uURL; char szBuffer[MAX_PATH]; bool bGet=false; // Receive the proxy request if(!m_sClientSocket.RecvLineIRC(szBuffer, MAX_PATH)) { bFinished=true; break; } CString sBuffer(szBuffer); // Fail if there is no url // if(!sBuffer.Token(1, " ").Compare("")) { bFinished=true; break; } if(!sBuffer.Compare("")) { bFinished=true; break; } if(!sBuffer.Token(0, " ").CompareNoCase("GET")) { // GET method bGet=true; // Parse the url if(!ParseURL(sBuffer.Token(1, " ").CStr(), &uURL)) { bFinished=true; break; } // Fail if the protocol isnt http if(uURL.sProto.Compare("http")) { bFinished=true; break; } } else if(!sBuffer.Token(0, " ").CompareNoCase("CONNECT")) { // CONNECT method bGet=false; // Parse the host uURL.sProto.Assign("connect"); uURL.sReq.Assign(""); uURL.sHost.Assign(sBuffer.Token(1, " ").Token(0, ":")); if(!sBuffer.Token(1, " ").Token(1, ":").CStr()) { bFinished=true; break; } uURL.iPort=atoi(sBuffer.Token(1, " ").Token(1, ":").CStr()); if(!uURL.iPort) uURL.iPort=80; } // Get the rest of the request CString sMethod(sBuffer.Token(0, " ")); if(!sMethod.Compare("")) { bFinished=true; break; } CString sHTTPSVer(sBuffer.Token(2, " ")); if(!sHTTPSVer.Compare("")) { bFinished=true; break; } CString sOldHost(uURL.sHost); #ifdef DBGCONSOLE if(bGet) g_pMainCtrl->m_cConsDbg.Log(5, "CRedirectHTTPS(0x%8.8Xh): %s %s %s...\n", m_pRedirHTTPS, sMethod.CStr(), uURL.sReq.CStr(), sHTTPSVer.CStr()); else g_pMainCtrl->m_cConsDbg.Log(5, "CRedirectHTTPS(0x%8.8Xh): %s %s:%d %s...\n", m_pRedirHTTPS, sMethod.CStr(), uURL.sHost.CStr(), uURL.iPort, sHTTPSVer.CStr()); #endif char szBuf[4096]; strcpy(szBuf, "bla"); if(bGet) { if(!m_sClientSocket.Recv(szBuf, sizeof(szBuf))) { m_sClientSocket.Disconnect(); return; } } else { while(strcmp(szBuf, "")) // Loop while headers arent finished if(!m_sClientSocket.RecvLineIRC(szBuf, 4096)) { bFinished=true; break; } if(bFinished) break; } CString sReqBuf; if(bGet) sReqBuf.Format("%s %s %s\r\n%s", sMethod.CStr(), uURL.sReq.CStr(), sHTTPSVer.CStr(), szBuf); else sReqBuf.Format("HTTP/1.0 200 Connection established\r\n\r\n"); m_sServerSocket=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if(!m_sServerSocket.IsConnected()) { m_sClientSocket.Disconnect(); return; } // Connect to the server if(!m_sServerSocket.Connect(uURL.sHost.CStr(), uURL.iPort)) // Connect failed, exit { #ifdef DBGCONSOLE g_pMainCtrl->m_cConsDbg.Log(5, "CRedirectHTTPS(0x%8.8Xh): Cannot connect to %s:%d (%s)...\n", m_pRedirHTTPS, uURL.sHost.CStr(), uURL.iPort, uURL.sReq.CStr()); #endif m_sClientSocket.Disconnect(); m_sServerSocket.Disconnect(); return; } if(bGet) { if(!m_sServerSocket.Write(sReqBuf.CStr(), sReqBuf.GetLength())) { m_sClientSocket.Disconnect(); m_sServerSocket.Disconnect(); return; } } else { if(!m_sClientSocket.Write(sReqBuf.CStr(), sReqBuf.GetLength())) { m_sClientSocket.Disconnect(); m_sServerSocket.Disconnect(); return; } } int iLen; fd_set fd; SET_SOCK_BLOCK(m_sClientSocket.GetSocket(), 0); SET_SOCK_BLOCK(m_sServerSocket.GetSocket(), 0); if(bGet) { while(true) { memset(szBuffer, 0, sizeof(szBuffer)); if(!m_sClientSocket.RecvLineIRC(szBuffer, sizeof(szBuffer))) { Sleep(10); break; } if(strcmp(szBuffer, "")) { sBuffer.Assign(szBuffer); if(!sBuffer.Token(0, " ").Compare("GET")) { // Fail if there is no url if(!sBuffer.Token(1, " ").Compare("")) { bFinished=true; break; } // Parse the url if(!ParseURL(sBuffer.Token(1, " ").CStr(), &uURL)) break; // Fail if the protocol isnt http if(uURL.sProto.Compare("http")) { bFinished=true; break; } // Get the rest of the request CString sMethod(sBuffer.Token(0, " ")); if(!sMethod.Compare("")) { bFinished=true; break; } CString sHTTPSVer(sBuffer.Token(2, " ")); if(!sHTTPSVer.Compare("")) { bFinished=true; break; } sBuffer.Format("%s %s %s\r\n", sMethod.CStr(), uURL.sReq.CStr(), sHTTPSVer.CStr()); if(uURL.sHost.Compare(sOldHost)) { m_sServerSocket.Disconnect(); if(!m_sServerSocket.Connect(uURL.sHost.CStr(), uURL.iPort)) // Connect failed, exit { #ifdef DBGCONSOLE g_pMainCtrl->m_cConsDbg.Log(5, "CRedirectHTTPS(0x%8.8Xh): Cannot connect to %s:%d (%s)...\n", m_pRedirHTTPS, uURL.sHost.CStr(), uURL.iPort, uURL.sReq.CStr()); #endif m_sClientSocket.Disconnect(); m_sServerSocket.Disconnect(); return; } sOldHost.Assign(uURL.sHost); } } else { sBuffer.Append("\r\n"); } if(!m_sServerSocket.Write(sBuffer.CStr(), sBuffer.GetLength())) break; } m_sServerSocket.Recv(szBuf, sizeof(szBuf), &iLen); if(!iLen) break; if(iLen<0 && ERRNO!=EWOULDBLOCK) { Sleep(10); break; } m_sClientSocket.Write(szBuf, iLen); } } else { while(true) { m_sClientSocket.Recv(szBuf, sizeof(szBuf), &iLen); if(!iLen) break; if(iLen<0 && ERRNO!=EWOULDBLOCK) { Sleep(10); break; } m_sServerSocket.Write(szBuf, iLen); m_sServerSocket.Recv(szBuf, sizeof(szBuf), &iLen); if(!iLen) break; if(iLen<0 && ERRNO!=EWOULDBLOCK) { Sleep(10); break; } m_sClientSocket.Write(szBuf, iLen); } } m_sClientSocket.Disconnect(); m_sServerSocket.Disconnect(); bFinished=true; } }
void CRedirectHTTP_Thread::StartRedirect() { m_sServerSocket=INVALID_SOCKET; m_iConnections=0; int iErr=1; bool bFinished=false; while(!bFinished) { url uURL; char szBuffer[MAX_PATH]; bool bGet=false; // Receive the proxy request if(!recv_line_irc(m_sClientSocket, szBuffer, MAX_PATH, NULL)) { bFinished=true; break; } CString sBuffer(szBuffer); // Fail if there is no url // if(!sBuffer.Token(1, " ").Compare("")) { bFinished=true; break; } if(!sBuffer.Compare("")) { bFinished=true; break; } if(!sBuffer.Token(0, " ").CompareNoCase("GET")) { // GET method bGet=true; // Parse the url if(!ParseURL(sBuffer.Token(1, " ").CStr(), &uURL)) { bFinished=true; break; } // Fail if the protocol isnt http if(uURL.sProto.Compare("http")) { bFinished=true; break; } } else if(!sBuffer.Token(0, " ").CompareNoCase("CONNECT")) { // CONNECT method bGet=false; // Parse the host uURL.sProto.Assign("connect"); uURL.sReq.Assign(""); uURL.sHost.Assign(sBuffer.Token(1, " ").Token(0, ":")); if(!sBuffer.Token(1, " ").Token(1, ":").CStr()) { bFinished=true; break; } uURL.iPort=atoi(sBuffer.Token(1, " ").Token(1, ":").CStr()); if(!uURL.iPort) uURL.iPort=80; } // Get the rest of the request CString sMethod(sBuffer.Token(0, " ")); if(!sMethod.Compare("")) { bFinished=true; break; } CString sHTTPVer(sBuffer.Token(2, " ")); if(!sHTTPVer.Compare("")) { bFinished=true; break; } CString sOldHost(uURL.sHost); #ifdef DBGCONSOLE if(bGet) g_cMainCtrl.m_cConsDbg.Log(5, "CRedirectHTTP(0x%8.8Xh): %s %s %s...\n", m_pRedirHTTP, sMethod.CStr(), uURL.sReq.CStr(), sHTTPVer.CStr()); else g_cMainCtrl.m_cConsDbg.Log(5, "CRedirectHTTP(0x%8.8Xh): %s %s:%d %s...\n", m_pRedirHTTP, sMethod.CStr(), uURL.sHost.CStr(), uURL.iPort, sHTTPVer.CStr()); #endif char szBuf[4096]; strcpy(szBuf, "bla"); if(bGet) { if(xRead(m_sClientSocket, szBuf, sizeof(szBuf))<1) { xClose(m_sClientSocket); return; } } else { while(strcmp(szBuf, "")) // Loop while headers arent finished if(!recv_line_irc(m_sClientSocket, szBuf, 4096, NULL)) { bFinished=true; break; } if(bFinished) break; } CString sReqBuf; if(bGet) sReqBuf.Format("%s %s %s\r\n%s", sMethod.CStr(), uURL.sReq.CStr(), sHTTPVer.CStr(), szBuf); else sReqBuf.Format("HTTP/1.0 200 Connection established\r\n\r\n"); m_sServerSocket=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if(m_sServerSocket==SOCKET_ERROR || m_sServerSocket==INVALID_SOCKET) { xClose(m_sClientSocket); return; } // Fill in sockaddr and resolve the host sockaddr_in ssin; memset(&ssin, 0, sizeof(ssin)); ssin.sin_family=AF_INET; ssin.sin_port=htons(uURL.iPort); ssin.sin_addr.s_addr=ResolveAddress(uURL.sHost.CStr()); if(ssin.sin_addr.s_addr==INADDR_NONE) // The host couldn't be resolved, exit { #ifdef DBGCONSOLE g_cMainCtrl.m_cConsDbg.Log(5, "CRedirectHTTP(0x%8.8Xh): %s could not be resolved (%s)...\n", m_pRedirHTTP, uURL.sHost.CStr(), uURL.sReq.CStr()); #endif xClose(m_sClientSocket); xClose(m_sServerSocket); return; } // Connect to the server iErr=connect(m_sServerSocket, (sockaddr*)&ssin, sizeof(sockaddr_in)); if(iErr==SOCKET_ERROR) // Connect failed, exit { #ifdef DBGCONSOLE g_cMainCtrl.m_cConsDbg.Log(5, "CRedirectHTTP(0x%8.8Xh): Cannot connect to %s:%d (%s)...\n", m_pRedirHTTP, uURL.sHost.CStr(), uURL.iPort, uURL.sReq.CStr()); #endif xClose(m_sClientSocket); xClose(m_sServerSocket); return; } if(bGet) { iErr=xWrite(m_sServerSocket, sReqBuf.CStr(), sReqBuf.GetLength()); if(!iErr || iErr==SOCKET_ERROR) { xClose(m_sClientSocket); xClose(m_sServerSocket); return; } } else { iErr=xWrite(m_sClientSocket, sReqBuf.CStr(), sReqBuf.GetLength()); if(!iErr || iErr==SOCKET_ERROR) { xClose(m_sClientSocket); xClose(m_sServerSocket); return; } } int iLen; fd_set fd; SET_SOCK_BLOCK(m_sClientSocket, 0); SET_SOCK_BLOCK(m_sServerSocket, 0); if(bGet) { while(true) { memset(szBuffer, 0, sizeof(szBuffer)); if(!recv_line_irc(m_sClientSocket, szBuffer, sizeof(szBuffer), NULL)) { Sleep(10); break; } if(strcmp(szBuffer, "")) { sBuffer.Assign(szBuffer); if(!sBuffer.Token(0, " ").Compare("GET")) { // Fail if there is no url if(!sBuffer.Token(1, " ").Compare("")) { bFinished=true; break; } // Parse the url if(!ParseURL(sBuffer.Token(1, " ").CStr(), &uURL)) break; // Fail if the protocol isnt http if(uURL.sProto.Compare("http")) { bFinished=true; break; } // Get the rest of the request CString sMethod(sBuffer.Token(0, " ")); if(!sMethod.Compare("")) { bFinished=true; break; } CString sHTTPVer(sBuffer.Token(2, " ")); if(!sHTTPVer.Compare("")) { bFinished=true; break; } sBuffer.Format("%s %s %s\r\n", sMethod.CStr(), uURL.sReq.CStr(), sHTTPVer.CStr()); if(uURL.sHost.Compare(sOldHost)) { xClose(m_sServerSocket); m_sServerSocket=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if(m_sServerSocket==SOCKET_ERROR || m_sServerSocket==INVALID_SOCKET) { xClose(m_sClientSocket); return; } // Fill in sockaddr and resolve the host sockaddr_in ssin; memset(&ssin, 0, sizeof(ssin)); ssin.sin_family=AF_INET; ssin.sin_port=htons(uURL.iPort); ssin.sin_addr.s_addr=ResolveAddress(uURL.sHost.CStr()); if(ssin.sin_addr.s_addr==INADDR_NONE) // The host couldn't be resolved, exit { #ifdef DBGCONSOLE g_cMainCtrl.m_cConsDbg.Log(5, "CRedirectHTTP(0x%8.8Xh): %s could not be resolved (%s)...\n", m_pRedirHTTP, uURL.sHost.CStr(), uURL.sReq.CStr()); #endif xClose(m_sClientSocket); xClose(m_sServerSocket); return; } // Connect to the server iErr=connect(m_sServerSocket, (sockaddr*)&ssin, sizeof(sockaddr_in)); if(iErr==SOCKET_ERROR) // Connect failed, exit { #ifdef DBGCONSOLE g_cMainCtrl.m_cConsDbg.Log(5, "CRedirectHTTP(0x%8.8Xh): Cannot connect to %s:%d (%s)...\n", m_pRedirHTTP, uURL.sHost.CStr(), uURL.iPort, uURL.sReq.CStr()); #endif xClose(m_sClientSocket); xClose(m_sServerSocket); return; } sOldHost.Assign(uURL.sHost); } } else { sBuffer.Append("\r\n"); } if(xWrite(m_sServerSocket, sBuffer.CStr(), sBuffer.GetLength())<1) break; } iLen=xRead(m_sServerSocket, szBuf, sizeof(szBuf)); if(!iLen) break; if(iLen<0 && ERRNO!=EWOULDBLOCK) { Sleep(10); break; } xWrite(m_sClientSocket, szBuf, iLen); } } else { while(true) { iLen=xRead(m_sClientSocket, szBuf, sizeof(szBuf)); if(!iLen) break; if(iLen<0 && ERRNO!=EWOULDBLOCK) { Sleep(10); break; } xWrite(m_sServerSocket, szBuf, iLen); iLen=xRead(m_sServerSocket, szBuf, sizeof(szBuf)); if(!iLen) break; if(iLen<0 && ERRNO!=EWOULDBLOCK) { Sleep(10); break; } xWrite(m_sClientSocket, szBuf, iLen); } } xClose(m_sClientSocket); xClose(m_sServerSocket); bFinished=true; } }