summaryrefslogtreecommitdiff
authortille <tille>2003-06-02 11:57:59 (UTC)
committer tille <tille>2003-06-02 11:57:59 (UTC)
commitec520ccd6a4696663269db36b7df74ffde13c70c (patch) (side-by-side diff)
tree7c2c27160740eac2f24d8654b25266f8de55663d
parentc002c647b15ea04f5a755b5edba5db0b280b1cbf (diff)
downloadopie-ec520ccd6a4696663269db36b7df74ffde13c70c.zip
opie-ec520ccd6a4696663269db36b7df74ffde13c70c.tar.gz
opie-ec520ccd6a4696663269db36b7df74ffde13c70c.tar.bz2
basicly working now...
... but it's not yet tested... ... and you cannot input username and pw. you can write a loginscript.
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/networksettings/ppp/TODO1
-rw-r--r--noncore/settings/networksettings/ppp/connect.cpp28
-rw-r--r--noncore/settings/networksettings/ppp/interfaceinformationppp.cpp8
-rw-r--r--noncore/settings/networksettings/ppp/interfaceinformationppp.h7
-rw-r--r--noncore/settings/networksettings/ppp/interfaceppp.cpp113
-rw-r--r--noncore/settings/networksettings/ppp/interfaceppp.h7
-rw-r--r--noncore/settings/networksettings/ppp/kpppwidget.h2
-rw-r--r--noncore/settings/networksettings/ppp/pppdata.cpp21
-rw-r--r--noncore/settings/networksettings/ppp/pppdata.h3
9 files changed, 160 insertions, 30 deletions
diff --git a/noncore/settings/networksettings/ppp/TODO b/noncore/settings/networksettings/ppp/TODO
index 2410880..1136c2d 100644
--- a/noncore/settings/networksettings/ppp/TODO
+++ b/noncore/settings/networksettings/ppp/TODO
@@ -1,2 +1,3 @@
+- add possibility to input username and password ;)
- impl. PPPData::copyaccount & PPPData::deleteAccount
- update modem attribute inputs when modem has changed
diff --git a/noncore/settings/networksettings/ppp/connect.cpp b/noncore/settings/networksettings/ppp/connect.cpp
index 2615b60..89d9930 100644
--- a/noncore/settings/networksettings/ppp/connect.cpp
+++ b/noncore/settings/networksettings/ppp/connect.cpp
@@ -111,8 +111,8 @@ ConnectWidget::ConnectWidget(InterfacePPP *ifp, QWidget *parent, const char *nam
messg->setText(i18n("Unable to create modem lock file."));
messg->setMinimumHeight(messg->sizeHint().height() + 5);
- int messw = (messg->sizeHint().width() * 12) / 10;
- messw = QMAX(messw,280);
- messg->setMinimumWidth(messw);
- messg->setText(i18n("Looking for modem..."));
+// int messw = (messg->sizeHint().width() * 12) / 10;
+// messw = QMAX(messw,280);
+// messg->setMinimumWidth(messw);
+ messg->setText(i18n("Offline"));
l0->addSpacing(10);
l0->addWidget(messg);
@@ -131,13 +131,13 @@ ConnectWidget::ConnectWidget(InterfacePPP *ifp, QWidget *parent, const char *nam
connect(cancel, SIGNAL(clicked()), SLOT(cancelbutton()));
- int maxw = QMAX(cancel->sizeHint().width(),
- debug->sizeHint().width());
- maxw = QMAX(maxw,65);
- debug->setFixedWidth(maxw);
- cancel->setFixedWidth(maxw);
+// int maxw = QMAX(cancel->sizeHint().width(),
+// debug->sizeHint().width());
+// maxw = QMAX(maxw,65);
+// debug->setFixedWidth(maxw);
+// cancel->setFixedWidth(maxw);
l1->addWidget(debug);
l1->addWidget(cancel);
- setFixedSize(sizeHint());
+// setFixedSize(sizeHint());
pausetimer = new QTimer(this);
@@ -990,9 +990,8 @@ void ConnectWidget::cancelbutton() {
_ifaceppp->modem()->hangup();
- this->hide();
- messg->setText("");
+
// p_kppp->quit_b->setFocus();
// p_kppp->show();
- emit stopAccounting(); // just to be sure
+// emit stopAccounting(); // just to be sure
// p_kppp->con_win->stopClock();
_ifaceppp->modem()->closetty();
@@ -1005,6 +1004,5 @@ void ConnectWidget::cancelbutton() {
prompt->setConsumed();
-// if(p_kppp->quitOnDisconnect())
-// qApp->exit(0);
+ messg->setText(tr("offline"));
}
diff --git a/noncore/settings/networksettings/ppp/interfaceinformationppp.cpp b/noncore/settings/networksettings/ppp/interfaceinformationppp.cpp
index a58858c..3cf1167 100644
--- a/noncore/settings/networksettings/ppp/interfaceinformationppp.cpp
+++ b/noncore/settings/networksettings/ppp/interfaceinformationppp.cpp
@@ -7,4 +7,7 @@
#include <qmessagebox.h>
+#include "connect.h"
+#include "conwindow.h"
+
#ifdef QWS
#else
@@ -19,4 +22,9 @@ InterfaceInformationPPP::InterfaceInformationPPP(QWidget *parent, const char *na
:InterfaceInformationImp(parent, name, i, f)
{
+ qDebug("InterfaceInformationPPP::InterfaceInformationPPP");
+ con = new ConnectWidget( (InterfacePPP*)i, this, "con" );
+ // InterfaceInformationLayout->addMultiCellWidget( con, 7, 7, 0, 1 );
+ InterfaceInformationLayout->addWidget( con, 7, 0 );
+ connect(i, SIGNAL(begin_connect()),con, SLOT(preinit()));
}
diff --git a/noncore/settings/networksettings/ppp/interfaceinformationppp.h b/noncore/settings/networksettings/ppp/interfaceinformationppp.h
index 8c6fc0b..68b58ea 100644
--- a/noncore/settings/networksettings/ppp/interfaceinformationppp.h
+++ b/noncore/settings/networksettings/ppp/interfaceinformationppp.h
@@ -3,8 +3,10 @@
#include "interfaceinformationimp.h"
-//#include "interface.h"
+
class QWidget;
class Interface;
+class ConnectWidget;
+class ConnectWindow;
class InterfaceInformationPPP : public InterfaceInformationImp {
@@ -17,4 +19,7 @@ public:
~InterfaceInformationPPP(){};
+ private:
+ ConnectWidget *con;
+ ConnectWindow *con_win;
};
diff --git a/noncore/settings/networksettings/ppp/interfaceppp.cpp b/noncore/settings/networksettings/ppp/interfaceppp.cpp
index d9ee3ff..dc24824 100644
--- a/noncore/settings/networksettings/ppp/interfaceppp.cpp
+++ b/noncore/settings/networksettings/ppp/interfaceppp.cpp
@@ -1,2 +1,7 @@
+
+#include <qmessagebox.h>
+#define i18n QObject::tr
+
+#include "auth.h"
#include "interfaceppp.h"
#include "modem.h"
@@ -5,6 +10,6 @@
InterfacePPP::InterfacePPP(QObject *parent, const char *name, bool status)
: Interface(parent, name, status),
- _modem(0),
- _pppdata(0)
+ _modemPtr(0),
+ _dataPtr(0)
{
qDebug("InterfacePPP::InterfacePPP(");
@@ -13,18 +18,20 @@ InterfacePPP::InterfacePPP(QObject *parent, const char *name, bool status)
PPPData* InterfacePPP::data()
{
- if (!_pppdata){
- _pppdata = new PPPData();
- _pppdata->setModemDevice( getInterfaceName() );
- _pppdata->setAccount( getHardwareName() );
+ if (!_dataPtr){
+ qDebug("creating new Data obj");
+ _dataPtr = new PPPData();
+ _dataPtr->setModemDevice( getInterfaceName() );
+ _dataPtr->setAccount( getHardwareName() );
}
- return _pppdata;
+ return _dataPtr;
}
Modem* InterfacePPP::modem()
{
- if (!_modem){
- _modem = new Modem( data() );
+ if (!_modemPtr){
+ qDebug("creating new modem obj");
+ _modemPtr = new Modem( data() );
}
- return _modem;
+ return _modemPtr;
}
@@ -32,4 +39,5 @@ bool InterfacePPP::refresh()
{
qDebug("InterfacePPP::refresh()");
+ QMessageBox::information(0,"Not Implemented","This feature is not yet implemneted... ;-(");
return false;
}
@@ -38,5 +46,90 @@ void InterfacePPP::start()
{
qDebug("InterfacePPP::start");
+ if (data()->storedPassword() != "" ){
+ data()->setPassword(data()->storedPassword());
+ }else{
+ //FIXME:
+ qDebug("using dummy password");
+ data()->setPassword( "dummy" );
+ }
+
+
+ QFileInfo info(pppdPath());
+
+ if(!info.exists()){
+ QMessageBox::warning(0, tr("Error"),
+ i18n("<qt>Cannot find the PPP daemon!<br>"
+ "Make sure that pppd is installed and "
+ "that you have entered the correct path.</qt>"));
+ return;
+ }
+//#if 0
+ if(!info.isExecutable()){
+
+ QString string;
+ string = i18n( "<qt>Cannot execute:<br> %1<br>"
+ "Please make sure that you have given "
+ "setuid permission and that "
+ "pppd is executable.<br>").arg(pppdPath());
+ QMessageBox::warning(0, tr("Error"), string);
+ return;
+
+ }
+//#endif
+
+ QFileInfo info2(data()->modemDevice());
+
+ if(!info2.exists()){
+ QString string;
+ string = i18n( "<qt>Cannot find:<br> %1<br>"
+ "Please make sure you have setup "
+ "your modem device properly "
+ "and/or adjust the location of the modem device on "
+ "the modem tab of "
+ "the setup dialog.</qt>").arg(data()->modemDevice());
+ QMessageBox::warning(0, tr("Error"), string);
+ return;
+ }
+
+ // if this is a PAP or CHAP account, ensure that username is
+ // supplied
+ if(data()->authMethod() == AUTH_PAP ||
+ data()->authMethod() == AUTH_CHAP ||
+ data()->authMethod() == AUTH_PAPCHAP ) {
+ if(false){ //ID_Edit->text().isEmpty()) {
+ QMessageBox::warning(0,tr("Error"),
+ i18n("<qt>You have selected the authentication method PAP or CHAP. This requires that you supply a username and a password!</qt>"));
+// FIXME: return;
+ } else {
+ if(!modem()->setSecret(data()->authMethod(),
+ PPPData::encodeWord(data()->storedUsername()),
+ PPPData::encodeWord(data()->password()))
+ ) {
+ QString s;
+ s = i18n("<qt>Cannot create PAP/CHAP authentication<br>"
+ "file \"%1\"</qt>").arg(PAP_AUTH_FILE);
+ QMessageBox::warning(0, tr("Error"), s);
+ return;
+ }
+ }
+ }
+
+ if (data()->phonenumber().isEmpty()) {
+ QString s = i18n("You must specify a telephone number!");
+ QMessageBox::warning(0, tr("Error"), s);
+ return;
+ }
+
+// this->hide();
+
+ QString tit = i18n("Connecting to: %1").arg(data()->accname());
+// con->setCaption(tit);
+
+// con->show();
+
+
+ emit begin_connect();
+ qDebug("InterfacePPP::start END");
}
diff --git a/noncore/settings/networksettings/ppp/interfaceppp.h b/noncore/settings/networksettings/ppp/interfaceppp.h
index b7477c9..06a4dbf 100644
--- a/noncore/settings/networksettings/ppp/interfaceppp.h
+++ b/noncore/settings/networksettings/ppp/interfaceppp.h
@@ -17,4 +17,7 @@ public:
Modem* modem();
+signals:
+ void begin_connect();
+
public slots:
virtual bool refresh();
@@ -23,6 +26,6 @@ public slots:
private:
- Modem *_modem;
- PPPData *_pppdata;
+ Modem *_modemPtr;
+ PPPData *_dataPtr;
};
diff --git a/noncore/settings/networksettings/ppp/kpppwidget.h b/noncore/settings/networksettings/ppp/kpppwidget.h
index b958862..e0f5237 100644
--- a/noncore/settings/networksettings/ppp/kpppwidget.h
+++ b/noncore/settings/networksettings/ppp/kpppwidget.h
@@ -30,7 +30,7 @@
#include <qstring.h>
-#include "conwindow.h"
#include "accounts.h"
#include "connect.h"
+#include "conwindow.h"
class QPushButton;
diff --git a/noncore/settings/networksettings/ppp/pppdata.cpp b/noncore/settings/networksettings/ppp/pppdata.cpp
index 59d68c9..7a6524f 100644
--- a/noncore/settings/networksettings/ppp/pppdata.cpp
+++ b/noncore/settings/networksettings/ppp/pppdata.cpp
@@ -131,5 +131,5 @@ QString PPPData::readConfig(const QString &group, const QString &key,
const QString &defvalue = "")
{
-// qDebug("PPPData::readConfig key >%s< group >%s<",key.latin1(), group.latin1());
+ qDebug("PPPData::readConfig key >%s< group >%s<",key.latin1(), group.latin1());
QString idx = SEP.arg(group).arg(key);
if (stringEntries.find(idx) != stringEntries.end())
@@ -348,4 +348,5 @@ const QString PPPData::modemDevice() {
bool PPPData::setModemDevice(const QString &n) {
+ qDebug("Setting modem dev to >%s<", n.latin1());
bool ret = false;
for (int i = 0; devices[i]; i++)
@@ -355,4 +356,5 @@ bool PPPData::setModemDevice(const QString &n) {
ret = true;
}
+ qDebug(ret?"SUCCESS":"FAILURE");
return ret;
}
@@ -713,11 +715,14 @@ int PPPData::count() const {
bool PPPData::setAccount(const QString &aname) {
+ qDebug("setting account to >%s<", aname.latin1());
for(int i = 0; i <= highcount; i++) {
setAccountbyIndex(i);
if(accname() == aname) {
caccount = i;
+ qDebug("SUCCESS");
return true;
}
}
+ qDebug("FAILURE");
return false;
}
@@ -911,4 +916,7 @@ void PPPData::setStoredUsername(const QString &b) {
const QString PPPData::storedPassword() {
+ qDebug("getting stored pw");
+ qDebug("g %s", cgroup.latin1() );
+ qDebug("k %s", STORED_PASSWORD_KEY);
return readConfig(cgroup, STORED_PASSWORD_KEY, "");
}
@@ -1275,2 +1283,13 @@ void PPPData::setConfiguredInterfaces( QMap<QString,QString> ifaces )
}
+
+/**
+ * pppd's getword() function knows about escape characters.
+ * If we write the username and password to the secrets file
+ * we'll therefore have to escape back slashes.
+ */
+QString PPPData::encodeWord(const QString &s) {
+ QString r = s;
+ r.replace(QRegExp("\\"), "\\\\");
+ return r;
+}
diff --git a/noncore/settings/networksettings/ppp/pppdata.h b/noncore/settings/networksettings/ppp/pppdata.h
index af960c6..c9cd482 100644
--- a/noncore/settings/networksettings/ppp/pppdata.h
+++ b/noncore/settings/networksettings/ppp/pppdata.h
@@ -410,4 +410,7 @@ public:
void setpppdError(int err);
+
+ static QString encodeWord(const QString &s);
+
private: