summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/settings/security/security.cpp17
-rw-r--r--core/settings/security/securitybase.ui27
2 files changed, 38 insertions, 6 deletions
diff --git a/core/settings/security/security.cpp b/core/settings/security/security.cpp
index 75a181b..c4726b3 100644
--- a/core/settings/security/security.cpp
+++ b/core/settings/security/security.cpp
@@ -10,32 +10,33 @@
10 ** 10 **
11 ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11 ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13 ** 13 **
14 ** See http://www.trolltech.com/gpl/ for GPL licensing information. 14 ** See http://www.trolltech.com/gpl/ for GPL licensing information.
15 ** 15 **
16 ** Contact info@trolltech.com if any conditions of this licensing are 16 ** Contact info@trolltech.com if any conditions of this licensing are
17 ** not clear to you. 17 ** not clear to you.
18 ** 18 **
19 **********************************************************************/ 19 **********************************************************************/
20#include "security.h" 20#include "security.h"
21 21
22#include <qpe/qpeapplication.h> 22#include <qpe/qpeapplication.h>
23#include <qpe/config.h> 23#include <qpe/config.h>
24#include <qpe/password.h> 24#include <qpe/password.h>
25#include <qpe/qpedialog.h> 25#include <qpe/qpedialog.h>
26#include <qpe/qcopenvelope_qws.h>
26 27
27#include <qcheckbox.h> 28#include <qcheckbox.h>
28#include <qpushbutton.h> 29#include <qpushbutton.h>
29#include <qcombobox.h> 30#include <qcombobox.h>
30#include <qmessagebox.h> 31#include <qmessagebox.h>
31#include <qfile.h> 32#include <qfile.h>
32#include <qlistview.h> 33#include <qlistview.h>
33#include <qtextstream.h> 34#include <qtextstream.h>
34 35
35 Security::Security( QWidget* parent, const char* name, WFlags fl ) 36 Security::Security( QWidget* parent, const char* name, WFlags fl )
36: SecurityBase( parent, name, TRUE, fl ) 37: SecurityBase( parent, name, TRUE, fl )
37{ 38{
38 valid=FALSE; 39 valid=FALSE;
39 Config cfg("Security"); 40 Config cfg("Security");
40 cfg.setGroup("Passcode"); 41 cfg.setGroup("Passcode");
41 passcode = cfg.readEntry("passcode"); 42 passcode = cfg.readEntry("passcode");
@@ -59,32 +60,35 @@
59 else 60 else
60 ssh->hide(); 61 ssh->hide();
61 */ 62 */
62 63
63 QString configFile = QPEApplication::qpeDir() + "/etc/opie-login.conf"; 64 QString configFile = QPEApplication::qpeDir() + "/etc/opie-login.conf";
64 Config loginCfg(configFile,Config::File); 65 Config loginCfg(configFile,Config::File);
65 66
66 loginCfg.setGroup("General"); 67 loginCfg.setGroup("General");
67 autoLoginName=loginCfg.readEntry("AutoLogin",""); 68 autoLoginName=loginCfg.readEntry("AutoLogin","");
68 69
69 if (autoLoginName.stripWhiteSpace().isEmpty()) { 70 if (autoLoginName.stripWhiteSpace().isEmpty()) {
70 autoLogin=false; 71 autoLogin=false;
71 } else { 72 } else {
72 autoLogin=true; 73 autoLogin=true;
73 } 74 }
74 75
76 cfg.setGroup("SyncMode");
77 int mode = cfg.readNumEntry("Mode",2); // Default to Sharp
78 syncModeCombo->setCurrentItem( mode - 1 );
75 79
76 connect(autologinToggle, SIGNAL(toggled(bool)), this, SLOT(toggleAutoLogin(bool))); 80 connect(autologinToggle, SIGNAL(toggled(bool)), this, SLOT(toggleAutoLogin(bool)));
77 connect(userlist, SIGNAL(activated(int)), this, SLOT(changeLoginName(int))); 81 connect(userlist, SIGNAL(activated(int)), this, SLOT(changeLoginName(int)));
78 connect(changepasscode,SIGNAL(clicked()), this, SLOT(changePassCode())); 82 connect(changepasscode,SIGNAL(clicked()), this, SLOT(changePassCode()));
79 connect(clearpasscode,SIGNAL(clicked()), this, SLOT(clearPassCode())); 83 connect(clearpasscode,SIGNAL(clicked()), this, SLOT(clearPassCode()));
80 84
81 loadUsers(); 85 loadUsers();
82 updateGUI(); 86 updateGUI();
83 87
84 dl = new QPEDialogListener(this); 88 dl = new QPEDialogListener(this);
85 showMaximized(); 89 showMaximized();
86} 90}
87 91
88Security::~Security() 92Security::~Security()
89{ 93{
90} 94}
@@ -119,32 +123,33 @@ void Security::show()
119 QString pc = enterPassCode(tr("Enter passcode")); 123 QString pc = enterPassCode(tr("Enter passcode"));
120 if ( pc != passcode ) { 124 if ( pc != passcode ) {
121 QMessageBox::critical(this, tr("Passcode incorrect"), 125 QMessageBox::critical(this, tr("Passcode incorrect"),
122 tr("The passcode entered is incorrect.\nAccess denied")); 126 tr("The passcode entered is incorrect.\nAccess denied"));
123 reject(); 127 reject();
124 return; 128 return;
125 } 129 }
126 } 130 }
127 setEnabled(TRUE); 131 setEnabled(TRUE);
128 valid=TRUE; 132 valid=TRUE;
129} 133}
130 134
131void Security::accept() 135void Security::accept()
132{ 136{
133 applySecurity(); 137 applySecurity();
134 QDialog::accept(); 138 QDialog::accept();
139 QCopEnvelope env("QPE/System", "securityChanged()" );
135} 140}
136 141
137void Security::done(int r) 142void Security::done(int r)
138{ 143{
139 QDialog::done(r); 144 QDialog::done(r);
140 close(); 145 close();
141} 146}
142 147
143void Security::selectNet(int auth_peer,int auth_peer_bits) 148void Security::selectNet(int auth_peer,int auth_peer_bits)
144{ 149{
145 QString sn; 150 QString sn;
146 if ( auth_peer_bits == 0 && auth_peer == 0 ) { 151 if ( auth_peer_bits == 0 && auth_peer == 0 ) {
147 sn = tr("Any"); 152 sn = tr("Any");
148 } else if ( auth_peer_bits == 32 && auth_peer == 0 ) { 153 } else if ( auth_peer_bits == 32 && auth_peer == 0 ) {
149 sn = tr("None"); 154 sn = tr("None");
150 } else { 155 } else {
@@ -172,60 +177,60 @@ void Security::parseNet(const QString& sn,int& auth_peer,int& auth_peer_bits)
172 auth_peer_bits = 0; 177 auth_peer_bits = 0;
173 } else if ( sn == tr("None") ) { 178 } else if ( sn == tr("None") ) {
174 auth_peer = 0; 179 auth_peer = 0;
175 auth_peer_bits = 32; 180 auth_peer_bits = 32;
176 } else { 181 } else {
177 int x=0; 182 int x=0;
178 for (int i=0; i<4; i++) { 183 for (int i=0; i<4; i++) {
179 int nx = sn.find(QChar(i==3 ? '/' : '.'),x); 184 int nx = sn.find(QChar(i==3 ? '/' : '.'),x);
180 auth_peer = (auth_peer<<8)|sn.mid(x,nx-x).toInt(); 185 auth_peer = (auth_peer<<8)|sn.mid(x,nx-x).toInt();
181 x = nx+1; 186 x = nx+1;
182 } 187 }
183 uint n = (uint)sn.find(' ',x)-x; 188 uint n = (uint)sn.find(' ',x)-x;
184 auth_peer_bits = sn.mid(x,n).toInt(); 189 auth_peer_bits = sn.mid(x,n).toInt();
185 } 190 }
186} 191}
187 192
188void Security::loadUsers ( void ) 193void Security::loadUsers ( void )
189{ 194{
190 QFile passwd("/etc/passwd"); 195 QFile passwd("/etc/passwd");
191 if ( passwd.open(IO_ReadOnly) ) { 196 if ( passwd.open(IO_ReadOnly) ) {
192 QTextStream t( &passwd ); 197 QTextStream t( &passwd );
193 QString s; 198 QString s;
194 QStringList account; 199 QStringList account;
195 while ( !t.eof() ) { 200 while ( !t.eof() ) {
196 account = QStringList::split(':',t.readLine()); 201 account = QStringList::split(':',t.readLine());
197 202
198 // Hide disabled accounts 203 // Hide disabled accounts
199 if (*account.at(1)!="*") { 204 if (*account.at(1)!="*") {
200 205
201 userlist->insertItem(*account.at(0)); 206 userlist->insertItem(*account.at(0));
202 // Highlight this item if it is set to autologinToggle 207 // Highlight this item if it is set to autologinToggle
203 if ( *account.at(0) == autoLoginName) 208 if ( *account.at(0) == autoLoginName)
204 userlist->setCurrentItem(userlist->count()-1); 209 userlist->setCurrentItem(userlist->count()-1);
205 } 210 }
206 } 211 }
207 passwd.close(); 212 passwd.close();
208 } 213 }
209 214
210} 215}
211void Security::toggleAutoLogin(bool val) 216void Security::toggleAutoLogin(bool val)
212{ 217{
213 autoLogin=val; 218 autoLogin=val;
214 userlist->setEnabled(val); 219 userlist->setEnabled(val);
215 if (!autoLogin) 220 if (!autoLogin)
216 autoLoginName=userlist->currentText(); 221 autoLoginName=userlist->currentText();
217} 222}
218void Security::setSyncNet(const QString& sn) 223void Security::setSyncNet(const QString& sn)
219{ 224{
220 int auth_peer,auth_peer_bits; 225 int auth_peer,auth_peer_bits;
221 parseNet(sn,auth_peer,auth_peer_bits); 226 parseNet(sn,auth_peer,auth_peer_bits);
222 selectNet(auth_peer,auth_peer_bits); 227 selectNet(auth_peer,auth_peer_bits);
223} 228}
224 229
225void Security::applySecurity() 230void Security::applySecurity()
226{ 231{
227 if ( valid ) { 232 if ( valid ) {
228 Config cfg("Security"); 233 Config cfg("Security");
229 cfg.setGroup("Passcode"); 234 cfg.setGroup("Passcode");
230 cfg.writeEntry("passcode",passcode); 235 cfg.writeEntry("passcode",passcode);
231 cfg.writeEntry("passcode_poweron",passcode_poweron->isChecked()); 236 cfg.writeEntry("passcode_poweron",passcode_poweron->isChecked());
@@ -242,32 +247,34 @@ void Security::applySecurity()
242 cfg.writeEntry("allow_telnet",telnet->isChecked()); 247 cfg.writeEntry("allow_telnet",telnet->isChecked());
243 if ( sshAvailable() ) 248 if ( sshAvailable() )
244 cfg.writeEntry("allow_ssh",ssh->isChecked()); 249 cfg.writeEntry("allow_ssh",ssh->isChecked());
245 // ### write ssh/telnet sys config files 250 // ### write ssh/telnet sys config files
246 */ 251 */
247 252
248 QString configFile = QPEApplication::qpeDir() + "/etc/opie-login.conf"; 253 QString configFile = QPEApplication::qpeDir() + "/etc/opie-login.conf";
249 Config loginCfg(configFile,Config::File); 254 Config loginCfg(configFile,Config::File);
250 loginCfg.setGroup("General"); 255 loginCfg.setGroup("General");
251 256
252 if (autoLogin) { 257 if (autoLogin) {
253 loginCfg.writeEntry("AutoLogin",autoLoginName); 258 loginCfg.writeEntry("AutoLogin",autoLoginName);
254 } else { 259 } else {
255 loginCfg.removeEntry("AutoLogin"); 260 loginCfg.removeEntry("AutoLogin");
256 } 261 }
257 262
263 cfg.setGroup("SyncMode");
264 cfg.writeEntry("Mode", syncModeCombo->currentItem()+1 );
258 } 265 }
259} 266}
260 267
261void Security::changeLoginName( int idx ) 268void Security::changeLoginName( int idx )
262{ 269{
263 autoLoginName = userlist->text(idx);; 270 autoLoginName = userlist->text(idx);;
264 updateGUI(); 271 updateGUI();
265} 272}
266 273
267void Security::changePassCode() 274void Security::changePassCode()
268{ 275{
269 QString new1; 276 QString new1;
270 QString new2; 277 QString new2;
271 278
272 do { 279 do {
273 new1 = enterPassCode(tr("Enter new passcode")); 280 new1 = enterPassCode(tr("Enter new passcode"));
diff --git a/core/settings/security/securitybase.ui b/core/settings/security/securitybase.ui
index da25f39..73290e5 100644
--- a/core/settings/security/securitybase.ui
+++ b/core/settings/security/securitybase.ui
@@ -1,30 +1,30 @@
1<!DOCTYPE UI><UI> 1<!DOCTYPE UI><UI>
2<class>SecurityBase</class> 2<class>SecurityBase</class>
3<widget> 3<widget>
4 <class>QDialog</class> 4 <class>QDialog</class>
5 <property stdset="1"> 5 <property stdset="1">
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>329</width> 14 <width>339</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>
23 <name>layoutMargin</name> 23 <name>layoutMargin</name>
24 </property> 24 </property>
25 <property> 25 <property>
26 <name>layoutSpacing</name> 26 <name>layoutSpacing</name>
27 </property> 27 </property>
28 <vbox> 28 <vbox>
29 <property stdset="1"> 29 <property stdset="1">
30 <name>margin</name> 30 <name>margin</name>
@@ -368,32 +368,57 @@
368 </item> 368 </item>
369 <item> 369 <item>
370 <property> 370 <property>
371 <name>text</name> 371 <name>text</name>
372 <string>None</string> 372 <string>None</string>
373 </property> 373 </property>
374 </item> 374 </item>
375 <property stdset="1"> 375 <property stdset="1">
376 <name>name</name> 376 <name>name</name>
377 <cstring>syncnet</cstring> 377 <cstring>syncnet</cstring>
378 </property> 378 </property>
379 <property stdset="1"> 379 <property stdset="1">
380 <name>editable</name> 380 <name>editable</name>
381 <bool>true</bool> 381 <bool>true</bool>
382 </property> 382 </property>
383 </widget> 383 </widget>
384 <widget>
385 <class>QComboBox</class>
386 <item>
387 <property>
388 <name>text</name>
389 <string>Qtopia 1.7</string>
390 </property>
391 </item>
392 <item>
393 <property>
394 <name>text</name>
395 <string>Opie 1.0</string>
396 </property>
397 </item>
398 <item>
399 <property>
400 <name>text</name>
401 <string>Both</string>
402 </property>
403 </item>
404 <property stdset="1">
405 <name>name</name>
406 <cstring>syncModeCombo</cstring>
407 </property>
408 </widget>
384 </vbox> 409 </vbox>
385 </widget> 410 </widget>
386 <spacer> 411 <spacer>
387 <property> 412 <property>
388 <name>name</name> 413 <name>name</name>
389 <cstring>Spacer1</cstring> 414 <cstring>Spacer1</cstring>
390 </property> 415 </property>
391 <property stdset="1"> 416 <property stdset="1">
392 <name>orientation</name> 417 <name>orientation</name>
393 <enum>Vertical</enum> 418 <enum>Vertical</enum>
394 </property> 419 </property>
395 <property stdset="1"> 420 <property stdset="1">
396 <name>sizeType</name> 421 <name>sizeType</name>
397 <enum>Expanding</enum> 422 <enum>Expanding</enum>
398 </property> 423 </property>
399 <property> 424 <property>