xref: /OK3568_Linux_fs/app/forlinx/flapp/src/libs/core/systemmanager.cpp (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 #include "systemmanager.h"
2 #include "terminal.h"
3 #include<QMutex>
4 #include <QFile>
5 #include <QRegularExpression>
6 #include <QRegularExpressionMatch>
7 
8 SystemManager * SystemManager::m_instance=NULL;
SystemManager()9 SystemManager::SystemManager()
10 {
11 }
12 
instance()13 SystemManager *SystemManager::instance()
14 {
15     if(m_instance == NULL)
16     {
17         static QMutex mutex;
18         mutex.lock();
19         if(m_instance == NULL)
20         {
21             m_instance = new SystemManager;
22         }
23         mutex.unlock();
24     }
25 
26     return m_instance;
27 }
28 
detoryInstance()29 void SystemManager::detoryInstance()
30 {
31     if(m_instance != NULL)
32     {
33         delete m_instance;
34     }
35 }
36 
getDNS()37 QStringList SystemManager::getDNS()
38 {
39     QString result = Terminal::execCmd("cat /etc/resolv.conf");
40     return getIPs(result);
41 }
42 
setDNS(const QString & dns)43 void SystemManager::setDNS(const QString &dns)
44 {
45     Terminal::execCmd(QString("echo 'nameserver %1' > /etc/resolv.conf").arg(dns));
46 }
47 
setNetwork(const QString & cardName,const QString & ip,const QString & mask)48 void SystemManager::setNetwork(const QString &cardName, const QString &ip, const QString &mask)
49 {
50     Terminal::execCmd(QString("ifconfig %1 %2 netmasek %3 up").arg(cardName).arg(ip).arg(mask));
51 }
52 
getNetwork(const QString & cardName,QString & ip,QString & mask)53 void SystemManager::getNetwork(const QString &cardName, QString &ip, QString &mask)
54 {
55     QString result = Terminal::execCmd(QString("ifconfig %1").arg(cardName));
56     QStringList list = getIPs(result);
57     if(list.size() >2)
58     {
59         ip = list[0];
60         mask = list[2];
61     }
62 }
63 
getKernalInfo(QString & version)64 void SystemManager::getKernalInfo(QString &version)
65 {
66     version = Terminal::execCmd("uname -a");
67 }
68 
getStoargeInfo(QString & info)69 void SystemManager::getStoargeInfo(QString &info)
70 {
71     info = Terminal::execCmd("df -h");
72 }
73 
getCpuInfo(QString & info)74 void SystemManager::getCpuInfo(QString &info)
75 {
76     QString result = Terminal::execCmd("top -b -n 1 | grep %");
77     QStringList list;
78     if(platformInfo().contains("t507"))
79     {
80        list =  getMatch(result, "\\d+%");
81     }else{
82         list =  getMatch(result, "\\d+.\\d+");
83     }
84 
85     if(list.size() >1 )
86     {
87         info = list[0];
88     }
89 
90 
91 }
92 
getMemInfo(QString & memTotal,QString & memFree,QString & memAvailable)93 void SystemManager::getMemInfo(QString &memTotal, QString &memFree, QString &memAvailable)
94 {
95     //MemTotal:        3191916 kB
96     //MemFree:          470732 kB
97     //MemAvailable:     455120 kB
98     //Buffers:           15200 kB
99     //Cached:           368716 kB
100     //SwapCached:        31984 kB
101     QString result = Terminal::execCmd("cat /proc/meminfo");
102     QStringList list = getMatch(result, "\\d+");
103     if(list.size()>=3)
104     {
105         memTotal=list[0];
106         memFree=list[1];
107         memAvailable=list[2];
108     }
109 }
110 
getMatch(const QString & s,const QString & pattern)111 QStringList SystemManager::getMatch(const QString &s, const QString &pattern)
112 {
113     QStringList list;
114     QRegularExpression re(pattern);
115     int offset = 0;
116     QRegularExpressionMatch match = re.match(s, offset);
117     while (match.hasMatch()) {
118         list <<match.captured();
119         offset = match.capturedEnd();
120         match = re.match(s, offset);
121     }
122     return list;
123 }
124 
getIPs(const QString & data)125 QStringList SystemManager::getIPs(const QString &data)
126 {
127     return getMatch(data, "((2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\\.){3}(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)");
128 }
129 
setGateway(const QString & gateway)130 void SystemManager::setGateway(const QString &gateway)
131 {
132     Terminal::execCmd(QString("route add default gw %1").arg(gateway));
133 }
134 
getGateway()135 QString SystemManager::getGateway()
136 {
137     QString gateway;
138     QString result = Terminal::execCmd(QString("ip route"));
139 
140     QStringList list =getIPs(result);
141     if(list.size() >=1)
142     {
143         gateway = list[0];
144     }
145     return gateway;
146 }
147 
setPlatformInfo(const QString name)148 void SystemManager::setPlatformInfo(const QString name)
149 {
150     m_platformName = name.toLower();
151 }
152 
platformInfo()153 QString SystemManager::platformInfo()
154 {
155     return m_platformName;
156 }
157 
158