Diffstat (limited to 'noncore/settings/networksettings/wlan/wlanimp2.cpp') (more/less context) (show whitespace changes)
-rw-r--r-- | noncore/settings/networksettings/wlan/wlanimp2.cpp | 141 |
1 files changed, 137 insertions, 4 deletions
diff --git a/noncore/settings/networksettings/wlan/wlanimp2.cpp b/noncore/settings/networksettings/wlan/wlanimp2.cpp index 11dfe74..2fd97c3 100644 --- a/noncore/settings/networksettings/wlan/wlanimp2.cpp +++ b/noncore/settings/networksettings/wlan/wlanimp2.cpp | |||
@@ -70,59 +70,113 @@ WLANImp::~WLANImp() { | |||
70 | } | 70 | } |
71 | 71 | ||
72 | /** | 72 | /** |
73 | * Change the profile for both wireless settings and network settings. | 73 | * Change the profile for both wireless settings and network settings. |
74 | */ | 74 | */ |
75 | void WLANImp::setProfile(const QString &profile){ | 75 | void WLANImp::setProfile(const QString &profile){ |
76 | interfaceSetup->setProfile(profile); | 76 | interfaceSetup->setProfile(profile); |
77 | parseOpts(); | 77 | parseOpts(); |
78 | } | 78 | } |
79 | 79 | ||
80 | void WLANImp::parseOpts() { | 80 | void WLANImp::parseOpts() { |
81 | bool error; | 81 | bool error; |
82 | QString opt; | 82 | QString opt,key; |
83 | 83 | ||
84 | if (! interfaces->isInterfaceSet()) | 84 | if (! interfaces->isInterfaceSet()) |
85 | return; | 85 | return; |
86 | 86 | ||
87 | |||
88 | opt = interfaces->getInterfaceOption("wireless_essid", error); | 87 | opt = interfaces->getInterfaceOption("wireless_essid", error); |
89 | if(opt == "any" || opt == "off" || opt.isNull()){ | 88 | if(opt == "any" || opt == "off" || opt.isNull()){ |
90 | essid->setEditText("any"); | 89 | essid->setEditText("any"); |
91 | } else { | 90 | } else { |
92 | essid->setEditText(opt); | 91 | essid->setEditText(opt); |
93 | } | 92 | } |
94 | 93 | ||
95 | opt = interfaces->getInterfaceOption("wireless_mode", error).simplifyWhiteSpace(); | 94 | opt = interfaces->getInterfaceOption("wireless_mode", error).simplifyWhiteSpace(); |
96 | 95 | ||
97 | for ( int i = 0; i < mode->count(); i++) | 96 | for ( int i = 0; i < mode->count(); i++) |
98 | if ( mode->text( i ) == opt ) mode->setCurrentItem( i ); | 97 | if ( mode->text( i ) == opt ) mode->setCurrentItem( i ); |
99 | 98 | ||
100 | opt = interfaces->getInterfaceOption("wireless_ap", error).simplifyWhiteSpace(); | 99 | opt = interfaces->getInterfaceOption("wireless_ap", error).simplifyWhiteSpace(); |
101 | if (! opt.isNull()) { | 100 | if (! opt.isNull()) { |
102 | specifyAp->setChecked(true); | 101 | specifyAp->setChecked(true); |
103 | macEdit->setText(opt); | 102 | macEdit->setText(opt); |
104 | } | 103 | } |
105 | 104 | ||
106 | opt = interfaces->getInterfaceOption("wireless_channel", error).simplifyWhiteSpace(); | 105 | opt = interfaces->getInterfaceOption("wireless_channel", error).simplifyWhiteSpace(); |
107 | if (! opt.isNull()) { | 106 | if (! opt.isNull()) { |
108 | specifyChan->setChecked(true); | 107 | specifyChan->setChecked(true); |
109 | networkChannel->setValue(opt.toInt()); | 108 | networkChannel->setValue(opt.toInt()); |
110 | } | 109 | } |
111 | 110 | ||
112 | opt = interfaces->getInterfaceOption("wireless_key", error).simplifyWhiteSpace(); | 111 | opt = interfaces->getInterfaceOption("wireless_type", error).simplifyWhiteSpace(); |
113 | if (opt.isNull()) | 112 | |
113 | if ( opt == "wlan-ng") { | ||
114 | |||
115 | //FIXME:Handle wlan_ng_priv_genstr | ||
116 | |||
117 | // get default key_id | ||
118 | opt = interfaces->getInterfaceOption("wlan_ng_default_key_id", error).simplifyWhiteSpace(); | ||
119 | |||
120 | if (opt == "0") | ||
121 | keyRadio0->setChecked(true); | ||
122 | if (opt == "1") | ||
123 | keyRadio1->setChecked(true); | ||
124 | if (opt == "2") | ||
125 | keyRadio2->setChecked(true); | ||
126 | if (opt == "3") | ||
127 | keyRadio3->setChecked(true); | ||
128 | |||
129 | // get key0 | ||
130 | key = interfaces->getInterfaceOption("wlan_ng_key0", error).simplifyWhiteSpace(); | ||
131 | key.replace(QString(":"),QString("")); | ||
132 | keyLineEdit0->setText(key); | ||
133 | |||
134 | // get key1 | ||
135 | key = interfaces->getInterfaceOption("wlan_ng_key1", error).simplifyWhiteSpace(); | ||
136 | key.replace(QString(":"),QString("")); | ||
137 | keyLineEdit1->setText(key); | ||
138 | |||
139 | // get key2 | ||
140 | key = interfaces->getInterfaceOption("wlan_ng_key2", error).simplifyWhiteSpace(); | ||
141 | key.replace(QString(":"),QString("")); | ||
142 | keyLineEdit2->setText(key); | ||
143 | |||
144 | // get key3 | ||
145 | key = interfaces->getInterfaceOption("wlan_ng_key3", error).simplifyWhiteSpace(); | ||
146 | key.replace(QString(":"),QString("")); | ||
147 | keyLineEdit3->setText(key); | ||
148 | |||
114 | opt = interfaces->getInterfaceOption("wireless_enc", error).simplifyWhiteSpace(); | 149 | opt = interfaces->getInterfaceOption("wireless_enc", error).simplifyWhiteSpace(); |
150 | |||
151 | // encryption on? | ||
152 | if(opt == "on"){ | ||
153 | wepEnabled->setChecked(true); | ||
154 | } else { | ||
155 | wepEnabled->setChecked(false); | ||
156 | } | ||
157 | |||
158 | opt = interfaces->getInterfaceOption("wireless_keymode", error).simplifyWhiteSpace(); | ||
159 | |||
160 | if(opt == "restricted"){ | ||
161 | // restricted mode, only accept encrypted packets | ||
162 | rejectNonEnc->setChecked(true); | ||
163 | } | ||
164 | } | ||
165 | else { | ||
166 | opt = interfaces->getInterfaceOption("wireless_key", error).simplifyWhiteSpace(); | ||
167 | |||
115 | parseKeyStr(opt); | 168 | parseKeyStr(opt); |
116 | } | 169 | } |
170 | } | ||
117 | 171 | ||
118 | void WLANImp::parseKeyStr(QString keystr) { | 172 | void WLANImp::parseKeyStr(QString keystr) { |
119 | int index = 1; | 173 | int index = 1; |
120 | QString key; | 174 | QString key; |
121 | QStringList keys = QStringList::split(QRegExp("\\s+"), keystr); | 175 | QStringList keys = QStringList::split(QRegExp("\\s+"), keystr); |
122 | int enc = -1; // encryption state | 176 | int enc = -1; // encryption state |
123 | 177 | ||
124 | for (QStringList::Iterator it = keys.begin(); it != keys.end(); ++it) { | 178 | for (QStringList::Iterator it = keys.begin(); it != keys.end(); ++it) { |
125 | if ((*it).left(3) == "off") { | 179 | if ((*it).left(3) == "off") { |
126 | // encryption disabled | 180 | // encryption disabled |
127 | enc = 0; | 181 | enc = 0; |
128 | } else if ((*it).left(2) == "on") { | 182 | } else if ((*it).left(2) == "on") { |
@@ -217,25 +271,45 @@ void WLANImp::accept() { | |||
217 | if (specifyAp->isChecked() && macEdit->text().isEmpty()) { | 271 | if (specifyAp->isChecked() && macEdit->text().isEmpty()) { |
218 | QMessageBox::information(this, "Error", "Please enter the MAC address of the Access Point.", QMessageBox::Ok); | 272 | QMessageBox::information(this, "Error", "Please enter the MAC address of the Access Point.", QMessageBox::Ok); |
219 | return; | 273 | return; |
220 | } | 274 | } |
221 | 275 | ||
222 | // Try to save the interfaces settings. | 276 | // Try to save the interfaces settings. |
223 | writeOpts(); | 277 | writeOpts(); |
224 | 278 | ||
225 | // Close out the dialog | 279 | // Close out the dialog |
226 | // FIXME: QDialog::accept(); | 280 | // FIXME: QDialog::accept(); |
227 | } | 281 | } |
228 | 282 | ||
283 | QString WLANImp::formatKey(QString input) | ||
284 | { | ||
285 | int len,r=0; | ||
286 | |||
287 | len = input.length(); | ||
288 | |||
289 | if (!len) | ||
290 | return input; | ||
291 | |||
292 | for(int i=1;i<len/2;i++) | ||
293 | { | ||
294 | input.insert(r+i*2,QString(":")); | ||
295 | r++; | ||
296 | } | ||
297 | |||
298 | return input; | ||
299 | } | ||
300 | |||
229 | void WLANImp::writeOpts() { | 301 | void WLANImp::writeOpts() { |
302 | QString para, devicetype; | ||
303 | |||
230 | // eh can't really do anything about it other then return. :-D | 304 | // eh can't really do anything about it other then return. :-D |
231 | if(!interfaces->isInterfaceSet()){ | 305 | if(!interfaces->isInterfaceSet()){ |
232 | QMessageBox::warning(0,"Inface not set","should not happen!!!"); | 306 | QMessageBox::warning(0,"Inface not set","should not happen!!!"); |
233 | return; | 307 | return; |
234 | } | 308 | } |
235 | bool error = false; | 309 | bool error = false; |
236 | 310 | ||
237 | odebug << "setting wlan interface " << interfaces->getInterfaceName( error ).latin1() << "" << oendl; | 311 | odebug << "setting wlan interface " << interfaces->getInterfaceName( error ).latin1() << "" << oendl; |
238 | 312 | ||
239 | if (error) QMessageBox::warning(0,"Inface not set","should not happen!!!"); | 313 | if (error) QMessageBox::warning(0,"Inface not set","should not happen!!!"); |
240 | 314 | ||
241 | interfaces->setInterfaceOption(QString("wireless_mode"), mode->currentText()); | 315 | interfaces->setInterfaceOption(QString("wireless_mode"), mode->currentText()); |
@@ -244,24 +318,82 @@ void WLANImp::writeOpts() { | |||
244 | if (specifyAp->isChecked()) { | 318 | if (specifyAp->isChecked()) { |
245 | interfaces->setInterfaceOption(QString("wireless_ap"), macEdit->text()); | 319 | interfaces->setInterfaceOption(QString("wireless_ap"), macEdit->text()); |
246 | } else { | 320 | } else { |
247 | interfaces->removeInterfaceOption(QString("wireless_ap")); | 321 | interfaces->removeInterfaceOption(QString("wireless_ap")); |
248 | } | 322 | } |
249 | 323 | ||
250 | if (specifyChan->isChecked()) { | 324 | if (specifyChan->isChecked()) { |
251 | interfaces->setInterfaceOption(QString("wireless_channel"), networkChannel->text()); | 325 | interfaces->setInterfaceOption(QString("wireless_channel"), networkChannel->text()); |
252 | } else { | 326 | } else { |
253 | interfaces->removeInterfaceOption(QString("wireless_channel")); | 327 | interfaces->removeInterfaceOption(QString("wireless_channel")); |
254 | } | 328 | } |
255 | 329 | ||
330 | devicetype = interfaces->getInterfaceOption("wireless_type", error).simplifyWhiteSpace(); | ||
331 | |||
332 | if ( devicetype == "wlan-ng") { | ||
333 | |||
334 | // wlan-ng style | ||
335 | interfaces->removeInterfaceOption(QString("wireless_key")); | ||
336 | |||
337 | if (wepEnabled->isChecked()) { | ||
338 | |||
339 | interfaces->setInterfaceOption(QString("wireless_enc"),"on"); | ||
340 | |||
341 | if (! keyLineEdit0->text().isNull()) { | ||
342 | interfaces->setInterfaceOption(QString("wlan_ng_key0"), formatKey(keyLineEdit0->text())); | ||
343 | } else | ||
344 | interfaces->removeInterfaceOption(QString("wlan_ng_key0")); | ||
345 | if (! keyLineEdit1->text().isNull()) { | ||
346 | interfaces->setInterfaceOption(QString("wlan_ng_key1"), formatKey(keyLineEdit1->text())); | ||
347 | } else | ||
348 | interfaces->removeInterfaceOption(QString("wlan_ng_key1")); | ||
349 | if (! keyLineEdit2->text().isNull()) { | ||
350 | interfaces->setInterfaceOption(QString("wlan_ng_key2"), formatKey(keyLineEdit2->text())); | ||
351 | } else | ||
352 | interfaces->removeInterfaceOption(QString("wlan_ng_key2")); | ||
353 | if (! keyLineEdit3->text().isNull()) { | ||
354 | interfaces->setInterfaceOption(QString("wlan_ng_key3"), formatKey(keyLineEdit3->text())); | ||
355 | } else | ||
356 | interfaces->removeInterfaceOption(QString("wlan_ng_key3")); | ||
357 | |||
358 | if (acceptNonEnc->isChecked()) | ||
359 | interfaces->removeInterfaceOption(QString("wireless_keymode")); | ||
360 | else | ||
361 | interfaces->setInterfaceOption(QString("wireless_keymode"),"restricted"); | ||
362 | |||
363 | para = ""; | ||
364 | if (keyRadio0->isChecked()) { | ||
365 | para = "0"; | ||
366 | } else if (keyRadio1->isChecked()) { | ||
367 | para = "1"; | ||
368 | } else if (keyRadio2->isChecked()) { | ||
369 | para = "2"; | ||
370 | } else if (keyRadio3->isChecked()) { | ||
371 | para = "3"; | ||
372 | } | ||
373 | |||
374 | interfaces->setInterfaceOption(QString("wlan_ng_default_key_id"), para); | ||
375 | |||
376 | } else { | ||
377 | // No wep, remove all previous keys | ||
378 | interfaces->removeInterfaceOption(QString("wireless_enc")); | ||
379 | interfaces->removeInterfaceOption(QString("wlan_ng_default_key_id")); | ||
380 | interfaces->removeInterfaceOption(QString("wlan_ng_key0")); | ||
381 | interfaces->removeInterfaceOption(QString("wlan_ng_key1")); | ||
382 | interfaces->removeInterfaceOption(QString("wlan_ng_key2")); | ||
383 | interfaces->removeInterfaceOption(QString("wlan_ng_key3")); | ||
384 | } | ||
385 | |||
386 | } else { | ||
387 | // This is the old style | ||
256 | if (wepEnabled->isChecked()) { | 388 | if (wepEnabled->isChecked()) { |
257 | QStringList keyList; | 389 | QStringList keyList; |
258 | 390 | ||
259 | if (! keyLineEdit0->text().isNull()) { | 391 | if (! keyLineEdit0->text().isNull()) { |
260 | keyList += keyLineEdit0->text(); | 392 | keyList += keyLineEdit0->text(); |
261 | keyList += "[1]"; | 393 | keyList += "[1]"; |
262 | } //else | 394 | } //else |
263 | if (! keyLineEdit1->text().isNull()) { | 395 | if (! keyLineEdit1->text().isNull()) { |
264 | keyList += keyLineEdit1->text(); | 396 | keyList += keyLineEdit1->text(); |
265 | keyList += "[2]"; | 397 | keyList += "[2]"; |
266 | } //else | 398 | } //else |
267 | if (! keyLineEdit2->text().isNull()) { | 399 | if (! keyLineEdit2->text().isNull()) { |
@@ -284,24 +416,25 @@ void WLANImp::writeOpts() { | |||
284 | } else if (keyRadio1->isChecked()) { | 416 | } else if (keyRadio1->isChecked()) { |
285 | keyList += "[2]"; | 417 | keyList += "[2]"; |
286 | } else if (keyRadio2->isChecked()) { | 418 | } else if (keyRadio2->isChecked()) { |
287 | keyList += "[3]"; | 419 | keyList += "[3]"; |
288 | } else if (keyRadio3->isChecked()) { | 420 | } else if (keyRadio3->isChecked()) { |
289 | keyList += "[4]"; | 421 | keyList += "[4]"; |
290 | } | 422 | } |
291 | interfaces->setInterfaceOption(QString("wireless_key"), keyList.join(QString(" "))); | 423 | interfaces->setInterfaceOption(QString("wireless_key"), keyList.join(QString(" "))); |
292 | } else { | 424 | } else { |
293 | interfaces->removeInterfaceOption(QString("wireless_key")); | 425 | interfaces->removeInterfaceOption(QString("wireless_key")); |
294 | } | 426 | } |
295 | interfaces->removeInterfaceOption(QString("wireless_enc")); | 427 | interfaces->removeInterfaceOption(QString("wireless_enc")); |
428 | } | ||
296 | 429 | ||
297 | if(!interfaceSetup->saveChanges()) | 430 | if(!interfaceSetup->saveChanges()) |
298 | return; | 431 | return; |
299 | 432 | ||
300 | QDialog::accept(); | 433 | QDialog::accept(); |
301 | } | 434 | } |
302 | 435 | ||
303 | /* | 436 | /* |
304 | * Scan for possible wireless networks around... | 437 | * Scan for possible wireless networks around... |
305 | * ... powered by Wellenreiter II technology (C) Michael 'Mickey' Lauer <mickeyl@handhelds.org> | 438 | * ... powered by Wellenreiter II technology (C) Michael 'Mickey' Lauer <mickeyl@handhelds.org> |
306 | */ | 439 | */ |
307 | 440 | ||