Advertisement
Guest User

Untitled

a guest
Sep 21st, 2017
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include "networkwireless.h"
  2.  
  3. NetworkWireless::NetworkWireless(QObject *parent) : QObject(parent)
  4. {
  5.     this->getInterface();
  6.     this->scanWireless();
  7.  
  8.     connect(timer, SIGNAL(timeout()), this, SLOT(scanWireless()), Qt::UniqueConnection);
  9.     timer->start(2500);
  10. }
  11.  
  12. void NetworkWireless::getInterface()
  13. {
  14.     QList<QNetworkInterface> interfaces = QNetworkInterface::allInterfaces();
  15.     for (auto &interface : interfaces) {
  16.         if (QString(interface.name()).indexOf("w") >= 0) {
  17.             ifaces.append(interface.name());
  18.         }
  19.     }
  20. }
  21.  
  22. void NetworkWireless::scanWireless()
  23. {
  24.     busy = true;
  25.     Q_EMIT searchChanged();
  26.  
  27.     QString command = QString("iwlist %1 scan").arg(ifaces.at(0));
  28.     process.start(command);
  29.  
  30.     connect(&process, SIGNAL(finished(int)), this, SLOT(parseScanWireless(int)));
  31. }
  32.  
  33. void NetworkWireless::parseScanWireless(int status)
  34. {
  35.     list_wifi.clear();
  36.  
  37.     QRegularExpression reg_START("(Cell.*- Address: .*)");
  38.     QRegularExpression reg_SSID("(ESSID:.*)");
  39.     QRegularExpression reg_CHANNEL("(Channel:.*)");
  40.     QRegularExpression reg_ENCRIPTION("(Encryption key:.*)");
  41.     QRegularExpression reg_QUALITY("(Quality=.* Signal level=.*)");
  42.  
  43.     QJsonObject object;
  44.  
  45.     if (status == 0) {
  46.         while (!process.atEnd()) {
  47.             QString line = process.readLine();
  48.  
  49.             QRegularExpressionMatch match_START = reg_START.match(line);
  50.             if (match_START.hasMatch() && object.length() > 0) {
  51.                 list_wifi.append(object.toVariantMap());
  52.                 object = {};
  53.             }
  54.  
  55.             QRegularExpressionMatch match_SSID = reg_SSID.match(line);
  56.             if (match_SSID.hasMatch()) {
  57.                 QStringList split = match_SSID.captured().replace("\"", "").split(":");
  58.                 object.insert(split.at(0), split.at(1));
  59.             }
  60.  
  61.             QRegularExpressionMatch match_CHANNEL = reg_CHANNEL.match(line);
  62.             if (match_CHANNEL.hasMatch()) {
  63.                 QStringList split = match_CHANNEL.captured().replace("\"", "").split(":");
  64.                 object.insert(split.at(0), split.at(1));
  65.             }
  66.  
  67.             QRegularExpressionMatch match_ENCRIPTION = reg_ENCRIPTION.match(line);
  68.             if (match_ENCRIPTION.hasMatch()) {
  69.                 QStringList split = match_ENCRIPTION.captured().replace("\"", "").replace(" key", "").split(":");
  70.                 object.insert(split.at(0), split.at(1));
  71.             }
  72.  
  73.             QRegularExpressionMatch match_QUALITY = reg_QUALITY.match(line);
  74.             if (match_QUALITY.hasMatch()) {
  75.                 QStringList split = match_QUALITY.captured().replace("\"", "").split(" ");
  76.                 split = QString(split.at(0)).split("=");
  77.                 object.insert(split.at(0), split.at(1));
  78.             }
  79.  
  80.             if (process.atEnd()) {
  81.                 list_wifi.append(object.toVariantMap());
  82.                 object = {};
  83.             }
  84.         }
  85.         qDebug() << list_wifi;
  86.         //Q_EMIT listWifiChanged();
  87.     }
  88.     busy = false;
  89.     Q_EMIT searchChanged();
  90. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement