Пример #1
0
string CUIApp::CTFStatsExec::getExecString()
{
	string retval("\"");
	retval+=addSlash(TFStatsdirectory);
	retval+="TFStatsRT.exe\"  \"" ;
	retval+=fullpath;
	retval+="\" outputDir=\"";
	retval+=addSlash(outputdirectory);
	retval+=removeSlash(outputsubdir);
	retval+="\" ";
	
	retval+="ruleDir=\"";
	retval+=removeSlash(ruledirectory);
	retval+="\" ";

	retval+=" useSupportDir=";
	retval+=useSupportDir?"yes":"no";
	if (useSupportDir)
	{
		retval+=" supportDir=\"";
		retval+=removeSlash(supportdirectory);
		retval+="\" supportHTTPPath=\"";
		retval+=removeSlash(supporthttp);
		retval+="\"";
	}
	retval+=" persistPlayerStats=";
	retval+=persistPlayerStats?"yes":"no";
	if (persistPlayerStats)
	{
		retval+=" playerDir=\"";
		retval+=removeSlash(playerdirectory);
		retval+="\" ";
		retval+=" playerHTTPPath=\"";
		retval+=removeSlash(playerhttp);
		retval+="\"";
	}
	
	retval+=" eliminateOldPlayers=";
	retval+=elimOldPlayers?"yes":"no";
	if (elimOldPlayers)
	{
		retval+=" oldPlayerCutoff=";
		char buf[100];
		itoa(elimDays,buf,10);
		retval+=buf;
		retval+=" ";
	}


	
	retval+=" displayMM2=";
	retval+=displayMM2?"yes":"no";
	retval+=" displayStartUpInfo=";
	retval+=displayStartupInfo?"yes":"no";
	

	return retval;
}
Пример #2
0
void init()
{
    isInterfaceExtended = impl::getValueFromConfig("interface", "basic") == "extended";
    workDir = impl::getValueFromConfig("workingPath", ".");
    imagesDir = impl::getValueFromConfig("designedObjectImagesPath", impl::getValueFromConfig("imagesPath"));
    soundsDir = impl::getValueFromConfig("soundsPath", addSlash(imagesDir) + "..\\sounds\\");
    musicDir = impl::getValueFromConfig("musicPath", addSlash(imagesDir) + "..\\music\\");
    isBackupEnabled = impl::getValueFromConfig("isBackupEnabled", "true") == "true";
    isComplexBoxMode = impl::getValueFromConfig("isComplexBoxMode", "false") == "true";
    setComplexLayerMode(impl::getValueFromConfig("isComplexLayerMode", "false") == "true");
    setComplexAnimationMode(impl::getValueFromConfig("isComplexAnimationMode", "false") == "true");

    mainConf = impl::configAsString();
    formDesignedObjConfig();
}
bool compress(char *param, void *conf)
{
    clientConfig *c=(clientConfig*)conf;
    int i=0;
    char buffer[MSGSIZE];
    char archive[MSGSIZE];

    /* direxists -> makesubdir*/

    for(i=0;i<MSGSIZE;i++)
        buffer[i]=0;

    sendCommand(CMD_COMPRESS, NULL, &(c->sock));

    if (recvCommand(buffer, &(c->sock)) != CMD_SEND)
    {
        printf("* compress \"%s\" failed. no file sent or server error\n",param);

        return false;
    }

    sendCommand(CMD_ACK, NULL, &(c->sock));
    printf("* downloading remote archive \"%s\"\n",buffer);

    pullfile(buffer, &(c->sock));

    strcpy(archive,param);
    addSlash(archive);
    strcat(archive,buffer);
    printf("* moving file \"%s\" to %s\n",buffer,archive);
    if (rename(buffer,archive)<0)
        perrorf("rename()");

    return true;
}
Пример #4
0
bool senddir(const char *dir, unsigned int *sock)
{
    struct dirent *pdir;
    struct stat st;
    DIR *d=opendir(dir);
    char *path=(char *)my_malloc(sizeof(char)*256);
    char *buffer=(char *)my_malloc(sizeof(char)*256);


    if (!path)
        return false;

    while((pdir=readdir(d))!=NULL)
    {
        if (strcmp(pdir->d_name,".") == 0)
            continue;
        if (strcmp(pdir->d_name,"..") == 0)
            continue;

        strcpy(path, dir);
        addSlash(path);
        strcat(path, pdir->d_name);
        if (!(lstat(path, &st)>=0))
            continue;
        if (st.st_mode&S_IFREG)
        {
            sendCommand(CMD_SEND,(char *)path, sock);
            pushfile(path, sock);
        }
        else if (st.st_mode&S_IFDIR)
            senddir(path, sock);
    }

    free(buffer);
    free(path);
    return true;
}
Пример #5
0
	void _toString(Json* jsn,String& str,String& tab,bool readStyle){
		if(jsn->_type==json_null){
			str = L"null";
		}else if(jsn->_type==json_boolean){
			str = jsn->_boolValue?L"true":L"false";
		}else if(jsn->_type==json_integer){
			str.FromInt64(jsn->_intValue,10);
		}else if(jsn->_type==json_double){
			str.Format(L"%#.16g",jsn->_doubleValue);
		}else if(jsn->_type==json_string){
			addSlash(jsn->_strValue->Handle(),jsn->_strValue->Length(),str,readStyle);
			str.Insert('"',0);
			str.Insert('"');
		}else if(jsn->_type==json_array){
			if(readStyle)
				str = L"[\r\n";
			else
				str = L"[";
			String sub;
			ObjectLink<Json>& a = *jsn->_arrayValue;
			a.First();
			Json* sjsn = a.Element();
			if(sjsn){
				if(readStyle)
					tab += L"\t";
				_toString(sjsn,sub,tab,readStyle);
				str += tab;
				str += sub;
				while(true){
					a.Move(1);
					sjsn = a.Element();
					if(!sjsn) break;
					_toString(sjsn,sub,tab,readStyle);
					if(readStyle)
						str += L",\r\n";
					else
						str += L",";
					str += tab;
					str += sub;
				}
				tab.Head(-1);
				if(readStyle)
					str += L"\r\n";
			}
			str += tab;
			str += L"]";
		}else if(jsn->_type==json_object){
			if(readStyle)
				str = L"{\r\n";
			else
				str = L"{";
			String sub;
			ObjectLink<Json::DICTION>& obj = *jsn->_objectValue;
			obj.First();
			Json::DICTION* dic = obj.Element();
			if(dic){
				if(readStyle){
					tab += L"\t";
					str += tab;
				}
				str += L"\"";
				addSlash(dic->key,dic->key.Length(),sub,readStyle);
				str += sub;
				if(readStyle){
					str += L"\" : ";
				}else{
					str += L"\":";
				}
				_toString(dic->val,sub,tab,readStyle);
				str += sub;
				while(true){
					obj.Move(1);
					dic = obj.Element();
					if(!dic) break;
					if(readStyle){
						str += L",\r\n";
						str += tab;
					}else{
						str += L",";
					}
					str += L"\"";
					addSlash(dic->key,dic->key.Length(),sub,readStyle);
					str += sub;
					if(readStyle){
						str += L"\" : ";
					}else{
						str += L"\":";
					}
					_toString(dic->val,sub,tab,readStyle);
					str += sub;
				}
				tab.Head(-1);
				if(readStyle)
					str += L"\r\n";
			}
			str += tab;
			str += L"}";
		}else if(jsn->_type==json_binary){
			Memory<char> code;
			int len = Base64::Encode(code,jsn->_binaryValue->Handle(),jsn->_binaryValue->Length());
			str.FromMultiByte((LPCSTR)code.Handle(),len);
			str.Insert('\'',0);
			str.Insert('\'');
		}
	}
Пример #6
0
void CUIApp::execTFStats()
{
	std::list<CUIApp::CTFStatsExec>::iterator it;
	
	AllocConsole();
	for (it=m_pLogs->begin();it!=m_pLogs->end();++it)
	{
		CUIApp::CTFStatsExec& c=*it;
		it->TFStatsdirectory=m_TFStatsDir;
		it->outputdirectory=m_OutDir;
		it->ruledirectory=m_RuleDir;
		it->supportdirectory=m_SupportDir;
		it->playerdirectory=m_PlayerDir;
		it->displayMM2=displayMM2;
		it->persistPlayerStats=persistPlayerStats;
		it->useSupportDir=useSupportDir;
		it->supporthttp=m_SupportHTTPPath;
		it->playerhttp=m_PlayerHTTPPath;
		it->displayStartupInfo=displayStartupInfo;
		it->elimOldPlayers=elimOldPlayers;
		it->elimDays=elimDays;

		
		string exec=it->getExecString();
		//create process takes a non-const char buffer?
		char createProcBuf[4000];
		memset(createProcBuf,0,4000);
		exec.copy(createProcBuf,4000);

		PROCESS_INFORMATION pi;
		STARTUPINFO si;
		memset(&si,0,sizeof(si));
		si.cb=sizeof(si);
		char buffer[500];
		sprintf(buffer,"TFStats is creating a Match report for %s",it->inputfile.c_str());
		si.lpTitle=buffer;
		SetConsoleTitle(buffer);

		BOOL result=CreateProcess(NULL,createProcBuf,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi);
			
		
		if (pi.hProcess && result)
		{
			//wait for this one to finish before running next one!
			DWORD exitCode=STILL_ACTIVE;
			do
			{
				GetExitCodeProcess(pi.hProcess,&exitCode);
				
				//check every 10th of a second
				if (exitCode==STILL_ACTIVE)
					Sleep(100);

				if (pause)
					Sleep(pauseSecs*1000);

			} while (exitCode==STILL_ACTIVE);
		}
		else
		{
			string badmojo("***ERROR: Could not run \"");
			badmojo+=addSlash(it->TFStatsdirectory);
			badmojo+="TFStatsRT.exe\"\n\n";
			HANDLE hConsOutput=GetStdHandle(STD_OUTPUT_HANDLE);
			WriteConsole(hConsOutput,badmojo.c_str(),badmojo.length(),NULL,0);
			Sleep(4000);
		}	
	}
	FreeConsole();
}