Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- * Schumix */
- #include "StdAfx.h"
- HgInfo::HgInfo()
- {
- string mySQLHost = Config.MainConfig.GetStringDefault("MySQL", "Host", "");
- string mySQLUser = Config.MainConfig.GetStringDefault("MySQL", "User", "");
- string mySQLPassword = Config.MainConfig.GetStringDefault("MySQL", "Password", "");
- string mySQLDatabase = Config.MainConfig.GetStringDefault("MySQL", "Database", "");
- mSQLConn[0] = MySQLConnectionPointer(new MySQLConnection(mySQLHost, mySQLUser, mySQLPassword));
- mSQLConn[0]->UseDatabase(mySQLDatabase);
- mSQLConn[0]->kiiras = false;
- QueryResultPointer db = mSQLConn[0]->Query("SELECT MAX(id) FROM hginfo");
- if(db)
- Log.Debug("HgInfo", "%u Thread indult el.", db->Fetch()[0].GetUInt32());
- QueryResultPointer adatbazis = mSQLConn[0]->Query("SELECT * FROM hginfo");
- if(adatbazis)
- {
- do
- {
- MultiThread Mt(this, adatbazis->Fetch()[0].GetUInt32());
- boost::thread t(Mt);
- } while(adatbazis->NextRow());
- }
- string status;
- QueryResultPointer db1 = mSQLConn[0]->Query("SELECT funkcio_nev, funkcio_status FROM schumix WHERE funkcio_nev = 'hg'");
- if(db)
- status = db1->Fetch()[1].GetString();
- if(status == bekapcsol)
- Log.Success("HgInfo", "A funkcio elindult.");
- else
- Log.Warning("HgInfo", "Az %s funkcio nem uzemel!", HG);
- printf("\n");
- }
- HgInfo::~HgInfo()
- {
- }
- void HgInfo::ThreadHg(uint32 id)
- {
- string mySQLHost = Config.MainConfig.GetStringDefault("MySQL", "Host", "");
- string mySQLUser = Config.MainConfig.GetStringDefault("MySQL", "User", "");
- string mySQLPassword = Config.MainConfig.GetStringDefault("MySQL", "Password", "");
- string mySQLDatabase = Config.MainConfig.GetStringDefault("MySQL", "Database", "");
- mSQLConn[id] = MySQLConnectionPointer(new MySQLConnection(mySQLHost, mySQLUser, mySQLPassword));
- mSQLConn[id]->UseDatabase(mySQLDatabase);
- string status;
- Hg("rev1", id);
- while(sIRCSession.Running())
- {
- if(!sIRCSession.Running())
- break;
- QueryResultPointer db = mSQLConn[id]->Query("SELECT funkcio_nev, funkcio_status FROM schumix WHERE funkcio_nev = 'hg'");
- if(db)
- status = db->Fetch()[1].GetString();
- if(status == bekapcsol)
- {
- Hg("rev", id);
- HgKiirasok(id);
- Hg("rev1", id);
- lekerdezesi_ido();
- }
- else
- Sleep(100);
- }
- Log.Warning("HgInfo", "Thread leallt: %u", id);
- ThreadExit(0);
- }
- int HgInfo::writer(char* data, size_t size, size_t nmemb, std::string *buffer)
- {
- int result = NULL;
- if(buffer != NULL)
- {
- buffer->append(data, size* nmemb);
- result = size* nmemb;
- }
- return result;
- }
- string HgInfo::titleUrl(string url, uint32 id, string regex, uint8 engedely, string account, string password)
- {
- curl[id] = curl_easy_init();
- if(curl[id])
- {
- CURLcode result;
- string bufferdata;
- if(engedely == 1)
- {
- curl_easy_setopt(curl[id], CURLOPT_URL, url.c_str());
- curl_easy_setopt(curl[id], CURLOPT_USERNAME, account.c_str());
- curl_easy_setopt(curl[id], CURLOPT_PASSWORD, password.c_str());
- curl_easy_setopt(curl[id], CURLOPT_WRITEFUNCTION, HgInfo::writer);
- curl_easy_setopt(curl[id], CURLOPT_WRITEDATA, &bufferdata);
- result = curl_easy_perform(curl[id]);
- }
- else
- {
- curl_easy_setopt(curl[id], CURLOPT_URL, url.c_str());
- curl_easy_setopt(curl[id], CURLOPT_WRITEFUNCTION, HgInfo::writer);
- curl_easy_setopt(curl[id], CURLOPT_WRITEDATA, &bufferdata);
- result = curl_easy_perform(curl[id]);
- }
- curl_easy_cleanup(curl[id]);
- if(result == CURLE_OK)
- {
- boost::regex re(regex);
- boost::cmatch matches;
- boost::regex_search(bufferdata.c_str(), matches, re);
- string matched(matches[1].first, matches[1].second);
- int szokoz = matched.find("</title>");
- return matched.substr(0, szokoz);
- }
- else
- {
- Log.Error("HgInfo", "Hiba a Http lekerdezesben.");
- return "nincs adat";
- }
- }
- return "nincs adat";
- }
- string HgInfo::revUrl(string url, uint32 id, string regex, uint8 engedely, string account, string password)
- {
- curl[id] = curl_easy_init();
- if(curl[id])
- {
- CURLcode result;
- string bufferdata;
- if(engedely == 1)
- {
- curl_easy_setopt(curl[id], CURLOPT_URL, url.c_str());
- curl_easy_setopt(curl[id], CURLOPT_USERNAME, account.c_str());
- curl_easy_setopt(curl[id], CURLOPT_PASSWORD, password.c_str());
- curl_easy_setopt(curl[id], CURLOPT_WRITEFUNCTION, HgInfo::writer);
- curl_easy_setopt(curl[id], CURLOPT_WRITEDATA, &bufferdata);
- result = curl_easy_perform(curl[id]);
- }
- else
- {
- curl_easy_setopt(curl[id], CURLOPT_URL, url.c_str());
- curl_easy_setopt(curl[id], CURLOPT_WRITEFUNCTION, HgInfo::writer);
- curl_easy_setopt(curl[id], CURLOPT_WRITEDATA, &bufferdata);
- result = curl_easy_perform(curl[id]);
- }
- curl_easy_cleanup(curl[id]);
- if(result == CURLE_OK)
- {
- boost::regex re(regex);
- boost::cmatch matches;
- boost::regex_search(bufferdata.c_str(), matches, re);
- string matched(matches[1].first, matches[1].second);
- int szokoz = matched.find("</");
- return matched.substr(0, szokoz);
- }
- else
- {
- Log.Error("HgInfo", "Hiba a Http lekerdezesben.");
- return "nincs adat";
- }
- }
- return "nincs adat";
- }
- string HgInfo::authorUrl(string url, uint32 id, string regex, uint8 engedely, string account, string password)
- {
- curl[id] = curl_easy_init();
- if(curl[id])
- {
- CURLcode result;
- string bufferdata;
- if(engedely == 1)
- {
- curl_easy_setopt(curl[id], CURLOPT_URL, url.c_str());
- curl_easy_setopt(curl[id], CURLOPT_USERNAME, account.c_str());
- curl_easy_setopt(curl[id], CURLOPT_PASSWORD, password.c_str());
- curl_easy_setopt(curl[id], CURLOPT_WRITEFUNCTION, HgInfo::writer);
- curl_easy_setopt(curl[id], CURLOPT_WRITEDATA, &bufferdata);
- result = curl_easy_perform(curl[id]);
- }
- else
- {
- curl_easy_setopt(curl[id], CURLOPT_URL, url.c_str());
- curl_easy_setopt(curl[id], CURLOPT_WRITEFUNCTION, HgInfo::writer);
- curl_easy_setopt(curl[id], CURLOPT_WRITEDATA, &bufferdata);
- result = curl_easy_perform(curl[id]);
- }
- curl_easy_cleanup(curl[id]);
- if(result == CURLE_OK)
- {
- boost::regex re(regex);
- boost::cmatch matches;
- boost::regex_search(bufferdata.c_str(), matches, re);
- string matched(matches[1].first, matches[1].second);
- int szokoz;
- if(regex == "<author>\s*<name>(.+)</name>")
- szokoz = matched.find("</name>");
- else
- szokoz = matched.find("</author>");
- return matched.substr(0, szokoz);
- }
- else
- {
- Log.Error("HgInfo", "Hiba a Http lekerdezesben.");
- return "nincs adat";
- }
- }
- return "nincs adat";
- }
- void HgInfo::Hg(string revid, uint32 id)
- {
- QueryResultPointer adatbazis = mSQLConn[id]->Query("SELECT * FROM hginfo WHERE id = '%u'", id);
- if(adatbazis)
- {
- string nev = adatbazis->Fetch()[1].GetString();
- string url = adatbazis->Fetch()[2].GetString();
- string regex = adatbazis->Fetch()[7].GetString();
- uint8 engedely = adatbazis->Fetch()[8].GetUInt8();
- string account = adatbazis->Fetch()[9].GetString();
- string password = adatbazis->Fetch()[10].GetString();
- string rev = revUrl(url, id, regex, engedely, account, password);
- if(rev == "nincs adat")
- return;
- mSQLConn[id]->Query("UPDATE hginfo SET %s = '%s' WHERE nev = '%s'", revid.c_str(), rev.c_str(), nev.c_str());
- }
- }
- void HgInfo::HgKiirasok(uint32 id)
- {
- QueryResultPointer adatbazis = mSQLConn[id]->Query("SELECT * FROM hginfo WHERE id = '%u'", id);
- if(adatbazis)
- {
- string a_rev = adatbazis->Fetch()[3].GetString();
- string a_rev1 = adatbazis->Fetch()[4].GetString();
- if(a_rev == a_rev1)
- return;
- string nev = adatbazis->Fetch()[1].GetString();
- string url = adatbazis->Fetch()[2].GetString();
- string regex = adatbazis->Fetch()[5].GetString();
- string regex2 = adatbazis->Fetch()[6].GetString();
- string regex3 = adatbazis->Fetch()[7].GetString();
- uint8 engedely = adatbazis->Fetch()[8].GetUInt8();
- string account = adatbazis->Fetch()[9].GetString();
- string password = adatbazis->Fetch()[10].GetString();
- string title = titleUrl(url, id, regex, engedely, account, password);
- string rev = revUrl(url, id, regex3, engedely, account, password);
- string author = authorUrl(url, id, regex2, engedely, account, password);
- QueryResultPointer db = mSQLConn[id]->Query("SELECT channel FROM hginfo WHERE nev = '%s'", nev.c_str());
- if(db)
- {
- string channel = db->Fetch()[0].GetString();
- vector<string> reschannel(1);
- sIRCSession.split(channel, ",", reschannel);
- if(reschannel.size() < 2)
- {
- reschannel.clear();
- return;
- }
- int resChannel = reschannel.size();
- for(int y = 1; y < resChannel; y++)
- {
- if(regex == "/>\\s*<title>(.*)</title>")
- {
- uint8 szokoz = title.find(':');
- string adat = title.substr(szokoz+1);
- sIRCSession.SendChatMessage(PRIVMSG, reschannel[y].c_str(), "3%s Revision: 10%s by %s", nev.c_str(), rev.substr(0, 7).c_str(), author.c_str());
- sIRCSession.SendChatMessage(PRIVMSG, reschannel[y].c_str(), "3%s Info:%s", nev.c_str(), adat.c_str());
- }
- else if(regex == "<item>\\s*<title>(.*)</title>")
- {
- sIRCSession.SendChatMessage(PRIVMSG, reschannel[y].c_str(), "3%s Revision: 10%s by %s", nev.c_str(), rev.substr(0, 7).c_str(), author.c_str());
- sIRCSession.SendChatMessage(PRIVMSG, reschannel[y].c_str(), "3%s Info: %s", nev.c_str(), title.c_str());
- }
- }
- reschannel.clear();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement