summaryrefslogtreecommitdiff
path: root/noncore/settings/networksettings/wlan/wlanimp2.cpp
Unidiff
Diffstat (limited to 'noncore/settings/networksettings/wlan/wlanimp2.cpp') (more/less context) (show whitespace changes)
-rw-r--r--noncore/settings/networksettings/wlan/wlanimp2.cpp141
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 */
75void WLANImp::setProfile(const QString &profile){ 75void WLANImp::setProfile(const QString &profile){
76 interfaceSetup->setProfile(profile); 76 interfaceSetup->setProfile(profile);
77 parseOpts(); 77 parseOpts();
78} 78}
79 79
80void WLANImp::parseOpts() { 80void 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
118void WLANImp::parseKeyStr(QString keystr) { 172void 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
283QString 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
229void WLANImp::writeOpts() { 301void 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