You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

mainclass.cpp 2.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. #include "mainclass.h"
  2. #include <QApplication>
  3. #include <QFileInfo>
  4. #include <iostream>
  5. MainClass::MainClass(QObject* p) : QObject(p)
  6. {
  7. if(qApp->argc() < 2)
  8. {
  9. qDebug()<<"Usage:"<<QFileInfo(qApp->applicationFilePath()).fileName().toStdString().c_str()<< "loginsFile";
  10. qApp->exit(-1);
  11. }
  12. m_intra = new IntraBocal(this);
  13. connect(m_intra, SIGNAL(error(IntraBocal::Error)), this, SLOT(intraError(IntraBocal::Error)));
  14. connect(m_intra, SIGNAL(logged()), this, SLOT(intraLogged()));
  15. connect(m_intra, SIGNAL(searchFinished(QList<QList<QString> >)), this, SLOT(intraSearchFinished(QList<QList<QString> >)));
  16. m_users = Epimafia::loadUsers();
  17. for(int i = 0; i < m_users.size(); ++i)
  18. {
  19. EpiUser usr = m_users.at(i);
  20. if(!usr.hasLogin() || usr.isUnknown() || !usr.hasPwd_ppp())
  21. m_users.removeAt(i--);
  22. }
  23. if(m_users.isEmpty())
  24. {
  25. qDebug()<<"No Logins";
  26. qApp->exit(-1);
  27. }
  28. m_intra->login(m_users.at(0).getLogin(), m_users.at(0).getPwd_ppp());
  29. QFile logins(qApp->arguments().at(1));
  30. if(!logins.open(QIODevice::ReadOnly))
  31. {
  32. qDebug()<<"Unable to open "<<logins.fileName();
  33. qApp->exit(-1);
  34. }
  35. while(!logins.atEnd())
  36. {
  37. QString str = logins.readLine();
  38. str.replace("\n", "");
  39. str.replace("\r", "");
  40. if(!str.isEmpty())
  41. m_logins.append(str);
  42. }
  43. logins.close();
  44. }
  45. MainClass::~MainClass()
  46. {
  47. }
  48. void MainClass::intraError(IntraBocal::Error e)
  49. {
  50. if(e == IntraBocal::BadLogin)
  51. {
  52. if(!m_users.isEmpty())
  53. {
  54. m_users.removeFirst();
  55. m_intra->login(m_users.at(0).getLogin(), m_users.at(0).getPwd_ppp());
  56. return;
  57. }
  58. else
  59. qDebug()<<"No Logins with valid password";
  60. }
  61. else if(e == IntraBocal::NetworkError)
  62. qDebug()<<"Network Error";
  63. else if(e == IntraBocal::ParseError)
  64. qDebug()<<"Parse Error";
  65. else if(e == IntraBocal::SslError)
  66. qDebug()<<"Ssl Error";
  67. qApp->exit(-1);
  68. }
  69. void MainClass::intraLogged()
  70. {
  71. qDebug()<<"Logged in";
  72. nextSearch();
  73. }
  74. void MainClass::intraSearchFinished(QList<QList<QString> > users)
  75. {
  76. if(!users.isEmpty())
  77. {
  78. users.removeFirst();
  79. if(users.size() > 0)
  80. std::cout<<users.at(0).at(2).toStdString().c_str()<<"."<<users.at(0).at(1).toStdString().c_str()<<"@epita.fr"<<std::endl;
  81. }
  82. else
  83. qDebug()<<"Users empty";
  84. nextSearch();
  85. }
  86. void MainClass::nextSearch()
  87. {
  88. if(m_logins.isEmpty())
  89. {
  90. qApp->exit();
  91. return;
  92. }
  93. m_intra->searchUser("", "", m_logins.at(0));
  94. m_logins.removeFirst();
  95. }