Guest User

Untitled

a guest
Jun 22nd, 2018
330
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.44 KB | None | 0 0
  1. #include "callbacks.h"
  2.  
  3. void Callbacks::run()
  4. {
  5. for (int i = 1; i < 20; i++)
  6. {
  7. mySockets[i].fd = -1;
  8. mySockets[i].events = POLLIN;
  9. mySockets[i].revents = 0;
  10. mySocketsSsl[i].isSSL = false;
  11. mySocketsSsl[i].isConnected = false;
  12. mySocketsSsl[i].ctx = NULL;
  13. mySocketsSsl[i].ssl = NULL;
  14. }
  15. mySockets[0].fd = 0;
  16. mySockets[0].events = POLLIN;
  17. mySockets[0].revents = 0;
  18.  
  19. uname = "adressemouahahahaha";
  20. pass = "motdepassemouahahaha";
  21. myUsername = uname;
  22.  
  23. MSN::NotificationServerConnection mainConnection(uname, pass, *this);
  24. mainConnection.connect("messenger.hotmail.com", 1863);
  25.  
  26. while (1)
  27. {
  28. poll(mySockets, 20, -1);
  29. for (int i = 1; i < 20; i++)
  30. {
  31. if (mySockets[i].fd == -1)
  32. break;
  33. if (mySockets[i].revents & POLLHUP)
  34. {
  35. mySockets[i].revents = 0;
  36. continue;
  37. }
  38. if (mySockets[i].revents & (POLLIN | POLLOUT | POLLPRI))
  39. {
  40. MSN::Connection *c;
  41. c = mainConnection.connectionWithSocket((void*)mySockets[i].fd);
  42.  
  43. if (c != NULL)
  44. {
  45. if(mySocketsSsl[i].isSSL && !mySocketsSsl[i].isConnected)
  46. {
  47. BIO *bio_socket_new;
  48. const SSL_METHOD *meth=NULL;
  49.  
  50. meth=SSLv23_client_method();
  51. SSLeay_add_ssl_algorithms();
  52. mySocketsSsl[i].ctx = SSL_CTX_new(meth);
  53. mySocketsSsl[i].ssl = SSL_new(mySocketsSsl[i].ctx);
  54. bio_socket_new = BIO_new_socket(mySockets[i].fd, BIO_CLOSE);
  55. if(!mySocketsSsl[i].ssl)
  56. break;
  57. BIO_set_nbio(bio_socket_new, 0);
  58. SSL_set_bio(mySocketsSsl[i].ssl, bio_socket_new, bio_socket_new);
  59. SSL_set_mode(mySocketsSsl[i].ssl, SSL_MODE_AUTO_RETRY);
  60.  
  61. int ret = SSL_connect(mySocketsSsl[i].ssl);
  62. mySocketsSsl[i].isConnected = true;
  63. }
  64. if (c->isConnected() == false)
  65. c->socketConnectionCompleted();
  66.  
  67. if (mySockets[i].revents & POLLIN)
  68. {
  69. if(mySocketsSsl[i].isSSL && mySocketsSsl[i].isConnected)
  70. {
  71. if(SSL_want_read(mySocketsSsl[i].ssl))
  72. {
  73. mySockets[i].revents = 0;
  74. continue;
  75. }
  76. }
  77. c->dataArrivedOnSocket();
  78. }
  79. if (mySockets[i].revents & POLLOUT)
  80. c->socketIsWritable();
  81. }
  82. }
  83.  
  84. if (mySockets[i].revents & (POLLERR | POLLNVAL))
  85. {
  86. MSN::Connection *c = mainConnection.connectionWithSocket((void*)mySockets[i].fd);
  87. if (c != NULL)
  88. delete c;
  89.  
  90. mySockets[i].fd = -1;
  91. mySockets[i].revents = 0;
  92. continue;
  93. }
  94. }
  95.  
  96. if (mySockets[0].revents & POLLIN)
  97. {
  98. // handle_command(mainConnection);
  99. mySockets[0].revents = 0;
  100. }
  101. }
  102. }
  103.  
  104. void Callbacks::registerSocket(void *s, int reading, int writing, bool isSSL)
  105. {
  106. for (int a = 1; a < 20; a++)
  107. {
  108. if (mySockets[a].fd == -1 || mySockets[a].fd == getSocketFileDescriptor(s))
  109. {
  110. if(mySockets[a].fd == -1)
  111. mySockets[a].events = 0;
  112. if (reading)
  113. mySockets[a].events |= POLLIN;
  114.  
  115. if (writing)
  116. mySockets[a].events |= POLLOUT;
  117.  
  118. mySockets[a].fd = getSocketFileDescriptor(s);
  119. if(isSSL)
  120. mySocketsSsl[a].isSSL = true;
  121. return;
  122. }
  123. }
  124. }
  125.  
  126. int Callbacks::getSocketFileDescriptor (void *sock)
  127. {
  128. long a = (long)sock;
  129. return (int)a;
  130. }
  131.  
  132. void Callbacks::closeSocket(void *s)
  133. {
  134. for (int a = 1; a < 20; a++)
  135. {
  136. if (mySockets[a].fd == getSocketFileDescriptor(s))
  137. {
  138. close(getSocketFileDescriptor(s));
  139. if(mySocketsSsl[a].isSSL)
  140. {
  141. if(mySocketsSsl[a].ssl)
  142. {
  143. if(mySocketsSsl[a].ssl) SSL_set_shutdown(mySocketsSsl[a].ssl, SSL_SENT_SHUTDOWN|SSL_RECEIVED_SHUTDOWN);
  144. if(mySocketsSsl[a].ssl) SSL_free(mySocketsSsl[a].ssl);
  145. if(mySocketsSsl[a].ctx) SSL_CTX_free(mySocketsSsl[a].ctx);
  146. mySocketsSsl[a].ssl=NULL;
  147. mySocketsSsl[a].ctx=NULL;
  148. }
  149. }
  150. for (int b = a; b < 19; b++)
  151. {
  152. mySockets[b].fd = mySockets[b + 1].fd;
  153. mySockets[b].revents = mySockets[b + 1].revents;
  154. mySockets[b].events = mySockets[b + 1].events;
  155. mySocketsSsl[b].isSSL = mySocketsSsl[b + 1].isSSL;
  156. mySocketsSsl[b].isConnected = mySocketsSsl[b + 1].isConnected;
  157. mySocketsSsl[b].ssl = mySocketsSsl[b + 1].ssl;
  158. mySocketsSsl[b].ctx = mySocketsSsl[b + 1].ctx;
  159. }
  160. mySockets[19].fd = -1;
  161. mySocketsSsl[19].isConnected = false;
  162. mySocketsSsl[19].isSSL = false;
  163. mySocketsSsl[19].ssl = NULL;
  164. mySocketsSsl[19].ctx = NULL;
  165. }
  166. }
  167. }
  168.  
  169. void Callbacks::unregisterSocket(void *s)
  170. {
  171. for (int a = 1; a < 20; a++)
  172. {
  173. if (mySockets[a].fd == getSocketFileDescriptor(s))
  174. {
  175. mySockets[a].events = 0;
  176. }
  177. }
  178. }
  179.  
  180. void Callbacks::gotFriendlyName(MSN::NotificationServerConnection * conn, std::string friendlyname)
  181. {}
  182.  
  183. void Callbacks::gotBuddyListInfo(MSN::NotificationServerConnection * conn, MSN::ListSyncInfo * info)
  184. {
  185. std::map<std::string, MSN::Buddy *>::iterator i = info->contactList.begin();
  186. std::map<std::string, int> allContacts;
  187.  
  188. for (; i != info->contactList.end(); i++)
  189. {
  190. MSN::Buddy *contact = (*i).second;
  191. if(contact->lists & MSN::LST_AB ) // only if it is the address book
  192. {
  193. allContacts[contact->userName.c_str()]=0;
  194. allContacts[contact->userName.c_str()] |= MSN::LST_AB;
  195.  
  196. std::list<MSN::Buddy::PhoneNumber>::iterator pns = contact->phoneNumbers.begin();
  197. std::list<MSN::Group *>::iterator g = contact->groups.begin();
  198.  
  199. for (; g != contact->groups.end(); g++)
  200. printf(" G: %s\n", (*g)->name.c_str());
  201.  
  202. for (; pns != contact->phoneNumbers.end(); pns++)
  203. printf(" %s: %s (%d)\n", (*pns).title.c_str(), (*pns).number.c_str(), (*pns).enabled);
  204. }
  205. if(contact->lists & MSN::LST_AL )
  206. {
  207. allContacts[contact->userName.c_str()] |= MSN::LST_AL;
  208. printf("-AL %s \n", contact->userName.c_str());
  209. }
  210. if(contact->lists & MSN::LST_BL )
  211. {
  212. allContacts[contact->userName.c_str()] |= MSN::LST_BL;
  213. printf("-BL %s \n", contact->userName.c_str());
  214. }
  215. if(contact->lists & MSN::LST_RL )
  216. printf("-RL %s \n", contact->userName.c_str());
  217. if(contact->lists & MSN::LST_PL )
  218. printf("-PL %s \n", contact->userName.c_str());
  219. }
  220.  
  221. std::map<std::string, int>::iterator b = allContacts.begin();
  222. conn->completeConnection(allContacts,info);
  223. }
  224.  
  225. void Callbacks::gotLatestListSerial(MSN::NotificationServerConnection * conn, std::string lastChange)
  226. {}
  227.  
  228. void Callbacks::gotGTC(MSN::NotificationServerConnection * conn, char c)
  229. {}
  230.  
  231. void Callbacks::gotOIMDeleteConfirmation(MSN::NotificationServerConnection * conn, bool success, std::string id)
  232. {}
  233.  
  234. void Callbacks::gotOIMSendConfirmation(MSN::NotificationServerConnection * conn, bool success, int id)
  235. {}
  236.  
  237. void Callbacks::gotOIM(MSN::NotificationServerConnection * conn, bool success, std::string id, std::string message)
  238. {}
  239.  
  240. void Callbacks::gotOIMList(MSN::NotificationServerConnection * conn, std::vector<MSN::eachOIM> OIMs)
  241. {}
  242.  
  243. void Callbacks::connectionReady(MSN::Connection * conn)
  244. {
  245. std::cout << "SAMARCH";
  246. }
  247.  
  248. void Callbacks::gotBLP(MSN::NotificationServerConnection * conn, char c)
  249. {}
  250.  
  251. void Callbacks::addedListEntry(MSN::NotificationServerConnection * conn, MSN::ContactList list, MSN::Passport username, std::string friendlyname)
  252. {}
  253.  
  254. void Callbacks::removedListEntry(MSN::NotificationServerConnection * conn, MSN::ContactList list, MSN::Passport username)
  255. {}
  256.  
  257. void Callbacks::addedGroup(MSN::NotificationServerConnection * conn, bool added, std::string groupName, std::string groupID)
  258. {}
  259.  
  260. void Callbacks::removedGroup(MSN::NotificationServerConnection * conn, bool removed, std::string groupID)
  261. {}
  262.  
  263. void Callbacks::renamedGroup(MSN::NotificationServerConnection * conn, bool renamed, std::string newGroupName, std::string groupID)
  264. {}
  265.  
  266. void Callbacks::showError(MSN::Connection * conn, std::string msg)
  267. {}
  268.  
  269. void Callbacks::buddyChangedStatus(MSN::NotificationServerConnection * conn, MSN::Passport buddy, std::string friendlyname, MSN::BuddyStatus status, unsigned int clientID, std::string msnobject)
  270. {}
  271.  
  272. void Callbacks::buddyOffline(MSN::NotificationServerConnection * conn, MSN::Passport buddy)
  273. {}
  274.  
  275. void Callbacks::gotSwitchboard(MSN::SwitchboardServerConnection * conn, const void * tag)
  276. {}
  277.  
  278. void Callbacks::buddyJoinedConversation(MSN::SwitchboardServerConnection * conn, MSN::Passport username, std::string friendlyname, int is_initial)
  279. {}
  280.  
  281. void Callbacks::buddyLeftConversation(MSN::SwitchboardServerConnection * conn, MSN::Passport username)
  282. {}
  283.  
  284. void Callbacks::gotInstantMessage(MSN::SwitchboardServerConnection * conn, MSN::Passport username, std::string friendlyname, MSN::Message * msg)
  285. {}
  286.  
  287. void Callbacks::gotEmoticonNotification(MSN::SwitchboardServerConnection * conn, MSN::Passport username, std::string alias, std::string msnobject)
  288. {}
  289.  
  290. void Callbacks::failedSendingMessage(MSN::Connection * conn)
  291. {}
  292.  
  293. void Callbacks::buddyTyping(MSN::SwitchboardServerConnection * conn, MSN::Passport username, std::string friendlyname)
  294. {}
  295.  
  296. void Callbacks::gotNudge(MSN::SwitchboardServerConnection * conn, MSN::Passport username)
  297. {}
  298.  
  299. void Callbacks::gotVoiceClipNotification(MSN::SwitchboardServerConnection * conn, MSN::Passport username, std::string msnobject)
  300. {}
  301.  
  302. void Callbacks::gotWinkNotification(MSN::SwitchboardServerConnection * conn, MSN::Passport username, std::string msnobject)
  303. {}
  304.  
  305. void Callbacks::gotInk(MSN::SwitchboardServerConnection * conn, MSN::Passport username, std::string image)
  306. {}
  307.  
  308. void Callbacks::gotContactDisplayPicture(MSN::SwitchboardServerConnection * conn, MSN::Passport passport, std::string filename )
  309. {}
  310.  
  311. void Callbacks::gotActionMessage(MSN::SwitchboardServerConnection * conn, MSN::Passport username, std::string message)
  312. {}
  313.  
  314. void Callbacks::gotInitialEmailNotification(MSN::NotificationServerConnection * conn, int msgs_inbox, int unread_inbox, int msgs_folders, int unread_folders)
  315. {}
  316.  
  317. void Callbacks::gotNewEmailNotification(MSN::NotificationServerConnection * conn, std::string from, std::string subject)
  318. {}
  319.  
  320. void Callbacks::fileTransferInviteResponse(MSN::SwitchboardServerConnection * conn, unsigned int sessionID, bool response)
  321. {}
  322.  
  323. void Callbacks::fileTransferProgress(MSN::SwitchboardServerConnection * conn, unsigned int sessionID, unsigned long long transferred, unsigned long long total)
  324. {}
  325.  
  326. void Callbacks::fileTransferFailed(MSN::SwitchboardServerConnection * conn, unsigned int sessionID, MSN::fileTransferError error)
  327. {}
  328.  
  329. void Callbacks::fileTransferSucceeded(MSN::SwitchboardServerConnection * conn, unsigned int sessionID)
  330. {}
  331.  
  332. void Callbacks::gotNewConnection(MSN::Connection * conn)
  333. {
  334. printf("phoque");
  335. if (dynamic_cast<MSN::NotificationServerConnection *>(conn))
  336. dynamic_cast<MSN::NotificationServerConnection *>(conn)->synchronizeContactList();
  337. }
  338.  
  339. void Callbacks::buddyChangedPersonalInfo(MSN::NotificationServerConnection * conn, MSN::Passport fromPassport, MSN::personalInfo pInfo)
  340. {}
  341.  
  342. void Callbacks::closingConnection(MSN::Connection * conn)
  343. {}
  344.  
  345. void Callbacks::changedStatus(MSN::NotificationServerConnection * conn, MSN::BuddyStatus state)
  346. {}
  347.  
  348. void * Callbacks::connectToServer(std::string hostname, int port, bool *connected, bool isSSL)
  349. {}
  350.  
  351. int Callbacks::listenOnPort(int port)
  352. {}
  353.  
  354. std::string Callbacks::getOurIP(void)
  355. {}
  356.  
  357. void Callbacks::log(int i, const char *s)
  358. {}
  359.  
  360. std::string Callbacks::getSecureHTTPProxy()
  361. {}
  362.  
  363. void Callbacks::gotMessageSentACK(MSN::SwitchboardServerConnection * conn, int trID)
  364. {}
  365.  
  366. void Callbacks::askFileTransfer(MSN::SwitchboardServerConnection * conn, MSN::fileTransferInvite ft)
  367. {}
  368.  
  369. void Callbacks::addedContactToGroup(MSN::NotificationServerConnection * conn, bool added, std::string groupId, std::string contactId)
  370. {}
  371.  
  372. void Callbacks::removedContactFromGroup(MSN::NotificationServerConnection * conn, bool removed, std::string groupId, std::string contactId)
  373. {}
  374.  
  375. void Callbacks::addedContactToAddressBook(MSN::NotificationServerConnection * conn, bool added, std::string passport, std::string displayName, std::string guid)
  376. {}
  377.  
  378. void Callbacks::removedContactFromAddressBook(MSN::NotificationServerConnection * conn, bool removed, std::string contactId, std::string passport)
  379. {}
  380.  
  381. void Callbacks::enabledContactOnAddressBook(MSN::NotificationServerConnection * conn, bool enabled, std::string contactId, std::string passport)
  382. {}
  383.  
  384. void Callbacks::disabledContactOnAddressBook(MSN::NotificationServerConnection * conn, bool disabled, std::string contactId)
  385. {}
  386.  
  387. size_t Callbacks::getDataFromSocket (void *sock, char *data, size_t size)
  388. {}
  389.  
  390. size_t Callbacks::writeDataToSocket (void *sock, char *data, size_t size)
  391. {}
  392.  
  393. void Callbacks::gotVoiceClipFile(MSN::SwitchboardServerConnection * conn, unsigned int sessionID, std::string file)
  394. {}
  395.  
  396. void Callbacks::gotEmoticonFile(MSN::SwitchboardServerConnection * conn, unsigned int sessionID, std::string alias, std::string file)
  397. {}
  398.  
  399. void Callbacks::gotWinkFile(MSN::SwitchboardServerConnection * conn, unsigned int sessionID, std::string file)
  400. {}
  401.  
  402. void Callbacks::gotInboxUrl(MSN::NotificationServerConnection *conn, MSN::hotmailInfo info)
  403. {}
Add Comment
Please, Sign In to add comment