1
/****************************************************************************
2
** ui.h extension file, included from the uic-generated form implementation.
4
** If you want to add, delete, or rename functions or slots, use
5
** Qt Designer to update this file, preserving your code.
7
** You should not define a constructor or destructor in this file.
8
** Instead, write your code in functions called init() and destroy().
9
** These will automatically be called by the form's constructor and
11
*****************************************************************************/
23
void NetworkConfig::init()
28
void NetworkConfig::paramsFromScanResults(Q3ListViewItem *sel)
30
/* SSID BSSID frequency signal flags */
31
setCaption(sel->text(0));
32
ssidEdit->setText(sel->text(0));
34
QString flags = sel->text(4);
36
if (flags.find("[WPA2-EAP") >= 0)
38
else if (flags.find("[WPA-EAP") >= 0)
40
else if (flags.find("[WPA2-PSK") >= 0)
42
else if (flags.find("[WPA-PSK") >= 0)
47
if (flags.find("-CCMP") >= 0)
49
else if (flags.find("-TKIP") >= 0)
51
else if (flags.find("WEP") >= 0)
56
authSelect->setCurrentItem(auth);
58
encrSelect->setCurrentItem(encr);
62
void NetworkConfig::authChanged(int sel)
64
pskEdit->setEnabled(sel == AUTH_WPA_PSK || sel == AUTH_WPA2_PSK);
65
bool eap = sel == AUTH_IEEE8021X || sel == AUTH_WPA_EAP ||
67
eapSelect->setEnabled(eap);
68
identityEdit->setEnabled(eap);
69
passwordEdit->setEnabled(eap);
71
while (encrSelect->count())
72
encrSelect->removeItem(0);
74
if (sel == AUTH_NONE || sel == AUTH_IEEE8021X) {
75
encrSelect->insertItem("None");
76
encrSelect->insertItem("WEP");
77
encrSelect->setCurrentItem(sel == AUTH_NONE ? 0 : 1);
79
encrSelect->insertItem("TKIP");
80
encrSelect->insertItem("CCMP");
81
encrSelect->setCurrentItem((sel == AUTH_WPA2_PSK ||
82
sel == AUTH_WPA2_EAP) ? 1 : 0);
87
void NetworkConfig::addNetwork()
89
char reply[10], cmd[256];
92
int psklen = pskEdit->text().length();
93
int auth = authSelect->currentItem();
95
if (auth == AUTH_WPA_PSK || auth == AUTH_WPA2_PSK) {
96
if (psklen < 8 || psklen > 64) {
97
QMessageBox::warning(this, "wpa_gui", "WPA-PSK requires a passphrase "
98
"of 8 to 63 characters\n"
99
"or 64 hex digit PSK");
107
memset(reply, 0, sizeof(reply));
108
reply_len = sizeof(reply) - 1;
109
wpagui->ctrlRequest("ADD_NETWORK", reply, &reply_len);
110
if (reply[0] == 'F') {
111
QMessageBox::warning(this, "wpa_gui", "Failed to add network to wpa_supplicant\n"
117
setNetworkParam(id, "ssid", ssidEdit->text().ascii(), true);
119
char *key_mgmt = NULL, *proto = NULL, *pairwise = NULL;
125
key_mgmt = "IEEE8021X";
128
key_mgmt = "WPA-PSK";
132
key_mgmt = "WPA-EAP";
136
key_mgmt = "WPA2-PSK";
140
key_mgmt = "WPA2-EAP";
145
if (auth == AUTH_WPA_PSK || auth == AUTH_WPA_EAP ||
146
auth == AUTH_WPA2_PSK || auth == AUTH_WPA2_EAP) {
147
int encr = encrSelect->currentItem();
155
setNetworkParam(id, "proto", proto, false);
157
setNetworkParam(id, "key_mgmt", key_mgmt, false);
159
setNetworkParam(id, "pairwise", pairwise, false);
160
setNetworkParam(id, "group", "TKIP CCMP WEP104 WEP40", false);
162
if (pskEdit->isEnabled())
163
setNetworkParam(id, "psk", pskEdit->text().ascii(), psklen != 64);
164
if (eapSelect->isEnabled())
165
setNetworkParam(id, "eap", eapSelect->currentText().ascii(), false);
166
if (identityEdit->isEnabled())
167
setNetworkParam(id, "identity", identityEdit->text().ascii(), true);
168
if (passwordEdit->isEnabled())
169
setNetworkParam(id, "password", passwordEdit->text().ascii(), true);
171
snprintf(cmd, sizeof(cmd), "ENABLE_NETWORK %d", id);
172
reply_len = sizeof(reply);
173
wpagui->ctrlRequest(cmd, reply, &reply_len);
174
if (strncmp(reply, "OK", 2) != 0) {
175
QMessageBox::warning(this, "wpa_gui", "Failed to enable network in wpa_supplicant\n"
177
/* Network was added, so continue anyway */
184
void NetworkConfig::setWpaGui( WpaGui *_wpagui )
190
int NetworkConfig::setNetworkParam(int id, const char *field, const char *value, bool quote)
192
char reply[10], cmd[256];
194
snprintf(cmd, sizeof(cmd), "SET_NETWORK %d %s %s%s%s",
195
id, field, quote ? "\"" : "", value, quote ? "\"" : "");
196
reply_len = sizeof(reply);
197
wpagui->ctrlRequest(cmd, reply, &reply_len);
198
return strncmp(reply, "OK", 2) == 0 ? 0 : -1;