#include #include "windows.h" #include "ChatBot.h" //#include #include #include "IniReader.h" using namespace Upp; void ChatBotClass::checksendlog() { vector::iterator it; time_t timenow=time(NULL); for(it = sendlog.begin(); it != sendlog.end(); it++) { MStruct msg; msg=*it; if ((timenow-msg.timestamp)>3) { printf("resend: (%s)(%i)\n",msg.message.print(),msg.timestamp); resendcheck=0; MString k; k=msg.message.print(); k+="(R)"; say(k.print()); resendcheck=1; sendlog.erase(it); return; } } } void ChatBotClass::addtosendlog (MString message) { if (message.beginswith("/")) return; MStruct msg; msg.nick=""; msg.message=message; msg.timestamp=time(NULL); sendlog.push_back(msg); // printf("addtosend (%s)(%i)\n",message.print(),msg.timestamp); } void ChatBotClass::delfromsendlog (MString message) { // printf("delfr:(%s)\n",message.print()); vector::iterator it; int counter=0; message.erase(" "); message.erase("_"); message.erase("*"); // printf("chx:[(%s)]\n",message.print()); for(it = sendlog.begin(); it != sendlog.end(); it++) { MStruct msg; msg=*it; MString k; k=msg.message.print(); k.erase("‏"); k.erase("‎"); k.erase("⇒"); // k.erase("⇑"); // k.erase("⇓"); k.replace(""","\""); k.replace("ß","ß"); k.replace("<","<"); k.replace(">",">"); k.replace("é","e"); k.replace("á","a"); k.replace("í","i"); k.replace("ó","o"); k.replace("ú","u"); k.replace("ä","ä"); k.replace("ü","ü"); k.replace("ö","ö"); k.replace("Ä","ä"); //wg. umlaute werden mit lowercase ncht in klein buchstaben verwandelt k.replace("Ü","ü"); k.replace("Ö","ö"); k.erase("+"); k.erase(" "); k.erase("_"); k.erase("*"); // printf("chs:[(%s)]\n",k.print()); if (k==message) { // printf("delfromsendlog: (%s)(%i)\n",message.print(),msg.timestamp); sendlog.erase(it); return; } } } void ChatBotClass::addtomessagelog(MString sender, MString message) { MStruct msg; msg.nick=sender; msg.message=message; msg.timestamp=time(NULL); messagelog.push_back(msg); MString zielnick; MString zielstring; int zc=1;int sc=1; int firsttimestamp;int lasttimestamp;int lasttimestamp2; vector::iterator it; int counter=0; for(it = messagelog.begin(); it != messagelog.end(); it++) { MStruct o; o=*it; if (counter==0) {zielnick=o.nick;zielstring=o.message;firsttimestamp=o.timestamp;} if (counter!=0) if (o.nick==zielnick) {zc++;lasttimestamp=o.timestamp;} if (counter!=0) if (o.nick==zielnick&&o.message==zielstring) {sc++;lasttimestamp2=o.timestamp;} // printf("%s %i\n",o.nick.print(),o.timestamp); counter++; } if (zc>3) if ((lasttimestamp-firsttimestamp)<2) {addtosperrlist(zielnick);messagelog.clear();} if (sc>3) if ((lasttimestamp2-firsttimestamp)<7) {addtosperrlist(zielnick);messagelog.clear();} if (messagelog.size()>4) messagelog.erase(messagelog.begin()); } bool ChatBotClass::onsperrliste(MString nick) { vector::iterator it; for(it = sperrnicks.begin(); it != sperrnicks.end(); it++) { MString o; o=*it; // printf("%s %s\n",nick.print(),o.print()); if (o==nick) return(1); } return(0); } void ChatBotClass::addtosperrlist(MString nick) { if (nick!="Wenlok") { FILE *fd; if (NULL == (fd = fopen (".\\sperrliste.ini", "a+"))) printf("error: can't open file sperrliste.ini\n"); fprintf (fd, "%s\n",nick.print()); fclose(fd); sperrnicks.push_back(nick); cout<::iterator it; for(it = sperrnicks.begin(); it != sperrnicks.end(); it++) { MString o; o=*it; // cout<pixels + (xoff+x)*3 + y*surface->pitch); g = *((unsigned char*)surface->pixels + (xoff+x)*3 + y*surface->pitch + 1); b = *((unsigned char*)surface->pixels + (xoff+x)*3 + y*surface->pitch + 2); bool first = ret&0x40000000; ret<<=1; ret |= first; ret^=(r < 128 && g < 128 && b < 128)?1:0; if (r < 128 && g < 128 && b < 128) printf("x"); else printf("."); } printf("\n"); } return ret; } */ int ChatBotClass::LadeDatei(char *datei,char *speichername) { printf("Lade Datei: %s\n",datei); SOCKET passSocket; WORD sockVersion; WSADATA wsaData; int nret; sockVersion = MAKEWORD(1, 1); WSAStartup(sockVersion, &wsaData); LPHOSTENT hostEntry; // hostEntry = gethostbyname("chatcity.de"); // Specifying the server by its name; if (!anonymize) hostEntry = gethostbyname("213.203.200.84"); else hostEntry = gethostbyname("http://www.waythru.com/index.php?q=213.203.200.84"); // another option is gethostbyaddr() if (!hostEntry) { nret = WSAGetLastError(); ReportError(nret, "gethostbyname()"); // Report the error as before WSACleanup(); return NETWORK_ERROR; } passSocket = socket(AF_INET, // Go over TCP/IP SOCK_STREAM, // This is a stream-oriented socket IPPROTO_TCP); // Use TCP rather than UDP if (passSocket == INVALID_SOCKET) { nret = WSAGetLastError(); ReportError(nret, "socket()"); WSACleanup(); return NETWORK_ERROR; } SOCKADDR_IN serverInfo; serverInfo.sin_family = AF_INET; serverInfo.sin_addr = *((LPIN_ADDR)*hostEntry->h_addr_list); // See the explanation in the tutorial serverInfo.sin_port = htons(80); // Change to network-byte order and nret = connect(passSocket, (LPSOCKADDR)&serverInfo, sizeof(struct sockaddr)); if (nret == SOCKET_ERROR) { nret = WSAGetLastError(); ReportError(nret, "connect()"); WSACleanup(); return NETWORK_ERROR; } // Send/receive, then cleanup: char s[2000]; strcpy(s,"GET /securitycode/index.php?0.42204000+1194905347 HTTP/1.1\r\n"); strcat(s,"User-Agent: Opera/9.10 (Windows NT 5.1; U; en)\r\n"); strcat(s,"Host: chats.kunden.abacho.net\r\n"); strcat(s,"Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\r\n"); strcat(s,"Accept-Language: de-DE,de;q=0.9,en;q=0.8\r\n"); strcat(s,"Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1\r\n"); strcat(s,"Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0\r\n"); strcat(s,"Referer: http://home.chatcity.de/registrierung/\r\n"); strcat(s,"Connection: Keep-Alive, TE\r\n"); strcat(s,"TE: deflate, gzip, chunked, identity, trailers\r\n"); strcat(s,"\r\n"); int nReadAmount=send(passSocket,s,strlen(s),0); FILE *fd2; fd2 = fopen (speichername, "w"); MString x; char pBuffer[1024]; int y; /* y=recv(passSocket,pBuffer,1024,0) { fprintf (fd2,pBuffer); printf("[%i][]\n",y); Sleep(100); // x+=pBuffer; } */ /* int v=1; while(v!=15) { for (int i=0;i<6048;i++) pBuffer[i]=0; recv(passSocket,pBuffer,1024,0); x+=pBuffer; v++; printf("%s\n",x.print()); printf("%i, %i\n",v,x.strlength()); } */ /* FILE *fd2; fd2 = fopen (speichername, "w"); fprintf (fd2,x.print()); */ fclose(fd2); closesocket(passSocket); } /* ChatBotClass::ChatBotClass() { autokicknicksonsperrlist=0; autoaddtosperrlistonspaming=0; anonymize=0; leseeigenenschrieb=1; beepmyname=1; rawtext=0; floodpref1=""; floodpref2=""; seconds1=time(NULL); readsperrliste(); readschlussel(); resendcheck=1; } */ void ChatBotClass::Write2Log(char *name,char *text) { time_t rawtime; time ( &rawtime ); FILE *fd2; fd2 = fopen (name, "a+"); // fprintf (fd2,ctime (&rawtime)); fprintf (fd2,text); fprintf (fd2,"\n"); fclose(fd2); } /* ChatBotClass::~ChatBotClass() { } */ void ChatBotClass::webpage() { if (errorcode) return; char *name; FILE *fd2; MString p; name=(char*)malloc(255); sprintf(name,"channel.htm"); if (NULL == (fd2 = fopen (name, "w"))) { printf ("Can't open it ejecting!\n"); } else { printf ("file erzeugt\n"); } fprintf (fd2, "\n %i\n",Nicknum); fprintf (fd2, ""); printf("ok\n"); for (int i=0;i"); else fprintf (fd2, ""); fprintf (fd2,"\n",Nicks[i].print(),Nicks[i].print()); } fprintf (fd2, "
name: %s
"); fprintf (fd2, "\n"); fclose (fd2); printf ("lade hoch\n"); /* netbuf *nControl; FtpInit (); FtpConnect ("web7.webmailer.de", &nControl); FtpLogin ("www.ph2.net", "abulafia", nControl); // FtpChdir("Fragen", nControl); FtpPut (name, name, FTPLIB_ASCII, nControl); FtpQuit (nControl); printf ("hochgeladen\n"); */ } int ChatBotClass::login(const char *name, char *pwd, char *chan) { Write2Log("connectionlog.txt","Login\n"); isinsep=0; peopleinsep=0; seconds1=time(NULL); aktivechannel=chan; UserName=name; Passwort=pwd; GetIDandSID(); GetChatOut(); } int ChatBotClass::login() { peopleinsep=0; isinsep=0; GetIDandSID(); GetChatOut(); } void ChatBotClass::Exit() { WSACleanup(); } void ChatBotClass::ReportError(int errorCodex, const char *whichFunc) { Write2Log("connectionlog.txt","Error:\n"); sendlog.clear(); printf("sendlog cleared\n"); char errorMsg[92]; ZeroMemory(errorMsg, 92); // automatically NULL-terminate the string sprintf(errorMsg, "SOCKETERROR: Call to %s returned error %d!", (char *)whichFunc, errorCodex); Write2Log("connectionlog.txt",errorMsg); ErrorMsg=errorMsg; errorcode=errorCodex; } void ChatBotClass::readHTMLout(void (*pfi)(MString Text)) { if (errorcode) return; char pBuffer[6048]; MString Sender[40]; MString message[40]; MString col[40]; int flag[40]; MString packet; for (int i=0;i<6048;i++) pBuffer[i]=0; int len=recv(sendHTMLSocket,pBuffer,6048,0); for (int i=0;((pBuffer!=""));i++) packet.concat(pBuffer[i]); } struct list_entry { int sock; struct list_entry *next; }; struct list_type { struct list_entry *data; unsigned count; }; void ChatBotClass::readchatline2(void (*pfi)(int fl, String col, String Sender, String Message)) { printf("inreadchat\n"); printf("inreadchat\n"); if (errorcode) return; printf("inreadchat\n"); char pBuffer[8000]; String Sender[40]; String message[40]; String col[40]; int flag[40]; MString packet; for (int i=0;i<40;i++) { col[i]="000000"; } for (int i=0;i<8000;i++) pBuffer[i]=0; unsigned long a[1]; a[1]=1; int e = ioctlsocket(sendSocket, FIONBIO, a); if (e == -1) { errorcode=1; printf("ioctlsocket failed\n"); } int len = recv(sendSocket,pBuffer,8000,0); if (len<0) {checksendlog();return;} if (len==0) { errorcode=1; printf("len=0\n"); ReportError(999, "Zerolengthreturn"); } for (int i=0;((pBuffer[i]!=(int)0));i++) packet.concat(pBuffer[i]); printf("RAW[%s]\n",packet.print()); int mc=0; if (packet.includes("Du bist eine gewisse Zeit des Chats verwiesen worden!")) { errorcode=1;ReportError(1000, "Du bist eine gewisse Zeit des Chats verwiesen worden"); } packet.erase(""); packet.erase(""); packet.erase(""); packet.erase(""); packet.erase(""); packet.erase(""); packet.erase(""); packet.preconcat("
"); if (rawtext) { col[0]="000000";flag[0]=0;message[0]=packet.print();Sender[0]="RAW"; mc+=1;} if ((!packet.includes("***newpage***"))) { packet.replace("é","e"); packet.replace("á","a"); packet.replace("í","i"); packet.replace("ó","o"); packet.replace("ú","u"); packet.replace("ä","ä"); packet.replace("ü","ü"); packet.replace("ö","ö"); packet.replace("Ä","ä"); //wg. umlaute werden mit lowercase ncht in klein buchstaben verwandelt packet.replace("Ü","ü"); packet.replace("Ö","ö"); packet.erase(" "); packet.replace("
",""); packet.replace("
\n
  • ","
  • "); for (int i=0;i<40;i++) flag[i]=0; int x=1; MString ppacket; do { x++; ppacket=packet.getbedfirst("
    ","
    "); if (ppacket.found) goto ok; ppacket=packet.getbedfirst("
    ","
    "); if (ppacket.found) goto ok; ppacket=packet.getbedfirst("
    ","
    "); if (ppacket.found) goto ok; ppacket=packet.getbedfirst("
    ","
    "); if (ppacket.found) goto ok; goto ok2; ok: packet.erase(0,4); packet.erase(ppacket.print()); ppacket.concat("
    "); //Normaler Chatschrieb printf("%s\n",ppacket.print()); if (ppacket.includes("")) { MString k; k=ppacket.getbedfirst(""); col[mc]=k.print(); k=ppacket.getbedfirst("",":"); Sender[mc]=k.print(); k=ppacket.getbedfirst("
    : ","
    "); message[mc]=k.print(); mc++; } //Du flüsterst zu ... if (ppacket.includes("")) { MString k; col[mc]="000000"; k=ppacket.getbedfirst("",":"); Sender[mc]=k.print(); k="Du fluesterst zu "; k+=Sender[mc]; k+=":"; k+=ppacket.getbedfirst(": ","
    "); message[mc]=k.print(); Sender[mc]="---"; flag[mc]=4; mc++; } //... flüstert ... if (ppacket.includes("")) { MString k; col[mc]="000000"; k=ppacket.getbedfirst("","
    "); Sender[mc]=k.print(); k=ppacket.getbedfirst(" ","
    "); message[mc]=k.print(); flag[mc]=3; mc++; } //me if (ppacket.includes("")) { MString k; col[mc]="000000"; k=ppacket.getbedfirst("","
    "); message[mc]=k.print(); Sender[mc]="..."; flag[mc]=4; mc++; } printf("xx1\n"); //Bob Nachrichten, gemischtes if (ppacket.includes("")) { MString k; k=ppacket.getbedfirst("MrBob: ","
    "); if (k.includes("Du gehst in das Separee")) { sepname=k.getbedfirst("Du gehst in das Separee ",""); k.erase(""); if (isinsep) ChatterSepList.abmelden(k); } if (k.includes("ist wieder da.")) { MString k;k=message[mc];k.erase(" ist wieder da."); k.erase(""); if (isinsep) ChatterSepList.anmelden(k); } if (k.includes("ist im Augenblick abgemeldet")) { MString k;k=message[mc];k.erase(" ist im Augenblick abgemeldet"); if (isinsep) ChatterSepList.abmelden(k); } if (k.includes("betritt das Separee")) { if (autokicknicksonsperrlist) { MString k;k=message[mc];k.erase(" betritt das Separee"); if (onsperrliste(k)) {MString x;x="/sepkick ";x+=k;say(x.print());message[mc]="Nick on Sperrlist joined";} peopleinsep++; ChatterSepList.AddChatter(k); } else { MString k;k=message[mc];k.erase(" betritt das Separee"); ChatterSepList.AddChatter(k); peopleinsep++; } } if (k.includes("Schwupp und raus aus dem Separee")) { isinsep=0; peopleinsep=0; ChatterSepList.clearall(); } k.erase(""); k.erase(""); k.erase(""); k.erase(""); k.erase(""); message[mc]=k.print(); Sender[mc]="Wenlok"; flag[mc]=1; mc++; } printf("xx1\n"); //Userlist anzeigen if (ppacket.includes("")) { MString k; k=ppacket.getbedfirst("",""); k+=":\n"; k+=ppacket.getbedfirst("","
    "); k.replace("",""); k.replace("",""); k.replace("
  • ","\n"); // message[mc].replace("offen...","offen...\n"); Sender[mc]="Wenlok"; Nicks[0]=k.getbedfirst("[","]"); Nicknum=1; do { Nicks[Nicknum]=k.getbednext("[","]"); Nicknum++; } while ((Nicks[Nicknum-1]!="")&&Nicknum<200); message[mc]=k.print(); Nicknum--; mc++; //webpage(); } } while (x<50); printf("xx2\n"); ok2: printf("HI"); for (int o=0;o","_"); message[o].replace("","_"); message[o].replace("","_"); message[o].replace("","_"); message[o].replace("","*"); message[o].replace("","*"); message[o].replace(""","\""); message[o].replace("ß","ß"); message[o].replace("<","<"); message[o].replace(">",">"); message[o].erase("⇒"); message[o].erase("⇐"); message[o].erase("‎"); message[o].erase("‏"); if (message[o].beginswith("!who")) { ChatterSepList.printchatter(); } if (message[o].beginswith("!botdata")) { MString p; p="conf:: "; p+="isinsep:"; if (isinsep) {p+="1";p+=" sepname:";p+=sepname;} else p+="0"; if (isinsep) {p+=" peopleinsep:";p+=peopleinsep;} p+=" channel:"; p+=aktivechannel; p+=" isonline:"; if (isonline()) p+="1"; else p+="0"; p+=" name:"; p+=UserName; p+=" autoaddtosperrlistonspaming:"; p+=autoaddtosperrlistonspaming; p+=" autokicknicksonsperrlist:"; p+=autokicknicksonsperrlist; say(p.print()); } */ if (message[o]=="!autoaddtosperrlistonspaming") autoaddtosperrlistonspaming=!autoaddtosperrlistonspaming; if (message[o]=="!autokicknicksonsperrlist") autokicknicksonsperrlist=!autokicknicksonsperrlist; /* if (message[o].includes("automatisch") and Sender[o].includes("Wenlok") ){ say("/alive"); } else { if (beepmyname) if ( (message[o].includes(UserName))&& ((!Sender[o].includes("Wenlok"))&&(!Sender[o].includes("RAW"))) ) Beep(500,100); //if ((Sender[o]==UserName)) delfromsendlog(message[o]); */ // if (!onsperrliste(Sender[o])) { // if (autoaddtosperrlistonspaming) if ((Sender[o]!=UserName)) addtomessagelog(Sender[o],message[o]); // printf("GOT[%i|%s|%s|%s]\n",flag[o],col[o].print(),Sender[o].print(),message[o].print()); if (!leseeigenenschrieb) { if ((Sender[o]!=UserName)) pfi(flag[o],col[o],Sender[o],message[o]);} else pfi(flag[o],col[o],Sender[o],message[o]); // } //pfi(flag[o],col[o],Sender[o],message[o]); } } // checksendlog(); } void ChatBotClass::readchatline(void (*pfi)(int fl, MString col, MString Sender, MString Message)) { printf("inreadchat\n"); printf("inreadchat\n"); if (errorcode) return; printf("inreadchat\n"); char pBuffer[8000]; MString Sender[40]; MString message[40]; MString col[40]; int flag[40]; MString packet; for (int i=0;i<8000;i++) pBuffer[i]=0; unsigned long a[1]; a[1]=1; int e = ioctlsocket(sendSocket, FIONBIO, a); if (e == -1) { errorcode=1; printf("ioctlsocket failed\n"); } int len = recv(sendSocket,pBuffer,8000,0); if (len<0) {checksendlog();return;} if (len==0) { errorcode=1; printf("len=0\n"); ReportError(999, "Zerolengthreturn"); } for (int i=0;((pBuffer[i]!=(int)0));i++) packet.concat(pBuffer[i]); printf("RAW[%s]\n",packet.print()); int mc=0; if (packet.includes("Du bist eine gewisse Zeit des Chats verwiesen worden!")) { errorcode=1;ReportError(1000, "Du bist eine gewisse Zeit des Chats verwiesen worden"); } packet.erase(""); packet.erase(""); packet.erase(""); packet.erase(""); packet.erase(""); packet.erase(""); packet.erase(""); // for (int i=0;i"); if (rawtext) { col[0]="000000";flag[0]=0;message[0]=packet;Sender[0]="RAW"; mc+=1; } if ((!packet.includes("***newpage***"))) { packet.replace("é","e"); packet.replace("á","a"); packet.replace("í","i"); packet.replace("ó","o"); packet.replace("ú","u"); packet.replace("ä","ä"); packet.replace("ü","ü"); packet.replace("ö","ö"); packet.replace("Ä","ä"); //wg. umlaute werden mit lowercase ncht in klein buchstaben verwandelt packet.replace("Ü","ü"); packet.replace("Ö","ö"); packet.erase(" "); packet.replace("
    ",""); packet.replace("
    \n
  • ","
  • "); for (int i=0;i<40;i++) flag[i]=0; int x=1; MString ppacket; /* do { x++; ppacket=packet.getbedfirst("
    ","
    "); if (ppacket.found) goto ok; ppacket=packet.getbedfirst("
    ","
    "); if (ppacket.found) goto ok; ppacket=packet.getbedfirst("
    ","
    "); if (ppacket.found) goto ok; ppacket=packet.getbedfirst("
    ","
    "); if (ppacket.found) goto ok; goto ok2; ok: packet.erase(0,4); packet.erase(ppacket.print()); ppacket.concat("
    "); //Normaler Chatschrieb if (ppacket.includes("")) { // printf("habs %s\n",packet.print()); col[mc]=ppacket.getbedfirst(""); Sender[mc]=ppacket.getbedfirst("",":"); message[mc]=ppacket.getbedfirst("
    : ","
    "); mc++; } //Du flüsterst zu ... if (ppacket.includes("")) { col[mc]="000000"; Sender[mc]=ppacket.getbedfirst("",":"); message[mc]="Du flüsterst zu "; message[mc]+=Sender[mc].print(); message[mc]+=":"; message[mc]+=ppacket.getbedfirst(": ","
    "); Sender[mc]="---"; flag[mc]=4; mc++; } //... flüstert ... if (ppacket.includes("")) { Sender[mc]=ppacket.getbedfirst("","
    "); message[mc]=ppacket.getbedfirst(" ","
    "); flag[mc]=3; mc++; } //me if (ppacket.includes("")) { message[mc]=ppacket.getbedfirst("","
    "); Sender[mc]="..."; flag[mc]=4; mc++; } //Bob Nachrichten, gemischtes if (ppacket.includes("")) { message[mc]=ppacket.getbedfirst("MrBob: ","
    "); if (message[mc].includes("Du gehst in das Separee")) { sepname=message[mc].getbedfirst("Du gehst in das Separee ",""); k.erase(""); if (isinsep) ChatterSepList.abmelden(k); } if (message[mc].includes("ist wieder da.")) { MString k;k=message[mc];k.erase(" ist wieder da."); k.erase(""); if (isinsep) ChatterSepList.anmelden(k); } if (message[mc].includes("ist im Augenblick abgemeldet")) { MString k;k=message[mc];k.erase(" ist im Augenblick abgemeldet"); if (isinsep) ChatterSepList.abmelden(k); } if (message[mc].includes("betritt das Separee")) { if (autokicknicksonsperrlist) { MString k;k=message[mc];k.erase(" betritt das Separee"); if (onsperrliste(k)) {MString x;x="/sepkick ";x+=k;say(x.print());message[mc]="Nick on Sperrlist joined";} peopleinsep++; ChatterSepList.AddChatter(k); } else { MString k;k=message[mc];k.erase(" betritt das Separee"); ChatterSepList.AddChatter(k); peopleinsep++; } } if (message[mc].includes("Schwupp und raus aus dem Separee")) { isinsep=0; peopleinsep=0; ChatterSepList.clearall(); } message[mc].erase(""); message[mc].erase(""); message[mc].erase(""); message[mc].erase(""); message[mc].erase(""); Sender[mc]="Wenlok"; flag[mc]=1; mc++; } //Userlist anzeigen if (ppacket.includes("")) { message[mc]=ppacket.getbedfirst("",""); message[mc]+=":\n"; message[mc]+=ppacket.getbedfirst("","
    "); message[mc].replace("",""); message[mc].replace("",""); message[mc].replace("
  • ","\n"); // message[mc].replace("offen...","offen...\n"); Sender[mc]="Wenlok"; Nicks[0]=message[mc].getbedfirst("[","]"); Nicknum=1; do { Nicks[Nicknum]=message[mc].getbednext("[","]"); Nicknum++; } while ((Nicks[Nicknum-1]!="")&&Nicknum<200); Nicknum--; mc++; webpage(); } } while (x<50); if (x>20) Write2Log("debuglog.txt","x>20 in function readchatline\n"); */ ok2: for (int o=0;o","_"); message[o].replace("","_"); message[o].replace("","_"); message[o].replace("","_"); message[o].replace("","*"); message[o].replace("","*"); message[o].replace(""","\""); message[o].replace("ß","ß"); message[o].replace("<","<"); message[o].replace(">",">"); message[o].erase("⇒"); message[o].erase("⇐"); message[o].erase("‎"); message[o].erase("‏"); if (message[o].beginswith("!who")) { ChatterSepList.printchatter(); } if (message[o].beginswith("!botdata")) { MString p; p="conf:: "; p+="isinsep:"; if (isinsep) {p+="1";p+=" sepname:";p+=sepname;} else p+="0"; if (isinsep) {p+=" peopleinsep:";p+=peopleinsep;} p+=" channel:"; p+=aktivechannel; p+=" isonline:"; if (isonline()) p+="1"; else p+="0"; p+=" name:"; p+=UserName; p+=" autoaddtosperrlistonspaming:"; p+=autoaddtosperrlistonspaming; p+=" autokicknicksonsperrlist:"; p+=autokicknicksonsperrlist; say(p.print()); } if (message[o]=="!autoaddtosperrlistonspaming") autoaddtosperrlistonspaming=!autoaddtosperrlistonspaming; if (message[o]=="!autokicknicksonsperrlist") autokicknicksonsperrlist=!autokicknicksonsperrlist; if (message[o].includes("automatisch") && Sender[o].includes("Wenlok") ){ say("/alive"); } else { if (beepmyname) if ( (message[o].includes(UserName))&& ((!Sender[o].includes("Wenlok"))&&(!Sender[o].includes("RAW"))) ) Beep(500,100); //if ((Sender[o]==UserName)) delfromsendlog(message[o]); /* if (!onsperrliste(Sender[o])) { if (autoaddtosperrlistonspaming) if ((Sender[o]!=UserName)) addtomessagelog(Sender[o],message[o]); printf("GOT[%i|%s|%s|%s]\n",flag[o],col[o].print(),Sender[o].print(),message[o].print()); if (!leseeigenenschrieb) { if ((Sender[o]!=UserName)) pfi(flag[o],col[o],Sender[o],message[o]);} else pfi(flag[o],col[o],Sender[o],message[o]); } */ } } } // checksendlog(); } int ChatBotClass::GetChatOut() { if(errorcode) return(1); WORD sockVersion; WSADATA wsaData; int nret; sockVersion = MAKEWORD(1, 1); WSAStartup(sockVersion, &wsaData); LPHOSTENT hostEntry; printf("gettin chatout\n"); if (!anonymize) hostEntry = gethostbyname("213.203.200.72"); else hostEntry = gethostbyname("http://www.waythru.com/index.php?q=http://213.203.200.72"); printf("endgetcahtout\n"); if (!hostEntry) { nret = WSAGetLastError(); ReportError(nret, "gethostbyname()"); // Report the error as before printf("ERROR\n"); WSACleanup(); return NETWORK_ERROR; } sendSocket = socket(AF_INET, // Go over TCP/IP SOCK_STREAM, // This is a stream-oriented socket IPPROTO_TCP); // Use TCP rather than UDP if (sendSocket == INVALID_SOCKET) { nret = WSAGetLastError(); ReportError(nret, "socket()"); WSACleanup(); return NETWORK_ERROR; } printf("endgetcahtout\n"); SOCKADDR_IN serverInfo; serverInfo.sin_family = AF_INET; serverInfo.sin_addr = *((LPIN_ADDR)*hostEntry->h_addr_list); // See the explanation in the tutorial serverInfo.sin_port = htons(80); // Change to network-byte order and nret = connect(sendSocket, (LPSOCKADDR)&serverInfo, sizeof(struct sockaddr)); if (nret == SOCKET_ERROR) { nret = WSAGetLastError(); ReportError(nret, "connect()"); WSACleanup(); return NETWORK_ERROR; } char s[3000]; strcpy(s,"GET /chatout?MODE=1048576&CHANNEL="); strcat(s,aktivechannel.print()); strcat(s,"&PROVIDER=REG&NICKNAME="); strcat(s,UserName); strcat(s,"&PW="); strcat(s,PW.print()); strcat(s,"&SID="); strcat(s,Sid.print()); strcat(s,"&ID="); strcat(s,ID.print()); strcat(s,"&KEY="); strcat(s,"258"); strcat(s,"&SBG=1 HTTP/1.1\n"); strcat(s,"User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 8.51\n"); strcat(s,"Host: 213.203.200.72\n"); strcat(s,"Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\n"); strcat(s,"Accept-Language: en\n"); strcat(s,"Accept-Charset: windows-1252, utf-8, utf-16, iso-8859-1;q=0.6, *;q=0.1\n"); strcat(s,"Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0\n"); strcat(s,"Referer: http://www.chatcity.de/cgi-bin/cc2005/wwb/wwb.cgi\n"); strcat(s,"Connection: Keep-Alive, TE\n"); strcat(s,"TE: deflate, gzip, chunked, identity, trailers\n\n\n"); int nReadAmount=send(sendSocket,s,strlen(s),0); printf("endgetcahtout\n"); } int ChatBotClass::say(char *textin) { if (textin!="") { //Write2Log("ChatBotClasslog.txt",textin); // printf("in say\n"); if (errorcode) return(1); //split long messages MString msgs[20]; MString buf; buf=textin; int counter=0; for (int i=0;((i<1+(int)(buf.strlength()/MessageSplitLength))&&(counter<20));i++) { // printf("%i\n",i); msgs[i]=buf.copy(MessageSplitLength,i*MessageSplitLength); // printf("%s\n",msgs[i].print()); counter++; } // printf("ok\n"); for (int u=0;uh_addr_list); // See the explanation in the tutorial serverInfo.sin_port = htons(80); // Change to network-byte order and nret = connect(sendSocket, (LPSOCKADDR)&serverInfo, sizeof(struct sockaddr)); if (nret == SOCKET_ERROR) { nret = WSAGetLastError(); ReportError(nret, "connect()"); WSACleanup(); return NETWORK_ERROR; } send(sendSocket,s,strlen(s),0); closesocket(sendSocket); fertig: int v=0; } } // printf(" say raus\n"); } int ChatBotClass::GetIDandSID() { if (errorcode) return(1); SOCKET passSocket; WORD sockVersion; WSADATA wsaData; int nret; sockVersion = MAKEWORD(1, 1); WSAStartup(sockVersion, &wsaData); LPHOSTENT hostEntry; printf("gettin id and sid\n"); // hostEntry = gethostbyname("chatcity.de"); // Specifying the server by its name; if (!anonymize) hostEntry = gethostbyname("213.203.200.70"); else hostEntry = gethostbyname("http://www.waythru.com/index.php?q=http://213.203.200.70"); // another option is gethostbyaddr() if (!hostEntry) { nret = WSAGetLastError(); ReportError(nret, "gethostbyname()"); // Report the error as before WSACleanup(); return NETWORK_ERROR; } passSocket = socket(AF_INET, // Go over TCP/IP SOCK_STREAM, // This is a stream-oriented socket IPPROTO_TCP); // Use TCP rather than UDP if (passSocket == INVALID_SOCKET) { nret = WSAGetLastError(); ReportError(nret, "socket()"); WSACleanup(); return NETWORK_ERROR; } SOCKADDR_IN serverInfo; serverInfo.sin_family = AF_INET; serverInfo.sin_addr = *((LPIN_ADDR)*hostEntry->h_addr_list); // See the explanation in the tutorial serverInfo.sin_port = htons(80); // Change to network-byte order and nret = connect(passSocket, (LPSOCKADDR)&serverInfo, sizeof(struct sockaddr)); if (nret == SOCKET_ERROR) { nret = WSAGetLastError(); ReportError(nret, "connect()"); WSACleanup(); return NETWORK_ERROR; } // Send/receive, then cleanup: MString contentlenght; contentlenght+=113-20+strlen(UserName)+aktivechannel.strlength(); char s[2000]; strcpy(s,"POST /cgi-bin/cc2005/wwb/wwb.cgi HTTP/1.1\n"); strcat(s,"User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 8.51\n"); strcat(s,"Host: www.chatcity.de\n"); strcat(s,"Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\n"); strcat(s,"Accept-Language: en\n"); strcat(s,"Accept-Charset: windows-1252, utf-8, utf-16, iso-8859-1;q=0.6, *;q=0.1\n"); strcat(s,"Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0\n"); strcat(s,"Referer: http://home.chatcity.de/pages/bereich3.php\n"); strcat(s,"Connection: Keep-Alive, TE\n"); strcat(s,"TE: deflate, gzip, chunked, identity, trailers\n"); strcat(s,"Content-Type: application/x-www-form-urlencoded\n"); strcat(s,"Content-Length: "); strcat(s,contentlenght.print()); strcat(s,"\n\n"); strcat(s,"_CID=login%2Flo&PROVIDER=REG&KEY=258&MODE=1048576"); strcat(s,"&NAME="); strcat(s,UserName); strcat(s,"&PW="); strcat(s,Passwort); strcat(s,"&CHANNEL="); strcat(s,aktivechannel.print()); strcat(s,"&Chat=+++++Chatten+++++"); int nReadAmount=send(passSocket,s,strlen(s),0); MString x; MString XSID; MString XID; MString XPW; MString XKEY; char pBuffer[6048]; int v=1; while(v!=15) { for (int i=0;i<6048;i++) pBuffer[i]=0; recv(passSocket,pBuffer,1048,0); x=pBuffer; XSID="";XID=""; XSID=x.getbedfirst("&SID=","&ID="); XID=x.getbedfirst("&ID=","&KEY="); XPW=x.getbedfirst("&PW=","&SID="); XKEY=x.getbedfirst("&KEY=","&SBG="); if ((XSID!="")&&(XID!="")&&(XPW!="")) break; v++; } if ((XSID!="")&&(XID!="")&&(XPW!="")) { printf("Erfolg: SID=%s ID=%s PW=%s KEY=%s\n",XSID.print(),XID.print(),XPW.print(),XKEY.print()); } else { printf("Konnte keine ID/SID bekommen\n");} Sid=XSID.print(); ID=XID.print(); PW=XPW.print(); KEY=XKEY.print(); closesocket(passSocket); } int ChatBotClass::getregistrationform() { SOCKET passSocket; WORD sockVersion; WSADATA wsaData; int nret; sockVersion = MAKEWORD(1, 1); WSAStartup(sockVersion, &wsaData); LPHOSTENT hostEntry; printf("gettin regform\n"); if (!anonymize) hostEntry = gethostbyname("213.203.200.2"); else hostEntry = gethostbyname("http://www.waythru.com/index.php?q=http://213.203.200.2"); if (!hostEntry) { nret = WSAGetLastError(); ReportError(nret, "gethostbyname()"); // Report the error as before WSACleanup(); return NETWORK_ERROR; } passSocket = socket(AF_INET, // Go over TCP/IP SOCK_STREAM, // This is a stream-oriented socket IPPROTO_TCP); // Use TCP rather than UDP if (passSocket == INVALID_SOCKET) { nret = WSAGetLastError(); ReportError(nret, "socket()"); WSACleanup(); return NETWORK_ERROR; } SOCKADDR_IN serverInfo; serverInfo.sin_family = AF_INET; serverInfo.sin_addr = *((LPIN_ADDR)*hostEntry->h_addr_list); // See the explanation in the tutorial serverInfo.sin_port = htons(80); // Change to network-byte order and nret = connect(passSocket, (LPSOCKADDR)&serverInfo, sizeof(struct sockaddr)); if (nret == SOCKET_ERROR) { nret = WSAGetLastError(); ReportError(nret, "connect()"); WSACleanup(); return NETWORK_ERROR; } // Send/receive, then cleanup: char s[2000]; strcpy(s,"GET /registrierung/ HTTP/1.1\r\n"); strcat(s,"User-Agent: Opera/9.10 (Windows NT 5.1; U; en)\r\n"); strcat(s,"Host: home.chatcity.de\r\n"); strcat(s,"Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\r\n"); strcat(s,"Accept-Language: de-DE,de;q=0.9,en;q=0.8\r\n"); strcat(s,"Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1\r\n"); strcat(s,"Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0\r\n"); strcat(s,"Cookie: POPUPCHECK=1194890296737\r\n"); strcat(s,"Cookie2: $Version=1\r\n"); strcat(s,"Cache-Control: no-cache\r\n"); strcat(s,"Connection: Keep-Alive, TE\r\n"); strcat(s,"TE: deflate, gzip, chunked, identity, trailers\r\n"); strcat(s,"\r\n"); int nReadAmount=send(passSocket,s,strlen(s),0); MString x; MString Bild; char pBuffer[26048]; int v=1; while(v!=55) { for (int i=0;i<6048;i++) pBuffer[i]=0; recv(passSocket,pBuffer,1412,0); x=pBuffer; if (x.includes("securitycode")) { Bild=x.getbedfirst("securitycode/index.php?","\" width=\"80\""); printf("gefunden\n");goto fertig; } v++; } fertig: MString Bildadr; Bildadr="wget -nd -r http://chats.kunden.abacho.net/securitycode/index.php?"; Bildadr+=Bild.print(); Bildadr+=" -O index.php"; closesocket(passSocket); printf("%s\n",Bildadr.print()); system(Bildadr.print()); // SDL_Surface *image; // image=IMG_Load("index.php"); unsigned int hash; for (int i=0;i<5;i++) { // c2[i]=CalcHash(image,i*16); } for (int i=0;i<5;i++) printf(">>%u\n",c2[i]); system("del index.php"); // SDL_UnlockSurface(image); } int ChatBotClass::registername(char *nickname, char *pwd, char *email) { readschlussel(); for (int i=0;i<5;i++) { for (int l=0;l<35;l++) { if (c2[i]==schlussel[l].schl) { printf("%s",schlussel[l].zeichen.print()); checkcode=checkcode+schlussel[l].zeichen.print(); } } } printf("\n"); SOCKET passSocket; WORD sockVersion; WSADATA wsaData; int nret; sockVersion = MAKEWORD(1, 1); WSAStartup(sockVersion, &wsaData); LPHOSTENT hostEntry; printf("register name\n"); if (!anonymize) hostEntry = gethostbyname("213.203.200.2"); else hostEntry = gethostbyname("http://www.waythru.com/index.php?q=http://213.203.200.2"); // another option is gethostbyaddr() if (!hostEntry) { nret = WSAGetLastError(); ReportError(nret, "gethostbyname()"); // Report the error as before WSACleanup(); return NETWORK_ERROR; } passSocket = socket(AF_INET, // Go over TCP/IP SOCK_STREAM, // This is a stream-oriented socket IPPROTO_TCP); // Use TCP rather than UDP if (passSocket == INVALID_SOCKET) { nret = WSAGetLastError(); ReportError(nret, "socket()"); WSACleanup(); return NETWORK_ERROR; } SOCKADDR_IN serverInfo; serverInfo.sin_family = AF_INET; serverInfo.sin_addr = *((LPIN_ADDR)*hostEntry->h_addr_list); // See the explanation in the tutorial serverInfo.sin_port = htons(80); // Change to network-byte order and nret = connect(passSocket, (LPSOCKADDR)&serverInfo, sizeof(struct sockaddr)); if (nret == SOCKET_ERROR) { nret = WSAGetLastError(); ReportError(nret, "connect()"); WSACleanup(); return NETWORK_ERROR; } // Send/receive, then cleanup: char s[20000]; strcpy(s,"POST /registrierung/ HTTP/1.1\r\n"); strcat(s,"User-Agent: Opera/9.10 (Windows NT 5.1; U; en)\r\n"); strcat(s,"Host: home.chatcity.de\r\n"); strcat(s,"Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\r\n"); strcat(s,"Accept-Language: de-DE,de;q=0.9,en;q=0.8\r\n"); strcat(s,"Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1\r\n"); strcat(s,"Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0\r\n"); strcat(s,"Referer: http://home.chatcity.de/registrierung/\r\n"); strcat(s,"Cookie: POPUPCHECK=1194890296737\r\n"); strcat(s,"Cookie2: $Version=1\r\n"); strcat(s,"Connection: Keep-Alive, TE\r\n"); strcat(s,"TE: deflate, gzip, chunked, identity, trailers\r\n"); strcat(s,"Content-Length: 468\r\n"); strcat(s,"Content-Type: application/x-www-form-urlencoded\r\n"); strcat(s,"\r\n"); MString securecode; securecode=checkcode.print();; // cmd=login&nickname=Schnee8876&pwd1=mdykoz&pwd2=mdykoz&email1=chochmah%40gmx.net&email2=chochmah%40gmx.net&securecode=NG979&newsletter=1&gender=1&showgender=1&get_datum_tag=09&get_datum_monat=05&get_datum_jahr=1981&plz=&wohnort=&id_card=1&m strcat(s,"cmd=login&nickname="); strcat(s,nickname); strcat(s,"&pwd1="); strcat(s,pwd); strcat(s,"&pwd2="); strcat(s,pwd); strcat(s,"&email1="); strcat(s,email); // email //email @ als %40 strcat(s,"&email2="); strcat(s,email); strcat(s,"&securecode="); strcat(s,securecode.print()); strcat(s,"&newsletter=1&gender=1&showgender=1&get_datum_tag=09&get_datum_monat=05&get_datum_jahr=1981&plz=&wohnort=&id_card=1&motto=&img_idcard=http%3A%2F%2F&hobby=&interessen=&buecher=&filme=&fernsehsendungen=&musik=&sprachen=&ichsuche=&homepage=&essen=&reiseziel=&getraenke=&tier=&cc=%23000000&sc=%23FFFFFF&system_msg=1&agb=1&agbsubmit=+++registrieren+++"); int nReadAmount=send(passSocket,s,strlen(s),0); printf("%s %i\n",s,nReadAmount); strcpy(s,"GET /registrierung/register.php HTTP/1.1\r\n"); strcat(s,"User-Agent: Opera/9.10 (Windows NT 5.1; U; en)\r\n"); strcat(s,"Host: home.chatcity.de\r\n"); strcat(s,"Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\r\n"); strcat(s,"Accept-Language: de-DE,de;q=0.9,en;q=0.8\r\n"); strcat(s,"Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1\r\n"); strcat(s,"Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0\r\n"); strcat(s,"Referer: http://home.chatcity.de/registrierung/\r\n"); strcat(s,"Cookie: POPUPCHECK=1194890296737\r\n"); strcat(s,"Cookie2: $Version=1\r\n"); strcat(s,"Connection: Keep-Alive, TE\r\n"); strcat(s,"TE: deflate, gzip, chunked, identity, trailers\r\n"); strcat(s,"\r\n"); nReadAmount=send(passSocket,s,strlen(s),0); printf("%s %i\n",s,nReadAmount); printf("registrierung fertig\n"); char pBuffer[1024]; int y; MString x; do { y=recv(passSocket,pBuffer,1024,0); Sleep(100); } while (y>0); closesocket(passSocket); } void ChatBotClass::registernickname(char *nickname, char *pwd, char *email) { getregistrationform(); registername(nickname,pwd,email); }