summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--core/settings/security/security.cpp446
-rw-r--r--core/settings/security/security.h74
2 files changed, 0 insertions, 520 deletions
diff --git a/core/settings/security/security.cpp b/core/settings/security/security.cpp
deleted file mode 100644
index 122dfae..0000000
--- a/core/settings/security/security.cpp
+++ b/dev/null
@@ -1,446 +0,0 @@
-/**********************************************************************
- ** Copyright (C) 2000 Trolltech AS. All rights reserved.
- **
- ** This file is part of Qtopia Environment.
- **
- ** This file may be distributed and/or modified under the terms of the
- ** GNU General Public License version 2 as published by the Free Software
- ** Foundation and appearing in the file LICENSE.GPL included in the
- ** packaging of this file.
- **
- ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
- ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- **
- ** See http://www.trolltech.com/gpl/ for GPL licensing information.
- **
- ** Contact info@trolltech.com if any conditions of this licensing are
- ** not clear to you.
- **
- **********************************************************************/
-#include "security.h"
-
-/* OPIE */
-#include <qpe/qpeapplication.h>
-#include <qpe/config.h>
-#include <qpe/password.h>
-#include <qpe/qpedialog.h>
-#include <qpe/qcopenvelope_qws.h>
-#include <opie2/odebug.h>
-
-/* QT */
-#include <qcheckbox.h>
-#include <qpushbutton.h>
-#include <qcombobox.h>
-#include <qmessagebox.h>
-#include <qfile.h>
-#include <qtextstream.h>
-
-
-using namespace Opie::Core;
-
- Security::Security( QWidget* parent, const char* name, WFlags fl )
-: SecurityBase( parent, name, TRUE, WStyle_ContextHelp )
-{
- valid=FALSE;
- Config cfg("Security");
- cfg.setGroup("Passcode");
- passcode = cfg.readEntry("passcode");
- passcode_poweron->setChecked(cfg.readBoolEntry("passcode_poweron",FALSE));
- cfg.setGroup("Sync");
- int auth_peer = cfg.readNumEntry("auth_peer",0xc0a88100);//new default 192.168.129.0/24
- int auth_peer_bits = cfg.readNumEntry("auth_peer_bits",24);
- selectNet(auth_peer,auth_peer_bits,TRUE);
-
- connect(syncnet, SIGNAL(textChanged(const QString&)),
- this, SLOT(setSyncNet(const QString&)));
-
-
-
- /*
- cfg.setGroup("Remote");
- if ( telnetAvailable() )
- telnet->setChecked(cfg.readEntry("allow_telnet"));
- else
- telnet->hide();
-
- if ( sshAvailable() )
- ssh->setChecked(cfg.readEntry("allow_ssh"));
- else
- ssh->hide();
- */
-
- QString configFile = QPEApplication::qpeDir() + "/etc/opie-login.conf";
- Config loginCfg(configFile,Config::File);
-
- loginCfg.setGroup("General");
- autoLoginName=loginCfg.readEntry("AutoLogin","");
-
- if (autoLoginName.stripWhiteSpace().isEmpty()) {
- autoLogin=false;
- } else {
- autoLogin=true;
- }
-
- cfg.setGroup("SyncMode");
- int mode = cfg.readNumEntry("Mode",2); // Default to Sharp
- switch( mode ) {
- case 0x01:
- syncModeCombo->setCurrentItem( 0 );
- break;
- case 0x02:
- default:
- syncModeCombo->setCurrentItem( 1 );
- break;
- case 0x04:
- syncModeCombo->setCurrentItem( 2 );
- break;
- }
-
-
- connect(autologinToggle, SIGNAL(toggled(bool)), this, SLOT(toggleAutoLogin(bool)));
- connect(userlist, SIGNAL(activated(int)), this, SLOT(changeLoginName(int)));
- connect(changepasscode,SIGNAL(clicked()), this, SLOT(changePassCode()));
- connect(clearpasscode,SIGNAL(clicked()), this, SLOT(clearPassCode()));
- connect(restoredefaults,SIGNAL(clicked()), this, SLOT(restoreDefaults()));
- connect(deleteentry,SIGNAL(clicked()), this, SLOT(deleteListEntry()));
-
- loadUsers();
- updateGUI();
-
- dl = new QPEDialogListener(this);
- QPEApplication::showDialog( this );
-}
-
-Security::~Security()
-{
-}
-
-void Security::deleteListEntry()
-{
- syncnet->removeItem(syncnet->currentItem());
-}
-
-void Security::restoreDefaults()
-{
- QMessageBox unrecbox(
- tr("Attention"),
- "<p>" + tr("All user-defined net ranges will be lost.") + "</p>",
- QMessageBox::Warning,
- QMessageBox::Cancel, QMessageBox::Yes, QMessageBox::NoButton,
- 0, QString::null, TRUE, WStyle_StaysOnTop);
- unrecbox.setButtonText(QMessageBox::Cancel, tr("Cancel"));
- unrecbox.setButtonText(QMessageBox::Yes, tr("Ok"));
-
- if ( unrecbox.exec() == QMessageBox::Yes)
- {
- syncnet->clear();
- insertDefaultRanges();
- }
- syncModeCombo->setCurrentItem( 2 );
-}
-
-void Security::insertDefaultRanges()
-{
- syncnet->insertItem( "192.168.129.0/24" );
- syncnet->insertItem( "192.168.1.0/24" );
- syncnet->insertItem( "192.168.0.0/16" );
- syncnet->insertItem( "172.16.0.0/12" );
- syncnet->insertItem( "10.0.0.0/8" );
- syncnet->insertItem( "1.0.0.0/8" );
- syncnet->insertItem( tr( "Any" ) );
- syncnet->insertItem( tr( "None" ) );
-}
-
-void Security::updateGUI()
-{
- bool empty = passcode.isEmpty();
-
- changepasscode->setText( empty ? tr("Set passcode" )
- : tr("Change passcode" ) );
- passcode_poweron->setEnabled( !empty );
- clearpasscode->setEnabled( !empty );
-
- autologinToggle->setChecked(autoLogin);
- userlist->setEnabled(autoLogin);
-}
-
-
-void Security::show()
-{
- //valid=FALSE;
- setEnabled(FALSE);
- SecurityBase::show();
- if ( passcode.isEmpty() ) {
- // could insist...
- //changePassCode();
- //if ( passcode.isEmpty() )
- //reject();
- } else {
- if (!valid) // security passcode was not asked yet, so ask now
- {
- QString pc = enterPassCode(tr("Enter passcode"));
- if ( pc != passcode ) {
- QMessageBox::critical(this, tr("Passcode incorrect"),
- tr("The passcode entered is incorrect.\nAccess denied"));
- reject();
- return;
- }
- }
- }
- setEnabled(TRUE);
- valid=TRUE;
-}
-
-void Security::accept()
-{
- applySecurity();
- QDialog::accept();
- QCopEnvelope env("QPE/System", "securityChanged()" );
-}
-
-void Security::done(int r)
-{
- QDialog::done(r);
- close();
-}
-
-void Security::selectNet(int auth_peer,int auth_peer_bits, bool update)
-{
- QString sn;
- if ( auth_peer_bits == 0 && auth_peer == 0 ) {
- sn = tr("Any");
- } else if ( auth_peer_bits == 32 && auth_peer == 0 ) {
- sn = tr("None");
- } else {
- sn =
- QString::number((auth_peer>>24)&0xff) + "."
- + QString::number((auth_peer>>16)&0xff) + "."
- + QString::number((auth_peer>>8)&0xff) + "."
- + QString::number((auth_peer>>0)&0xff) + "/"
- + QString::number(auth_peer_bits);
- }
-
- //insert user-defined list of netranges upon start
- if (update) {
- //User selected/active netrange first
- syncnet->insertItem( sn );
-
- Config cfg("Security");
- cfg.setGroup("Sync");
-
- //set up defaults if needed, if someone manually deletes net0 he'll get a suprise hehe
- QString test = cfg.readEntry("net0","");
- if (test.isEmpty()) {
- insertDefaultRanges();
- } else {
- // 10 ought to be enough for everybody... :)
- // If you need more, don't forget to edit applySecurity() as well
- bool already_there=FALSE;
- for (int i=0; i<10; i++) {
- QString target, netrange;
- target.sprintf("net%d", i);
- netrange = cfg.readEntry(target,"");
- if (! netrange.isEmpty()){
- //make sure we have no "twin" entries
- for (int i=0; i<syncnet->count(); i++) {
- if ( syncnet->text(i) == netrange ) {
- already_there=TRUE;
- }
- }
- if (! already_there) {
- syncnet->insertItem( netrange );
- } else {
- already_there=FALSE;
- }
- }
- }
- }
- }
-
- for (int i=0; i<syncnet->count(); i++) {
- if ( syncnet->text(i).left(sn.length()) == sn ) {
- syncnet->setCurrentItem(i);
- return;
- }
- }
- odebug << "No match for \"" << sn << "\"" << oendl;
-}
-
-void Security::parseNet(const QString& sn,int& auth_peer,int& auth_peer_bits)
-{
- auth_peer=0;
- if ( sn == tr("Any") ) {
- auth_peer = 0;
- auth_peer_bits = 0;
- } else if ( sn == tr("None") ) {
- auth_peer = 0;
- auth_peer_bits = 32;
- } else {
- int x=0;
- for (int i=0; i<4; i++) {
- int nx = sn.find(QChar(i==3 ? '/' : '.'),x);
- auth_peer = (auth_peer<<8)|sn.mid(x,nx-x).toInt();
- x = nx+1;
- }
- uint n = (uint)sn.find(' ',x)-x;
- auth_peer_bits = sn.mid(x,n).toInt();
- }
-}
-
-void Security::loadUsers ( void )
-{
- QFile passwd("/etc/passwd");
- if ( passwd.open(IO_ReadOnly) ) {
- QTextStream t( &passwd );
- QString s;
- QStringList account;
- while ( !t.eof() ) {
- account = QStringList::split(':',t.readLine());
-
- // Hide disabled accounts
- if (*account.at(1)!="*") {
-
- userlist->insertItem(*account.at(0));
- // Highlight this item if it is set to autologinToggle
- if ( *account.at(0) == autoLoginName)
- userlist->setCurrentItem(userlist->count()-1);
- }
- }
- passwd.close();
- }
-
-}
-
-void Security::toggleAutoLogin(bool val)
-{
- autoLogin=val;
- userlist->setEnabled(val);
- if (!autoLogin)
- autoLoginName=userlist->currentText();
-}
-
-
-
-
-void Security::setSyncNet(const QString& sn)
-{
- int auth_peer,auth_peer_bits;
- parseNet(sn,auth_peer,auth_peer_bits);
- selectNet(auth_peer,auth_peer_bits,FALSE);
-}
-
-void Security::applySecurity()
-{
- if ( valid ) {
- Config cfg("Security");
- cfg.setGroup("Passcode");
- cfg.writeEntry("passcode",passcode);
- cfg.writeEntry("passcode_poweron",passcode_poweron->isChecked());
- cfg.setGroup("Sync");
- int auth_peer=0;
- int auth_peer_bits;
- QString sn = syncnet->currentText();
- parseNet(sn,auth_peer,auth_peer_bits);
-
- //this is the *selected* (active) net range
- cfg.writeEntry("auth_peer",auth_peer);
- cfg.writeEntry("auth_peer_bits",auth_peer_bits);
-
- //write back all other net ranges in *cleartext*
- for (int i=0; i<10; i++) {
- QString target;
- target.sprintf("net%d", i);
- cfg.writeEntry(target,syncnet->text(i));
- }
-
-#ifdef ODP
- #error "Use 0,1,2 and use Launcher"
-#endif
- /* keep the old code so we don't use currentItem directly */
- int value = 0x02;
- switch( syncModeCombo->currentItem() ) {
- case 0:
- value = 0x01;
- break;
- case 1:
- value = 0x02;
- break;
- case 2:
- value = 0x04;
- break;
- }
- cfg.setGroup("SyncMode");
- cfg.writeEntry( "Mode", value );
-
- /*
- cfg.setGroup("Remote");
- if ( telnetAvailable() )
- cfg.writeEntry("allow_telnet",telnet->isChecked());
- if ( sshAvailable() )
- cfg.writeEntry("allow_ssh",ssh->isChecked());
- // ### write ssh/telnet sys config files
- */
-
- QString configFile = QPEApplication::qpeDir() + "/etc/opie-login.conf";
- Config loginCfg(configFile,Config::File);
- loginCfg.setGroup("General");
-
- if (autoLogin) {
- loginCfg.writeEntry("AutoLogin",autoLoginName);
- } else {
- loginCfg.removeEntry("AutoLogin");
- }
-
- }
-}
-
-
-
-
-void Security::changeLoginName( int idx )
-{
- autoLoginName = userlist->text(idx);;
- updateGUI();
-}
-
-void Security::changePassCode()
-{
- QString new1;
- QString new2;
-
- do {
- new1 = enterPassCode(tr("Enter new passcode"));
- if ( new1.isNull() )
- return;
- new2 = enterPassCode(tr("Re-enter new passcode"));
- if ( new2.isNull() )
- return;
- } while (new1 != new2);
-
- passcode = new1;
- updateGUI();
-}
-
-void Security::clearPassCode()
-{
- passcode = QString::null;
- updateGUI();
-}
-
-
-QString Security::enterPassCode(const QString& prompt)
-{
- return Password::getPassword(prompt);
-}
-
-bool Security::telnetAvailable() const
-{
- // ### not implemented
- return FALSE;
-}
-
-bool Security::sshAvailable() const
-{
- // ### not implemented
- return FALSE;
-}
diff --git a/core/settings/security/security.h b/core/settings/security/security.h
deleted file mode 100644
index ed25ce1..0000000
--- a/core/settings/security/security.h
+++ b/dev/null
@@ -1,74 +0,0 @@
-/**********************************************************************
-** Copyright (C) 2000 Trolltech AS. All rights reserved.
-**
-** This file is part of Qtopia Environment.
-**
-** This file may be distributed and/or modified under the terms of the
-** GNU General Public License version 2 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file.
-**
-** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
-** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-**
-** See http://www.trolltech.com/gpl/ for GPL licensing information.
-**
-** Contact info@trolltech.com if any conditions of this licensing are
-** not clear to you.
-**
-**********************************************************************/
-#ifndef SECURITY_H
-#define SECURITY_H
-
-#include "securitybase.h"
-
-class QPEDialogListener;
-
-class Security : public SecurityBase
-{
- Q_OBJECT
-
-public:
- static QString appName() { return QString::fromLatin1("security"); }
- Security( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
- ~Security();
-
- void show();
-
-protected:
- void accept();
- void applySecurity();
- void done(int);
-
-private slots:
- void changePassCode();
- void clearPassCode();
- void setSyncNet(const QString&);
- void changeLoginName(int);
- void toggleAutoLogin(bool);
- void restoreDefaults();
- void insertDefaultRanges();
- void deleteListEntry();
-
-private:
- void loadUsers(void);
- bool telnetAvailable() const;
- bool sshAvailable() const;
- void updateGUI();
-
- static void parseNet(const QString& sn,int& auth_peer,int& auth_peer_bits);
- void selectNet(int auth_peer,int auth_peer_bits,bool update);
-
-
- QString enterPassCode(const QString&);
- QString passcode;
- bool valid;
- bool autoLogin;
- QString autoLoginName;
-
- QPEDialogListener *dl;
-};
-
-
-#endif // SECURITY_H
-