summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/settings/security/multiauthconfig.cpp16
-rw-r--r--core/settings/security/security.cpp18
2 files changed, 17 insertions, 17 deletions
diff --git a/core/settings/security/multiauthconfig.cpp b/core/settings/security/multiauthconfig.cpp
index 535352a..ff11e49 100644
--- a/core/settings/security/multiauthconfig.cpp
+++ b/core/settings/security/multiauthconfig.cpp
@@ -431,269 +431,269 @@ void MultiauthConfig::writeConfig()
431 // ### write ssh/telnet sys config files 431 // ### write ssh/telnet sys config files
432 */ 432 */
433 433
434 //release the Config handler 434 //release the Config handler
435 delete pcfg; 435 delete pcfg;
436 436
437 QString configFile = QPEApplication::qpeDir() + "/etc/opie-login.conf"; 437 QString configFile = QPEApplication::qpeDir() + "/etc/opie-login.conf";
438 Config loginCfg(configFile,Config::File); 438 Config loginCfg(configFile,Config::File);
439 loginCfg.setGroup("General"); 439 loginCfg.setGroup("General");
440 440
441 if (autoLogin) { 441 if (autoLogin) {
442 loginCfg.writeEntry("AutoLogin",autoLoginName); 442 loginCfg.writeEntry("AutoLogin",autoLoginName);
443 } else { 443 } else {
444 loginCfg.removeEntry("AutoLogin"); 444 loginCfg.removeEntry("AutoLogin");
445 } 445 }
446 446
447} 447}
448 448
449/// slot used to record the fact plugins order has been modified 449/// slot used to record the fact plugins order has been modified
450void MultiauthConfig::pluginsChanged() { 450void MultiauthConfig::pluginsChanged() {
451 m_plugins_changed = true; 451 m_plugins_changed = true;
452} 452}
453 453
454/// loads each multiauth plugin 454/// loads each multiauth plugin
455void MultiauthConfig::loadPlugins() { 455void MultiauthConfig::loadPlugins() {
456 456
457 QString path = QPEApplication::qpeDir() + "/plugins/security"; 457 QString path = QPEApplication::qpeDir() + "/plugins/security";
458 QDir dir( path, "lib*.so" ); 458 QDir dir( path, "lib*.so" );
459 459
460 QStringList list = dir.entryList(); 460 QStringList list = dir.entryList();
461 QStringList::Iterator it; 461 QStringList::Iterator it;
462 462
463 // temporary list used to sort plugins 463 // temporary list used to sort plugins
464 QMap<QString, MultiauthPlugin> sortList; 464 QMap<QString, MultiauthPlugin> sortList;
465 465
466 for ( it = list.begin(); it != list.end(); ++it ) { 466 for ( it = list.begin(); it != list.end(); ++it ) {
467 QInterfacePtr<MultiauthPluginInterface> iface; 467 QInterfacePtr<MultiauthPluginInterface> iface;
468 QLibrary *lib = new QLibrary( path + "/" + *it ); 468 QLibrary *lib = new QLibrary( path + "/" + *it );
469 QString libPath(path + "/" + *it); 469 QString libPath(path + "/" + *it);
470 470
471 if ( lib->queryInterface( IID_MultiauthPluginInterface, (QUnknownInterface**)&iface ) == QS_OK ) { 471 if ( lib->queryInterface( IID_MultiauthPluginInterface, (QUnknownInterface**)&iface ) == QS_OK ) {
472 MultiauthPlugin plugin; 472 MultiauthPlugin plugin;
473 plugin.library = lib; 473 plugin.library = lib;
474 plugin.iface = iface; 474 plugin.iface = iface;
475 plugin.name = QString(*it); 475 plugin.name = QString(*it);
476 476
477 // find out if plugins should be launched 477 // find out if plugins should be launched
478 if ( m_excludePlugins.grep( *it ).isEmpty() ) { 478 if ( m_excludePlugins.grep( *it ).isEmpty() ) {
479 plugin.active = true; 479 plugin.active = true;
480 } else { 480 } else {
481 plugin.active = false; 481 plugin.active = false;
482 } 482 }
483 483
484 plugin.pluginObject = plugin.iface->plugin(); 484 plugin.pluginObject = plugin.iface->plugin();
485 485
486 // "prebuffer" it in one more list, to get the sorting done 486 // "prebuffer" it in one more list, to get the sorting done
487 sortList.insert( plugin.name, plugin ); 487 sortList.insert( plugin.name, plugin );
488 488
489 // on first start the list is off course empty 489 // on first start the list is off course empty
490 if ( m_allPlugins.isEmpty() ) { 490 if ( m_allPlugins.isEmpty() ) {
491 pluginList.append( plugin ); 491 pluginList.append( plugin );
492 } 492 }
493 // if plugin is not yet in the list, add it to the layout too 493 // if plugin is not yet in the list, add it to the layout too
494 else if ( !m_allPlugins.contains( plugin.name ) ) { 494 else if ( !m_allPlugins.contains( plugin.name ) ) {
495 pluginList.append( plugin ); 495 pluginList.append( plugin );
496 } 496 }
497 497
498 } else { 498 } else {
499 delete lib; 499 delete lib;
500 } 500 }
501 501
502 } // end for 502 } // end for
503 503
504 // put m_allPlugins tempPlugin objects into pluginList 504 // put m_allPlugins tempPlugin objects into pluginList
505 if ( !m_allPlugins.isEmpty() ) { 505 if ( !m_allPlugins.isEmpty() ) {
506 MultiauthPlugin tempPlugin; 506 MultiauthPlugin tempPlugin;
507 QStringList::Iterator stringit; 507 QStringList::Iterator stringit;
508 for( stringit = m_allPlugins.begin(); stringit != m_allPlugins.end(); ++stringit ) { 508 for( stringit = m_allPlugins.begin(); stringit != m_allPlugins.end(); ++stringit ) {
509 tempPlugin = ( sortList.find( *stringit ) ).data(); 509 tempPlugin = ( sortList.find( *stringit ) ).data();
510 if ( !( (tempPlugin.name).isEmpty() ) ) { 510 if ( !( (tempPlugin.name).isEmpty() ) ) {
511 pluginList.append( tempPlugin ); 511 pluginList.append( tempPlugin );
512 } 512 }
513 } 513 }
514 } 514 }
515 515
516} 516}
517 517
518void MultiauthConfig::deleteListEntry() 518void MultiauthConfig::deleteListEntry()
519{ 519{
520 m_syncWidget->syncnet->removeItem(m_syncWidget->syncnet->currentItem()); 520 m_syncWidget->syncnet->removeItem(m_syncWidget->syncnet->currentItem());
521} 521}
522 522
523void MultiauthConfig::restoreDefaults() 523void MultiauthConfig::restoreDefaults()
524{ 524{
525 QMessageBox unrecbox( 525 QMessageBox unrecbox(
526 tr("Attention"), 526 tr("Attention"),
527 tr( "<p>All user-defined net ranges will be lost."), 527 "<p>" + tr("All user-defined net ranges will be lost.") + "</p>",
528 QMessageBox::Warning, 528 QMessageBox::Warning,
529 QMessageBox::Cancel, QMessageBox::Yes, QMessageBox::NoButton, 529 QMessageBox::Cancel, QMessageBox::Yes, QMessageBox::NoButton,
530 0, QString::null, TRUE, WStyle_StaysOnTop); 530 0, QString::null, TRUE, WStyle_StaysOnTop);
531 unrecbox.setButtonText(QMessageBox::Cancel, tr("Cancel")); 531 unrecbox.setButtonText(QMessageBox::Cancel, tr("Cancel"));
532 unrecbox.setButtonText(QMessageBox::Yes, tr("Ok")); 532 unrecbox.setButtonText(QMessageBox::Yes, tr("Ok"));
533 533
534 if ( unrecbox.exec() == QMessageBox::Yes) 534 if ( unrecbox.exec() == QMessageBox::Yes)
535 { 535 {
536 m_syncWidget->syncnet->clear(); 536 m_syncWidget->syncnet->clear();
537 insertDefaultRanges(); 537 insertDefaultRanges();
538 } 538 }
539 m_syncWidget->syncModeCombo->setCurrentItem( 2 ); 539 m_syncWidget->syncModeCombo->setCurrentItem( 2 );
540} 540}
541 541
542void MultiauthConfig::insertDefaultRanges() 542void MultiauthConfig::insertDefaultRanges()
543{ 543{
544 m_syncWidget->syncnet->insertItem( tr( "192.168.129.0/24" ) ); 544 m_syncWidget->syncnet->insertItem( "192.168.129.0/24" );
545 m_syncWidget->syncnet->insertItem( tr( "192.168.1.0/24" ) ); 545 m_syncWidget->syncnet->insertItem( "192.168.1.0/24" );
546 m_syncWidget->syncnet->insertItem( tr( "192.168.0.0/16" ) ); 546 m_syncWidget->syncnet->insertItem( "192.168.0.0/16" );
547 m_syncWidget->syncnet->insertItem( tr( "172.16.0.0/12" ) ); 547 m_syncWidget->syncnet->insertItem( "172.16.0.0/12" );
548 m_syncWidget->syncnet->insertItem( tr( "10.0.0.0/8" ) ); 548 m_syncWidget->syncnet->insertItem( "10.0.0.0/8" );
549 m_syncWidget->syncnet->insertItem( tr( "1.0.0.0/8" ) ); 549 m_syncWidget->syncnet->insertItem( "1.0.0.0/8" );
550 m_syncWidget->syncnet->insertItem( tr( "Any" ) ); 550 m_syncWidget->syncnet->insertItem( tr( "Any" ) );
551 m_syncWidget->syncnet->insertItem( tr( "None" ) ); 551 m_syncWidget->syncnet->insertItem( tr( "None" ) );
552} 552}
553 553
554void MultiauthConfig::updateGUI() 554void MultiauthConfig::updateGUI()
555{ 555{
556 m_loginWidget->autologinToggle->setChecked(autoLogin); 556 m_loginWidget->autologinToggle->setChecked(autoLogin);
557 m_loginWidget->userlist->setEnabled(autoLogin); 557 m_loginWidget->userlist->setEnabled(autoLogin);
558} 558}
559 559
560void MultiauthConfig::selectNet(int auth_peer,int auth_peer_bits, bool update) 560void MultiauthConfig::selectNet(int auth_peer,int auth_peer_bits, bool update)
561{ 561{
562 QString sn; 562 QString sn;
563 if ( auth_peer_bits == 0 && auth_peer == 0 ) { 563 if ( auth_peer_bits == 0 && auth_peer == 0 ) {
564 sn = tr("Any"); 564 sn = tr("Any");
565 } else if ( auth_peer_bits == 32 && auth_peer == 0 ) { 565 } else if ( auth_peer_bits == 32 && auth_peer == 0 ) {
566 sn = tr("None"); 566 sn = tr("None");
567 } else { 567 } else {
568 sn = 568 sn =
569 QString::number((auth_peer>>24)&0xff) + "." 569 QString::number((auth_peer>>24)&0xff) + "."
570 + QString::number((auth_peer>>16)&0xff) + "." 570 + QString::number((auth_peer>>16)&0xff) + "."
571 + QString::number((auth_peer>>8)&0xff) + "." 571 + QString::number((auth_peer>>8)&0xff) + "."
572 + QString::number((auth_peer>>0)&0xff) + "/" 572 + QString::number((auth_peer>>0)&0xff) + "/"
573 + QString::number(auth_peer_bits); 573 + QString::number(auth_peer_bits);
574 } 574 }
575 575
576 //insert user-defined list of netranges upon start 576 //insert user-defined list of netranges upon start
577 if (update) { 577 if (update) {
578 //User selected/active netrange first 578 //User selected/active netrange first
579 m_syncWidget->syncnet->insertItem( tr(sn) ); 579 m_syncWidget->syncnet->insertItem( tr(sn) );
580 Config cfg("Security"); 580 Config cfg("Security");
581 cfg.setGroup("Sync"); 581 cfg.setGroup("Sync");
582 582
583 //set up defaults if needed, if someone manually deletes net0 he'll get a suprise hehe 583 //set up defaults if needed, if someone manually deletes net0 he'll get a suprise hehe
584 QString test = cfg.readEntry("net0",""); 584 QString test = cfg.readEntry("net0","");
585 if (test.isEmpty()) { 585 if (test.isEmpty()) {
586 insertDefaultRanges(); 586 insertDefaultRanges();
587 } else { 587 } else {
588 // 10 ought to be enough for everybody... :) 588 // 10 ought to be enough for everybody... :)
589 // If you need more, don't forget to edit applySecurity() as well 589 // If you need more, don't forget to edit applySecurity() as well
590 bool already_there=FALSE; 590 bool already_there=FALSE;
591 for (int i=0; i<10; i++) { 591 for (int i=0; i<10; i++) {
592 QString target, netrange; 592 QString target, netrange;
593 target.sprintf("net%d", i); 593 target.sprintf("net%d", i);
594 netrange = cfg.readEntry(target,""); 594 netrange = cfg.readEntry(target,"");
595 if (! netrange.isEmpty()){ 595 if (! netrange.isEmpty()){
596 //make sure we have no "twin" entries 596 //make sure we have no "twin" entries
597 for (int i=0; i<m_syncWidget->syncnet->count(); i++) { 597 for (int i=0; i<m_syncWidget->syncnet->count(); i++) {
598 if ( m_syncWidget->syncnet->text(i) == netrange ) { 598 if ( m_syncWidget->syncnet->text(i) == netrange ) {
599 already_there=TRUE; 599 already_there=TRUE;
600 } 600 }
601 } 601 }
602 if (! already_there) { 602 if (! already_there) {
603 m_syncWidget->syncnet->insertItem( tr( netrange ) ); 603 m_syncWidget->syncnet->insertItem( netrange );
604 } else { 604 } else {
605 already_there=FALSE; 605 already_there=FALSE;
606 } 606 }
607 } 607 }
608 } 608 }
609 } 609 }
610 } 610 }
611 611
612 for (int i=0; i<m_syncWidget->syncnet->count(); i++) { 612 for (int i=0; i<m_syncWidget->syncnet->count(); i++) {
613 if ( m_syncWidget->syncnet->text(i).left(sn.length()) == sn ) { 613 if ( m_syncWidget->syncnet->text(i).left(sn.length()) == sn ) {
614 m_syncWidget->syncnet->setCurrentItem(i); 614 m_syncWidget->syncnet->setCurrentItem(i);
615 return; 615 return;
616 } 616 }
617 } 617 }
618 odebug << "No match for \"" << sn << "\"" << oendl; 618 odebug << "No match for \"" << sn << "\"" << oendl;
619} 619}
620 620
621void MultiauthConfig::parseNet(const QString& sn,int& auth_peer,int& auth_peer_bits) 621void MultiauthConfig::parseNet(const QString& sn,int& auth_peer,int& auth_peer_bits)
622{ 622{
623 auth_peer=0; 623 auth_peer=0;
624 if ( sn == tr("Any") ) { 624 if ( sn == tr("Any") ) {
625 auth_peer = 0; 625 auth_peer = 0;
626 auth_peer_bits = 0; 626 auth_peer_bits = 0;
627 } else if ( sn == tr("None") ) { 627 } else if ( sn == tr("None") ) {
628 auth_peer = 0; 628 auth_peer = 0;
629 auth_peer_bits = 32; 629 auth_peer_bits = 32;
630 } else { 630 } else {
631 int x=0; 631 int x=0;
632 for (int i=0; i<4; i++) { 632 for (int i=0; i<4; i++) {
633 int nx = sn.find(QChar(i==3 ? '/' : '.'),x); 633 int nx = sn.find(QChar(i==3 ? '/' : '.'),x);
634 auth_peer = (auth_peer<<8)|sn.mid(x,nx-x).toInt(); 634 auth_peer = (auth_peer<<8)|sn.mid(x,nx-x).toInt();
635 x = nx+1; 635 x = nx+1;
636 } 636 }
637 uint n = (uint)sn.find(' ',x)-x; 637 uint n = (uint)sn.find(' ',x)-x;
638 auth_peer_bits = sn.mid(x,n).toInt(); 638 auth_peer_bits = sn.mid(x,n).toInt();
639 } 639 }
640} 640}
641 641
642void MultiauthConfig::loadUsers() 642void MultiauthConfig::loadUsers()
643{ 643{
644 QFile passwd("/etc/passwd"); 644 QFile passwd("/etc/passwd");
645 if ( passwd.open(IO_ReadOnly) ) { 645 if ( passwd.open(IO_ReadOnly) ) {
646 QTextStream t( &passwd ); 646 QTextStream t( &passwd );
647 QString s; 647 QString s;
648 QStringList account; 648 QStringList account;
649 while ( !t.eof() ) { 649 while ( !t.eof() ) {
650 account = QStringList::split(':',t.readLine()); 650 account = QStringList::split(':',t.readLine());
651 // Hide disabled accounts and some special accounts 651 // Hide disabled accounts and some special accounts
652 if (*account.at(1)!="*" && *account.at(0)!="ppp" && *account.at(0)!="messagebus") { 652 if (*account.at(1)!="*" && *account.at(0)!="ppp" && *account.at(0)!="messagebus") {
653 653
654 m_loginWidget->userlist->insertItem(*account.at(0)); 654 m_loginWidget->userlist->insertItem(*account.at(0));
655 // Highlight this item if it is set to m_loginWidget->autologinToggle 655 // Highlight this item if it is set to m_loginWidget->autologinToggle
656 if ( *account.at(0) == autoLoginName) 656 if ( *account.at(0) == autoLoginName)
657 m_loginWidget->userlist->setCurrentItem(m_loginWidget->userlist->count()-1); 657 m_loginWidget->userlist->setCurrentItem(m_loginWidget->userlist->count()-1);
658 } 658 }
659 } 659 }
660 passwd.close(); 660 passwd.close();
661 } 661 }
662 662
663} 663}
664 664
665void MultiauthConfig::toggleAutoLogin(bool val) 665void MultiauthConfig::toggleAutoLogin(bool val)
666{ 666{
667 autoLogin=val; 667 autoLogin=val;
668 m_loginWidget->userlist->setEnabled(val); 668 m_loginWidget->userlist->setEnabled(val);
669 // if autoLogin is true, we will set by default the login currently visible in the userlist 669 // if autoLogin is true, we will set by default the login currently visible in the userlist
670 if (autoLogin) 670 if (autoLogin)
671 autoLoginName=m_loginWidget->userlist->currentText(); 671 autoLoginName=m_loginWidget->userlist->currentText();
672} 672}
673 673
674 674
675 675
676 676
677void MultiauthConfig::setSyncNet(const QString& sn) 677void MultiauthConfig::setSyncNet(const QString& sn)
678{ 678{
679 int auth_peer,auth_peer_bits; 679 int auth_peer,auth_peer_bits;
680 parseNet(sn,auth_peer,auth_peer_bits); 680 parseNet(sn,auth_peer,auth_peer_bits);
681 selectNet(auth_peer,auth_peer_bits,FALSE); 681 selectNet(auth_peer,auth_peer_bits,FALSE);
682} 682}
683 683
684void MultiauthConfig::changeLoginName( int idx ) 684void MultiauthConfig::changeLoginName( int idx )
685{ 685{
686 autoLoginName = m_loginWidget->userlist->text(idx);; 686 autoLoginName = m_loginWidget->userlist->text(idx);;
687 updateGUI(); 687 updateGUI();
688} 688}
689 689
690/// \todo do implement that? who? how? 690/// \todo do implement that? who? how?
691bool MultiauthConfig::telnetAvailable() const 691bool MultiauthConfig::telnetAvailable() const
692{ 692{
693 return FALSE; 693 return FALSE;
694} 694}
695 695
696/// \todo do implement that? who? how? 696/// \todo do implement that? who? how?
697bool MultiauthConfig::sshAvailable() const 697bool MultiauthConfig::sshAvailable() const
698{ 698{
699 return FALSE; 699 return FALSE;
diff --git a/core/settings/security/security.cpp b/core/settings/security/security.cpp
index b917aea..122dfae 100644
--- a/core/settings/security/security.cpp
+++ b/core/settings/security/security.cpp
@@ -31,317 +31,317 @@
31#include <qcheckbox.h> 31#include <qcheckbox.h>
32#include <qpushbutton.h> 32#include <qpushbutton.h>
33#include <qcombobox.h> 33#include <qcombobox.h>
34#include <qmessagebox.h> 34#include <qmessagebox.h>
35#include <qfile.h> 35#include <qfile.h>
36#include <qtextstream.h> 36#include <qtextstream.h>
37 37
38 38
39using namespace Opie::Core; 39using namespace Opie::Core;
40 40
41 Security::Security( QWidget* parent, const char* name, WFlags fl ) 41 Security::Security( QWidget* parent, const char* name, WFlags fl )
42: SecurityBase( parent, name, TRUE, WStyle_ContextHelp ) 42: SecurityBase( parent, name, TRUE, WStyle_ContextHelp )
43{ 43{
44 valid=FALSE; 44 valid=FALSE;
45 Config cfg("Security"); 45 Config cfg("Security");
46 cfg.setGroup("Passcode"); 46 cfg.setGroup("Passcode");
47 passcode = cfg.readEntry("passcode"); 47 passcode = cfg.readEntry("passcode");
48 passcode_poweron->setChecked(cfg.readBoolEntry("passcode_poweron",FALSE)); 48 passcode_poweron->setChecked(cfg.readBoolEntry("passcode_poweron",FALSE));
49 cfg.setGroup("Sync"); 49 cfg.setGroup("Sync");
50 int auth_peer = cfg.readNumEntry("auth_peer",0xc0a88100);//new default 192.168.129.0/24 50 int auth_peer = cfg.readNumEntry("auth_peer",0xc0a88100);//new default 192.168.129.0/24
51 int auth_peer_bits = cfg.readNumEntry("auth_peer_bits",24); 51 int auth_peer_bits = cfg.readNumEntry("auth_peer_bits",24);
52 selectNet(auth_peer,auth_peer_bits,TRUE); 52 selectNet(auth_peer,auth_peer_bits,TRUE);
53 53
54 connect(syncnet, SIGNAL(textChanged(const QString&)), 54 connect(syncnet, SIGNAL(textChanged(const QString&)),
55 this, SLOT(setSyncNet(const QString&))); 55 this, SLOT(setSyncNet(const QString&)));
56 56
57 57
58 58
59 /* 59 /*
60 cfg.setGroup("Remote"); 60 cfg.setGroup("Remote");
61 if ( telnetAvailable() ) 61 if ( telnetAvailable() )
62 telnet->setChecked(cfg.readEntry("allow_telnet")); 62 telnet->setChecked(cfg.readEntry("allow_telnet"));
63 else 63 else
64 telnet->hide(); 64 telnet->hide();
65 65
66 if ( sshAvailable() ) 66 if ( sshAvailable() )
67 ssh->setChecked(cfg.readEntry("allow_ssh")); 67 ssh->setChecked(cfg.readEntry("allow_ssh"));
68 else 68 else
69 ssh->hide(); 69 ssh->hide();
70 */ 70 */
71 71
72 QString configFile = QPEApplication::qpeDir() + "/etc/opie-login.conf"; 72 QString configFile = QPEApplication::qpeDir() + "/etc/opie-login.conf";
73 Config loginCfg(configFile,Config::File); 73 Config loginCfg(configFile,Config::File);
74 74
75 loginCfg.setGroup("General"); 75 loginCfg.setGroup("General");
76 autoLoginName=loginCfg.readEntry("AutoLogin",""); 76 autoLoginName=loginCfg.readEntry("AutoLogin","");
77 77
78 if (autoLoginName.stripWhiteSpace().isEmpty()) { 78 if (autoLoginName.stripWhiteSpace().isEmpty()) {
79 autoLogin=false; 79 autoLogin=false;
80 } else { 80 } else {
81 autoLogin=true; 81 autoLogin=true;
82 } 82 }
83 83
84 cfg.setGroup("SyncMode"); 84 cfg.setGroup("SyncMode");
85 int mode = cfg.readNumEntry("Mode",2); // Default to Sharp 85 int mode = cfg.readNumEntry("Mode",2); // Default to Sharp
86 switch( mode ) { 86 switch( mode ) {
87 case 0x01: 87 case 0x01:
88 syncModeCombo->setCurrentItem( 0 ); 88 syncModeCombo->setCurrentItem( 0 );
89 break; 89 break;
90 case 0x02: 90 case 0x02:
91 default: 91 default:
92 syncModeCombo->setCurrentItem( 1 ); 92 syncModeCombo->setCurrentItem( 1 );
93 break; 93 break;
94 case 0x04: 94 case 0x04:
95 syncModeCombo->setCurrentItem( 2 ); 95 syncModeCombo->setCurrentItem( 2 );
96 break; 96 break;
97 } 97 }
98 98
99 99
100 connect(autologinToggle, SIGNAL(toggled(bool)), this, SLOT(toggleAutoLogin(bool))); 100 connect(autologinToggle, SIGNAL(toggled(bool)), this, SLOT(toggleAutoLogin(bool)));
101 connect(userlist, SIGNAL(activated(int)), this, SLOT(changeLoginName(int))); 101 connect(userlist, SIGNAL(activated(int)), this, SLOT(changeLoginName(int)));
102 connect(changepasscode,SIGNAL(clicked()), this, SLOT(changePassCode())); 102 connect(changepasscode,SIGNAL(clicked()), this, SLOT(changePassCode()));
103 connect(clearpasscode,SIGNAL(clicked()), this, SLOT(clearPassCode())); 103 connect(clearpasscode,SIGNAL(clicked()), this, SLOT(clearPassCode()));
104 connect(restoredefaults,SIGNAL(clicked()), this, SLOT(restoreDefaults())); 104 connect(restoredefaults,SIGNAL(clicked()), this, SLOT(restoreDefaults()));
105 connect(deleteentry,SIGNAL(clicked()), this, SLOT(deleteListEntry())); 105 connect(deleteentry,SIGNAL(clicked()), this, SLOT(deleteListEntry()));
106 106
107 loadUsers(); 107 loadUsers();
108 updateGUI(); 108 updateGUI();
109 109
110 dl = new QPEDialogListener(this); 110 dl = new QPEDialogListener(this);
111 QPEApplication::showDialog( this ); 111 QPEApplication::showDialog( this );
112} 112}
113 113
114Security::~Security() 114Security::~Security()
115{ 115{
116} 116}
117 117
118void Security::deleteListEntry() 118void Security::deleteListEntry()
119{ 119{
120 syncnet->removeItem(syncnet->currentItem()); 120 syncnet->removeItem(syncnet->currentItem());
121} 121}
122 122
123void Security::restoreDefaults() 123void Security::restoreDefaults()
124{ 124{
125 QMessageBox unrecbox( 125 QMessageBox unrecbox(
126 tr("Attention"), 126 tr("Attention"),
127 tr( "<p>All user-defined net ranges will be lost."), 127 "<p>" + tr("All user-defined net ranges will be lost.") + "</p>",
128 QMessageBox::Warning, 128 QMessageBox::Warning,
129 QMessageBox::Cancel, QMessageBox::Yes, QMessageBox::NoButton, 129 QMessageBox::Cancel, QMessageBox::Yes, QMessageBox::NoButton,
130 0, QString::null, TRUE, WStyle_StaysOnTop); 130 0, QString::null, TRUE, WStyle_StaysOnTop);
131 unrecbox.setButtonText(QMessageBox::Cancel, tr("Cancel")); 131 unrecbox.setButtonText(QMessageBox::Cancel, tr("Cancel"));
132 unrecbox.setButtonText(QMessageBox::Yes, tr("Ok")); 132 unrecbox.setButtonText(QMessageBox::Yes, tr("Ok"));
133 133
134 if ( unrecbox.exec() == QMessageBox::Yes) 134 if ( unrecbox.exec() == QMessageBox::Yes)
135 { 135 {
136 syncnet->clear(); 136 syncnet->clear();
137 insertDefaultRanges(); 137 insertDefaultRanges();
138 } 138 }
139 syncModeCombo->setCurrentItem( 2 ); 139 syncModeCombo->setCurrentItem( 2 );
140} 140}
141 141
142void Security::insertDefaultRanges() 142void Security::insertDefaultRanges()
143{ 143{
144 syncnet->insertItem( tr( "192.168.129.0/24" ) ); 144 syncnet->insertItem( "192.168.129.0/24" );
145 syncnet->insertItem( tr( "192.168.1.0/24" ) ); 145 syncnet->insertItem( "192.168.1.0/24" );
146 syncnet->insertItem( tr( "192.168.0.0/16" ) ); 146 syncnet->insertItem( "192.168.0.0/16" );
147 syncnet->insertItem( tr( "172.16.0.0/12" ) ); 147 syncnet->insertItem( "172.16.0.0/12" );
148 syncnet->insertItem( tr( "10.0.0.0/8" ) ); 148 syncnet->insertItem( "10.0.0.0/8" );
149 syncnet->insertItem( tr( "1.0.0.0/8" ) ); 149 syncnet->insertItem( "1.0.0.0/8" );
150 syncnet->insertItem( tr( "Any" ) ); 150 syncnet->insertItem( tr( "Any" ) );
151 syncnet->insertItem( tr( "None" ) ); 151 syncnet->insertItem( tr( "None" ) );
152} 152}
153 153
154void Security::updateGUI() 154void Security::updateGUI()
155{ 155{
156 bool empty = passcode.isEmpty(); 156 bool empty = passcode.isEmpty();
157 157
158 changepasscode->setText( empty ? tr("Set passcode" ) 158 changepasscode->setText( empty ? tr("Set passcode" )
159 : tr("Change passcode" ) ); 159 : tr("Change passcode" ) );
160 passcode_poweron->setEnabled( !empty ); 160 passcode_poweron->setEnabled( !empty );
161 clearpasscode->setEnabled( !empty ); 161 clearpasscode->setEnabled( !empty );
162 162
163 autologinToggle->setChecked(autoLogin); 163 autologinToggle->setChecked(autoLogin);
164 userlist->setEnabled(autoLogin); 164 userlist->setEnabled(autoLogin);
165} 165}
166 166
167 167
168void Security::show() 168void Security::show()
169{ 169{
170 //valid=FALSE; 170 //valid=FALSE;
171 setEnabled(FALSE); 171 setEnabled(FALSE);
172 SecurityBase::show(); 172 SecurityBase::show();
173 if ( passcode.isEmpty() ) { 173 if ( passcode.isEmpty() ) {
174 // could insist... 174 // could insist...
175 //changePassCode(); 175 //changePassCode();
176 //if ( passcode.isEmpty() ) 176 //if ( passcode.isEmpty() )
177 //reject(); 177 //reject();
178 } else { 178 } else {
179 if (!valid) // security passcode was not asked yet, so ask now 179 if (!valid) // security passcode was not asked yet, so ask now
180 { 180 {
181 QString pc = enterPassCode(tr("Enter passcode")); 181 QString pc = enterPassCode(tr("Enter passcode"));
182 if ( pc != passcode ) { 182 if ( pc != passcode ) {
183 QMessageBox::critical(this, tr("Passcode incorrect"), 183 QMessageBox::critical(this, tr("Passcode incorrect"),
184 tr("The passcode entered is incorrect.\nAccess denied")); 184 tr("The passcode entered is incorrect.\nAccess denied"));
185 reject(); 185 reject();
186 return; 186 return;
187 } 187 }
188 } 188 }
189 } 189 }
190 setEnabled(TRUE); 190 setEnabled(TRUE);
191 valid=TRUE; 191 valid=TRUE;
192} 192}
193 193
194void Security::accept() 194void Security::accept()
195{ 195{
196 applySecurity(); 196 applySecurity();
197 QDialog::accept(); 197 QDialog::accept();
198 QCopEnvelope env("QPE/System", "securityChanged()" ); 198 QCopEnvelope env("QPE/System", "securityChanged()" );
199} 199}
200 200
201void Security::done(int r) 201void Security::done(int r)
202{ 202{
203 QDialog::done(r); 203 QDialog::done(r);
204 close(); 204 close();
205} 205}
206 206
207void Security::selectNet(int auth_peer,int auth_peer_bits, bool update) 207void Security::selectNet(int auth_peer,int auth_peer_bits, bool update)
208{ 208{
209 QString sn; 209 QString sn;
210 if ( auth_peer_bits == 0 && auth_peer == 0 ) { 210 if ( auth_peer_bits == 0 && auth_peer == 0 ) {
211 sn = tr("Any"); 211 sn = tr("Any");
212 } else if ( auth_peer_bits == 32 && auth_peer == 0 ) { 212 } else if ( auth_peer_bits == 32 && auth_peer == 0 ) {
213 sn = tr("None"); 213 sn = tr("None");
214 } else { 214 } else {
215 sn = 215 sn =
216 QString::number((auth_peer>>24)&0xff) + "." 216 QString::number((auth_peer>>24)&0xff) + "."
217 + QString::number((auth_peer>>16)&0xff) + "." 217 + QString::number((auth_peer>>16)&0xff) + "."
218 + QString::number((auth_peer>>8)&0xff) + "." 218 + QString::number((auth_peer>>8)&0xff) + "."
219 + QString::number((auth_peer>>0)&0xff) + "/" 219 + QString::number((auth_peer>>0)&0xff) + "/"
220 + QString::number(auth_peer_bits); 220 + QString::number(auth_peer_bits);
221 } 221 }
222 222
223 //insert user-defined list of netranges upon start 223 //insert user-defined list of netranges upon start
224 if (update) { 224 if (update) {
225 //User selected/active netrange first 225 //User selected/active netrange first
226 syncnet->insertItem( tr( sn ) ); 226 syncnet->insertItem( sn );
227 227
228 Config cfg("Security"); 228 Config cfg("Security");
229 cfg.setGroup("Sync"); 229 cfg.setGroup("Sync");
230 230
231 //set up defaults if needed, if someone manually deletes net0 he'll get a suprise hehe 231 //set up defaults if needed, if someone manually deletes net0 he'll get a suprise hehe
232 QString test = cfg.readEntry("net0",""); 232 QString test = cfg.readEntry("net0","");
233 if (test.isEmpty()) { 233 if (test.isEmpty()) {
234 insertDefaultRanges(); 234 insertDefaultRanges();
235 } else { 235 } else {
236 // 10 ought to be enough for everybody... :) 236 // 10 ought to be enough for everybody... :)
237 // If you need more, don't forget to edit applySecurity() as well 237 // If you need more, don't forget to edit applySecurity() as well
238 bool already_there=FALSE; 238 bool already_there=FALSE;
239 for (int i=0; i<10; i++) { 239 for (int i=0; i<10; i++) {
240 QString target, netrange; 240 QString target, netrange;
241 target.sprintf("net%d", i); 241 target.sprintf("net%d", i);
242 netrange = cfg.readEntry(target,""); 242 netrange = cfg.readEntry(target,"");
243 if (! netrange.isEmpty()){ 243 if (! netrange.isEmpty()){
244 //make sure we have no "twin" entries 244 //make sure we have no "twin" entries
245 for (int i=0; i<syncnet->count(); i++) { 245 for (int i=0; i<syncnet->count(); i++) {
246 if ( syncnet->text(i) == netrange ) { 246 if ( syncnet->text(i) == netrange ) {
247 already_there=TRUE; 247 already_there=TRUE;
248 } 248 }
249 } 249 }
250 if (! already_there) { 250 if (! already_there) {
251 syncnet->insertItem( tr( netrange ) ); 251 syncnet->insertItem( netrange );
252 } else { 252 } else {
253 already_there=FALSE; 253 already_there=FALSE;
254 } 254 }
255 } 255 }
256 } 256 }
257 } 257 }
258 } 258 }
259 259
260 for (int i=0; i<syncnet->count(); i++) { 260 for (int i=0; i<syncnet->count(); i++) {
261 if ( syncnet->text(i).left(sn.length()) == sn ) { 261 if ( syncnet->text(i).left(sn.length()) == sn ) {
262 syncnet->setCurrentItem(i); 262 syncnet->setCurrentItem(i);
263 return; 263 return;
264 } 264 }
265 } 265 }
266 odebug << "No match for \"" << sn << "\"" << oendl; 266 odebug << "No match for \"" << sn << "\"" << oendl;
267} 267}
268 268
269void Security::parseNet(const QString& sn,int& auth_peer,int& auth_peer_bits) 269void Security::parseNet(const QString& sn,int& auth_peer,int& auth_peer_bits)
270{ 270{
271 auth_peer=0; 271 auth_peer=0;
272 if ( sn == tr("Any") ) { 272 if ( sn == tr("Any") ) {
273 auth_peer = 0; 273 auth_peer = 0;
274 auth_peer_bits = 0; 274 auth_peer_bits = 0;
275 } else if ( sn == tr("None") ) { 275 } else if ( sn == tr("None") ) {
276 auth_peer = 0; 276 auth_peer = 0;
277 auth_peer_bits = 32; 277 auth_peer_bits = 32;
278 } else { 278 } else {
279 int x=0; 279 int x=0;
280 for (int i=0; i<4; i++) { 280 for (int i=0; i<4; i++) {
281 int nx = sn.find(QChar(i==3 ? '/' : '.'),x); 281 int nx = sn.find(QChar(i==3 ? '/' : '.'),x);
282 auth_peer = (auth_peer<<8)|sn.mid(x,nx-x).toInt(); 282 auth_peer = (auth_peer<<8)|sn.mid(x,nx-x).toInt();
283 x = nx+1; 283 x = nx+1;
284 } 284 }
285 uint n = (uint)sn.find(' ',x)-x; 285 uint n = (uint)sn.find(' ',x)-x;
286 auth_peer_bits = sn.mid(x,n).toInt(); 286 auth_peer_bits = sn.mid(x,n).toInt();
287 } 287 }
288} 288}
289 289
290void Security::loadUsers ( void ) 290void Security::loadUsers ( void )
291{ 291{
292 QFile passwd("/etc/passwd"); 292 QFile passwd("/etc/passwd");
293 if ( passwd.open(IO_ReadOnly) ) { 293 if ( passwd.open(IO_ReadOnly) ) {
294 QTextStream t( &passwd ); 294 QTextStream t( &passwd );
295 QString s; 295 QString s;
296 QStringList account; 296 QStringList account;
297 while ( !t.eof() ) { 297 while ( !t.eof() ) {
298 account = QStringList::split(':',t.readLine()); 298 account = QStringList::split(':',t.readLine());
299 299
300 // Hide disabled accounts 300 // Hide disabled accounts
301 if (*account.at(1)!="*") { 301 if (*account.at(1)!="*") {
302 302
303 userlist->insertItem(*account.at(0)); 303 userlist->insertItem(*account.at(0));
304 // Highlight this item if it is set to autologinToggle 304 // Highlight this item if it is set to autologinToggle
305 if ( *account.at(0) == autoLoginName) 305 if ( *account.at(0) == autoLoginName)
306 userlist->setCurrentItem(userlist->count()-1); 306 userlist->setCurrentItem(userlist->count()-1);
307 } 307 }
308 } 308 }
309 passwd.close(); 309 passwd.close();
310 } 310 }
311 311
312} 312}
313 313
314void Security::toggleAutoLogin(bool val) 314void Security::toggleAutoLogin(bool val)
315{ 315{
316 autoLogin=val; 316 autoLogin=val;
317 userlist->setEnabled(val); 317 userlist->setEnabled(val);
318 if (!autoLogin) 318 if (!autoLogin)
319 autoLoginName=userlist->currentText(); 319 autoLoginName=userlist->currentText();
320} 320}
321 321
322 322
323 323
324 324
325void Security::setSyncNet(const QString& sn) 325void Security::setSyncNet(const QString& sn)
326{ 326{
327 int auth_peer,auth_peer_bits; 327 int auth_peer,auth_peer_bits;
328 parseNet(sn,auth_peer,auth_peer_bits); 328 parseNet(sn,auth_peer,auth_peer_bits);
329 selectNet(auth_peer,auth_peer_bits,FALSE); 329 selectNet(auth_peer,auth_peer_bits,FALSE);
330} 330}
331 331
332void Security::applySecurity() 332void Security::applySecurity()
333{ 333{
334 if ( valid ) { 334 if ( valid ) {
335 Config cfg("Security"); 335 Config cfg("Security");
336 cfg.setGroup("Passcode"); 336 cfg.setGroup("Passcode");
337 cfg.writeEntry("passcode",passcode); 337 cfg.writeEntry("passcode",passcode);
338 cfg.writeEntry("passcode_poweron",passcode_poweron->isChecked()); 338 cfg.writeEntry("passcode_poweron",passcode_poweron->isChecked());
339 cfg.setGroup("Sync"); 339 cfg.setGroup("Sync");
340 int auth_peer=0; 340 int auth_peer=0;
341 int auth_peer_bits; 341 int auth_peer_bits;
342 QString sn = syncnet->currentText(); 342 QString sn = syncnet->currentText();
343 parseNet(sn,auth_peer,auth_peer_bits); 343 parseNet(sn,auth_peer,auth_peer_bits);
344 344
345 //this is the *selected* (active) net range 345 //this is the *selected* (active) net range
346 cfg.writeEntry("auth_peer",auth_peer); 346 cfg.writeEntry("auth_peer",auth_peer);
347 cfg.writeEntry("auth_peer_bits",auth_peer_bits); 347 cfg.writeEntry("auth_peer_bits",auth_peer_bits);