summaryrefslogtreecommitdiff
authorbenmeyer <benmeyer>2002-11-22 16:22:08 (UTC)
committer benmeyer <benmeyer>2002-11-22 16:22:08 (UTC)
commit85af9693eaa9d7ed1651883ba078d1622bd88639 (patch) (side-by-side diff)
tree8e3ba452d927883995f137d4e6ea6f8eda6d69fc
parent3b5b10771415ef0a4cf7e4e02805e64238171f52 (diff)
downloadopie-85af9693eaa9d7ed1651883ba078d1622bd88639.zip
opie-85af9693eaa9d7ed1651883ba078d1622bd88639.tar.gz
opie-85af9693eaa9d7ed1651883ba078d1622bd88639.tar.bz2
Fixed WEP bugs
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/networksetup/wlan/wlan.pro2
-rw-r--r--noncore/net/networksetup/wlan/wlanimp.cpp82
-rw-r--r--noncore/settings/networksettings/wlan/wlan.pro2
-rw-r--r--noncore/settings/networksettings/wlan/wlanimp.cpp82
4 files changed, 76 insertions, 92 deletions
diff --git a/noncore/net/networksetup/wlan/wlan.pro b/noncore/net/networksetup/wlan/wlan.pro
index 23fc39a..396dd4a 100644
--- a/noncore/net/networksetup/wlan/wlan.pro
+++ b/noncore/net/networksetup/wlan/wlan.pro
@@ -1,12 +1,12 @@
TEMPLATE = lib
CONFIG += qt warn_on release
#CONFIG += qt warn_on debug
-DESTDIR = $(OPIEDIR)/plugins/networksetup
+#DESTDIR = $(OPIEDIR)/plugins/networksetup
HEADERS = wlanimp.h infoimp.h wlanmodule.h wextensions.h
SOURCES = wlanimp.cpp infoimp.cpp wlanmodule.cpp wextensions.cpp
INCLUDEPATH += $(OPIEDIR)/include ../ ../interfaces/
DEPENDPATH += $(OPIEDIR)/include
LIBS += -lqpe -L../interfaces/ -linterfaces
INTERFACES = wlan.ui info.ui
TARGET = wlanplugin
VERSION = 1.0.0
diff --git a/noncore/net/networksetup/wlan/wlanimp.cpp b/noncore/net/networksetup/wlan/wlanimp.cpp
index 87a9716..488911b 100644
--- a/noncore/net/networksetup/wlan/wlanimp.cpp
+++ b/noncore/net/networksetup/wlan/wlanimp.cpp
@@ -1,234 +1,226 @@
#include "wlanimp.h"
#include "interfacesetupimp.h"
#include <qfile.h>
#include <qdir.h>
#include <qtextstream.h>
#include <qmessagebox.h>
#include <qlineedit.h>
#include <qspinbox.h>
#include <qradiobutton.h>
#include <qcheckbox.h>
#include <qtabwidget.h>
/* system() */
#include <stdlib.h>
#define WIRELESS_OPTS "/etc/pcmcia/wireless.opts"
/**
* Constructor, read in the wireless.opts file for parsing later.
*/
WLANImp::WLANImp( QWidget* parent, const char* name, Interface *i, bool modal, WFlags fl):WLAN(parent, name, modal, fl), currentProfile("*") {
interfaceSetup = new InterfaceSetupImp(tabWidget, "InterfaceSetupImp", i);
tabWidget->insertTab(interfaceSetup, "TCP/IP");
// Read in the config file.
QString wlanFile = WIRELESS_OPTS;
QFile file(wlanFile);
if (file.open(IO_ReadOnly)){
QTextStream stream( &file );
QString line = "";
while ( !stream.eof() ) {
line += stream.readLine();
line += "\n";
}
file.close();
settingsFileText = QStringList::split("\n", line, true);
parseSettingFile();
}
else
qDebug(QString("WLANImp: Can't open file: %1 for reading.").arg(wlanFile).latin1());
}
/**
* Change the profile for both wireless settings and network settings.
*/
void WLANImp::setProfile(const QString &profile){
interfaceSetup->setProfile(profile);
parseSettingFile();
}
/**
* Parses the settings file that was read in and gets any setting from it.
*/
void WLANImp::parseSettingFile(){
bool foundCase = false;
bool found = false;
for ( QStringList::Iterator it = settingsFileText.begin(); it != settingsFileText.end(); ++it ) {
QString line = (*it).simplifyWhiteSpace();
if(line.contains("case"))
foundCase = true;
// See if we found our scheme to write or the sceme couldn't be found
if((foundCase && line.contains("esac")) ||
(foundCase && line.left(currentProfile.length()+7) == currentProfile + ",*,*,*)" && line.at(0) != '#'))
found = true;
if(line.contains(";;"))
found = false;
if(found){
// write out scheme
if(line.contains("ESSID=")){
QString id = line.mid(line.find("ESSID=")+6, line.length());
if(id == "any"){
essNon->setChecked(true);
essSpecific->setChecked(false);
}else{
essSpecific->setChecked(true);
essSpecificLineEdit->setText(id);
essNon->setChecked(false);
}
}
if(line.contains("MODE=")){
QString mode = line.mid(line.find("MODE=")+5, line.length());
if(mode == "Managed"){
network802->setChecked( false );
networkInfrastructure->setChecked( true );
}
else{
network802->setChecked( true );
networkInfrastructure->setChecked( false );
}
}
+ if(line.contains("KEY0="))
+ keyLineEdit0->setText(line.mid(5, line.length()));
+ if(line.contains("KEY1="))
+ keyLineEdit1->setText(line.mid(5, line.length()));
+ if(line.contains("KEY2="))
+ keyLineEdit2->setText(line.mid(5, line.length()));
+ if(line.contains("KEY3="))
+ keyLineEdit3->setText(line.mid(5, line.length()));
+
if(line.contains("KEY=")){
- line.at(0) != '#' ? wepEnabled->setChecked(true) : wepEnabled->setChecked(false);
- int s = line.find("KEY=");
- line = line.mid(s+4, line.length());
- // Find first Key
- s = line.find("[1]");
- if(s != -1){
- keyLineEdit0->setText(line.mid(0, s));
- line = line.mid(s+3, line.length());
- }
- s = line.find("[2]");
- if(s != -1){
- keyLineEdit1->setText(line.mid(0, s));
- line = line.mid(s+3, line.length());
- }
- s = line.find("[3]");
- if(s != -1){
- keyLineEdit2->setText(line.mid(0, s));
- line = line.mid(s+3, line.length());
- }
- s = line.find("[4]");
- if(s != -1){
- keyLineEdit3->setText(line.mid(0, s));
- line = line.mid(s+3, line.length());
- }
- if(line.contains("key [1]")) keyRadio0->setChecked(true);
- if(line.contains("key [2]")) keyRadio1->setChecked(true);
- if(line.contains("key [3]")) keyRadio2->setChecked(true);
- if(line.contains("key [4]")) keyRadio3->setChecked(true);
- if(line.contains("open")){
+ wepEnabled->setChecked(true);
+ QString key;
+ if(line.right(5) == (" open")){
+ key = line.mid(4, line.length()-5);
authOpen->setChecked(true);
authShared->setChecked(false);
}
else{
authOpen->setChecked(false);
authShared->setChecked(true);
+ key = line.mid(4, line.length());
}
+ if(key == keyLineEdit0->text()) keyRadio0->setChecked(true);
+ if(key == keyLineEdit1->text()) keyRadio1->setChecked(true);
+ if(key == keyLineEdit2->text()) keyRadio2->setChecked(true);
+ if(key == keyLineEdit3->text()) keyRadio3->setChecked(true);
}
if(line.contains("CHANNEL=")){
networkChannel->setValue(line.mid(line.find("CHANNEL=")+8, line.length()).toInt());
}
}
}
}
/**
* Saves settings to the wireless.opts file using the current profile
*/
void WLANImp::changeAndSaveSettingFile(){
QString wlanFile = WIRELESS_OPTS;
QFile::remove(wlanFile);
QFile file(wlanFile);
if (!file.open(IO_ReadWrite)){
qDebug(QString("WLANImp::changeAndSaveSettingFile(): Can't open file: %1 for writing.").arg(wlanFile).latin1());
return;
}
QTextStream stream( &file );
bool foundCase = false;
bool found = false;
bool output = true;
for ( QStringList::Iterator it = settingsFileText.begin(); it != settingsFileText.end(); ++it ) {
QString line = (*it).simplifyWhiteSpace();
if(line.contains("case"))
foundCase = true;
// See if we found our scheme to write or the sceme couldn't be found
if((foundCase && line.contains("esac") && !found) ||
(foundCase && line.left(currentProfile.length()+7) == currentProfile + ",*,*,*)" && line.at(0) != '#')){
// write out scheme
found = true;
output = false;
if(!line.contains("esac"))
stream << line << "\n";
stream << "\tESSID=" << (essNon->isChecked() == true ? QString("any") : essSpecificLineEdit->text()) << '\n';
- stream << "\tMODE=" << (networkInfrastructure->isChecked() == true ? "Managed" : "AdHoc") << '\n';
- if(!wepEnabled->isChecked())
- stream << "#";
- stream << "\tKEY=";
- stream << keyLineEdit0->text() << " [1]";
- stream << keyLineEdit1->text() << " [2]";
- stream << keyLineEdit2->text() << " [3]";
- stream << keyLineEdit3->text() << " [4]";
- stream << " key [";
- if(keyRadio0->isChecked()) stream << "1]";
- if(keyRadio1->isChecked()) stream << "2]";
- if(keyRadio2->isChecked()) stream << "3]";
- if(keyRadio3->isChecked()) stream << "4]";
- if(authOpen->isChecked()) stream << " open";
- stream << "\n";
+ stream << "\tMODE=" << (networkInfrastructure->isChecked() == true ? "Managed" : "ad-hoc") << '\n';
+
+ stream << "\tKEY0=" << keyLineEdit0->text() << "\n";
+ stream << "\tKEY1=" << keyLineEdit1->text() << "\n";
+ stream << "\tKEY2=" << keyLineEdit2->text() << "\n";
+ stream << "\tKEY3=" << keyLineEdit3->text() << "\n";
+
+ if(wepEnabled->isChecked()){
+ stream << "\tKEY=";
+ if(keyRadio0->isChecked()) stream << keyLineEdit0->text();
+ if(keyRadio1->isChecked()) stream << keyLineEdit1->text();
+ if(keyRadio2->isChecked()) stream << keyLineEdit2->text();
+ if(keyRadio3->isChecked()) stream << keyLineEdit3->text();
+ if(authOpen->isChecked()) stream << " open";
+ stream << "\n";
+ }
stream << "\tCHANNEL=" << networkChannel->value() << "\n";
stream << "\tRATE=auto\n";
if(line.contains("esac"))
stream << line << "\n";
}
if(line.contains(";;"))
output = true;
if(output)
stream << (*it) << '\n';
}
file.close();
}
/**
* Check to see if the current config is valid
* Save wireless.opts, save interfaces
*/
void WLANImp::accept(){
if(wepEnabled->isChecked()){
if(keyLineEdit0->text().isEmpty() && keyLineEdit1->text().isEmpty() && keyLineEdit2->text().isEmpty() && keyLineEdit3->text().isEmpty() )
{
QMessageBox::information(this, "", "Please enter a key for WEP.", QMessageBox::Ok);
return;
}
}
// Ok settings are good here, save
changeAndSaveSettingFile();
// Try to save the interfaces settings.
if(!interfaceSetup->saveChanges())
return;
-
+
+ QDialog::accept();
+ return;
// Restart the device now that the settings have changed
QString initpath;
if( QDir("/etc/rc.d/init.d").exists() )
initpath = "/etc/rc.d/init.d";
else if( QDir("/etc/init.d").exists() )
initpath = "/etc/init.d";
if( initpath )
system(QString("%1/pcmcia stop").arg(initpath));
if( initpath )
system(QString("%1/pcmcia start").arg(initpath));
// Close out the dialog
QDialog::accept();
}
// wlanimp.cpp
diff --git a/noncore/settings/networksettings/wlan/wlan.pro b/noncore/settings/networksettings/wlan/wlan.pro
index 23fc39a..396dd4a 100644
--- a/noncore/settings/networksettings/wlan/wlan.pro
+++ b/noncore/settings/networksettings/wlan/wlan.pro
@@ -1,12 +1,12 @@
TEMPLATE = lib
CONFIG += qt warn_on release
#CONFIG += qt warn_on debug
-DESTDIR = $(OPIEDIR)/plugins/networksetup
+#DESTDIR = $(OPIEDIR)/plugins/networksetup
HEADERS = wlanimp.h infoimp.h wlanmodule.h wextensions.h
SOURCES = wlanimp.cpp infoimp.cpp wlanmodule.cpp wextensions.cpp
INCLUDEPATH += $(OPIEDIR)/include ../ ../interfaces/
DEPENDPATH += $(OPIEDIR)/include
LIBS += -lqpe -L../interfaces/ -linterfaces
INTERFACES = wlan.ui info.ui
TARGET = wlanplugin
VERSION = 1.0.0
diff --git a/noncore/settings/networksettings/wlan/wlanimp.cpp b/noncore/settings/networksettings/wlan/wlanimp.cpp
index 87a9716..488911b 100644
--- a/noncore/settings/networksettings/wlan/wlanimp.cpp
+++ b/noncore/settings/networksettings/wlan/wlanimp.cpp
@@ -1,234 +1,226 @@
#include "wlanimp.h"
#include "interfacesetupimp.h"
#include <qfile.h>
#include <qdir.h>
#include <qtextstream.h>
#include <qmessagebox.h>
#include <qlineedit.h>
#include <qspinbox.h>
#include <qradiobutton.h>
#include <qcheckbox.h>
#include <qtabwidget.h>
/* system() */
#include <stdlib.h>
#define WIRELESS_OPTS "/etc/pcmcia/wireless.opts"
/**
* Constructor, read in the wireless.opts file for parsing later.
*/
WLANImp::WLANImp( QWidget* parent, const char* name, Interface *i, bool modal, WFlags fl):WLAN(parent, name, modal, fl), currentProfile("*") {
interfaceSetup = new InterfaceSetupImp(tabWidget, "InterfaceSetupImp", i);
tabWidget->insertTab(interfaceSetup, "TCP/IP");
// Read in the config file.
QString wlanFile = WIRELESS_OPTS;
QFile file(wlanFile);
if (file.open(IO_ReadOnly)){
QTextStream stream( &file );
QString line = "";
while ( !stream.eof() ) {
line += stream.readLine();
line += "\n";
}
file.close();
settingsFileText = QStringList::split("\n", line, true);
parseSettingFile();
}
else
qDebug(QString("WLANImp: Can't open file: %1 for reading.").arg(wlanFile).latin1());
}
/**
* Change the profile for both wireless settings and network settings.
*/
void WLANImp::setProfile(const QString &profile){
interfaceSetup->setProfile(profile);
parseSettingFile();
}
/**
* Parses the settings file that was read in and gets any setting from it.
*/
void WLANImp::parseSettingFile(){
bool foundCase = false;
bool found = false;
for ( QStringList::Iterator it = settingsFileText.begin(); it != settingsFileText.end(); ++it ) {
QString line = (*it).simplifyWhiteSpace();
if(line.contains("case"))
foundCase = true;
// See if we found our scheme to write or the sceme couldn't be found
if((foundCase && line.contains("esac")) ||
(foundCase && line.left(currentProfile.length()+7) == currentProfile + ",*,*,*)" && line.at(0) != '#'))
found = true;
if(line.contains(";;"))
found = false;
if(found){
// write out scheme
if(line.contains("ESSID=")){
QString id = line.mid(line.find("ESSID=")+6, line.length());
if(id == "any"){
essNon->setChecked(true);
essSpecific->setChecked(false);
}else{
essSpecific->setChecked(true);
essSpecificLineEdit->setText(id);
essNon->setChecked(false);
}
}
if(line.contains("MODE=")){
QString mode = line.mid(line.find("MODE=")+5, line.length());
if(mode == "Managed"){
network802->setChecked( false );
networkInfrastructure->setChecked( true );
}
else{
network802->setChecked( true );
networkInfrastructure->setChecked( false );
}
}
+ if(line.contains("KEY0="))
+ keyLineEdit0->setText(line.mid(5, line.length()));
+ if(line.contains("KEY1="))
+ keyLineEdit1->setText(line.mid(5, line.length()));
+ if(line.contains("KEY2="))
+ keyLineEdit2->setText(line.mid(5, line.length()));
+ if(line.contains("KEY3="))
+ keyLineEdit3->setText(line.mid(5, line.length()));
+
if(line.contains("KEY=")){
- line.at(0) != '#' ? wepEnabled->setChecked(true) : wepEnabled->setChecked(false);
- int s = line.find("KEY=");
- line = line.mid(s+4, line.length());
- // Find first Key
- s = line.find("[1]");
- if(s != -1){
- keyLineEdit0->setText(line.mid(0, s));
- line = line.mid(s+3, line.length());
- }
- s = line.find("[2]");
- if(s != -1){
- keyLineEdit1->setText(line.mid(0, s));
- line = line.mid(s+3, line.length());
- }
- s = line.find("[3]");
- if(s != -1){
- keyLineEdit2->setText(line.mid(0, s));
- line = line.mid(s+3, line.length());
- }
- s = line.find("[4]");
- if(s != -1){
- keyLineEdit3->setText(line.mid(0, s));
- line = line.mid(s+3, line.length());
- }
- if(line.contains("key [1]")) keyRadio0->setChecked(true);
- if(line.contains("key [2]")) keyRadio1->setChecked(true);
- if(line.contains("key [3]")) keyRadio2->setChecked(true);
- if(line.contains("key [4]")) keyRadio3->setChecked(true);
- if(line.contains("open")){
+ wepEnabled->setChecked(true);
+ QString key;
+ if(line.right(5) == (" open")){
+ key = line.mid(4, line.length()-5);
authOpen->setChecked(true);
authShared->setChecked(false);
}
else{
authOpen->setChecked(false);
authShared->setChecked(true);
+ key = line.mid(4, line.length());
}
+ if(key == keyLineEdit0->text()) keyRadio0->setChecked(true);
+ if(key == keyLineEdit1->text()) keyRadio1->setChecked(true);
+ if(key == keyLineEdit2->text()) keyRadio2->setChecked(true);
+ if(key == keyLineEdit3->text()) keyRadio3->setChecked(true);
}
if(line.contains("CHANNEL=")){
networkChannel->setValue(line.mid(line.find("CHANNEL=")+8, line.length()).toInt());
}
}
}
}
/**
* Saves settings to the wireless.opts file using the current profile
*/
void WLANImp::changeAndSaveSettingFile(){
QString wlanFile = WIRELESS_OPTS;
QFile::remove(wlanFile);
QFile file(wlanFile);
if (!file.open(IO_ReadWrite)){
qDebug(QString("WLANImp::changeAndSaveSettingFile(): Can't open file: %1 for writing.").arg(wlanFile).latin1());
return;
}
QTextStream stream( &file );
bool foundCase = false;
bool found = false;
bool output = true;
for ( QStringList::Iterator it = settingsFileText.begin(); it != settingsFileText.end(); ++it ) {
QString line = (*it).simplifyWhiteSpace();
if(line.contains("case"))
foundCase = true;
// See if we found our scheme to write or the sceme couldn't be found
if((foundCase && line.contains("esac") && !found) ||
(foundCase && line.left(currentProfile.length()+7) == currentProfile + ",*,*,*)" && line.at(0) != '#')){
// write out scheme
found = true;
output = false;
if(!line.contains("esac"))
stream << line << "\n";
stream << "\tESSID=" << (essNon->isChecked() == true ? QString("any") : essSpecificLineEdit->text()) << '\n';
- stream << "\tMODE=" << (networkInfrastructure->isChecked() == true ? "Managed" : "AdHoc") << '\n';
- if(!wepEnabled->isChecked())
- stream << "#";
- stream << "\tKEY=";
- stream << keyLineEdit0->text() << " [1]";
- stream << keyLineEdit1->text() << " [2]";
- stream << keyLineEdit2->text() << " [3]";
- stream << keyLineEdit3->text() << " [4]";
- stream << " key [";
- if(keyRadio0->isChecked()) stream << "1]";
- if(keyRadio1->isChecked()) stream << "2]";
- if(keyRadio2->isChecked()) stream << "3]";
- if(keyRadio3->isChecked()) stream << "4]";
- if(authOpen->isChecked()) stream << " open";
- stream << "\n";
+ stream << "\tMODE=" << (networkInfrastructure->isChecked() == true ? "Managed" : "ad-hoc") << '\n';
+
+ stream << "\tKEY0=" << keyLineEdit0->text() << "\n";
+ stream << "\tKEY1=" << keyLineEdit1->text() << "\n";
+ stream << "\tKEY2=" << keyLineEdit2->text() << "\n";
+ stream << "\tKEY3=" << keyLineEdit3->text() << "\n";
+
+ if(wepEnabled->isChecked()){
+ stream << "\tKEY=";
+ if(keyRadio0->isChecked()) stream << keyLineEdit0->text();
+ if(keyRadio1->isChecked()) stream << keyLineEdit1->text();
+ if(keyRadio2->isChecked()) stream << keyLineEdit2->text();
+ if(keyRadio3->isChecked()) stream << keyLineEdit3->text();
+ if(authOpen->isChecked()) stream << " open";
+ stream << "\n";
+ }
stream << "\tCHANNEL=" << networkChannel->value() << "\n";
stream << "\tRATE=auto\n";
if(line.contains("esac"))
stream << line << "\n";
}
if(line.contains(";;"))
output = true;
if(output)
stream << (*it) << '\n';
}
file.close();
}
/**
* Check to see if the current config is valid
* Save wireless.opts, save interfaces
*/
void WLANImp::accept(){
if(wepEnabled->isChecked()){
if(keyLineEdit0->text().isEmpty() && keyLineEdit1->text().isEmpty() && keyLineEdit2->text().isEmpty() && keyLineEdit3->text().isEmpty() )
{
QMessageBox::information(this, "", "Please enter a key for WEP.", QMessageBox::Ok);
return;
}
}
// Ok settings are good here, save
changeAndSaveSettingFile();
// Try to save the interfaces settings.
if(!interfaceSetup->saveChanges())
return;
-
+
+ QDialog::accept();
+ return;
// Restart the device now that the settings have changed
QString initpath;
if( QDir("/etc/rc.d/init.d").exists() )
initpath = "/etc/rc.d/init.d";
else if( QDir("/etc/init.d").exists() )
initpath = "/etc/init.d";
if( initpath )
system(QString("%1/pcmcia stop").arg(initpath));
if( initpath )
system(QString("%1/pcmcia start").arg(initpath));
// Close out the dialog
QDialog::accept();
}
// wlanimp.cpp