Пример #1
0
/* destroy the session on the server side */
void destroysession()
{
	int sd;
	char *xml, query[256];

	sprintf(query, "/destroysession.php?sessionid=%s", xmlxml.sessionid);
	do
	{
		*xmlxml.error = 0;
		sd = getconnection(host_entry, gijohnport);
		getxml(sd, &xml, query, gijohnserver, gijohnport, 0);
		close(sd);
		parsexml(xml);
		free(xml);
		if (*xmlxml.error)
		{
			printf("[-] Error: destroying session: %s\n[+] Sleeping for %dsec... and resending\n", xmlxml.error, SLEEP_TIME);
			sleep(SLEEP_TIME);
		}
	}
	while (*xmlxml.error);

	if (options.flags & FLG_VERBOSE) printf("[+] Session destroyed\n[+] Thanks for using GI John!\n");

	return;
}
Пример #2
0
bool	SsXmlIArchiver::dc_attr( const char* name , int& member )
{
	AR_SELF_CHECK();

	const char* v = getxml()->Attribute( name  );

	member = atoi(v);

	return true;
}
bool SsXmlIArchiver::dc_attr(const char* name, FString& member)
{
	AR_SELF_CHECK();
	const char* v = 0;

	v = getxml()->Attribute(name);
	if(v != 0){ member= v; }

	return true;
}
bool SsXmlIArchiver::dc(const char* name, FVector2D& member)
{
	AR_SELF_CHECK();

	XMLElement* e = getxml()->FirstChildElement(name);

	if(e)
	{
		FString str( e->GetText() );
		return StringToPoint2( str , member );
	}
	return false;
}
Пример #5
0
bool	SsXmlIArchiver::dc( const char* name , bool& member )
{
	AR_SELF_CHECK();
	member = false;
	XMLElement* e = getxml()->FirstChildElement( name );
	if ( e )
	{
		int ret = GetTextToInt( e , 0 );
		if ( ret == 1)member = true;
		return true;
	}

	return false;
}
Пример #6
0
bool	SsXmlIArchiver::dc( const char* name , SsString& member )
{
	AR_SELF_CHECK();
	XMLElement* e = getxml()->FirstChildElement( name );
	if ( e )
	{
		if ( e->GetText() )
		{
			//Winではsjisへ変換する
			member = babel::utf8_to_sjis( e->GetText() );
		}else{
			member ="";
		}
		return true;
	}
	return false;
}
Пример #7
0
bool	SsXmlIArchiver::dc( const char* name , std::vector<SsString>& list )
{
	AR_SELF_CHECK();
	list.clear();
	XMLElement* e = getxml()->FirstChildElement( name );
	e = e->FirstChildElement( "value" );
	while( e )
	{
		const char* txt = e->GetText();
		//Winではsjisへ変換する
		std::string sjis_str = babel::utf8_to_sjis( txt );

		list.push_back( sjis_str );
		e = e->NextSiblingElement();
	}

	return true;
}
bool SsXmlIArchiver::dc(const char* name, TArray<FName>& list)
{
	AR_SELF_CHECK();
	list.Empty();
	XMLElement* e = getxml()->FirstChildElement(name);
	e = e->FirstChildElement("value");
	while(e)
	{
		const char* txt = e->GetText();
		FString sjis_str( babel::utf8_to_sjis( txt ).c_str() );
		CheckReplaceJapaneseString(txt, sjis_str);

		list.Add( FName(*sjis_str) );
		e = e->NextSiblingElement();
	}

	return true;
}
bool SsXmlIArchiver::dc(const char* name, FString& member)
{
	AR_SELF_CHECK();
	XMLElement* e = getxml()->FirstChildElement(name);
	if(e)
	{
		if(e->GetText())
		{
			member = FString(babel::utf8_to_sjis( e->GetText() ).c_str());
			CheckReplaceJapaneseString(e->GetText(), member);
		}
		else
		{
			member ="";
		}
		return true;
	}
	return false;
}
Пример #10
0
bool SsXmlIArchiver::dc(const char* name, FSsCurve& member)
{
	AR_SELF_CHECK();

	XMLElement* e = getxml()->FirstChildElement( name );
	if(e)
	{
		TArray<FString>	str_list;
		split_string( e->GetText() , ' ' , str_list );
		if(str_list.Num() < 4)
		{
			return false;
		}else{
			member.StartTime = FCString::Atof(*(str_list[0]));
			member.StartValue = FCString::Atof(*(str_list[1]));
			member.EndTime = FCString::Atof(*(str_list[2]));
			member.EndValue = FCString::Atof(*(str_list[3]));
			return true;
		}
	}
	return false;
}
Пример #11
0
bool	SsXmlIArchiver::dc( const char* name , SsCurve& member )
{
	AR_SELF_CHECK();

	XMLElement* e = getxml()->FirstChildElement( name );

	if ( e )
	{
		std::vector<SsString>	str_list;
		split_string( e->GetText() , ' ' , str_list );
		if ( str_list.size() < 4 )
		{
			return false;
		}else{
			member.startTime = (float)atof( str_list[0].c_str() );
			member.startValue = (float)atof( str_list[1].c_str() );
			member.endTime = (float)atof( str_list[2].c_str() );
			member.endValue = (float)atof( str_list[3].c_str() );		

			return true;
		}
	}
	return false;
}
Пример #12
0
/* getting the new datas*/
int getthenewpiece()
{
	int sd, i;
	char *xml, query[256], *post, *post2;

	if (firstrun)
	{
		splitserver(gijohnserver, &gijohnport);
		if ((xmlxml.newhashes = malloc(sizeof(char))) == NULL)
		{
			fprintf(stderr, "Malloc error...\n");
			exit(1);
		}
		*xmlxml.newhashes = 0;
		if ((xmlxml.delhashes = malloc(sizeof(char))) == NULL)
		{
			fprintf(stderr, "Malloc error...\n");
			exit(1);
		}
		*xmlxml.newhashes = 0;
		memset(xmlxml.format, '\0', 64);
		memset(xmlxml.keymap.firstword, '\0', 64);
		memset(xmlxml.keymap.lastword, '\0', 64);
		memset(xmlxml.keymap.charset, '\0', 256);
		memset(xmlxml.error, '\0', 1024);
		memset(xmlxml.sessionid, '\0', 33);
	}

	if (getnewsid)
	{		
		getini(username, password);		
		makeformatandperformancexml(&post, username, password);
		if ((post2 = malloc(sizeof(char)*strlen(post)*3+1)) == NULL)
		{
			fprintf(stderr, "Malloc error...\n");
			exit(1);
		}
		urlencode(post, post2);
		free(post);
		post = post2;
		setbuf(stdout, NULL);
		if (options.flags & FLG_VERBOSE) printf("[+] Getting new session\n");

		if (gijohnsmp > 1) {
			for (i = 1; i < gijohnsmp; i++) {
				if (!fork()) {
					sessionname = malloc(sizeof(char)*30);
					memset(sessionname, 0, 30);
					sprintf(sessionname, "gijohnfork_%d", i);
					rec_name = sessionname;
					break;
				}
			}
		}

		sprintf(query, "/newsession.php");

		do
		{
			*xmlxml.error = 0;
			host_entry = getthehostname(gijohnserver);
			if ((sd = getconnection(host_entry, gijohnport)) < 0)
			{
				strncpy(xmlxml.error, "connection error",
				    strlen("connection error"));
				printf("[-] Connection error\n[+]"
				" Sleeping for %dsec... and reconnection\n", SLEEP_TIME);
				sleep(SLEEP_TIME);
			}
			else
			{
				postxml(sd, &xml, query, gijohnserver, gijohnport, post);
				close(sd);
				parsexml(xml);
				free(xml);
				if (*xmlxml.error)
				{
					printf("[-] Error (new sessionid): %s\n[+]"
					" Sleeping for %dsec... and resending\n", xmlxml.error, SLEEP_TIME);
					sleep(SLEEP_TIME);
				}
			}

		}
		while (*xmlxml.error);
		free(post);
		getnewsid = 0;
		if (options.flags & FLG_VERBOSE) printf("[+] New session is: %s\n", xmlxml.sessionid);
	}
	if (xmlxml.upgrade)
	{
		printf("[!] You have to upgrade your gijohn, because it's too old to use! Exiting...\n");
		destroysession();
		exit(1);
	}

	sprintf(query, "/getpieces.php?sessionid=%s", xmlxml.sessionid);
	do
	{
		*xmlxml.error = 0;
		if ((sd = getconnection(host_entry, gijohnport)) < 0)
		{
			strncpy(xmlxml.error, "connection error",
			    strlen("connection error"));
			printf("[-] Connection error\n[+]"
			" Sleeping for %dsec... and reconnection\n", SLEEP_TIME);
			sleep(SLEEP_TIME);
		}
		else
		{
			getxml(sd, &xml, query, gijohnserver, gijohnport, options.flags & FLG_VERBOSE);
			close(sd);
			parsexml(xml);
			free(xml);
			if (*xmlxml.error)
			{
				printf("[-] Error (new keyspace): %s\n[+] "
				"Sleeping for %dsec... and resending\n", xmlxml.error, SLEEP_TIME);
				sleep(SLEEP_TIME);
			}
		}
	}
	while (*xmlxml.error);

	if (firstrun)
	{
		ldr_init_database(&database, &options.loader);
	}

	if (xmlxml.clearhashes)
	{
		memset(&database, '\0', sizeof(struct db_main));
		ldr_init_database(&database, &options.loader);
	}

	if (*xmlxml.error == 0)
	{
		if (*xmlxml.newhashes) ldr_load_xml_array(&database, xmlxml.newhashes, xmlxml.format);
		if (*xmlxml.delhashes) ldr_load_xml_delarray(&database, xmlxml.delhashes);
		if (*xmlxml.newhashes || *xmlxml.delhashes) ldr_fix_xmldatabase(&database, xmlxml.clearhashes | firstrun);
	}
	else
	{
		printf("[-] Error: %s\n", xmlxml.error); exit(1);
	}

	if ((options.flags & FLG_VERBOSE) || firstrun)
	{
		log_event("Remaining %s", john_loaded_counts());
		printf("[+] Loaded %s (%s [%s])\n",	john_loaded_counts(),
		database.format->params.format_name,
		database.format->params.algorithm_name);
	}

	if (firstrun)
	{
		printf("[+] Server: %s\n[+] Charset: %s\n[+] Charset length: %d\n", gijohnserver, xmlxml.keymap.charset, (int)strlen(xmlxml.keymap.charset));
	}

	return 0;
}