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: |