summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/settings/security/security.cpp106
-rw-r--r--core/settings/security/security.h5
-rw-r--r--core/settings/security/securitybase.ui39
3 files changed, 66 insertions, 84 deletions
diff --git a/core/settings/security/security.cpp b/core/settings/security/security.cpp
index 34f7e50..4eddb55 100644
--- a/core/settings/security/security.cpp
+++ b/core/settings/security/security.cpp
@@ -39,106 +39,107 @@
39 Config cfg("Security"); 39 Config cfg("Security");
40 cfg.setGroup("Passcode"); 40 cfg.setGroup("Passcode");
41 passcode = cfg.readEntry("passcode"); 41 passcode = cfg.readEntry("passcode");
42 passcode_poweron->setChecked(cfg.readBoolEntry("passcode_poweron",FALSE)); 42 passcode_poweron->setChecked(cfg.readBoolEntry("passcode_poweron",FALSE));
43 cfg.setGroup("Sync"); 43 cfg.setGroup("Sync");
44 int auth_peer = cfg.readNumEntry("auth_peer",0xc0a88100);//new default 192.168.129.0/24 44 int auth_peer = cfg.readNumEntry("auth_peer",0xc0a88100);//new default 192.168.129.0/24
45 int auth_peer_bits = cfg.readNumEntry("auth_peer_bits",24); 45 int auth_peer_bits = cfg.readNumEntry("auth_peer_bits",24);
46 selectNet(auth_peer,auth_peer_bits,TRUE); 46 selectNet(auth_peer,auth_peer_bits,TRUE);
47 47
48 connect(syncnet, SIGNAL(textChanged(const QString&)), 48 connect(syncnet, SIGNAL(textChanged(const QString&)),
49 this, SLOT(setSyncNet(const QString&))); 49 this, SLOT(setSyncNet(const QString&)));
50 50
51 cfg.setGroup("Sync");
52 QString sa = cfg.readEntry("syncapp","Qtopia");
53 51
54 for (int i=0; i<syncapp->count(); i++) { 52
55 if ( syncapp->text(i) == sa ) {
56 syncapp->setCurrentItem(i);
57 }
58 }
59
60 /* 53 /*
61 cfg.setGroup("Remote"); 54 cfg.setGroup("Remote");
62 if ( telnetAvailable() ) 55 if ( telnetAvailable() )
63 telnet->setChecked(cfg.readEntry("allow_telnet")); 56 telnet->setChecked(cfg.readEntry("allow_telnet"));
64 else 57 else
65 telnet->hide(); 58 telnet->hide();
66 59
67 if ( sshAvailable() ) 60 if ( sshAvailable() )
68 ssh->setChecked(cfg.readEntry("allow_ssh")); 61 ssh->setChecked(cfg.readEntry("allow_ssh"));
69 else 62 else
70 ssh->hide(); 63 ssh->hide();
71 */ 64 */
72 65
73 QString configFile = QPEApplication::qpeDir() + "/etc/opie-login.conf"; 66 QString configFile = QPEApplication::qpeDir() + "/etc/opie-login.conf";
74 Config loginCfg(configFile,Config::File); 67 Config loginCfg(configFile,Config::File);
75 68
76 loginCfg.setGroup("General"); 69 loginCfg.setGroup("General");
77 autoLoginName=loginCfg.readEntry("AutoLogin",""); 70 autoLoginName=loginCfg.readEntry("AutoLogin","");
78 71
79 if (autoLoginName.stripWhiteSpace().isEmpty()) { 72 if (autoLoginName.stripWhiteSpace().isEmpty()) {
80 autoLogin=false; 73 autoLogin=false;
81 } else { 74 } else {
82 autoLogin=true; 75 autoLogin=true;
83 } 76 }
84 77
85 cfg.setGroup("SyncMode"); 78 cfg.setGroup("SyncMode");
86 int mode = cfg.readNumEntry("Mode",2); // Default to Sharp 79 int mode = cfg.readNumEntry("Mode",2); // Default to Sharp
87 syncModeCombo->setCurrentItem( mode - 1 ); 80 switch( mode ) {
88 81 case 0x01:
89 //since nobody knows what this is and it doesn't do anything, i'll hide it # CoreDump 82 syncModeCombo->setCurrentItem( 0 );
90 // is this work-in-progress or can it be removed? 83 break;
91 syncModeCombo->hide(); 84 case 0x02:
85 default:
86 syncModeCombo->setCurrentItem( 1 );
87 break;
88 case 0x04:
89 syncModeCombo->setCurrentItem( 2 );
90 break;
91 }
92
92 93
93 connect(autologinToggle, SIGNAL(toggled(bool)), this, SLOT(toggleAutoLogin(bool))); 94 connect(autologinToggle, SIGNAL(toggled(bool)), this, SLOT(toggleAutoLogin(bool)));
94 connect(userlist, SIGNAL(activated(int)), this, SLOT(changeLoginName(int))); 95 connect(userlist, SIGNAL(activated(int)), this, SLOT(changeLoginName(int)));
95 connect(changepasscode,SIGNAL(clicked()), this, SLOT(changePassCode())); 96 connect(changepasscode,SIGNAL(clicked()), this, SLOT(changePassCode()));
96 connect(clearpasscode,SIGNAL(clicked()), this, SLOT(clearPassCode())); 97 connect(clearpasscode,SIGNAL(clicked()), this, SLOT(clearPassCode()));
97 connect(syncapp,SIGNAL(activated(int)), this, SLOT(changeSyncApp())); 98 connect(restoredefaults,SIGNAL(clicked()), this, SLOT(restoreDefaults()));
98 connect(restoredefaults,SIGNAL(clicked()), this, SLOT(restoreDefaults()));
99 connect(deleteentry,SIGNAL(clicked()), this, SLOT(deleteListEntry())); 99 connect(deleteentry,SIGNAL(clicked()), this, SLOT(deleteListEntry()));
100 100
101 loadUsers(); 101 loadUsers();
102 updateGUI(); 102 updateGUI();
103 103
104 dl = new QPEDialogListener(this); 104 dl = new QPEDialogListener(this);
105 QPEApplication::showDialog( this ); 105 QPEApplication::showDialog( this );
106} 106}
107 107
108Security::~Security() 108Security::~Security()
109{ 109{
110} 110}
111 111
112void Security::deleteListEntry() 112void Security::deleteListEntry()
113{ 113{
114 syncnet->removeItem(syncnet->currentItem()); 114 syncnet->removeItem(syncnet->currentItem());
115} 115}
116 116
117void Security::restoreDefaults() 117void Security::restoreDefaults()
118 { 118{
119 QMessageBox unrecbox( 119 QMessageBox unrecbox(
120 tr("Attention"), 120 tr("Attention"),
121 tr("<p>All user-defined net ranges will be lost."), 121 tr("<p>All user-defined net ranges will be lost."),
122 QMessageBox::Warning, 122 QMessageBox::Warning,
123 QMessageBox::Cancel, QMessageBox::Yes, QMessageBox::NoButton, 123 QMessageBox::Cancel, QMessageBox::Yes, QMessageBox::NoButton,
124 0, QString::null, TRUE, WStyle_StaysOnTop); 124 0, QString::null, TRUE, WStyle_StaysOnTop);
125 unrecbox.setButtonText(QMessageBox::Cancel, tr("Cancel")); 125 unrecbox.setButtonText(QMessageBox::Cancel, tr("Cancel"));
126 unrecbox.setButtonText(QMessageBox::Yes, tr("Ok")); 126 unrecbox.setButtonText(QMessageBox::Yes, tr("Ok"));
127 127
128 if ( unrecbox.exec() == QMessageBox::Yes) 128 if ( unrecbox.exec() == QMessageBox::Yes)
129 { 129 {
130 syncnet->clear(); 130 syncnet->clear();
131 insertDefaultRanges(); 131 insertDefaultRanges();
132 } 132 }
133 syncModeCombo->setCurrentItem( 2 );
133} 134}
134 135
135void Security::insertDefaultRanges() 136void Security::insertDefaultRanges()
136{ 137{
137 syncnet->insertItem( tr( "192.168.129.0/24" ) ); 138 syncnet->insertItem( tr( "192.168.129.0/24" ) );
138 syncnet->insertItem( tr( "192.168.1.0/24" ) ); 139 syncnet->insertItem( tr( "192.168.1.0/24" ) );
139 syncnet->insertItem( tr( "192.168.0.0/16" ) ); 140 syncnet->insertItem( tr( "192.168.0.0/16" ) );
140 syncnet->insertItem( tr( "172.16.0.0/12" ) ); 141 syncnet->insertItem( tr( "172.16.0.0/12" ) );
141 syncnet->insertItem( tr( "10.0.0.0/8" ) ); 142 syncnet->insertItem( tr( "10.0.0.0/8" ) );
142 syncnet->insertItem( tr( "1.0.0.0/8" ) ); 143 syncnet->insertItem( tr( "1.0.0.0/8" ) );
143 syncnet->insertItem( tr( "Any" ) ); 144 syncnet->insertItem( tr( "Any" ) );
144 syncnet->insertItem( tr( "None" ) ); 145 syncnet->insertItem( tr( "None" ) );
@@ -149,17 +150,17 @@ void Security::updateGUI()
149 bool empty = passcode.isEmpty(); 150 bool empty = passcode.isEmpty();
150 151
151 changepasscode->setText( empty ? tr("Set passcode" ) 152 changepasscode->setText( empty ? tr("Set passcode" )
152 : tr("Change passcode" ) ); 153 : tr("Change passcode" ) );
153 passcode_poweron->setEnabled( !empty ); 154 passcode_poweron->setEnabled( !empty );
154 clearpasscode->setEnabled( !empty ); 155 clearpasscode->setEnabled( !empty );
155 156
156 autologinToggle->setChecked(autoLogin); 157 autologinToggle->setChecked(autoLogin);
157 userlist->setEnabled(autoLogin); 158 userlist->setEnabled(autoLogin);
158} 159}
159 160
160 161
161void Security::show() 162void Security::show()
162{ 163{
163 //valid=FALSE; 164 //valid=FALSE;
164 setEnabled(FALSE); 165 setEnabled(FALSE);
165 SecurityBase::show(); 166 SecurityBase::show();
@@ -232,29 +233,29 @@ void Security::selectNet(int auth_peer,int auth_peer_bits, bool update)
232 for (int i=0; i<10; i++) { 233 for (int i=0; i<10; i++) {
233 QString target, netrange; 234 QString target, netrange;
234 target.sprintf("net%d", i); 235 target.sprintf("net%d", i);
235 netrange = cfg.readEntry(target,""); 236 netrange = cfg.readEntry(target,"");
236 if (! netrange.isEmpty()){ 237 if (! netrange.isEmpty()){
237 //make sure we have no "twin" entries 238 //make sure we have no "twin" entries
238 for (int i=0; i<syncnet->count(); i++) { 239 for (int i=0; i<syncnet->count(); i++) {
239 if ( syncnet->text(i) == netrange ) { 240 if ( syncnet->text(i) == netrange ) {
240 already_there=TRUE; 241 already_there=TRUE;
241 } 242 }
242 } 243 }
243 if (! already_there) { 244 if (! already_there) {
244 syncnet->insertItem( tr( netrange ) ); 245 syncnet->insertItem( tr( netrange ) );
245 } else { 246 } else {
246 already_there=FALSE; 247 already_there=FALSE;
247 } 248 }
248 } 249 }
249 } 250 }
250 } 251 }
251 } 252 }
252 253
253 for (int i=0; i<syncnet->count(); i++) { 254 for (int i=0; i<syncnet->count(); i++) {
254 if ( syncnet->text(i).left(sn.length()) == sn ) { 255 if ( syncnet->text(i).left(sn.length()) == sn ) {
255 syncnet->setCurrentItem(i); 256 syncnet->setCurrentItem(i);
256 return; 257 return;
257 } 258 }
258 } 259 }
259 qDebug("No match for \"%s\"",sn.latin1()); 260 qDebug("No match for \"%s\"",sn.latin1());
260} 261}
@@ -329,30 +330,47 @@ void Security::applySecurity()
329 cfg.setGroup("Passcode"); 330 cfg.setGroup("Passcode");
330 cfg.writeEntry("passcode",passcode); 331 cfg.writeEntry("passcode",passcode);
331 cfg.writeEntry("passcode_poweron",passcode_poweron->isChecked()); 332 cfg.writeEntry("passcode_poweron",passcode_poweron->isChecked());
332 cfg.setGroup("Sync"); 333 cfg.setGroup("Sync");
333 int auth_peer=0; 334 int auth_peer=0;
334 int auth_peer_bits; 335 int auth_peer_bits;
335 QString sn = syncnet->currentText(); 336 QString sn = syncnet->currentText();
336 parseNet(sn,auth_peer,auth_peer_bits); 337 parseNet(sn,auth_peer,auth_peer_bits);
337 338
338 //this is the *selected* (active) net range 339 //this is the *selected* (active) net range
339 cfg.writeEntry("auth_peer",auth_peer); 340 cfg.writeEntry("auth_peer",auth_peer);
340 cfg.writeEntry("auth_peer_bits",auth_peer_bits); 341 cfg.writeEntry("auth_peer_bits",auth_peer_bits);
341 342
342 //write back all other net ranges in *cleartext* 343 //write back all other net ranges in *cleartext*
343 for (int i=0; i<10; i++) { 344 for (int i=0; i<10; i++) {
344 QString target; 345 QString target;
345 target.sprintf("net%d", i); 346 target.sprintf("net%d", i);
346 cfg.writeEntry(target,syncnet->text(i)); 347 cfg.writeEntry(target,syncnet->text(i));
347 } 348 }
348 349
349 cfg.writeEntry("syncapp",syncapp->currentText()); 350#ifdef ODP
350 351 #error "Use 0,1,2 and use Launcher"
352#endif
353 /* keep the old code so we don't use currentItem directly */
354 int value = 0x02;
355 switch( syncModeCombo->currentItem() ) {
356 case 0:
357 value = 0x01;
358 break;
359 case 1:
360 value = 0x02;
361 break;
362 case 2:
363 value = 0x04;
364 break;
365 }
366 cfg.setGroup("SyncMode");
367 cfg.writeEntry( "Mode", value );
368
351 /* 369 /*
352 cfg.setGroup("Remote"); 370 cfg.setGroup("Remote");
353 if ( telnetAvailable() ) 371 if ( telnetAvailable() )
354 cfg.writeEntry("allow_telnet",telnet->isChecked()); 372 cfg.writeEntry("allow_telnet",telnet->isChecked());
355 if ( sshAvailable() ) 373 if ( sshAvailable() )
356 cfg.writeEntry("allow_ssh",ssh->isChecked()); 374 cfg.writeEntry("allow_ssh",ssh->isChecked());
357 // ### write ssh/telnet sys config files 375 // ### write ssh/telnet sys config files
358 */ 376 */
@@ -364,33 +382,17 @@ void Security::applySecurity()
364 if (autoLogin) { 382 if (autoLogin) {
365 loginCfg.writeEntry("AutoLogin",autoLoginName); 383 loginCfg.writeEntry("AutoLogin",autoLoginName);
366 } else { 384 } else {
367 loginCfg.removeEntry("AutoLogin"); 385 loginCfg.removeEntry("AutoLogin");
368 } 386 }
369 387
370 } 388 }
371} 389}
372void Security::changeSyncApp() 390
373{
374 // Don't say i didn't tell ya
375 if (syncapp->currentText() == "IntelliSync") {
376 QMessageBox attn(
377 tr("WARNING"),
378 tr("<p>Selecting IntelliSync here will disable the FTP password."
379 "<p>Every machine in your netrange will be able to sync with "
380 "your Zaurus!"),
381 QMessageBox::Warning,
382 QMessageBox::Cancel, QMessageBox::NoButton, QMessageBox::NoButton,
383 0, QString::null, TRUE, WStyle_StaysOnTop);
384 attn.setButtonText(QMessageBox::Cancel, tr("Ok"));
385 attn.exec();
386 }
387 updateGUI();
388}
389 391
390 392
391 393
392void Security::changeLoginName( int idx ) 394void Security::changeLoginName( int idx )
393{ 395{
394 autoLoginName = userlist->text(idx);; 396 autoLoginName = userlist->text(idx);;
395 updateGUI(); 397 updateGUI();
396} 398}
diff --git a/core/settings/security/security.h b/core/settings/security/security.h
index 72aa352..ed25ce1 100644
--- a/core/settings/security/security.h
+++ b/core/settings/security/security.h
@@ -20,17 +20,17 @@
20#ifndef SECURITY_H 20#ifndef SECURITY_H
21#define SECURITY_H 21#define SECURITY_H
22 22
23#include "securitybase.h" 23#include "securitybase.h"
24 24
25class QPEDialogListener; 25class QPEDialogListener;
26 26
27class Security : public SecurityBase 27class Security : public SecurityBase
28{ 28{
29 Q_OBJECT 29 Q_OBJECT
30 30
31public: 31public:
32 static QString appName() { return QString::fromLatin1("security"); } 32 static QString appName() { return QString::fromLatin1("security"); }
33 Security( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); 33 Security( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
34 ~Security(); 34 ~Security();
35 35
36 void show(); 36 void show();
@@ -41,31 +41,30 @@ protected:
41 void done(int); 41 void done(int);
42 42
43private slots: 43private slots:
44 void changePassCode(); 44 void changePassCode();
45 void clearPassCode(); 45 void clearPassCode();
46 void setSyncNet(const QString&); 46 void setSyncNet(const QString&);
47 void changeLoginName(int); 47 void changeLoginName(int);
48 void toggleAutoLogin(bool); 48 void toggleAutoLogin(bool);
49 void changeSyncApp();
50 void restoreDefaults(); 49 void restoreDefaults();
51 void insertDefaultRanges(); 50 void insertDefaultRanges();
52 void deleteListEntry(); 51 void deleteListEntry();
53 52
54private: 53private:
55 void loadUsers(void); 54 void loadUsers(void);
56 bool telnetAvailable() const; 55 bool telnetAvailable() const;
57 bool sshAvailable() const; 56 bool sshAvailable() const;
58 void updateGUI(); 57 void updateGUI();
59 58
60 static void parseNet(const QString& sn,int& auth_peer,int& auth_peer_bits); 59 static void parseNet(const QString& sn,int& auth_peer,int& auth_peer_bits);
61 void selectNet(int auth_peer,int auth_peer_bits,bool update); 60 void selectNet(int auth_peer,int auth_peer_bits,bool update);
62 61
63 62
64 QString enterPassCode(const QString&); 63 QString enterPassCode(const QString&);
65 QString passcode; 64 QString passcode;
66 bool valid; 65 bool valid;
67 bool autoLogin; 66 bool autoLogin;
68 QString autoLoginName; 67 QString autoLoginName;
69 68
70 QPEDialogListener *dl; 69 QPEDialogListener *dl;
71}; 70};
diff --git a/core/settings/security/securitybase.ui b/core/settings/security/securitybase.ui
index 1769ae1..dcf1d6b 100644
--- a/core/settings/security/securitybase.ui
+++ b/core/settings/security/securitybase.ui
@@ -6,17 +6,17 @@
6 <name>name</name> 6 <name>name</name>
7 <cstring>SecurityBase</cstring> 7 <cstring>SecurityBase</cstring>
8 </property> 8 </property>
9 <property stdset="1"> 9 <property stdset="1">
10 <name>geometry</name> 10 <name>geometry</name>
11 <rect> 11 <rect>
12 <x>0</x> 12 <x>0</x>
13 <y>0</y> 13 <y>0</y>
14 <width>309</width> 14 <width>327</width>
15 <height>483</height> 15 <height>483</height>
16 </rect> 16 </rect>
17 </property> 17 </property>
18 <property stdset="1"> 18 <property stdset="1">
19 <name>caption</name> 19 <name>caption</name>
20 <string>Security Settings</string> 20 <string>Security Settings</string>
21 </property> 21 </property>
22 <property> 22 <property>
@@ -461,62 +461,43 @@ Beware that all manually entered net ranges will be lost!</string>
461 <string>Select your sync software</string> 461 <string>Select your sync software</string>
462 </property> 462 </property>
463 </widget> 463 </widget>
464 <widget> 464 <widget>
465 <class>QComboBox</class> 465 <class>QComboBox</class>
466 <item> 466 <item>
467 <property> 467 <property>
468 <name>text</name> 468 <name>text</name>
469 <string>QTopia</string>
470 </property>
471 </item>
472 <item>
473 <property>
474 <name>text</name>
475 <string>IntelliSync</string>
476 </property>
477 </item>
478 <property stdset="1">
479 <name>name</name>
480 <cstring>syncapp</cstring>
481 </property>
482 <property>
483 <name>whatsThis</name>
484 <string>This option changes the login behaviour of the internal FTP server.
485
486If you have problems syncing, try the "IntelliSync" setting, which will accept any password you throw at the sync (FTP) port.
487
488The default is Qtopia. It will let you log in with username "root" and password "Qtopia". The password is CaSeSeNsItIvE.</string>
489 </property>
490 </widget>
491 <widget>
492 <class>QComboBox</class>
493 <item>
494 <property>
495 <name>text</name>
496 <string>Qtopia 1.7</string> 469 <string>Qtopia 1.7</string>
497 </property> 470 </property>
498 </item> 471 </item>
499 <item> 472 <item>
500 <property> 473 <property>
501 <name>text</name> 474 <name>text</name>
502 <string>Opie 1.0</string> 475 <string>Opie 1.0</string>
503 </property> 476 </property>
504 </item> 477 </item>
505 <item> 478 <item>
506 <property> 479 <property>
507 <name>text</name> 480 <name>text</name>
508 <string>Both</string> 481 <string>IntelliSync</string>
509 </property> 482 </property>
510 </item> 483 </item>
511 <property stdset="1"> 484 <property stdset="1">
512 <name>name</name> 485 <name>name</name>
513 <cstring>syncModeCombo</cstring> 486 <cstring>syncModeCombo</cstring>
514 </property> 487 </property>
488 <property>
489 <name>whatsThis</name>
490 <string>Alter the Sync Protocol to tweak for the different devices.
491 IntelliSync will disable the password check but you'll be prompted to accept the connection.
492 Opie1.0 will be compatible with QtopiaDesktop, MultiSync and KitchenSync
493 Qtopia1.7 will alter the way data is send to the client and will not work with older clients.
494 </string>
495 </property>
515 </widget> 496 </widget>
516 </vbox> 497 </vbox>
517 </widget> 498 </widget>
518 </grid> 499 </grid>
519 </widget> 500 </widget>
520 </widget> 501 </widget>
521 </vbox> 502 </vbox>
522</widget> 503</widget>