Cod sursa (./start) pentru fisierul redirect

Counter Strike 1.6 HLDS fake , scris in C++ in anii 2010-2011.

#include <iostream> // pentru COUT<<
#include <stdlib.h> // pentru SYSTEM
#include <stdio.h>	// pentru SPRINTF
#include <string.h> // pentru BZERO
#include <fstream>	// pentru OFSTREAM OUTFILE
#include <vector>

using namespace std;

//c
char cyan[]="\033[1;36m";
char mov[]="\033[1;34m";
char red[]="\033[1;31m";
char yellow[]="\033[1;33m";
char no_color[]="\033[0m";
char quote[]="\"";
//c F

char start_red[128];
char versiune[] = "linux_2.2";
char game_description[] = "Counter-Strike";
char ip_de_folosit[16],harta[16],hostname[64],dns[56],owner[32];
char _nr_red[16],_sloturi[16],_port[16];
int nr_red,red_sup,port,jucatori,sloturi;
char redirect_suplimentar;
char bara[]="========================================================================================";


//===============================================================================================================================
// variabile - ipuri.txt
const char *_ip;
string ip_line;
//===============================================================================================================================


int main()
{
	ifstream hostnames("hostnames.txt");
	ifstream maps("maps.txt");

	cout<<endl<<mov<<bara<<no_color<<endl;
	cout<<" - redirect "<<yellow<<versiune<<no_color<<" ["<<red<<"CsServers.ro"<<no_color<<"] [build: "<<red<<"09.01.2013"<<no_color<<"]"<<endl;
	cout<<" - schimbarea/editarea: "<<endl;
	cout<<" \t nume redirect "<<endl;
	cout<<" \t nume harta "<<endl;
	cout<<" \t ip/ip-uri "<<endl;
	cout<<endl<<" se face cu un editor de fisiere TXT gen "<<cyan<<"NANO"<<no_color<<" asupra fisierelor incarcate mai jos! "<<endl;
	
	//===========================================================================================================================
	// deschidem fisierele de configurare 
	
	cout<<endl<<no_color<<cyan<<" - hostnames.txt";
	cout<<endl<<no_color<<cyan<<" - maps.txt";
	cout<<endl<<no_color<<cyan<<" - ipuri.txt"<<endl;

	cout<<endl<<red<<" !!!ATENTIE!!! "<<no_color<<"Incepand cu aceasta versiune ... "<<endl;
	cout<<" Redirectele nu mai incarca nimic gen (harta,hostname) de pe site-ul "<<red<<"CsServers.ro"<<no_color<<" !!!"<<endl;
	cout<<" Toate astea le schimbati voi cand editati fisierele de mai sus!"<<endl;
	//===========================================================================================================================

	cout<<mov<<bara<<no_color<<endl;

	cout<<endl<<yellow<<" CONFIGURARE REDIRECTE:"<<no_color<<endl<<endl;
	
	cout<<no_color<<" portul pe care pornesti redirectele ?(Ex: 29000): \t"<<cyan; 
	cin.getline(_port,sizeof(_port));
	int port=atoi(_port);

	if(port<5000) port=5000;
	if(port>49000) port=49000;


	cout<<no_color<<" DNS server unde ajung dropurile ?(Ex: cs.server.ro): \t"<<cyan;
	cin.getline(dns,sizeof(dns));

	cout<<no_color<<" numele de la evidenta ?(Ex: jiji): \t\t\t"<<cyan;
	cin.getline(owner,sizeof(owner));


	cout<<no_color<<" cate redirecte deschizi ?(Ex: 15): \t\t\t"<<cyan;
	cin.getline(_nr_red,sizeof(_nr_red));
	int nr_red=atoi(_nr_red);

	if(nr_red>61) nr_red=61;
	if(nr_red<1) nr_red=1;


	cout<<no_color<<" cate sloturi vrei sa aibe redirectele ?(12-32): \t"<<cyan;
	cin.getline(_sloturi,sizeof(_sloturi));
	int sloturi=atoi(_sloturi);

	if(sloturi<12) sloturi = 12;
	if(sloturi>32) sloturi = 32;


	cout<<no_color<<" cati jucatori fake bagam pe redirectele cu ["<<sloturi<<"] sloturi ?(Ex: "<<int(sloturi-2)<<"): "<<cyan;
	cin>>jucatori;
	cin.ignore();

	if(jucatori<1) jucatori = 1;
	if(jucatori>sloturi) jucatori = (sloturi-1);


	cout<<no_color<<" deschidem redirect suplimentar , port "<<red<<"27015"<<no_color<<" ? (y/n): \t"<<cyan;
	cin>>redirect_suplimentar;
	cin.ignore();


	if(redirect_suplimentar=='y')
	{
		red_sup = ++nr_red;
	}


	cout<<endl<<endl<<no_color<<red<<" Pornesc ["<<no_color<<nr_red<<red<<"] redirecte:"<<no_color<<endl;

	for(int i=1;i<=nr_red;i++)
	{
		// hostname
		if(hostnames.is_open()) 
		{
			hostnames.getline(hostname,1024);
		}
		// hostname F

		// harta
		if(maps.is_open()) maps >> harta;
		// harta F
		
		//ipuri
		ifstream ipuri("ipuri.txt");
		//ipuri F

		if(ipuri.is_open())
		{
			while(ipuri.good())
			{
				getline(ipuri,ip_line);
				if(ip_line!="")
				{
					_ip=&ip_line[0];

					strncpy(ip_de_folosit,_ip,sizeof(ip_de_folosit));

					if(red_sup!=0 && i==red_sup) 
					{
						port = 27015;
					}

					sprintf(start_red,"screen -m -d ./redirect \"%s\" %s %d %s %d %d \"%s\" \"%s:27015\"",hostname,ip_de_folosit,port,harta,jucatori,sloturi,owner,dns);
					//printf(start_red);
					system(start_red);

					cout<<endl<<"\t... task: ["<<yellow<<"am pornit redirectul "<<i<<no_color<<"]"<<endl;
					cout<<"\t\t nume server: "<<hostname<<endl;
					cout<<"\t\t adresa: "<<ip_de_folosit<<":"<<port<<endl;
					cout<<"\t\t harta: "<<harta<<endl;

					sleep(0.5);
				}
			}
		}

		port++;

		sleep(1);
	}

	hostnames.close();
	maps.close();

	cout<<endl<<" Evidenta redirectelor apare in 5 minute pe: "<<cyan<<"www.CsServers.ro/evidenta/"<<dns<<no_color<<endl;
	cout<<endl<<red<<" ./stop \t\t"<<no_color<<"- oprire redirecte";
	cout<<endl<<red<<" ps x | grep redirect \t"<<no_color<<"- lista redirecte active";
	cout<<endl<<mov<<bara<<no_color<<endl;

	return 1;
}