summaryrefslogtreecommitdiff
path: root/noncore/settings
authormickeyl <mickeyl>2005-05-10 10:14:38 (UTC)
committer mickeyl <mickeyl>2005-05-10 10:14:38 (UTC)
commitff1d0ce627f64fb757df48d4c4998cb82a024dbc (patch) (side-by-side diff)
tree332d07f028d216564ee287ddd2b642e0d314234e /noncore/settings
parentce515e60ba66d4b1540879b17b2b31b5fac627d3 (diff)
downloadopie-ff1d0ce627f64fb757df48d4c4998cb82a024dbc.zip
opie-ff1d0ce627f64fb757df48d4c4998cb82a024dbc.tar.gz
opie-ff1d0ce627f64fb757df48d4c4998cb82a024dbc.tar.bz2
improve WEP key handling and add wlan-ng support. patch courtesy Dirk Opfer, thanks!
Diffstat (limited to 'noncore/settings') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/networksettings/wlan/wextensions.cpp3
-rw-r--r--noncore/settings/networksettings/wlan/wlan.pro2
-rw-r--r--noncore/settings/networksettings/wlan/wlanimp2.cpp233
-rw-r--r--noncore/settings/networksettings/wlan/wlanimp2.h3
4 files changed, 189 insertions, 52 deletions
diff --git a/noncore/settings/networksettings/wlan/wextensions.cpp b/noncore/settings/networksettings/wlan/wextensions.cpp
index 8a9db66..64d8752 100644
--- a/noncore/settings/networksettings/wlan/wextensions.cpp
+++ b/noncore/settings/networksettings/wlan/wextensions.cpp
@@ -71,2 +71,3 @@ QString WExtensions::essid(){
const char* buffer[200];
+ memset(buffer,0x00,200);
iwr.u.data.pointer = (caddr_t) buffer;
@@ -75,2 +76,4 @@ QString WExtensions::essid(){
if ( 0 == ioctl( fd, SIOCGIWESSID, &iwr )){
+ if (iwr.u.essid.length > IW_ESSID_MAX_SIZE)
+ iwr.u.essid.length = IW_ESSID_MAX_SIZE;
buffer[(unsigned int) iwr.u.essid.length] = '\0';
diff --git a/noncore/settings/networksettings/wlan/wlan.pro b/noncore/settings/networksettings/wlan/wlan.pro
index eb9dd4f..3a064d3 100644
--- a/noncore/settings/networksettings/wlan/wlan.pro
+++ b/noncore/settings/networksettings/wlan/wlan.pro
@@ -10,3 +10,3 @@ INTERFACES = wlan.ui info.ui
TARGET = wlan
-VERSION = 1.0.1
+VERSION = 1.0.2
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
@@ -81,3 +81,3 @@ void WLANImp::parseOpts() {
bool error;
- QString opt;
+ QString opt,key;
@@ -86,3 +86,2 @@ void WLANImp::parseOpts() {
-
opt = interfaces->getInterfaceOption("wireless_essid", error);
@@ -111,6 +110,61 @@ void WLANImp::parseOpts() {
- opt = interfaces->getInterfaceOption("wireless_key", error).simplifyWhiteSpace();
- if (opt.isNull())
+ opt = interfaces->getInterfaceOption("wireless_type", error).simplifyWhiteSpace();
+
+ if ( opt == "wlan-ng") {
+
+ //FIXME:Handle wlan_ng_priv_genstr
+
+ // get default key_id
+ opt = interfaces->getInterfaceOption("wlan_ng_default_key_id", error).simplifyWhiteSpace();
+
+ if (opt == "0")
+ keyRadio0->setChecked(true);
+ if (opt == "1")
+ keyRadio1->setChecked(true);
+ if (opt == "2")
+ keyRadio2->setChecked(true);
+ if (opt == "3")
+ keyRadio3->setChecked(true);
+
+ // get key0
+ key = interfaces->getInterfaceOption("wlan_ng_key0", error).simplifyWhiteSpace();
+ key.replace(QString(":"),QString(""));
+ keyLineEdit0->setText(key);
+
+ // get key1
+ key = interfaces->getInterfaceOption("wlan_ng_key1", error).simplifyWhiteSpace();
+ key.replace(QString(":"),QString(""));
+ keyLineEdit1->setText(key);
+
+ // get key2
+ key = interfaces->getInterfaceOption("wlan_ng_key2", error).simplifyWhiteSpace();
+ key.replace(QString(":"),QString(""));
+ keyLineEdit2->setText(key);
+
+ // get key3
+ key = interfaces->getInterfaceOption("wlan_ng_key3", error).simplifyWhiteSpace();
+ key.replace(QString(":"),QString(""));
+ keyLineEdit3->setText(key);
+
opt = interfaces->getInterfaceOption("wireless_enc", error).simplifyWhiteSpace();
- parseKeyStr(opt);
+
+ // encryption on?
+ if(opt == "on"){
+ wepEnabled->setChecked(true);
+ } else {
+ wepEnabled->setChecked(false);
+ }
+
+ opt = interfaces->getInterfaceOption("wireless_keymode", error).simplifyWhiteSpace();
+
+ if(opt == "restricted"){
+ // restricted mode, only accept encrypted packets
+ rejectNonEnc->setChecked(true);
+ }
+ }
+ else {
+ opt = interfaces->getInterfaceOption("wireless_key", error).simplifyWhiteSpace();
+
+ parseKeyStr(opt);
+ }
}
@@ -228,13 +282,33 @@ void WLANImp::accept() {
+QString WLANImp::formatKey(QString input)
+{
+ int len,r=0;
+
+ len = input.length();
+
+ if (!len)
+ return input;
+
+ for(int i=1;i<len/2;i++)
+ {
+ input.insert(r+i*2,QString(":"));
+ r++;
+ }
+
+ return input;
+}
+
void WLANImp::writeOpts() {
- // eh can't really do anything about it other then return. :-D
- if(!interfaces->isInterfaceSet()){
- QMessageBox::warning(0,"Inface not set","should not happen!!!");
- return;
- }
- bool error = false;
+ QString para, devicetype;
- odebug << "setting wlan interface " << interfaces->getInterfaceName( error ).latin1() << "" << oendl;
+ // eh can't really do anything about it other then return. :-D
+ if(!interfaces->isInterfaceSet()){
+ QMessageBox::warning(0,"Inface not set","should not happen!!!");
+ return;
+ }
+ bool error = false;
- if (error) QMessageBox::warning(0,"Inface not set","should not happen!!!");
+ odebug << "setting wlan interface " << interfaces->getInterfaceName( error ).latin1() << "" << oendl;
+
+ if (error) QMessageBox::warning(0,"Inface not set","should not happen!!!");
@@ -244,5 +318,5 @@ void WLANImp::writeOpts() {
if (specifyAp->isChecked()) {
- interfaces->setInterfaceOption(QString("wireless_ap"), macEdit->text());
+ interfaces->setInterfaceOption(QString("wireless_ap"), macEdit->text());
} else {
- interfaces->removeInterfaceOption(QString("wireless_ap"));
+ interfaces->removeInterfaceOption(QString("wireless_ap"));
}
@@ -255,42 +329,101 @@ void WLANImp::writeOpts() {
- if (wepEnabled->isChecked()) {
- QStringList keyList;
-
- if (! keyLineEdit0->text().isNull()) {
- keyList += keyLineEdit0->text();
- keyList += "[1]";
- } //else
- if (! keyLineEdit1->text().isNull()) {
- keyList += keyLineEdit1->text();
- keyList += "[2]";
- } //else
- if (! keyLineEdit2->text().isNull()) {
- keyList += keyLineEdit2->text();
- keyList += "[3]";
- } //else
- if (! keyLineEdit3->text().isNull()) {
- keyList += keyLineEdit3->text();
- keyList += "[4]";
- }
- if (acceptNonEnc->isChecked()) {
- keyList += "open";
+ devicetype = interfaces->getInterfaceOption("wireless_type", error).simplifyWhiteSpace();
+
+ if ( devicetype == "wlan-ng") {
+
+ // wlan-ng style
+ interfaces->removeInterfaceOption(QString("wireless_key"));
+
+ if (wepEnabled->isChecked()) {
+
+ interfaces->setInterfaceOption(QString("wireless_enc"),"on");
+
+ if (! keyLineEdit0->text().isNull()) {
+ interfaces->setInterfaceOption(QString("wlan_ng_key0"), formatKey(keyLineEdit0->text()));
+ } else
+ interfaces->removeInterfaceOption(QString("wlan_ng_key0"));
+ if (! keyLineEdit1->text().isNull()) {
+ interfaces->setInterfaceOption(QString("wlan_ng_key1"), formatKey(keyLineEdit1->text()));
+ } else
+ interfaces->removeInterfaceOption(QString("wlan_ng_key1"));
+ if (! keyLineEdit2->text().isNull()) {
+ interfaces->setInterfaceOption(QString("wlan_ng_key2"), formatKey(keyLineEdit2->text()));
+ } else
+ interfaces->removeInterfaceOption(QString("wlan_ng_key2"));
+ if (! keyLineEdit3->text().isNull()) {
+ interfaces->setInterfaceOption(QString("wlan_ng_key3"), formatKey(keyLineEdit3->text()));
+ } else
+ interfaces->removeInterfaceOption(QString("wlan_ng_key3"));
+
+ if (acceptNonEnc->isChecked())
+ interfaces->removeInterfaceOption(QString("wireless_keymode"));
+ else
+ interfaces->setInterfaceOption(QString("wireless_keymode"),"restricted");
+
+ para = "";
+ if (keyRadio0->isChecked()) {
+ para = "0";
+ } else if (keyRadio1->isChecked()) {
+ para = "1";
+ } else if (keyRadio2->isChecked()) {
+ para = "2";
+ } else if (keyRadio3->isChecked()) {
+ para = "3";
+ }
+
+ interfaces->setInterfaceOption(QString("wlan_ng_default_key_id"), para);
+
} else {
- keyList += "restricted";
+ // No wep, remove all previous keys
+ interfaces->removeInterfaceOption(QString("wireless_enc"));
+ interfaces->removeInterfaceOption(QString("wlan_ng_default_key_id"));
+ interfaces->removeInterfaceOption(QString("wlan_ng_key0"));
+ interfaces->removeInterfaceOption(QString("wlan_ng_key1"));
+ interfaces->removeInterfaceOption(QString("wlan_ng_key2"));
+ interfaces->removeInterfaceOption(QString("wlan_ng_key3"));
}
- keyList += "key";
- if (keyRadio0->isChecked()) {
- keyList += "[1]";
- } else if (keyRadio1->isChecked()) {
- keyList += "[2]";
- } else if (keyRadio2->isChecked()) {
- keyList += "[3]";
- } else if (keyRadio3->isChecked()) {
- keyList += "[4]";
- }
- interfaces->setInterfaceOption(QString("wireless_key"), keyList.join(QString(" ")));
} else {
- interfaces->removeInterfaceOption(QString("wireless_key"));
+ // This is the old style
+ if (wepEnabled->isChecked()) {
+ QStringList keyList;
+
+ if (! keyLineEdit0->text().isNull()) {
+ keyList += keyLineEdit0->text();
+ keyList += "[1]";
+ } //else
+ if (! keyLineEdit1->text().isNull()) {
+ keyList += keyLineEdit1->text();
+ keyList += "[2]";
+ } //else
+ if (! keyLineEdit2->text().isNull()) {
+ keyList += keyLineEdit2->text();
+ keyList += "[3]";
+ } //else
+ if (! keyLineEdit3->text().isNull()) {
+ keyList += keyLineEdit3->text();
+ keyList += "[4]";
+ }
+ if (acceptNonEnc->isChecked()) {
+ keyList += "open";
+ } else {
+ keyList += "restricted";
+ }
+
+ keyList += "key";
+ if (keyRadio0->isChecked()) {
+ keyList += "[1]";
+ } else if (keyRadio1->isChecked()) {
+ keyList += "[2]";
+ } else if (keyRadio2->isChecked()) {
+ keyList += "[3]";
+ } else if (keyRadio3->isChecked()) {
+ keyList += "[4]";
+ }
+ interfaces->setInterfaceOption(QString("wireless_key"), keyList.join(QString(" ")));
+ } else {
+ interfaces->removeInterfaceOption(QString("wireless_key"));
+ }
+ interfaces->removeInterfaceOption(QString("wireless_enc"));
}
- interfaces->removeInterfaceOption(QString("wireless_enc"));
diff --git a/noncore/settings/networksettings/wlan/wlanimp2.h b/noncore/settings/networksettings/wlan/wlanimp2.h
index c3d1eee..0e8d533 100644
--- a/noncore/settings/networksettings/wlan/wlanimp2.h
+++ b/noncore/settings/networksettings/wlan/wlanimp2.h
@@ -39,3 +39,4 @@ private:
void parseKeyStr(QString keystr);
-
+ QString formatKey(QString input);
+
void handlePacket( Opie::Net::OPacket* );